2010-06-21 111 views
4

我們剛剛從VS2008升級到VS2010。升級到Visual Studio 2010後使用'var'時出錯

我們的項目編譯得很好;但是當我們運行Web應用程序時,打開Default.aspx時出現以下錯誤:

'/'應用程序中的服務器錯誤。 編譯錯誤說明:在編譯 期間發生了一個 錯誤,該錯誤需要服務此 請求。請仔細閱讀以下 特定錯誤的詳細信息,並適當修改您的 源代碼。

編譯器錯誤信息:CS0246:該 類型或命名空間名稱「變種」不能 被發現(?是否缺少使用 指令或程序集引用)

開放的頁面,鼠標懸停在'var'聲明上,VS2010正確識別它的類型是RegEx。

我在想,在升級過程中,我們的web.config或machine.config中可能發生了一些奇怪的事情。

之前有人遇到過這個問題嗎?任何幫助將不勝感激,希望它可以節省我一些時間潛入這些文件。

編輯: 這裏的代碼培訓相關部分多數民衆贊成炸掉:

Line 10: protected void valSearchFreeText_ServerValidate(object source, ServerValidateEventArgs args) 
Line 11: { 
Line 12:  var url = new Regex(@"http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?", RegexOptions.IgnoreCase); 
Line 13:  var html = new Regex(@"[<,>]", RegexOptions.IgnoreCase); 
Line 14:  args.IsValid = !html.IsMatch(args.Value) && !url.IsMatch(args.Value); 

我不認爲.NET 4.0的原因;我們只從VS2008升級到VS2010;我們沒有從.NET 3.5遷移到.NET 4.0

我將仔細檢查ASP.NET開發服務器與IIS,並在幾分鐘後回傳結果。這肯定是從開發服務器拋出的。

編輯2 這是從開發服務器和IIS引發的。 System.Xml.Linq的也包括在我們的web.config的組件部分:

<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
+0

當您在IIS或開發服務器上運行Web應用程序時,您是否獲得了此操作? – Greg 2010-06-21 17:27:21

+0

嗯,有趣的問題 – Pierreten 2010-06-21 17:35:38

+0

請顯示代碼的相關部分,所以我們可以在上下文中看到「var」。 – abelenky 2010-06-21 17:36:14

回答

5

檢查您的web.config文件中的configuration/system.codedom/compilers/compiler節點。應該有一個providerOption子節點,它確定要使用的編譯器版本。它應該看起來像<providerOption name="CompilerVersion" value="v3.5"/>。聽起來像你的說2.0而不是3.5。

+0

這是做到了。我們負責遷移的開發人員將這些內容從應用程序級別的web.config文件移到了機器級別的web.config文件中。 更新的機器級別web.config從來沒有把它放在我們的開發環境中。在固定的一切中添加。 – 2010-06-21 18:39:09

3

在IIS相關的應用程序池設置爲使用.NET框架4?

+0

我不認爲這是它。我們只從VS2008升級到VS2010。我們沒有從.NET 3.5遷移到.NET 4.0。 – 2010-06-21 18:21:56

0

確保目標框架設置爲3.5或更高 此外,你必須在應用程序的根文件夾一個很好的web.config文件(建議副本的web.config文件並重新命名。)仔細檢查

相關問題