Вопрос

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

Затем я запутаю эту сборку с помощью Xenocode.Из того, что я видел, невозможно интернализировать сборку с помощью Xenocode.

Я видел ILMerge от Microsoft, но не смог понять, может ли он делать то, что я хочу.http://research.microsoft.com /~мбарнетт/ILMerge.aspx

Это было полезно?

Решение 2

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

Я нашел переключатель /internalize в ILMerge, который "интернализует" все сборки, кроме основной.Очень полезно!

Другие советы

Я использовал ILMerge от Microsoft для интернализации DLL-файлов в единую собранную библиотеку.Существует полезный графический интерфейс для использования ILMerge под названием NuGenUnify.Вы можете найти его здесь.

Я предлагаю вам взглянуть на InternalsVisibleTo атрибут на MSDN.

Вы можете пометить все во всех сборках (кроме сборки API) как internal вместо того, чтобы public, затем измените их только на вашу сборку API.

Сделав это, использование ILMerge должно предоставить вам единую сборку с видимыми только классами API.

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

Почему бы не создать только одну сборку и не сделать общедоступным только ваш API?

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top