我知道关于这个问题有几个类似的主题(相信我,我花了最后两天阅读所有这些),但在我的奇怪情况下它们都没有帮助。
所以我来到这里,也许有人可以告诉我可能是什么问题。
我们有一个C#(WPF)控件的源,TreeListView。
使用csc.exe(较大项目的一部分,IDE不用于编译)使用VS2015 dev命令提示符编译,并使用以下参数:
/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旁边,当我运行主应用程序,并尝试使用这个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的输出
顺便说一句,不知道为什么它显示公钥,当它没有名字时
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 Designer中显示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会提供更多信息,但这里没有任何新内容。
其他信息: 这整个构建/运行过程在VS2008(.NET3.5)上运行良好,现在转移到VS2015(.NET4)后,更新了这个,并且只有这个TreeControl.dll
我检查了该dll的所有引用,使用了框架,ILSpy,ildasm,ProcessMonitor for file not found等,但找不到任何有用的东西。
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
}
任何想知道要检查的内容都会非常感激。
答案 0 :(得分:1)
尝试在运行时使用Fuslogvw进行失败的绑定。在运行应用程序集设置时,将绑定失败记录到磁盘'。
任何失败的绑定都将记录在窗口中。您可以双击日志以获取有关哪个dll尝试加载TreeListView程序集以及它尝试查找该dll的所有位置的完整详细信息。