2011-01-20 1 views
4

私はWeb開発ターゲットファイルを作成しており、 "_PublishedWebsites"の下に表示されるディレクトリの名前をプログラムで決定したいと考えています。MSBuild - ソリューションの_PublishedWebsitesを確認する

私は現在、これを使用する必要があります:

$(BinariesRoot)\%(ConfigurationToBuild.FlavorToBuild)\ _ PublishedWebsitesを\ MyWebApplication

任意のアイデア?

+0

これまでの解決方法をお探しですか? – jcolebrand

+0

はい。 TFS 2010にアップグレードし、MSBuildではなくC#でビルドをカスタマイズしてください:) – Danny

+0

ああ、TFS2010を試してみたところ、私たちは必要なものすべてを私たちに与えてくれなかったので、FogBugz、Kilnに移りました。 CIのためのいくつかのCCNetプロジェクト。私たちがSharePointデベロッパーであり、TFSに必要なカスタム部品を引き上げることができれば、それを使用できるかもしれません... – jcolebrand

答えて

11

は、.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\ 
関連する問題