我有一个使用Microsoft.Management.Infrastructure.dll
的项目。默认情况下,该.dll在我的开发计算机上不可用,因此我使用Nuget 1.0.0.0版(https://www.nuget.org/packages/Microsoft.Management.Infrastructure/)下载了该.dll,并将引用添加到我的项目中。它设置为“复制本地”,并在构建项目时正确复制到/ bin /目录。默认情况下,“强名称”设置为True,并且不能在属性窗口中更改。
如果我在那台机器上运行项目,无论是调试版本还是编译版本,一切都很好。但是,当我将/ bin /文件夹中的内容移动到另一台计算机上并在其中运行时,程序崩溃并显示以下错误:
System.IO.FileLoadException: Could not load file or assembly
'Microsoft.Management.Infrastructure, Version=`1.0.0.0. Culture=neutral,
PublicKeyToken=31bf3856ad364e35' or one of its dependencies. Strong name validation failed
所以我认为它的签名不正确,并且确保有足够的sn.exe告诉我:
.\Microsoft.Management.Infrastructure.dll is a delay-signed or test-signed assembly
我尝试通过Nuget手动重新安装软件包,但是我可以找到的所有版本都返回相同的结果。
我正在查看错误的问题,还是有一种无需关闭“强名称”验证即可使用此.dll的方法?可能是我找不到的.dll的另一个版本?不同的.dll?
我看过其他人,他们在使用不同的dll(主要是Microsoft.Web.Assembly
)和相同的问题时遇到了同样的问题,但是针对这些问题的“解决方案”却不理想。该项目最终将部署到多台服务器,并且我希望避免部分安装禁用此.dll的签名验证,并在可能的情况下将其添加到GAC。我宁愿有一个经过正确签名的.dll版本,并将其包含在该版本的文件夹中,我只是迷失了如何完成此工作。