.net 签名后无法加载dll

.net 签名后无法加载dll,.net,c++-cli,strongname,.net,C++ Cli,Strongname,我有一个最初未命名的dll。应用程序已成功加载它 但在使用.snk密钥文件对其签名后,应用程序拒绝加载它并抛出System.IO.FileNotFoundException 如果我在没有snk的情况下重建它,它将成功加载 原因是什么?最可能的原因是您的应用程序以前使用的dll的另一个版本是由Visual Studio“巧妙”复制的,并且在某个时候意外地在部署计算机上结束(是的,它看起来像是版本控制问题)。一旦你签署了dll你打算使用的副作用是替代dll不能再使用了 另一种可能性是,您使用了“任意

我有一个最初未命名的dll。应用程序已成功加载它

但在使用.snk密钥文件对其签名后,应用程序拒绝加载它并抛出
System.IO.FileNotFoundException

如果我在没有snk的情况下重建它,它将成功加载


原因是什么?

最可能的原因是您的应用程序以前使用的dll的另一个版本是由Visual Studio“巧妙”复制的,并且在某个时候意外地在部署计算机上结束(是的,它看起来像是版本控制问题)。一旦你签署了dll你打算使用的副作用是替代dll不能再使用了

另一种可能性是,您使用了“任意cpu”的构建,并且一旦对dll进行了签名,结果就不同了。我在“任何cpu”构建中都见过这种不可预测的行为。微软你在想什么


找不到dll错误可能是指依赖项,我不确定,因为我已经五年多没有需要对dll进行签名了,但是是否存在未签名的库dll,并且预期这些库dll与已签名的父dll不兼容或根本不兼容。关于“任何cpu”,签名可能需要32或64位的显式构建。

谢谢您的回答。版本不是原因:如果我在没有snk的情况下重建dll,应用程序将成功加载它。看起来它正在工作。当然,这些应用程序需要一个没有PublicKeyToken的程序集。它们必须用新的程序集重建。@HansPassant应用程序在dll签名后重建。