Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Microsoft.Management.Infrastructure强名称验证失败_C#_.net - Fatal编程技术网

C# Microsoft.Management.Infrastructure强名称验证失败

C# Microsoft.Management.Infrastructure强名称验证失败,c#,.net,C#,.net,我有一个使用Microsoft.Management.Infrastructure.dll的项目。默认情况下,这个.dll在我的开发机器上不可用,所以我用Nuget版本1.0.0.0()下载了它,并将引用添加到我的项目中。它设置为Copy Local,并在我构建项目时正确复制到/bin/目录。默认情况下,强名称设置为True,并且不能通过“属性”窗口进行更改 如果我在那台机器上运行项目,不管是调试版本还是编译版本,一切都很好。但是,当我将/bin/文件夹内容移动到另一台计算机并在那里运行时,程序

我有一个使用Microsoft.Management.Infrastructure.dll的项目。默认情况下,这个.dll在我的开发机器上不可用,所以我用Nuget版本1.0.0.0()下载了它,并将引用添加到我的项目中。它设置为Copy Local,并在我构建项目时正确复制到/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版本,并将其包含在构建的文件夹中,我只是不知道如何实现这一点。

你知道这一点吗?谢谢不,我最终在Powershell git tracker上提交了这个问题(他们拥有它),他们告诉我他们不会签署它,因为“你应该使用内置在Windows中的二进制文件”。问题是,事实并非如此。我检查过的任何机器都没有这个二进制文件,从Server2008到Win10Enterprise。你只能从他们的nuget软件包中拿到它。。。我最终将目标切换到了
System.Management
,这不太理想,因为它没有提供任何接近该功能的功能,但至少它实际上存在于每一个版本的windows上,尽管它已被“弃用”。。。“至少现在是这样。”德鲁忘了给你打电话了。你知道这件事吗?谢谢不,我最终在Powershell git tracker上提交了这个问题(他们拥有它),他们告诉我他们不会签署它,因为“你应该使用内置在Windows中的二进制文件”。问题是,事实并非如此。我检查过的任何机器都没有这个二进制文件,从Server2008到Win10Enterprise。你只能从他们的nuget软件包中拿到它。。。我最终将目标切换到了
System.Management
,这不太理想,因为它没有提供任何接近该功能的功能,但至少它实际上存在于每一个版本的windows上,尽管它已被“弃用”。。。“至少现在是这样。”德鲁忘了告诉你。