2012-02-09 5 views
5

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

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

Что такое Право Способ для этого?

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

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

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

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

ответ

6

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

+0

Я сделал все это, но теперь я не могу использовать функции из библиотеки классов. Мне нужна какая-то директива 'using'? – Joe

+0

@Joe Да, вам нужно добавить ссылку на проект, а затем добавить использование в каждом файле, который ссылается на класс в библиотеке. Итак, наверху, используя [Namespace]. Также Visual Studio может решить эту проблему, щелкнув правой кнопкой мыши, если DLL находится в проекте. –

+0

И мне также нужно сделать классы в .dll общедоступными ... * facepalm * – Joe

8

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

6

Или

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

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

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

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

+0

Не знал, что «Добавить как ссылка» существует, спасибо! Полезно для небольших тестовых проектов, где мне было все равно, чтобы правильно организовать 10 строк кода в отдельный проект библиотеки классов. – Dan

0

Я написал приложение, которое автоматизирует добавление кода в качестве ссылки, удобно для проектов, которые повторно используют много кода и немного меняют. Это в 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 может сломать на вас, добавив файл в папку с файлами, связанными с подстановочными знаками, может разбить их на отдельные записи. Или нет. Зависит от ветра.
Смежные вопросы