“System.Data”命名空间中不存在“Linq”类型或命名空间名称。

8
我们在将项目部署至客户服务器时出现了错误,但在本地开发和测试环境中都能正常运行。错误提示为:
“类型或命名空间名称 'Linq' 在命名空间 'System.Data' 中不存在。”
我们已经进行了一些显而易见的检查: - 我们在 web.config 文件中添加了 System.Data.Linq、System.Core、System.Linq 等引用。 - 项目的目标框架是 3.5。 - 我们确认了客户服务器上 IIS 中的 ASP.NET 版本为 2.0.50727。 - 我们确认了服务器已安装框架 3.5 并包含 Windows/assemblies 文件夹中的 System.Data.Linq DLL。
还有其他的想法吗?

1
安装服务包(按照Orion的建议),重启了几次后,它开始工作了。仍然不确定根本问题是什么,但现在它可以运行了。 - Keith
5个回答

16

在使用脚本构建项目时,我遇到了与使用Visual Studio 2010构建同一项目时相同的编译错误。当我尝试从VS2010中添加System.Core引用时,它返回一个错误,说该引用是隐式设置的,无法添加引用。

对于我来说,解决方案是手动将以下引用添加到csproj文件中。请注意,引用的目标框架显式设置为3.5(这是在项目的目标框架已设置为3.5的基础上):

<Reference Include="System.Core">
  <RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>

在一个被转换为SQL数据工具项目的SQL CLR项目中,添加对System.Core的引用对我们很有帮助。 - Seth
@HotLicks 在你的 csproj 文件中是否明确引用了它?你能打开你的 .csproj 文件并检查一下吗? - Ashby
这对我解决了问题。我有一个在Visual Studio 2012中创建的项目,必须作为Visual Studio 2008解决方案的一部分合并。 - Davie Brown
尝试使用此链接(https://dev59.com/Nm865IYBdhLWcg3wCqBA)查看类似问题。 - Shaiju T

2

这里得知:如果没有引用“System.Core.dll”(包含核心LINQ API的程序集),则会出现此错误。但是,当您针对.NET3.5时,所有默认模板都应包括此引用。


从我的原始帖子中:“我们在web.config中引用了System.Data.Linq,System.Core,System.Linq等。” - Keith

2

我在使用Visual Web Developer 2010和.NET 4.0开发网站时遇到了类似的问题。

VWD可以在App_Code文件中找到“System.Linq”命名空间,但不能在其他目录中找到。这很奇怪,但却是事实。

该“项目”是使用“打开网站”打开的,因此没有.csproj文件。

将:

C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Core.dll

复制到网站的bin目录中,可以使VWD在其他目录中找到该命名空间。

希望对某些人有所帮助。


0

我知道这个问题已经有答案了,但是为了澄清一下,在Visual Studio中为什么我们会得到“构建成功”的消息,但在尝试在SVN或其他存储库中构建时会遇到问题呢?

原因:当IDE调用构建系统时,它被IDE引用,但MSBuild本身没有引用它。

但是,像Ashby上面所说的那样添加引用后,它肯定会正常工作。即使在Visual Studio 2012中仍然存在此问题,但是我意识到了这个事实,并进行了操作,一切都开始正常工作了。

敬礼,

Varun Shringarpure


0

我曾经遇到过同样的问题,但是根本原因不同。

我在 dbml 的 designer.cs 文件中更改了命名空间声明。每当我通过设计器添加新对象时,Visual Studio 都会还原命名空间声明,导致构建失败。

将命名空间简单地改回应该是什么就可以解决问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接