我一直在摸索着看起来像年龄的东西。我确定它很容易修复,但我看不到它。
我在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 :(得分:0)
将using System.Linq;
添加到.cs
文件的顶部。
另外,请确保SiteMapWrapper
实施IEnumerable<T>
。
编辑:我没注意到它在本地计算机上运行 确保服务器具有所有从属程序集的正确版本。
答案 1 :(得分:0)
LINQ实际上需要.NET 3.0(3.5更好),而不是2.0。确保AppPool配置正确。
答案 2 :(得分:0)
我想您会发现服务器没有安装3.5。
答案 3 :(得分:0)
将.cs文件的构建操作属性从内容更改为编译。
See this article了解更多信息。