2.5.5. Добавление ссылок на другие проекты

Источник здесь. [перевод не проверен];[перевёл Андрей Бушман]


    Добавления новых, а так же ссылки на уже существующие проекты, позволяют вам совместно использовать код во множестве проектов. Вы можете создать создать централизованные библиотеки, в которых содержатся обычно используемые вами методы, функции, классы, а в дальнейшем - подключить нужную библиотеку, когда она понадобится. Проекты могут быть подключены следующими способами:

  • Добавить проект в решение и сослаться на него из других проектов, входящих в состав обозначенного решения
  • Сослаться в проекте на имеющийся файл откомпилированной сборки

    Когда вы добавляете проект в решение, в окне Solution Explorer (обозреватель решений) появляется ветвь1 нового проекта. После того, как в проект будет добавлена ссылка на другой проект или же ссылка на сборку, представленную в виде DLL-файла2, вы можете использовать ключевое слово Imports3 или using4 для декларации пространства имён или имени проекта5 для того, чтобы использовать любые открытые объекты (классы или формы6) в вашем проекте.

Порядок действий

  1.  Добавить новый или уже существующий проект в состав текущего решения.
  2. После того как проект был добавлен в текущее решение, в окне Solution Explorer щелкните правой кнопкой мыши на имени проекта, в котором вы хотите добавить ссылку на новый проект, после чего нажмите пункт Add Reference (добавить ссылку).
  3. В диалоговом окне Add Reference (Добавить ссылку) переходим на вкладку Projects (Проекты), выбираем проект7, ссылку на который желаете добавить и жмёте кнопку OK. 
  4.  В окне Solution Explorer делаем двойной щелчок левой клавишей мыши по модулю (файлу)8, в котором вы хотите явно использовать функции9, методы и объекты определённые в проекте, на который вы добавили ссылку в предыдущем пункте8. Содержимое выбранного вами файла откроется в текстовом редакторе кода10.
  5. В самом верху открытого вами модуля, с помощью Imports3 или using4 добавьте объявление интересующего вас пространства имён (функции, методы и объекты которого вы желаете использовать), определённого в том проекте, ссылка на который была вами добавлена в п.3.

        Например, если в подключенном вами ранее проекте имеется пространство имен AdskUtilities, содержащее интересующие вас классы, то для того, чтобы явно указать своё намерение использовать содержимое этого пространства в коде вашего проекта - вы должны будете добавить в свой модуль следующий код:
    VB.NET
       1:  Imports AdskUtilities
    C#
       1:  using AdskUtilities;
  6. По аналогии пространства имен используются точно так же и в любой другой .NET или COM библиотеке, которая будет ссылаться на ваш проект.
Всё то, что проиндексировано ниже - примечания переводчика:
1 - слово "node" переводится как "узел", однако на мой взгляд в данном случае "ветвь" будет более понятной/правильней, т.к. каждый проект в составе решения в окне Solution Explorer представлен в виде отдельной иерархической структуры (ветви).
2 - или exe-файла (CIL).
3 - для VB.NET.
4 - для C#.
5 - строго говоря, выполнять декларацию необязательно, просто без неё вам придётся указывать полное имя класса/структуры/делегата с указанием пространства имён, в котором он определён. Например: если в редакторе кода вы хотите использовать класс System.Windows.Forms.Form, то в том случае, если вы предварительно напишите "using System.Windows.Forms;" - вы сможете далее в коде писать просто Form (это имя класса), опустив указание пространства имён, в котором он находится (System.Windows.Forms).
6 - вообще-то System.Windows.Forms.Form (если авторы имеют в виду его) - это и есть класс...
7 - на самом деле, если нужно, вы можете добавить ссылки сразу на несколько проектов, воспользовавшись клавишами Ctrl или Shift для множественного выбора, подобно тому, как это работает в любом другом приложении Windows, позволяющем множественный выбор элементов из некоего списка.
8 - уточнение.
9 - поскольку VB.NET и C# являются объектно-ориентированными языками программирования - в них отсутствует понятие "функции" как таковой. Вместо функций используются статические и объектные методы, определённые в составе классов и структур. Если говорить применительно к AutoCAD, то с помощью .NET API AutoCAD можно создавать новые Lisp-функции, и команды AutoCAD, внутренняя, скрытая от пользователя реализация которых на самом деле будет представлена в виде метода класса. Такой метод помечается атрибутом LispFunction (если код должен работать как Lisp-функция), или же атрибутом CommandMethod (если код должен работать как команда AutoCAD).
10 - предложение добавлено переводчиком для ясности.



Comments