2010-01-14 55 views
0

我一直在摸索我的腦袋,看起來像年齡。我確定它很容易修復,但我看不到它。未能在App_Code中編譯Linq方法

我在App_Code中有一個類,它使用了一點Linq。

var siteMap = SiteMapWrapper.BuildSiteMap(true); 
var currentTopLevelParent = siteMap.Single(s => s.IsActive); 
if (currentTopLevelParent != null) 

我已經開發了本地和所有工作正常。當我轉移到IIS託管相同的類無法編譯。我收到:

does not contain a definition for 'Single' and no extension method 'Single' 
accepting a first argument of type 'SiteMapWrapper' could be found (are you 
missing a using directive or an assembly reference?) 

我確認虛擬目錄運行的是.NET 2.0,因爲它應該。我還確認正確的程序集正在加載到web.config中。

<compilation debug="true"> 
    <assemblies> 
    <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
    <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
    <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
    <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
    </assemblies> 
</compilation> 

我試過在web.config中添加命名空間指令也沒有運氣。任何人都可以想到其他任何嘗試?

非常感謝。

+0

什麼是「SiteMapWrapper」? – 2010-01-14 17:19:33

+0

只是我自己的包裝網站地圖的自定義類。沒什麼複雜。 – madcapnmckay 2010-01-15 09:13:56

回答

0

我想你會發現服務器沒有安裝3.5。

0

using System.Linq;添加到.cs文件的頂部。

另外,請確保SiteMapWrapper執行IEnumerable<T>

編輯:我沒有注意到它在本地機器上工作。
確保服務器具有所有相關程序集的正確版本。

0

LINQ實際上需要.NET 3.0(3.5更好),而不是2.0。確保AppPool配置正確。

0

更改你的cs文件的生成操作財產內容編譯

See this article瞭解更多信息。