无法加载文件或程序集或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配
Could not load file or assembly or one of its dependencies. The located assembly's manifest definition does not match the assembly reference
我知道在 SO 上有几个关于这个问题的类似主题(相信我,我在过去两天里阅读了所有这些主题),但是 none 其中的主题对我的奇怪情况有所帮助。
所以我来了,也许有人能告诉我可能是什么问题。
我们有一个 C# (WPF) 控件的源代码,TreeListView。
它是在 VS2015 dev 命令提示符下使用 csc.exe(较大项目的一部分,IDE 未用于编译)使用以下参数编译的:
/reference:"System.Xaml.dll"
/reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\PresentationCore.dll"
/reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\WindowsBase.dll"
/reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\WindowsFormsIntegration.dll"
/reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\PresentationFramework.dll"
/nowarn:1701,1702 /errorreport:prompt /warn:4 /platform:x86 /define:DEBUG;TRACE /debug+ /debug:full /optimize- /target:library /out:..\debug\TreeListView.dll
...here all the .cs source files are listed...
/resource:"..\TreeListView\obj\debug\TreeListView.g.resources"
我们所有的 C#/WPF DLL 都是在命令行中使用相同的选项编译的。
它编译得很好,我有 TreeListView.dll。名字不强
它被复制到 mainApp.exe 旁边,当我 运行 主应用程序并尝试将 window 与此 TreeListView 一起使用时,出现异常
*** Exception ***: System.IO.FileLoadException
Message: Could not load file or assembly 'TreeListView, PublicKeyToken=ffedd4b1334b06f5' or one of its dependencies.
The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Source: mscorlib
main_app也用csc.exe编译,引用完全上面编译TreeListView.dll
的输出
顺便说一句,不知道为什么它显示 public 键,当它不是强命名时
sn -T debug\TreeListView.dll
Microsoft (R) .NET Framework Strong Name Utility Version 4.0.30319.0
Copyright (c) Microsoft Corporation. All rights reserved.
debug\TreeListView.dll does not represent a strongly named assembly
其他观察
在 VS2015 IDE 中,我创建了一个新的 WPF 应用程序,并引用了上面编译的 TreeListView.dll - 并使用了 XAML 中的控件:它立即显示在 GUI XAML设计师Could not load file or assembly 'TreeListView, PublicKeyToken=ffedd4b1334b06f5' or one of its dependencies. The system cannot find the file specified.
(注意,这里错误是The system cannot find the file specified.
)
我想 IDE 会提供更多信息,但这里没有新内容。
其他信息:
整个 build/run 过程在 VS2008 (.NET3.5) 上运行良好,现在在移动到 VS2015 (.NET4) 之后,更新体验了这个,并且只有这个 TreeControl.dll
我检查了该 dll 的所有引用、使用的框架、ILSpy、ildasm、未找到文件的 ProcessMonitor 等,但找不到任何有用的东西。
ildasm > TreeControl.dll 的清单 - 这对我来说也不错
// Metadata version: v4.0.30319
.assembly extern mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 4:0:0:0
}
.assembly extern PresentationFramework
{
.publickeytoken = (31 BF 38 56 AD 36 4E 35 ) // 1.8V.6N5
.ver 4:0:0:0
}
.assembly extern System.Xaml
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 4:0:0:0
}
.assembly extern WindowsBase
{
.publickeytoken = (31 BF 38 56 AD 36 4E 35 ) // 1.8V.6N5
.ver 4:0:0:0
}
.assembly extern PresentationCore
{
.publickeytoken = (31 BF 38 56 AD 36 4E 35 ) // 1.8V.6N5
.ver 4:0:0:0
}
.assembly extern System
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 4:0:0:0
}
.assembly extern System.Core
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 4:0:0:0
}
如果知道要检查什么,我们将不胜感激。
尝试在 运行 时使用 Fuslogvw 解决绑定失败的问题。在您 运行 将应用程序设置设置为 'Log binding failures to disk' 时。
任何失败的绑定都将记录在 window 上。您可以双击日志以获取有关哪个 dll 正在尝试加载 TreeListView 程序集以及它正在尝试查找该 dll 的所有位置的完整详细信息。
我知道在 SO 上有几个关于这个问题的类似主题(相信我,我在过去两天里阅读了所有这些主题),但是 none 其中的主题对我的奇怪情况有所帮助。
所以我来了,也许有人能告诉我可能是什么问题。
我们有一个 C# (WPF) 控件的源代码,TreeListView。
它是在 VS2015 dev 命令提示符下使用 csc.exe(较大项目的一部分,IDE 未用于编译)使用以下参数编译的:
/reference:"System.Xaml.dll"
/reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\PresentationCore.dll"
/reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\WindowsBase.dll"
/reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\WindowsFormsIntegration.dll"
/reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\PresentationFramework.dll"
/nowarn:1701,1702 /errorreport:prompt /warn:4 /platform:x86 /define:DEBUG;TRACE /debug+ /debug:full /optimize- /target:library /out:..\debug\TreeListView.dll
...here all the .cs source files are listed...
/resource:"..\TreeListView\obj\debug\TreeListView.g.resources"
我们所有的 C#/WPF DLL 都是在命令行中使用相同的选项编译的。
它编译得很好,我有 TreeListView.dll。名字不强
它被复制到 mainApp.exe 旁边,当我 运行 主应用程序并尝试将 window 与此 TreeListView 一起使用时,出现异常
*** Exception ***: System.IO.FileLoadException
Message: Could not load file or assembly 'TreeListView, PublicKeyToken=ffedd4b1334b06f5' or one of its dependencies.
The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Source: mscorlib
main_app也用csc.exe编译,引用完全上面编译TreeListView.dll
的输出顺便说一句,不知道为什么它显示 public 键,当它不是强命名时
sn -T debug\TreeListView.dll
Microsoft (R) .NET Framework Strong Name Utility Version 4.0.30319.0
Copyright (c) Microsoft Corporation. All rights reserved.
debug\TreeListView.dll does not represent a strongly named assembly
其他观察
在 VS2015 IDE 中,我创建了一个新的 WPF 应用程序,并引用了上面编译的 TreeListView.dll - 并使用了 XAML 中的控件:它立即显示在 GUI XAML设计师Could not load file or assembly 'TreeListView, PublicKeyToken=ffedd4b1334b06f5' or one of its dependencies. The system cannot find the file specified.
(注意,这里错误是The system cannot find the file specified.
)
我想 IDE 会提供更多信息,但这里没有新内容。
其他信息: 整个 build/run 过程在 VS2008 (.NET3.5) 上运行良好,现在在移动到 VS2015 (.NET4) 之后,更新体验了这个,并且只有这个 TreeControl.dll
我检查了该 dll 的所有引用、使用的框架、ILSpy、ildasm、未找到文件的 ProcessMonitor 等,但找不到任何有用的东西。
ildasm > TreeControl.dll 的清单 - 这对我来说也不错
// Metadata version: v4.0.30319
.assembly extern mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 4:0:0:0
}
.assembly extern PresentationFramework
{
.publickeytoken = (31 BF 38 56 AD 36 4E 35 ) // 1.8V.6N5
.ver 4:0:0:0
}
.assembly extern System.Xaml
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 4:0:0:0
}
.assembly extern WindowsBase
{
.publickeytoken = (31 BF 38 56 AD 36 4E 35 ) // 1.8V.6N5
.ver 4:0:0:0
}
.assembly extern PresentationCore
{
.publickeytoken = (31 BF 38 56 AD 36 4E 35 ) // 1.8V.6N5
.ver 4:0:0:0
}
.assembly extern System
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 4:0:0:0
}
.assembly extern System.Core
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 4:0:0:0
}
如果知道要检查什么,我们将不胜感激。
尝试在 运行 时使用 Fuslogvw 解决绑定失败的问题。在您 运行 将应用程序设置设置为 'Log binding failures to disk' 时。
任何失败的绑定都将记录在 window 上。您可以双击日志以获取有关哪个 dll 正在尝试加载 TreeListView 程序集以及它正在尝试查找该 dll 的所有位置的完整详细信息。