C# 应用程序的强名称验证失败

C# 应用程序的强名称验证失败,c#,dll,C#,Dll,我制作了一个c应用程序,它使用c:\ProgramFiles(x86)\Reference Assembly\Microsoft\WindowsPowerShell\3.0\System.Management.Automation.dll 我还将dll复制到我的bin文件夹中。它工作正常,但如果我将bin文件夹复制到另一台计算机并运行可执行文件,则会出现以下错误: ************** Exception Text ************** System.IO.FileLoadExc

我制作了一个c应用程序,它使用c:\ProgramFiles(x86)\Reference Assembly\Microsoft\WindowsPowerShell\3.0\System.Management.Automation.dll

我还将dll复制到我的bin文件夹中。它工作正常,但如果我将bin文件夹复制到另一台计算机并运行可执行文件,则会出现以下错误:

************** Exception Text **************
System.IO.FileLoadException: Could not load file or assembly 'System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. Strong name validation failed. (Exception from HRESULT: 0x8013141A)
File name: 'System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' ---> System.Security.SecurityException: Strong name validation failed. (Exception from HRESULT: 0x8013141A)
注意:我根本没有在程序集上签名。 另外,我不想通过修改注册表项来禁用安全性。我只是想把它修好。 你知道如何在不全局注册dll的情况下解决这个问题吗


更新:我尝试将整个VisualStudio项目复制到另一台机器上。当它在windows 8上工作时,它在windows 7上不工作。

我认为问题是,我这样做的方式只在windows 8上工作,因为它有一个更新版本的dll。 要使其在windows 7上运行,请执行以下操作:

  • 修改csproj文件,使其具有如下参考:
  • 已将身份验证代码更改为此

    SecureString securePwd=新SecureString(); pass.ToCharArray().ToList().ForEach(p=>securePwd.AppendChar(p)); PSCredential credentials=新的PSCredential(用户名,securePwd); 字符串shellUri=“”; WSManConnectionInfo connectionInfo=新的WSManConnectionInfo(false,主机,5985,“/wsman”,shellUri,凭据,100000);//超时时间以毫秒为单位


您可以通过更改

System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35

但我建议您使用(可以将其与支持dll一起复制到您的目标服务器上)获取更多关于错误的确切信息


这将向您确切地显示应用程序探测dll的位置以及导致问题的原因。可能您需要将另一个dll添加到bin文件夹,或者GAC正在赢得另一个dll。

[如果您在测试二进制文件时遇到问题,请使用此解决方案] 我和作者有同样的问题。我使用snremove.exe删除了system.management.automation.dll上的强名称

snremove-r.\system.management.automation.dll (并删除用于测试的所有二进制文件的强名称。)


它现在运行良好。我这样做只是因为我不想在测试之前签入我的二进制文件。签入后,我的二进制文件由构建签名,我不必担心强命名问题。

相关:试着看看这个问题:
System.Management.Automation