我想在我的 WPF 项目中包含一个系统托盘图标,并找到了此资源:
http://www.hardcodet.net/projects/wpf-notifyicon
看起来它工作得很好,但它是为 C# 编写的,我在这个项目中使用 VB.net。我下载了他的项目并将通知图标构建为 DLL,然后添加为我的项目的引用。
它抛出一个错误:
Unable to emit assembly: Referenced assembly 'Hardcodet.Wpf.TaskbarNotification' does not have a strong name
所以我正在努力找出最好的方法。我是否需要对其进行强命名,或者是否有更好的方法来做到这一点?
最佳答案
这是一个安全限制。简而言之,如果您对程序集进行强命名,您就向程序集的使用者提供了保证,即只有您的程序集及其依赖项才会在运行时加载。恶意方将无法用冒名顶替者替换您的程序集(当然,除非他们拥有您的 key )。
如果您的强名称程序集引用弱名称程序集,则无法满足该保证,因为它的依赖项可能会被冒名顶替者替换。这就是您收到编译错误的原因。
您的选择是:
- 从程序集中删除强名称。
- 在编译时对第三方代码进行强命名。这对于您的情况来说很容易,因为您是从源代码构建的。
- 使用 ILMerge 对第三方二进制文件进行强命名。如果您不是从源代码构建并且第三方忽略签署其程序集,那么这是一个很有吸引力的选择。
关于wpf - 为什么我在尝试添加引用时会看到 "Unable to emit assembly: Referenced assembly ... does not have a strong name"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6205639/