2017-01-18 185 views
1

我們有一個建立在.Net Framework 3.5版本中的項目。我們將這個項目更新爲.NET Framework的4.0版本,在我們解決了所有問題後,我們注意到Web服務初始化期間存在嚴重滯後。在.Net Framework 3.5啓動項目中使用.Net Framework 4.5項目參考項目

我們恢復了項目回到3.5框架,並修復了我們的滯後問題。我們有第二個項目依賴於4.5框架dll的使用,因此第二個項目需要在4.5版本中構建。

我知道這個問題之前已經被問過了,答案一直是不可能的 - 但這是可能的,因爲我們確實有這個確切的結構工作,遵循下面msdn論壇上提供的步驟,而是使用<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6">運行時而不是僅顯示的4.0。

https://social.msdn.microsoft.com/Forums/vstudio/en-US/36b1a209-55d5-4323-91dc-0919ba2e1d03/using-methods-of-a-net-40-dll-by-net-35sp1-client?forum=clr

的問題是,我們再增加一個全新的服務調用我們的web服務,而現在當我們試圖訪問項目引用,它拋出一個錯誤,這是訪問一個建項目在較新的版本中,給出BadImageFormatException。

在上述論壇上討論這個確切的錯誤,並指出,你需要包括標準2.0參考,並在<startup>部分爲<supportedRuntime>的4.0參考,我們有他們兩人英寸

<startup> 
    <supportedRuntime version="v2.0.50727"/> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
</startup> 

我相信問題是app.config不會加載兩個運行時。我認爲,這是因爲發生的事情,如果我們切換像下面的supportedRuntimes的順序....

<startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    <supportedRuntime version="v2.0.50727"/> 
</startup> 

我們開始得到錯誤隨時我們試圖訪問任何3.5框架的引用。

現在,supportsRuntime的添加順序非常重要 - 在第二組代碼中,它更喜歡在3.5框架上使用4.5版本,但它應該使用3.5框架,當它可以更正時?我可以在這裏取得基礎,但就像我說過我們有這個工作 - 不幸的是我沒有爲我的代碼集創建一個標籤,所以我不能回到正在工作的代碼集。

任何人都可以想到我可能會丟失的任何東西,或者任何人都可以告訴我是否可以專門告訴一組代碼來利用vb.Net中的4.5框架?

+0

「問題是,我們重新向我們的webservice添加了一個全新的服務調用,現在當我們嘗試訪問項目引用時」如果您有Web服務,那麼您不能僅僅將端點作爲它是?你爲什麼要構建一個Web服務,然後嘗試引用該項目?你可以在仿真模式下運行它,然後設置一個客戶端來使用它。試圖混合框架是一個壞主意。通常可以將較低的圖書館引用到較高的圖書館,但另一種方式只是要求麻煩。 – djangojazz

回答

0

我很確定你只需要一個支持的運行時,至少在運行時,因爲每個進程只加載一個運行時。

我相當自信,因爲我始終使用該配置,並在最新的框架上運行3.5編譯的DotLisp,因此我可以訪問DotLisp REPL中的最新內容。

相關問題