{"无法加载文件或程序集'AssemblyName,PublicKeyToken = null'或其依赖项之一.找到的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)":"AssemblyName,PublicKeyToken = null"}
我正在InnerException.Message尝试在签署正在使用的未签名第三方程序集之后调试我的应用程序时收到有问题的消息.奇怪的是,我已经签署了消息中显示的程序集,即无法加载的程序集.
这可能是什么问题?我该如何解决这个问题?
编辑
编辑以提供有关我所做的更多信息:
抛出异常的程序集,顺便说一下,项目构建正常,这是我正在构建的程序集的运行时异常InitializeComponent(),是一个带有WPF控件的开源组件(MahApps.Metro).我发现了一个类似的问题,但没有一个答案解决了这个问题.
当我使用强名称工具创建一个新的密钥来签署.NET程序集时,我得到一个Access is Denied错误消息.这在Windows XP机器上运行得很好,但它在我的Vista机器上不起作用.
PS C:\users\brian\Dev\Projects\BELib\BELib> sn -k keypair.snk
Microsoft (R) .NET Framework Strong Name Utility Version 3.5.21022.8
Copyright (c) Microsoft Corporation. All rights reserved.
Failed to generate a strong name key pair -- Access is denied.
Run Code Online (Sandbox Code Playgroud)
是什么导致了这个问题,我该如何解决?
您是否以管理员身份运行PowerShell或命令提示符?在您习惯用户访问控制或关闭用户访问控制之前,我发现这是第一个查看的地方.
是的我尝试以管理员身份运行PS和常规命令提示符.出现相同的错误消息.
我正在编写一个Visual Studio 2012扩展,供内部使用,它要求所有程序集都有一个强名称.我很依赖RestSharp(和一些其他的dll),并且因为它不是强命名,我按照加入一个强大的名字了这个.一切都根据流程的输出工作,甚至视觉工作室声称,如果我在项目引用中查看RestSharp.dll的属性,它就会被强烈命名.但是,当我去使用我的扩展时,我得到一个FileLoadException声明:
Could not load file or assembly 'RestSharp, Version=104.1.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. A strongly-named assembly is required. (Exception from HRESULT: 0x80131044)
有关如何解决此问题或解决此问题的任何想法?
我正在使用Visual Studio 2008,我有一个包含多个项目的解决方案.我有一个snk来签署我的程序集,它存在于一个解决方案文件夹中.
我已将snk链接到我的每个项目,但现在当我尝试使用该链接的snk签署我的项目时,我找不到带有文件对话框的snk文件.
我错过了这一步吗?
Solution
> Solution Folder
MyKey.snk
> Project X
> _LinkedFiles
MyKey.snk (physical file doesn't appear here but shows in VS)
> ...
Run Code Online (Sandbox Code Playgroud) 我的一位同事在VB.net中创建了一个程序集,用于通过COM互操作与JScript一起使用.组件过去工作正常,但我们签了它,现在它似乎只适用于Windows 7机器.我测试了2台Windows 7机器和2台Windows Vista机器.
当我们签署程序集并尝试在JScript中实例化ActiveX对象时,将返回一个错误,但没有消息,只有一个数字:
错误:
错误号:-2146234304
在Google上搜索错误编号并没有太多回复.
如果我们从程序集中删除强名称,它就可以正常工作.关于什么可能是问题的任何想法?不确定它是否有所作为,但正在使用VS 2010编译和签署程序集.
给出一个强名称密钥(snk文件).将此文件添加到开源项目的源代码管理中是否存在任何安全问题?
在我的Visual Studio解决方案中,我有一个网站和4-5个类库引用的项目,其中一些也引用了外部第三方程序集.
我被赋予了为这些项目签署程序集的任务.
我的理解是签名的目的是不是每个人都能在不提供公钥和版本细节的情况下使用我们的程序集,对吗?
我应该使用一个强名称密钥(.snk)来签署这些项目的所有程序集,还是应该使用单独的强名称密钥对每个程序集进行签名?
强名称密钥的密码保护目的是什么?
你会怎么做?
非常感谢,
我正在开展一个延迟签署程序集的项目.我需要在构建期间多次使用强名称工具,以关闭强名称验证,然后在打包之前对程序集进行完全签名.我尝试使用powershell步骤来关闭验证,但它返回时出现此错误:
脚本:
$testprojs = gci Project.*.dll -r
$testprojs | % {
sn -Vr $_
write-output $("Turned off sn verification for " + $_.Name)
}
Run Code Online (Sandbox Code Playgroud)
错误:
Failed to open registry key -- Administrator permissions are needed to use
the selected options. Use an administrator command prompt to complete these tasks.
Run Code Online (Sandbox Code Playgroud)
所以我创建了一个运行第一个脚本的脚本,但添加了-elevated参数.这没有任何区别.
我也尝试使用命令提示步骤而不是powershell.这也返回了同样的错误.
For /r %g in ("Project.*.dll") DO sn -Vr %g
Run Code Online (Sandbox Code Playgroud)
当我尝试将相同的脚本rdp运行到构建代理程序机器本身时,它按预期工作.只有当它作为构建中的一个步骤运行时才会起作用.
有任何想法吗?
我正在尝试将第三方COM dll加载到我的应用程序中.一切都很好,但是当我运行应用程序时,我不断从我的应用程序中收到此消息:
无法加载文件或程序集""程序集",Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'或其依赖项之一.需要一个强名称的程序集.(来自HRESULT的异常:0x80131044).
当我这样做时,sn -vf "assembly"它说集会是有效的.以前有没有人见过这种行为?
strongname ×10
.net ×8
assemblies ×1
azure-devops ×1
build ×1
c# ×1
com ×1
com-interop ×1
config ×1
delay-sign ×1
disassembly ×1
il ×1
javascript ×1
manifest ×1
security ×1
signing ×1
sn.exe ×1
snk ×1
verification ×1
vsix ×1