我制作了一个使用 C:\Program Files (x86)\Reference Assemblies\Microsoft\WindowsPowerShell\3.0\System.Management.Automation.dll 的 C# 应用程序
我也将 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 的情况下解决此问题的任何想法?
更新:我尝试将整个 visual studio 项目复制到另一台机器上。它在 Windows 8 上工作时在 Windows 7 上不工作。
最佳答案
您可以通过更改在 app.confg 中删除对程序集的强引用
System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
到
System.Management.Automation
但我建议使用 Fuslogvw 获取更多关于到底出了什么问题的信息。 (可以将其与支持 dll 一起复制到目标服务器上)。
这将向您准确显示应用程序在何处探测 dll 以及导致问题的原因。也许您有另一个 dll 需要添加到您的 bin 文件夹中,或者 GAC 可能在另一个 dll 上胜出。
关于c# - 应用程序的强名称验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27219885/