簡體   English   中英

無法加載文件或程序集或其依賴項之一。 找到的程序集的清單定義與程序集引用不匹配

[英]Could not load file or assembly or one of its dependencies. The located assembly's manifest definition does not match the assembly reference

我知道關於這個問題有幾個類似的話題(相信我,我花了最后兩天閱讀了所有這些話題),但是在我遇到奇怪的情況時,它們都沒有幫助。
所以我來這里,也許有人可以啟發我可能是什么問題。

我們有一個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設計器中顯示Could not load file or assembly 'TreeListView, PublicKeyToken=ffedd4b1334b06f5' or one of its dependencies. The system cannot find the file specified. 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等,但找不到任何有用的東西。

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進行綁定失敗。 在運行應用程序時,將設置設置為“將綁定失敗記錄到磁盤”。

任何失敗的綁定都將記錄在窗口中。 您可以雙擊日志以獲取有關哪個dll試圖加載TreeListView程序集以及它試圖查找該dll的所有位置的完整詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM