1

現在、VS 2010 (おそらく MSBUILD v4.0 を使用) を使用して開発マシンで問題なくコンパイルされるプロジェクトがありますが、Team City の MSBUILD v3.5 では失敗します (.NET 2 を使用する Win 2003 サーバーに基づく VM で実行)。 、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/assemblies セクションに次の設定があります。

    <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 です。これは、私のソリューションで WebApplication であり、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" />

これがどのように関連しているのかはわかりませんが、念のためです。

このエラーの原因、または問題を回避する方法について何かアイデアはありますか?

ティア

4

2 に答える 2

7

解決済み:

ASP.NET が独自のコンパイルを実行する前に PostSharp が画像に入るため、web.config ファイルへの参照を追加しても意味がありません。確かに理由)。

解決策は、失敗したプロジェクトの csproj ファイルを手動で編集し、System.Core への参照をプロジェクトに手動で追加することです。MSBUILD によって自動的に追加される参照の追加が許可されないため、ソリューション エクスプローラーからこれを行うことはできません。

そもそもなぜ失敗したのかはまだわかりませんが、少なくともコンパイルしてテストに再び合格するようになりました.

于 2010-06-21T06:12:38.277 に答える
0

teamcity で MSbuild を v4.0 に切り替えましたか? teamcity で MSbuild 3.5 を使用して .Net 4.0 で 2010 プロジェクトをビルドできるとは思いません。

于 2010-06-21T06:02:28.363 に答える