4

私は現在、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」に追加しました。

ご協力いただきありがとうございます。

ビリー・マカファティ

4

2 に答える 2

12

あなたがしなければならないことは、プロジェクトを構築するときにいくつかのことが設定されていることを確認することです...

私は通常、それを2つのステップに分けます

1) ソリューションをビルドする
このステップでは、Visual Studio のバージョンが 2010 に設定されていることを確認してください。

ここに画像の説明を入力

2) Web の事前ビルド このステップでは、コマンドを呼び出して Web プロジェクトをビルドし、デプロイ可能なものを生成し、msbuild ステップのフレームワーク バージョンを設定し、適切なプラットフォームを設定します。ターゲットを "ResolveReferences;_CopyWebApplication" に設定します。ビルド ファイル パスは、mvc アプリケーションの csproj ファイルを指す必要があります。

ここに画像の説明を入力

最後に必要な手順は、いくつかのビルド パラメーターを設定することです。

system.Configuration => リリース
system.OutputPath => C:\inetpub\wwwroot\foo\bin
system.WebProjectOutputDir => C:\inetpub\wwwroot\foo

于 2012-04-20T16:38:32.687 に答える
1

MSBuild のステップ構成ページで、MSBuild のバージョンと MSBuildTools のバージョンが 4.0 に設定されていることは間違いありませんか?

ここに画像の説明を入力

于 2012-04-20T16:38:44.130 に答える