Скомпилируйте решение C # с несколькими проектами без создания .dll - PullRequest
3 голосов
/ 02 августа 2011

Я очень плохо знаком с C #, мой опыт в основном в C w / немного ООП в C ++. Я уверен, что я формулирую это неправильно, поэтому Google не помогает мне, но здесь идет.

У меня есть две программы, которые используют одну и ту же библиотеку классов, когда я добавляю библиотеку классов в решение, содержащее одну из программ, библиотека классов компилируется как .dll и затем связывается с основным решением. Можно ли скомпилировать код библиотеки непосредственно в код решения?

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

Если я определю свою библиотеку классов как другую сущность, есть ли опция в настройках решения Visual Studio 2010, чтобы делать то, что я хочу?

Ответы [ 4 ]

4 голосов
/ 02 августа 2011

Просто добавьте файлы, содержащие вашу библиотеку классов, в ваш проект по ссылке, а не в виде копии.

1 голос
/ 02 августа 2011

Вы говорите о статической линковке.
Существует инструмент ILMerge , который позволяет вам сделать это.
В общем случае в C # это менее важно, чем в C ++, поскольку сборки C # / dll предлагают информацию о версии в заголовке сборки (которую вы можете контроль в Visual Studio), таким образом, нет никакого риска адской длл.

1 голос
/ 02 августа 2011

РЕДАКТИРОВАТЬ:

Вы можете использовать ILMerge , чтобы объединить .dll и .exe.Вы не можете статически связывать вещи в C #.Это должно быть сделано динамически.


Если вы компилируете свой код как DLL и добавляете проект к ссылкам другого проекта, компилятор автоматически скопирует библиотеку классовв соответствующую папку сборки.

C # может автоматически находить классы, пространства имен и функции, необходимые приложению, когда вы указали ссылку.Нет необходимости импортировать какие-либо заголовки и т. Д., Поскольку все данные хранятся в метаданных в DLL, и среда выполнения .net будет искать их автоматически.Я также предполагаю, что вы работаете с библиотекой C #.

0 голосов
/ 02 августа 2011

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

Есть способы объединить их в .exe после компиляции, но это не по умолчанию, для этого вам понадобятся дополнительные инструменты.
Если вы заинтересованы в этом, вы можете посмотреть ILMerge или NETZ .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...