Подтвердить что ты не робот

Как я могу ссылаться на проект из другого в С#?

Я добавил проект, Project2, в мое решение. У этого уже был другой проект, который позволяет сказать Проект 1. Как я могу назвать классы и методы из project2 в project1?

Что я сделал:

У меня есть проект 1 и его решение. Я добавил проект 2 в проект 1. В Project 1 и Project 2 есть пространство имен с именем Correction. Теперь я позвонил с помощью коррекции. Однако в Project 1 для ввода Project2 возникает ошибка, так как он утверждает, что он не знает, что это такое.

Я также добавил проект 2 в качестве ссылки.

спасибо за все ответы. я не знаю, что я делаю неправильно

4b9b3361

Ответ 1

Сначала вам нужно добавить ссылку на Project2 в Project1.

Если вы перейдете в Project1 → References → Add Reference, вы увидите вариант добавления проектов в решения и добавьте project2.

После добавления ссылки, чтобы вызвать класс Foo в пространстве имен Name1.Name2, вы можете использовать класс как

Name1.Name2.Foo foo = new Name1.Name2.Foo(...);

или если вы хотите избежать ввода, вы можете добавить оператор using в верхней части файла

using Name1.Name2;

и теперь может ссылаться на класс, используя только Foo, например

Foo foo = new Foo(...);

Обратите внимание, что вы будете определять пространства имен в Project2. Просто использование имени Project2 не будет работать. Посмотрите на файл, содержащий объявление класса, который вы хотите использовать, и найдите определение пространства имен.

Итак, если вы видите что-то как

namespace Name1.Name2 {


    class Bar {
        // Blah
    }

    // Notice the word public here.
    public class Foo {
        // Blah
    }
}

Name1.Name2 - это пространство имен для Foo, и это то, что вам нужно использовать.

Также обратите внимание, что вам, вероятно, понадобится модификатор общедоступного доступа для класса, который вы хотите использовать в Project1. Например, в приведенном выше сценарии вы должны иметь доступ к классу Foo, но не к классу Bar.

Эта страница поможет вам понять пространства имен: http://www.csharp-station.com/tutorials/lesson06.aspx

Ответ 2

Вы должны указать "путь" к коду, который вы хотите вызвать. Вы выполняете это с помощью

1) Укажите пространство имен второго проекта/класса, который вы хотите использовать, как правило, в верхней части файла кода.

using MySecondProject;

var foo = new ClassFromSecondProject();

2) Явное указание имени класса, который вы хотите использовать, включая его пространство имен

//do stuff
var foo = new MySecondProject.ClassFromSecondProject();
//do more stuff

Ответ 3

Вам просто нужно добавить ссылку в Project1 в Project 2. Вы делаете это, щелкнув правой кнопкой мыши по папке References из панели проводника решений, затем вы можете использовать опцию Browse для поиска Project2. Или, если он уже добавлен в решение, вы можете просто использовать вкладку Projects.

Просто проясни это для тебя. Добавление проекта в Solution не совпадает с добавлением ссылки. Откройте Project2 в Visual Studio. Затем либо добавьте Project1 в решение, либо щелкните правой кнопкой мыши по папке References в Project2 и добавьте ссылку на Project1. Чтобы убедиться, что вы правильно добавили ссылку, разверните папку ссылок и убедитесь, что вы видите Project1 в списке.

Пример

Создайте новое консольное приложение и назовите его MyApplication. Затем щелкните правой кнопкой мыши на Solution и выберите опцию Add New Project и создайте новый проект библиотеки и назовите его MyLib. На этом этапе вы просто добавили 2 проекта в 1 решение, никаких ссылок между каждым проектом не было создано.

Щелкните правой кнопкой мыши папку References в проекте MyApplication и выберите Add Reference.... Поскольку MyLib уже является частью решения, вы можете перейти на вкладку Projects и выбрать MyLib из списка, который создает новую ссылку на этот проект в MyApplication. Если это не часть решения, вы можете использовать вкладку Browse и найти проект через проводник.

Итак, в этот момент мы установили ссылку внутри MyApplication до MyLib. Поэтому, чтобы использовать классы из MyLib внутри MyApplication, мы можем либо объявить использование для проекта внутри устройства, либо мы можем использовать полный путь непосредственно, например.

// main code file in MyApplication

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MyLib;  // This will allow me to access the classes inside MyLib directly

namespace PdfPrinter
{
    class Program
    {
        static void Main(string[] args)
        {
             // if we have declared the namespace at the top, we can do:
             MyLibClass cls = new MyLibClass();
             // or if you don't want to add the namespace at the top we have to do:
             MyLib.MyLibClass cls = new MyLib.MyLibClass();
        }
    }
}

Надеюсь, что это немного облегчит вам.

Ответ 4

У меня была такая же проблема. Я triple проверил все, и ссылки были добавлены, проект был в том же решении, все задано. Я также знаю свои пространства имен, я даже получил завершение кода, но при создании я получил ту же ошибку, что пространство имен не может быть найдено.

Мне понадобилось один час, чтобы узнать это: проект, который я добавил, который не нашел соответствующее пространство имен, был настроен на другую целевую среду .NET. Я изменил свое решение на "полную".NET Framework 4, а не на профиль клиента 4, но новый проект, который я добавил, снова был настроен на профиль клиента.

Вместо того, чтобы дать мне надлежащее предупреждение о плохой конфигурации, он утверждал, что пространства имен не могут быть найдены.

Надеюсь, это поможет кому-то, и сэкономит вам время, которое я просто потратил впустую.

Ответ 5

Выберите проект, который вы будете использовать (например, project1), щелкните его правой кнопкой мыши в проводнике решений и нажмите "Добавить ссылку".

Вы сможете добавить ссылку на другое решение оттуда (project2).

Все, что вам нужно сделать, это добавить оператор using в ваш основной проект (project1), и вы сможете получить доступ к нему в обычном режиме.

Ответ 6

Вам нужно добавить Project2 в ссылки Project1. Теперь вы можете получить доступ к классам из Project2. Не забудьте добавить правильное пространство имен!

Ответ 7

Как указано другими, вам необходимо добавить (существующие) проекты в решение. Затем вам нужно добавить ссылку на них в разделе "Решение" → "Проекты". Теперь они должны появиться с их пространствами имен в обозревателе объектов.

Есть еще одна вещь, которую вам нужно убедиться, и это помогло мне найти эксперименты. Всякий раз, когда я добавлял свой второй проект, первый из них переставал работать, и сообщение об ошибке было таким же, как когда проект пропускает ссылку ("Тип или имя пространства имен" Ber "не удалось найти (вам не хватает использования директива или ссылка на сборку?)" ). Проблема заключалась в том, что оба проекта имели одно и то же имя по умолчанию ( "Библиотека классов" ) в Project Properties → Application. Поэтому дайте им уникальные имена. Я использую то же самое, что и пространство имен по умолчанию.

Ответ 8

У меня была такая же проблема с этой ошибкой. Я не смог обнаружить project1 из project2. Я добавил ссылку с project2 на project1, но он все еще не работал. Затем я выгрузил проект1, удалив его из решения. Затем я добавил его снова, сделал ссылку с project2 и ta da... он работал.....: -)