代码之家  ›  专栏  ›  技术社区  ›  Andrew Matthews

升级到vs 2010之后,团队城市建设失败

  •  1
  • Andrew Matthews  · 技术社区  · 14 年前

    我有一个项目,它目前在我的dev机器上使用vs 2010(大概使用msbuild v4.0)编译得很好,但是在team city的msbuild v3.5下失败(在基于w in 2003服务器的vm上运行,安装了.net 2、3.5和4)。这个项目最近升级到2010年,现在在CI构建上失败了。我在谷歌上搜索过,并尝试了所有显而易见的事情(加上一些没有意义的事情),但没有任何事情会影响结果。

    项目失败,并出现如下一系列错误:

    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应用程序,在其configuration/system.web/compilation/assembly部分中具有以下设置:

        <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" />
    

    我不知道这有什么关系,但以防万一。

    有关于是什么导致了这个错误或者如何解决这个问题的想法吗?

    蒂亚

    2 回复  |  直到 10 年前
        1
  •  7
  •   Andrew Matthews    14 年前

    解决了的:

    将引用添加到web.config文件是毫无意义的,因为PostSharp在ASP.NET自己执行任何编译之前就进入了图片,因此缺少对System.Core引用会导致系统失败(我不确定原因)。

    解决方案是手动编辑失败项目的csproj文件,并手动向该项目添加对system.core的引用。您不能从解决方案资源管理器执行此操作,因为它不允许添加 应该 由msbuild自动添加。

    仍然不确定它为什么一开始就失败了,但至少现在它编译并再次通过测试。

        2
  •  0
  •   MBU    14 年前

    在TeamCity上将msbuild切换到v4.0了吗?我认为你不能用TeamCity上的msbuild 3.5用.NET 4.0构建一个2010项目。