C# 类型或命名空间名称';林克';在';系统&x27;

C# 类型或命名空间名称';林克';在';系统&x27;,c#,msbuild,C#,Msbuild,我试图理解使用Microsoft Build Engine(也称为MSBuild)构建C#project的过程,我面临着这个问题。问题很简单,我想我只是不明白什么 我用2.cs文件编写了一个简单的程序。 第一个文件是“MathOp.cs”。在这个文件中,我定义了两个函数:add(double num1,double num2)和multiply(doble,double); 第二个文件是“Program.cs”。在这里,我定义了两个变量,我将其传递给MathOp文件中的add函数,并得到rezu

我试图理解使用Microsoft Build Engine(也称为MSBuild)构建C#project的过程,我面临着这个问题。问题很简单,我想我只是不明白什么

我用2.cs文件编写了一个简单的程序。 第一个文件是“MathOp.cs”。在这个文件中,我定义了两个函数:add(double num1,double num2)和multiply(doble,double); 第二个文件是“Program.cs”。在这里,我定义了两个变量,我将其传递给MathOp文件中的add函数,并得到rezult; 这个程序是正确的

然后,我编写了一个简单的msbuild文件,在其中定义了要构建的任务和目标。 当我在VisualStudio命令提示符下启动它时,我得到了erorr cs0234:在系统名称空间中找不到类型或名称空间名称Linq。最有趣的是,我在msbuild文件中引用了System.dll等。如果我在Program.cs文件中注释using指令,这个错误就会消失

<Project DefaultTargets="Compile"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
<PropertyGroup>
    <AssemblyInfo>Build</AssemblyInfo>
    <builtdir>Build\</builtdir>
</PropertyGroup>

<ItemGroup>
    <CSFile Include="msbuildTest\Program.cs"/>
    <CSFile Include="msbuildTest\Properties\AssemblyInfo.cs"/>
    <CSFile Include="msbuildTest\MathOp.cs"/>

    <Reference Include="System.dll"/>
    <Reference Include="System.Data.dll"/>
    <Reference Include="System.Drawing.dll"/>
    <Reference Include="System.Windows.Forms.dll"/>
    <Reference Include="System.XML.dll"/>
</ItemGroup>

<Target Name="PreBuild">
    <Exec Command="if not exist $(builtdir) md $(builtdir)"/>
</Target>

<Target Name="Compile" DependsOnTargets="PreBuild">
    <Csc Sources="@(CSFile)"
        References="@(Reference)"
        OutputAssembly="$(builtdir)$(MSBuildProjectName).exe"
        TargetType="exe"/>
</Target>

<Target Name="Clean" >
    <Exec Command="DEL $(builtdir)$(AssemblyInfo).exe"/>
</Target>
<Target Name="Rebuild" DependsOnTargets="Clean;Compile"/>

建造
建造\

在当前状态下,msbuild将使用.Net2.0中的CSC,它对Linq一无所知

解决此问题的最简单方法是在msbuild项目中指定4.0版本,从而强制msbuild使用正确的CSC版本:

<Project ToolsVersion="4.0"
    DefaultTargets="Compile"
    xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >


您引用了mscorlib.dll的哪个版本?您还需要引用
System.Core.dll
是的,我包括System.Core.dll,但问题是steel是。您能给我们看一下您的代码吗?您不必指定没有
的程序集名称.dll
?那就是:
例如,非常感谢,朋友=)谢谢,伙计们=)