現在、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" />
これがどのように関連しているのかはわかりませんが、念のためです。
このエラーの原因、または問題を回避する方法について何かアイデアはありますか?
ティア