我在Visual Studio 2005项目中添加了一个弱命名的程序集(它是强命名的)。我现在得到的错误:
"引用程序集'xxxxxxxx'没有强名称"
我需要签署这个第三方程序集吗?
我在Visual Studio 2005项目中添加了一个弱命名的程序集(它是强命名的)。我现在得到的错误:
"引用程序集'xxxxxxxx'没有强名称"
我需要签署这个第三方程序集吗?
当前回答
我已经编写了一个工具来自动强名称标记程序集,包括您没有源代码的程序集或已放弃的项目。它以一种简单的方式使用了答案中描述的许多技术,没有任何现有工具或过时说明的缺陷或缺陷。
.NET程序集强- name签名者
我希望这可以帮助任何需要签署第三方程序集的人,而不必经过重重困难才能到达那里。
其他回答
我在使用NuGet安装的ServiceStack DLL文件时遇到了这个问题。原来还有另一组标记为已签名的DLL文件可用。这不是每个人的答案,但您可能只需要检查程序集的现有签名版本。
首先,确保解决方案中所有项目的所有NuGet包都是相同的版本。例如,您不希望一个项目引用NLog 4.0.0.0,而另一个项目引用NLog 4.1.0.0。然后尝试重新安装NuGet包
Update-Package -reinstall
我的程序集A引用了三个第三方程序集,而我的程序集B也引用了A,其中只有两个被包括在引用中。
缺少对第三方程序集的引用是由update package命令添加的,错误消失了。
ilmerge使用。ilmerge来自微软,但它没有随Visual Studio或sdk一起发布。不过你可以从这里下载。还有一个GitHub存储库。你也可以从NuGet安装:
PM> Install-Package ilmerge
使用方法:
ilmerge assembly.dll /keyfile:key.snk /out:assembly.dll /targetplatform:v4,C:\Windows\Microsoft.NET\Framework\v4.0.30319 /ndebug
如果需要,你可以使用sn(从Visual Studio)生成你自己的密钥文件:
sn -k key.snk
如@Michal Stefanow所说,删除“Signing”选项卡下的“Sign the assembly”复选标记。
Add here是为自己的文件和/或其他人的文件签名的最简单方法。你只需要在“Post-build event命令行”下添加这一行:
"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\signtool.exe" sign /f "$(ProjectDir)\YourPfxFileNameHere.pfx" /p YourPfxFilePasswordHere /d "Your software title here" /du http://www.yourWebsiteHere.com /t http://timestamp.verisign.com/scripts/timstamp.dll /v "$(BaseOutputPath)$(TargetFileName)"
你可以给别人的文件签名,也可以给自己的文件签名,想签多少都行。
情境: 你有方案A B C D在方案X Y中
X中的A、B、C项目 项目A, C, D在Y
我需要在项目A中使用项目C,但后来我不用了。在bin Debug项目A中有C.dll。
如果我编译解决方案X,一切都很好(在这个解决方案中,我删除参考A -> c),但在解决方案Y中,我得到了这个问题。
解决方案是删除项目A中的C.dll bin Debug