Библиотека множественных классов .NET в одной библиотеке - PullRequest
2 голосов
/ 29 июня 2009

Я работаю в VS2008. У меня есть пользовательская библиотека классов (CL1), которая ссылается на другую пользовательскую библиотеку классов (CL2). Это заканчивается тем, что в моей папке релизов есть CL1 и CL2. Теперь потребитель CL1 должен включить в проект две библиотеки DLL, что, на мой взгляд, не подходит. У меня есть сильное чувство, что должен быть способ достигнуть единственного решения DLL. Есть ли рекомендуемый (Guideline-D) способ достижения этого.

Объединение CL1 и CL2 не вариант, потому что CL2 является более распространенным и упоминается во многих других проектах / DLL. Я пропускаю какой-то прямой вариант? Или мне нужно встраивать CL2 в качестве ресурса? Как? Гуглил веб, но не смог найти нигде обсуждаемую проблему.

Ответы [ 4 ]

4 голосов
/ 29 июня 2009

Да, вы можете сделать это вручную перед выпуском вашего продукта с помощью ILmerge. Более подробную информацию можно найти здесь: codeproject и блог Брэда МакКейба .

1 голос
/ 29 июня 2009

Вы можете включить исходный код из CL2 в качестве связанных файлов в проект CL1 и использовать его как способ избежать требования от пользователя включать несколько ссылок. На мой взгляд, это плохая идея.

Если ваш дизайн класса действительно требует, чтобы ваши классы были разделены между несколькими сборками, а CL1 должен ссылаться на CL2, тогда для пользователя вполне нормально ссылаться на несколько сборок - тем более что, как вы говорите, сборки служат разные цели.

Если пользователь использует только классы из CL1, ему не нужно добавлять несколько сборок в качестве ссылок. Однако, если CL1 ссылается на CL2, CL2 всегда будет копироваться вместе с CL1, даже если ссылка на CL2 не является явной.

0 голосов
/ 29 июня 2009

Я считаю, что этот вопрос может дать вам ответ, который вы ищете:

Как статически связать .DLL?

0 голосов
/ 29 июня 2009

Ну, вы могли бы встроить CL2 в CL1 и использовать событие AssemblyResolve, чтобы извлечь его при необходимости, поскольку я бы не советовал вам идти по этому пути. Просто включите DLL в релиз, я бы сказал, это нормальный способ ее распространения.

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