参考没有强名称的汇编

xwr*_*wrs 11 .net c# .net-assembly

有没有办法引用没有强名称的库?当我在引用中添加对程序集的引用并重建解决方案时,一切都很好,但是当我从这个程序集解决方案调用该类时,它不会构建.

输出表示引用的程序集应具有强名称.什么是最好的解决方案?强命名库不是首选.

And*_*tan 15

我认为你在这里遇到的问题是你试图添加引用的程序集是用强名称签名的,但你试图引用的程序集没有签名.强名称程序集只能引用其他强名称程序集.

对要引用的程序集进行签名,或者不对引用它的程序集进行签名.

实际调用类时出现错误的原因是,如果没有实际调用引用程序集的代码,编译器将在编译输出中删除引用.

如果你真的无法为被引用者添加强名称,或者从执行引用的人那里删除强名称(抱歉啰嗦),那么你将不得不考虑绑定类在运行时通过反射然后通过公共基础或接口访问它 - 根本不理想; 甚至更糟糕的是通过反射实际调用它,或者dynamic.


Mar*_*ell 11

一个强有力的名字的重点是你知道什么dll被加载.如果您引用的内容不是强名称,则无法为您的 dll 添加强名称,因为可以加载任何内容来代替您正在考虑的dll(只要名称匹配).这完全违背了强名称旨在提供的保证.

所以(其中之一):

  • 不要为你的dll添加一个强名称(对于大多数内部事物,你只需要一个)
  • 要么; 使用强名称重建您引用的dll
  • 要么; 仅通过反射(yuck)加载附加dll