VS针对错误的装配

时间:2012-05-10 15:19:38

标签: visual-studio-2010 assemblies krypton-toolkit

我必须从它的源代码重建Krypton.Toolkit.dll,以便在运行时删除许可证错误消息。在参考文献中,我删除了旧的Krypton程序集并用源代码替换了它们。

我现在收到错误:(和相关的演员类型错误)

Could not load file or assembly 'ComponentFactory.Krypton.Toolkit, Version=4.0.0.0, Culture=neutral, PublicKeyToken=a87e673e9ecb6e8e'

我理解错误消息。虽然我的新引用具有相同的名称,但它根本没有强名称,因此没有PublicKeyToken。

我不明白为什么在完全替换引用时它还在寻找旧的PublicKeyToken?此DLL不在GAC中。


首先,这些具有匹配PKT的DLL在我的主项目.csproj文件中引用。我给了我的两个集合一个强名称并替换了旧的引用。

然后我清理并重建了项目,并且在csproj文件中替换了新的强名称。但是,Visual Studio仍然在上述项目中查找a87e673e9ecb6e8e,如错误窗口所示。


排序。 引用引用了与我的项目相同的第三方DLL,并且它们存在冲突。

1 个答案:

答案 0 :(得分:1)

您解决方案中的某些内容似乎仍然引用了强名称版本。

你可以打开.csproj(或者我认为.vbproj,如果你正在做VB)并在你喜欢的文本编辑器中查找该引用。寻找类似于:

的行
<Reference Include="ComponentFactory.Krypton.Toolkit, Version=4.0.0.0, Culture=neutral, PublicKeyToken=a87e673e9ecb6e8e, processorArchitecture=MSIL">
</Reference>

搜索PublicKeyToken可能就足够了。

如果找到它,您将知道哪个项目仍然引用了强名称版本。

您可能会看到像

这样的子节点
<Reference ... >
  <HintPath>..\SomePath\ComponentFactory.Krypton.Toolkit.dll</HintPath>
</Reference>

指示链接器查找特定路径以解析引用。

您可以手动编辑项目文件(首先备份),或者如果您对此更熟悉,可以使用该知识通过VS更新引用。

<强>更新

如果事实证明(就像在这种情况下那样)问题是引用的DLL反过来引用了另一个Krypton版本,那么诊断问题的好工具是Fusion Log Viewer

http://msdn.microsoft.com/en-us/library/e74a18c4.aspx

请注意,Fusion Log Viewer 必须以管理员身份运行。如果没有,它将不会显示任何结果,但不会抱怨。