Интернализовать класс и методы в сборке .NET

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

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
1 253
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

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

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

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

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

Вы можете пометить все во всех сборках (кроме сборки API) как internal вместо public, а затем повторно отобразить их только для своей сборки API.

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

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

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

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

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