Сделать ссылку на код C # из нескольких проектов - PullRequest
7 голосов
/ 10 февраля 2012

У меня есть .cs файл, полный кода C #, который я продолжаю использовать в нескольких проектах.

Сейчас я включаю его в эти проекты, копируя и вставляя код в новый файл в каждом каталоге проекта. Это неправильный способ сделать это.

Каков правильный способ сделать это?

Правильный путь должен:

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

Случайно догадываясь, я бы ожидал какую-то директиву, такую ​​как using mycode = C:\common\mycode.cs, но я уверен, что это не .NET способ делать вещи.

(Я использую C # 2010, .NET 4.0 и компилирую этот код только локально на одном компьютере.)

Ответы [ 4 ]

8 голосов
/ 10 февраля 2012

Поместите код в отдельный проект библиотеки классов и укажите ссылку на него в других ваших проектах.

7 голосов
/ 10 февраля 2012

Или,

  • Щелкните правой кнопкой мыши проект в обозревателе решений
  • Выберите Добавить существующий элемент
  • Просмотрите файл .csфайл в другом проекте и щелкните один раз, чтобы выбрать файл
  • Нажмите кнопку со стрелкой вниз справа от Добавить и выберите Добавить как ссылку

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

Лучший способ организации, который заключается в том, чтобы, как предложили два других ответа, поместить общий код в библиотеку классов, чтобы у нее было пространство имен MyClassLibrary, а не SomeOtherProject.Это экономит большую скопированную dll, которая не имеет большого значения, пока вы не приступите к разработке чего-то маленького, такого как Windows Phone.Или измените пространство имен общего кода на Me.Common во всех ваших приложениях - не имеет значения, какой из них является оригиналом, вы можете редактировать его из любого проекта, который ссылается на него.

Убедитесь, что контроль исходного кода не является проблемой.

6 голосов
/ 10 февраля 2012

Создайте библиотеку классов, добавьте файл, создайте проект и создайте ссылку на DLL, созданную из сборки.Добавьте оператор using в каждый файл, который будет ссылаться на него.Также, если это ошибка и DLL находится в Проекте, вы и щелкните правой кнопкой мыши на объекте -> Разрешить, и это добавит использование для вас.

0 голосов
/ 28 октября 2015

Я написал приложение, которое автоматизирует добавление кода в виде ссылки, удобно для проектов, которые многократно используют много кода и немного меняют его.Это на https://github.com/CADbloke/CodeLinker

или

Не бойтесь редактировать XML .csproj файлы.Например, это работает ...

<Compile Include="$(Codez)\z.Libraries\diff-match-patch\DiffMatchPatch\**\*.cs"
Exclude="NotThisOne.cs;**\NotThisFolderWith\This*.cs">
<Link>Libs\%(RecursiveDir)%(Filename)%(Extension)</Link>
</Compile>

... и предоставит вам все файлы C # из исходной папки и подпапки в виде связанных файлов в вашем проекте назначения.

  • $(Codez) - это переменная среды Windows, которую я использую на своих компьютерах.
  • Я также мог бы использовать *.* в конце вместо *.cs.
  • Это одна из тех вещей, которые Visual Studio может сломать, добавив файл в папку, заполненную файлами подстановочных знаков, которые могут разбить их на отдельные записи.Или нет.Зависит от ветра.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...