【转】[程序集清单定义与程序集引用不匹配]分析及解决
轉(zhuǎn)自:https://www.cnblogs.com/shuangzimuchangzhu/p/8572817.html
什么是程序集清單(Assembly Manifest)?
??我們知道,在.net中。程序是以程序集為單位進(jìn)行打包的,通常一個.exe文件或一個.dll文件就是一個程序集。程序集一般包含了以下幾個部分:
1,程序集清單(或者叫程序集元數(shù)據(jù));
2,類型元數(shù)據(jù);
3,MSIL代碼;
4,資源(可選項).
如此說來,一般情況下一個.exe或.dll都會包含這此內(nèi)容。
具體請參考:http://msdn2.microsoft.com/zh-cn/library/zst29sk2(VS.80).aspx
? ?在程序集中,程序集清單(manifest)是比較重要的,簡單地講它包含了一個程序集需要引用的外部分文件及程序集所包含的內(nèi)容。其實也就是微軟說的“自我說明”。我們可以通過Visual Studio2003自帶的ILDASM工具查看該清單:
??1,打開ILDASM,一般位于:VS2003安裝目錄\SDK\v1.1\Bin\目錄下。
??2,打開ILDASM,后選擇文件->打開,將想要查看的程序集加進(jìn)來。
??3,雙擊“MANIFEST”;
打開后會看到如下內(nèi)容:
上圖的MANIFEST就是程序清單,像紅線部分標(biāo)出的是該程序集需要引用到外部文件Infragistics.WebUI.UltraWebGrid.ExcelExport.v3.1,同時也標(biāo)識了版本號和密鑰。
??至此,我們知道是什么是程序集清單以及怎么樣查看一個程序集清單了。下面我們再看看什么是程序集引用。
??什么是程序集的引用?
??在VS2003下編程的朋友們都知道,當(dāng)我們用第三方控件,或是別人寫的DLL時,我所要做的就是將其引用進(jìn)來。引用一個程序集的動作分為兩步:
首先,在項目中將需要的引用的程序集“添加至”引用中。
其次,在源文件件引入(using namespace)別人的命名空間;?
如下:
???如此將其引用進(jìn)來以后,我們就可以使用該第三方控件提供的類、方法、資源等功能了。比如我們將“System.Data.SqlClient”引入以后,我們就可以通過其提供的類進(jìn)行數(shù)據(jù)庫的連接及操作了。
然后,具體的問題是:
在ABP的程序包管理器控制臺中執(zhí)行Add-Migration Initial,報以下錯誤
未能加載文件或程序集“Castle.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc”或它的某一個依賴項。找到的程序集清單定義與程序集引用不匹配。 (異常來自 HRESULT:0x80131040)
剛開始我以為是程序集引用的問題,因為它的文件顯示是4.2.1版本的,然而引用是4.0.0.0的
但是重新移除再添加還是4.0.0.0,看了它的程序集清單也是4.0.3
清單沒錯那就是引用錯了,但是引用也顯示4.0.0.0,那應(yīng)該是配置錯了,然后查看EntityFramework配置
將4.1.1.0改為4.0.0.0,問題解決
總結(jié)
以上是生活随笔為你收集整理的【转】[程序集清单定义与程序集引用不匹配]分析及解决的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 被安卓手机“玩剩下”的功能 苹果终于舍得
- 下一篇: 微信信用卡还款一直在银行处理中