2010-06-21 71 views
1

我有一个项目,当前使用VS 2010在开发机器上编译(推测使用MSBUILD v4.0),但在Team City的MSBUILD v3.5下运行基于Win 2003服务器(安装了.NET 2,3.5和4)的虚拟机。该项目新近升级到2010年,现在在CI构建上失败。我已经谷歌搜索,并尝试了一切显而易见(加上一些没有意义的事情),并没有影响结果。升级到VS 2010后Team City构建失败

该项目失败,错误的是这样一个顺序:

error CS0234: The type or namespace name 'Linq' does not exist in the namespace 'System' (are you missing an assembly reference?) 

有在溶液中使用System.Core程序,将System.Data.Linq和System.Xml.Linq的,他们都许多其他项目似乎编译没有问题。有问题的项目是一个Web应用程序,它在配置/的System.Web /编译/组件部分具有以下设置:

<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
    <add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
    <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"/> 

加在同一个文件中的以下内容:

<system.codedom> 
    <compilers> 
    <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4"> 
     <providerOption name="CompilerVersion" value="v3.5"/> 
     <providerOption name="WarnAsError" value="false"/> 
    </compiler> 
    </compilers> 
</system.codedom> 

有问题的项目是IIRC,我的解决方案中唯一一个既是Web应用程序又是由PostSharp(v1.5)进行后处理的项目。 PostSharp在.csproj的配置,像这样:

<PropertyGroup> 
    <DontImportPostSharp>True</DontImportPostSharp> 
    <PostSharpUseCommandLine>True</PostSharpUseCommandLine> 
</PropertyGroup> 
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> 
<Import Project="$(POSTSHARP15)\PostSharp-1.5.targets" /> 

我不知道这到底是怎么扯上关系,但它的存在,以防万一。

关于是什么原因导致此错误或有关如何解决该问题的任何想法?

TIA

回答

7

解决:

添加引用web.config文件是没有意义的,因为PostSharp进入图片ASP.NET已经完成了自己的任何编译过,所以不存在以System.Core程序参考参考导致系统失败(我不知道为什么)。

解决方案是手动编辑失败项目的csproj文件,并手动添加对项目的System.Core引用。您无法从解决方案资源管理器执行此操作,因为它禁止添加由MSBUILD自动添加应为的引用。

不知道为什么它首先失败,但至少现在编译并再次通过测试。

0

您是否已经将teamwork上的MSbuild切换到v4.0?我不认为你可以使用teamcity上的MSbuild 3.5来建立一个使用.Net 4.0的2010年项目。

+0

嗨迈克,实际上我选择保持3.5的框架,并能够构建我的toolset =“4.0”文件,就好像它们是toolset =“3.5”(该框架相应地自适应) – 2010-06-21 06:08:25