2012-05-10 39 views
1

我不得不从源代码重建Krypton.Toolkit.dll以便在运行时删除许可证错误消息。在参考文献中,我删除了旧的氪组件,并用源代码替换了旧的氪组件。VS指向错误汇编

我现在得到的错误:(和相关投类型的错误)

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

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

我不明白为什么当引用被完全替换时仍然在寻找旧的PublicKeyToken?该DLL不在GAC中。


起初这些DLL匹配PKT凡在我的主要项目.csproj文件引用。我给了我的两个程序集一个强有力的名字并替换了旧的引用。

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


Sorted。 引用与我的项目引用相同的第三方DLL,并且它们发生冲突。

回答

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更新参考,如果您对此更加熟悉。

UPDATE

如果事实(因为在这种情况下所做的那样),这个问题是一个引用的DLL,它反过来引用其他氪版本,一个很好的工具,用于诊断问题是融合日志查看器

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

注意,融合日志查看器必须以管理员身份运行。如果没有,它不会显示任何结果,但否则不会抱怨。

+0

谢谢这正是我一直在寻找在那里我的主要项目'.csproj'文件引用学习:) – Amicable

+0

起初这些,所以我给我的两个组件强名称和更换它们。 清理并重建项目和新的强名称已经取代了'公钥= a87e673e9ecb6e8e'但Visual Studio是仍然在寻找'在上述项目a87e673e9ecb6e8e'。 – Amicable

+0

有没有在你的.csproj'a87e673e9ecb6e8e'提到了吗? –