Ограничить доступ к сборке .NET? - PullRequest
6 голосов
/ 13 сентября 2009

Есть ли способ сделать сборку .NET доступной только для авторизованных источников?

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

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

Есть ли способ?

Ответы [ 2 ]

6 голосов
/ 13 сентября 2009

Вы можете создавать внутренние классы. И дать указанным сборкам доступ к этим классам с помощью атрибута InternalsVisibleTo .

Сборка должна быть строго названа. Вы можете найти больше информации об атрибуте в этой статье .

5 голосов
/ 13 сентября 2009

Проблема с внутренними классами заключается в том, что Internal не имеет значения в IL, и эти классы можно вызывать с помощью отражения. Таким образом, использование InternalsVisibleTo является скорее помощником для компилятора, чем что-либо еще.

Вы можете сделать еще один шаг, используя StrongNameIdentityPermission , который проверит открытый ключ сборки со строгим именем, вызывающий код, - если открытый ключ не совпадает, возникает исключение безопасности. Это применяется, даже когда код вызывается с помощью отражения.

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