1

Krypton.Toolkit.dll为了在运行时删除许可证错误消息,我不得不从它的源代码重建。在参考文献中,我已经删除了旧的氪组件,并用源代码替换了旧的氪组件。

我现在收到错误:(以及相关的转换类型错误)

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

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

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


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

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


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

4

1 回答 1

1

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

您可以打开您的 .csproj(或者如果您正在使用 VB,我认为是 .vbproj)并在您最喜欢的文本编辑器中查找该参考。查找类似于以下内容的行:

<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 上,而引用的 DLL 又引用了另一个 Krypton 版本,那么诊断问题的好工具是 Fusion Log Viewer

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

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

于 2012-05-10T15:23:25.450 回答