如何禁止在其他解决方案中引用dll类库?
StrongNameIdentityPermission
,使其与您希望能够使用它的程序的strong name匹配。InternalsVisibleToAttribute
,但这可能需要对您的库代码进行一些设计更改。只要没有任何一个程序集被签名或两个程序集都使用强名称签名,这应该是可行的。在属性上指定的参数应匹配公钥和您想要访问其内部成员的程序集的名称。你可以通过将“构建操作”属性设置为“嵌入资源”,将DLL嵌入到EXE中。这样你的DLL就不会作为单个文件被发送,也没有人能够使用它。
你可以通过一些dll类方法,使其在未被自己的主程序使用时失败。
Assembly main = System.Reflection.Assembly.GetExecutingAssembly();
if (main.FullName != .....)
throw new NotSupportedException();
或者
if (IsSignedWith(main, myCompanysX509Certificate))
throw new NotSupportedException();