は、.NET 4.0の新しいWeb公開パイプライン(WPP)は、出力位置を制御するための方法を持っている(私は公開するには、複数のWebサイトとソリューションのためにこれを使用していません)。
まず、CopyWebApplicationターゲットの実行中にWPPにオプトインする必要があります。コマンドラインバリアントがある
<PropertyGroup>
<UseWPP_CopyWebApplication>True</UseWPP_CopyWebApplication>
<PipelineDependsOnBuild>False</PipelineDependsOnBuild>
</PropertyGroup>
:コマンドラインで、またはMSBuildのプロジェクトファイルのいずれかで、次のMSBuildのプロパティを設定し
/p:UseWPP_CopyWebApplication=True /p:PipelineDependsOnBuild=False
次に、同じディレクトリに新しいのMSBuildターゲット・ファイルを作成します"ProjectName.wpp.targets"ここで "ProjectName"はプロジェクトのファイル名で、拡張子を引いたものです。つまり、「MyWebsite.csproj」がある場合は、「MyWebsite.wpp.targets」を作成する必要があります。ターゲットファイルをプロジェクトに追加することも役立ちます。必須ではありませんが、編集が簡単です。
新しいターゲットファイルでは、WebProjectOutputDirプロパティをオーバーライドする必要があります。 CopyWebApplicationが呼び出される場合にのみこれを行う - 他の言葉で、「OUTDIRは」離れ「OutputPath」からリダイレクトされている場合:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebProjectOutputDir Condition="'$(OutDir)' != '$(OutputPath)'">$(OutDir)Websites\MyCustomFolderName</WebProjectOutputDir>
</PropertyGroup>
</Project>
それをだこと - あなたが行って良いことがあります。 OutDirプロパティを設定することで、ローカルでテストできます。末尾のバックスラッシュを忘れないでください:
msbuild MyWebsite.csproj /p:OutDir=C:\Development\WebOutputTest\
これまでの解決方法をお探しですか? – jcolebrand
はい。 TFS 2010にアップグレードし、MSBuildではなくC#でビルドをカスタマイズしてください:) – Danny
ああ、TFS2010を試してみたところ、私たちは必要なものすべてを私たちに与えてくれなかったので、FogBugz、Kilnに移りました。 CIのためのいくつかのCCNetプロジェクト。私たちがSharePointデベロッパーであり、TFSに必要なカスタム部品を引き上げることができれば、それを使用できるかもしれません... – jcolebrand