如何禁止在其他解决方案中引用dll类库?
答案 0 :(得分:6)
您可以考虑向您的类库中添加StrongNameIdentityPermission
,该类库与 希望能够使用它的程序的strong name相匹配。
或者,您可以使用InternalsVisibleToAttribute
进行探索,但可能需要对库代码进行一些设计更改。只要程序集都没有签名,或者两者都使用强名称签名,这都应该有效。在属性上指定的参数应与您希望能够访问其内部成员的公钥和程序集的名称相匹配。
但实际上,这只会阻止那些没有非常努力地使用你的图书馆的人。他们将无法添加引用,但它不会阻止某人通过Reflection或反汇编代码绕过它。几乎所有安全措施都可以实现。
答案 1 :(得分:5)
您可以使用名为 StrongNameIdentityPermission 的内容来阻止他人引用您的图书馆。
答案 2 :(得分:-1)
您可以通过将“Build Action”--Property设置为“Embedded ressource”将DLL嵌入到EXE中。您的DLL不是作为单个文件提供的,也没有人可以使用它。
答案 3 :(得分:-1)
如果您的主程序没有使用某些dll类方法,则可以使它们失败。
Assembly main = System.Reflection.Assembly.GetExecutingAssembly();
if (main.FullName != .....)
throw new NotSupportedException();
或
if (IsSignedWith(main, myCompanysX509Certificate))
throw new NotSupportedException();