У меня есть ситуация, когда у меня есть функциональность, которую я хочу использовать для более чем одного приложения. В частности, у меня есть Repository
, который принимает форму библиотеки классов C#, содержащей такие вещи, как EF .edmx, репозиторий и UnitOfWork, которые достаточно универсальны для использования в разных приложениях.Разница между связыванием файлов и добавлением другого проекта в качестве ссылки?
Я расстроен тем, что я не вижу изображение более четко, потому что я должен ясно понимать различия; и я делаю это. Однако я думаю, что не могу понять последствия каждого выбора и общие различия.
Я прочел эту ссылку: How do you share code between projects/solutions in Visual Studio? и он предлагает несколько полезных советов, но оба предложения, похоже, содержат воду. Я хочу лучше понять последствия каждого из последующих действий каждого и понять, что является правильным выбором для моей потребности.
Верую связывая файлы, которые я бы создать еще один новый проект Repository
в Заявлении-2, но использовать связанные файлы для того, что включает в себя, что новый слой.
Я считаю, с добавлением Repository
из приложения-1 в качестве ссылки к применению-2 будет работать, но я не уверен, что влияние изменения кода будет.
Мне в основном нужно знать, какой метод даст правильный результат для моей потребности разделить уровень репозитория среди приложений 1..n?
Компиляция одного и того же файла класса в несколько сборок не создает конфликт (или, если хотите, не создает неразрешимый конфликт). Классы будут различными типами. Легко использовать VS и csc для борьбы с ними - просто используйте [extern aliases] (http://msdn.microsoft.com/en-us/library/ms173212 (v = vs.80) .aspx). Реальная проблема заключается в том, что они будут разными типами, и если вы хотите конвертировать между ними, вам придется писать методы преобразования типов. И если они подвергаются воздействию COM, COM не может различать их. –
Спасибо, не знал, что это возможно. Я отредактировал свой ответ. – Alexander
@Alexander - Как насчет ответвления варианта № 2, который: «Извлеките общий код в библиотеку классов и добавьте эту новую рефакторированную библиотеку классов как * существующий проект * в проект №2». Это в отличие от ссылки на DLL. Мне нравится мысль добавления ссылки на существующий проект, потому что я могу выполнить код в обоих проектах. Наличие .dll не позволяет мне это делать (без помощи некоторых инструментов для декомпиляции и вхождения). – atconway