任何人都可以告訴我什麼樣的順序解決組裝問題發生時,我有以下情況?裝配解決和合並組件
以我倉我有我的exe和2 DLL的:
- 裝配體A(版本1),B和C合併到X(SO 4個組件插入1)
- 裝配體A(第2版)
我提出的所有參考文獻都沒有包括UserSpecificVersion
參數。
- 現在,在我的exe文件中調用,哪個A被使用?
- 另外,在組件B中正在使用A的呼叫期間?
而如果它是周圍的其他方式(所以首先從B,然後我的exe文件)
是否有關於這個的任何文檔嗎?
任何人都可以告訴我什麼樣的順序解決組裝問題發生時,我有以下情況?裝配解決和合並組件
以我倉我有我的exe和2 DLL的:
我提出的所有參考文獻都沒有包括UserSpecificVersion
參數。
而如果它是周圍的其他方式(所以首先從B,然後我的exe文件)
是否有關於這個的任何文檔嗎?
我所做的所有引用都沒有包含UserSpecificVersion參數。
我假設你實際上是指引用程序集的「特定版本」設置,並將其設置爲False。這在運行時不起作用,僅在編譯時。當您添加裝配體時,它會記錄參考裝配體的[AssemblyVersion]。如果你接着後,重新編譯你的程序,但它發現一個不同的版本的參考大會,那麼它不會抱怨,但使用新的原樣。這樣做通常是有風險的,只有在你丟失原始參考裝配後你試圖跛行時纔會這樣做,並且不知道新裝置改變了什麼程度。請始終將此設置保留爲默認值True,如果您挖掘出自己無法擺脫的深洞,則只能使用False。
在運行時,它將始終堅持使用正確的顯示名稱和[AssemblyVersion]查找從參考程序集記錄的程序集。當你有兩個具有相同名稱和名稱空間的程序集時,你通常會遇到麻煩,你往往需要extern alias挖掘出你自己的洞。使用ILMerge實際上可能是一種解決方法,它會更改程序集的顯示名稱。然而,儘管如此,仍然會給名稱空間和類型名稱造成衝突,但如何繞過這個障礙還不清楚。
因此,典型的結果是,EXE將嘗試找到A2,使用重命名的程序集顯示名稱,B將嘗試查找A1。我不能從提供的信息中100%保真地完成它。如果您有非典型情況,請使用Fuslogvw.exe獲取程序集綁定的跟蹤。一定要選擇「記錄所有綁定」選項。