2009-06-12 63 views
0

我有一個Web應用程序,我期望從兩個獨立的提供程序集成組件中的功能。一套(Set1)的程序集建立在.NET 2.0上,另一套(Set2)的程序集需要.NET 3.5,程序集絕對。要使Set2程序集正常工作,我必須在web.config中添加(system.codedom)部分並指定v3.5編譯器。但是,這似乎破壞了引用Set1程序集的代碼(JIT編譯器需要永久且請求超時)。當我刪除system.codedom部分時,引用Set2的應用程序的某些功能失敗。2.0/3.5並排組件

我們開始了這個項目,知道.NET 2.0和3.5可以共存而不會有任何問題。有沒有什麼方法可以使這兩套裝置很好地發揮作用?

編輯:這是什麼system.codedom部分看起來像;

<system.codedom> 
<compilers> 
    <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider,System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4"> 
    <providerOption name="CompilerVersion" value="v3.5"/> 
    <providerOption name="WarnAsError" value="false"/> 
    </compiler> 
    <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4"> 
    <providerOption name="CompilerVersion" value="v3.5"/> 
    <providerOption name="OptionInfer" value="true"/> 
    <providerOption name="WarnAsError" value="false"/> 
    </compiler> 
</compilers> 

+0

你可以在.net 3.5中重新編譯Set1嗎? – 2009-06-12 18:27:19

+0

我沒有源文件。 – 2009-06-12 18:27:56

+2

只要一個應用程序運行爲2.0,另一個應用程序運行爲3.5,則.NET 2.0和3.5可以共存,因此有兩個運行時被加載。在一個應用程序(進程)中,您只能使用一個版本。 – 2009-06-12 18:40:34

回答

1

如果你的應用領域開始在.NET 2.0中,只有NET 2.0組件將能夠加載。如果您的應用程序域是在.NET 3.5中啓動的,您將能夠毫無問題地加載.NET 2.0和.NET 3.5程序集。

因此,假設您創建一個Windows應用程序項目並將目標設置爲.NET 2.0,那麼您將無法加載.NET 3.5程序集。如果您將項目定位到.NET 3.5,則2.0組件和3.5組件將無任何問題地加載。

+0

但是system.codedom事情呢? – 2009-06-12 18:46:05

0

.NET Web應用程序(ASP.NET)沒有「3.5運行時」。 ASP.NET 3.5應用程序在2.0運行時運行,3.5「stuff」只是添加了必須安裝在機器上的庫。

您確定在運行此服務器的服務器上安裝了3.5嗎?

您是否重新編譯了自己的Web應用程序?或者只是改變配置文件?你的應用程序是什麼類型的項目?網站項目? Web應用程序項目?

0

我有發生同樣的事情,但這是運行.NET 3.5/VS2008的測試版時。如前所述,3.5只是一個「附加」。