私は現在、ASP.NET MVC 3 ソリューションで動作する 2 つのビルド構成を取得しようとしている TeamCity でそれを実行しています。私の設定はhttp://www.troyhunt.com/2010/11/you-deploying-it-wrong-teamcity_26.htmlのガイダンスとほとんど同じです。最初の「ビルドとテスト」ビルド構成で .sln をビルドすると、すべてがうまく機能します。しかし、"Package & Deploy" 構成では、MSBuild で MyWebProject.csproj ファイルを直接ビルドすると、.NET 4.0 アセンブリではなく、.NET 3.5 アセンブリへのコア .NET 参照が解決されているようです。
したがって、「{ get; set; }」プロパティは抽象としてマークされていないため、本体が必要など、あらゆる種類の .NET 3.5 コンパイル エラーが発生します。
さらに、v3.5 アセンブリをピックアップしていると思うのは、TeamCity CoreCompile - Csc ビルド アクティビティ中に、
「[Csc] c:\Program Files\TeamCity\buildAgent\work\651adc4c97432014\packages\DataAnnotationsExtensions.1.0.2.0\lib\NETFramework40\DataAnnotationsExtensions.dll エラー CS1705: アセンブリ 'DataAnnotationsExtensions、バージョン = 1.0.2.0、カルチャ = ニュートラル、 PublicKeyToken=358a5681c50fd84c' は 'System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' を使用します。これは、参照アセンブリ 'System.ComponentModel.DataAnnotations, Version=3.5.0.0, Culture=neutral' よりも新しいバージョンです、PublicKeyToken=31bf3856ad364e35'"
ここで、Web プロジェクトの .csproj ファイルでバージョンを明示的に "Version=4.0.0.0" に設定すると、System.Core.dll などの他のコア .NET アセンブリで同様の例外が発生し始めます。つまり、v4.0 ではなく v3.5 アセンブリへの参照を解決しようとし続けます。興味深いことに、ビルド ログに「C:\Windows\Microsoft.NET\Framework\v4.0.30319 からユーザー定義の MSBuild を使用しています」と記載されているため、v4.0 用の MSBuild を使用していることがわかります。私のコマンド ライン パラメーターは、MSBuild 構成に渡されますが、次のとおりです。
/P:Configuration=%env.Configuration%
/P:DeployOnBuild=True
/P:DeployTarget=MSDeployPublish
/P:MsDeployServiceUrl=https://%env.TargetServer%/MsDeploy.axd
/P:AllowUntrustedCertificate=True
/P:MSDeployPublishMethod=WMSvc
/P:CreatePackageOnPublish=True
/P:UserName=MyUsername
/P:Password=MyPassword
ビルド サーバーで次のことを行いました。 %system.DotNetFramework4.0_x86_Path% に設定します。* レジストリ キー HKLM/SOFTWARE/Microsoft/.NETFramework/SDKInstallRootv2.0 を「C:\Program Files\Microsoft SDKs\Windows\v7.1」に追加しました。
ご協力いただきありがとうございます。
ビリー・マカファティ