Как запретить ссылки на библиотеку классов .NET DLL - PullRequest
3 голосов
/ 01 декабря 2010

Как я могу запретить ссылаться на библиотеку классов dll в других решениях?

Ответы [ 4 ]

6 голосов
/ 01 декабря 2010

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

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

Но на самом деле это остановит только того, кто не очень стараетсяиспользовать вашу библиотеку.Они не смогут добавить ссылку, но это не мешает кому-либо обходить ее через Reflection или дизассемблировать ваш код.Всегда есть способы обойти практически любые меры безопасности, которые вы применяете.

5 голосов
/ 01 декабря 2010

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

0 голосов
/ 01 декабря 2010

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

 Assembly main = System.Reflection.Assembly.GetExecutingAssembly();

 if (main.FullName != .....)
     throw new NotSupportedException();

или

 if (IsSignedWith(main, myCompanysX509Certificate))
     throw new NotSupportedException();
0 голосов
/ 01 декабря 2010

Вы можете встроить свою DLL в ваш EXE-файл, установив для свойства «Build Action» значение «Embedded ressource».Ваша DLL не поставляется в виде одного файла, и никто не может ее использовать.

...