【发布时间】:2011-06-16 11:03:28
【问题描述】:
有没有办法引用没有强名称的库? 当我在引用中添加对程序集的引用并重建解决方案时,一切都很好,但是当我从这个程序集解决方案调用类时,它不会构建。
输出表明引用的程序集应该具有强名称。什么是最好的解决方案?强命名库是不可取的。
【问题讨论】:
标签: c# .net .net-assembly
有没有办法引用没有强名称的库? 当我在引用中添加对程序集的引用并重建解决方案时,一切都很好,但是当我从这个程序集解决方案调用类时,它不会构建。
输出表明引用的程序集应该具有强名称。什么是最好的解决方案?强命名库是不可取的。
【问题讨论】:
标签: c# .net .net-assembly
我认为您在这里遇到的问题是您尝试从中添加引用的程序集正在使用强名称进行签名,但您尝试引用的程序集未签名。强名称程序集只能引用其他强名称程序集。
要么签署您正在引用的程序集,要么不签署正在引用它的程序集。
错误只在实际调用类时出现的原因是,如果没有代码实际调用被引用的程序集,编译器将在编译输出中剥离引用。
如果您真的不能为被引用的名称添加强名称,或者从进行引用的名称中删除强名称(对不起,啰嗦了),那么您将不得不考虑在运行时通过反射绑定类,然后通过公共基础或接口访问它——根本不理想;或者更糟糕的是实际上通过反射调用它,或者dynamic。
【讨论】:
强名称的全部意义在于您知道正在加载哪些 dll。如果您引用非强名称的内容,则无法向 您的 dll 添加强名称,因为可能会加载 任何内容代替您正在考虑的 dll(只要名称匹配)。这完全违背了强名称旨在提供的保证。
所以(其中之一):
【讨论】: