6

私の開発用ラップトップには VS2012 RC のみがインストールされており、新しい MSDeploy .pubxml 配管 (DeployOnBuild および PublishProfile 設定) に PowerShell から (psake 経由で) フックして、Web サイトをテスト サーバーにデプロイすることに成功しています。

ただし、私のビルド サーバーには最初に VS2010 SP1 がインストールされており、現在は 2012 RC を追加でインストールしています (このマシンにはまだ .NET 4 である他のビルドがあります)。

まったく同じパラメーターで同じスクリプトを実行すると、開発マシンとビルド サーバーの間で異なる結果が表示されます。私が実行しているコマンドは

exec { msbuild "Website\WebSite.csproj" /m p:DeployOnBuild=True /p:PublishProfile=MyTestProfile }

ビルド サーバーでは、これは実際には MSDeploy をトリガーするのではなく、単にサイトを圧縮して展開パッケージを作成するパッケージング ビットをトリガーします。私のマシンは pubxml ファイルを正常に取得し、デプロイを成功させました。

最終的に、問題を Microsoft.Web.Publishing.targets ファイルに突き止めたと思います。私の開発マシンでは、

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web

しかし、サーバーにはさらに

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web

そして、このファイル(.pubxmlに関する知識なし)がそこで使用されているようです。

msbuild に v11.0 バージョンのファイルを取得させ、したがって、私の .pubxml ファイルを使用しますか?

4

1 に答える 1

12

最新(v11.0)をピックアップする必要があるのは興味深いことですが、ここにバグがあるようです。これは、MSBuildプロパティVisualStudioVersionによって制御されます。

ビルド時にこの値を設定する方法のルールは次のとおりです。1. VisualStudioVersionが環境変数またはグローバルプロパティ(コマンドラインの/ p:など)として定義されている場合。これが、Dev11とDev11コマンドプロンプトが常にv11である方法です。どちらもVSVを環境変数1として定義します。それ以外の場合、同等のソリューションバージョン(現在は常にファイル形式バージョン– 1)に一致するサブツールセットがある場合、それ以外の場合は、デフォルトバージョンを取得します。Dev10がインストールされている場合は10.0、それ以外の場合は最高バージョンのサブツールセットバージョン(現在は常に11)がインストールされています

あなたの場合、問題が発生しているので、プロパティを渡し/p:VisualStudioVersion=11.0て、正しいターゲットが使用されていることを確認できます。

于 2012-06-08T13:40:26.857 に答える