0

ビルド中、ビルド前イベント、ビルド後イベントでMSbuild公開を呼び出すことはできますか?ソリューションから2つのWebプロジェクトを公開しようとしています。私はファイルシステムの公開を使用しています。ここでの要件は、ソリューションの構築でこれら2つのWebプロジェクトの公開を処理する必要があることです。誰か提案してもらえますか?

4

1 に答える 1

0

ビルド後のイベントにあまり多くのデプロイ ロジックを配置することはありません。「もろい」になります。

別の .msbuild ファイルを作成し、.csproj ファイルをいじりすぎるのではなく、その中で「追加の」ロジックを実行します。

以下は基本的な例です。以下の xml をファイル コール "MyBuildAndDeploy.msbuild" に配置し、それを .sln (または .csproj) ファイルと同じフォルダーに配置してから、コマンド ラインから msbuild.exe "MyBuildAndDeploy.msbuild" を使用します。

以下は、プライマリ ソリューションを構築し、ファイルをどこかにコピーする基本的な例です。

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="AllTargetsWrapper">


    <PropertyGroup>
        <!-- Always declare some kind of "base directory" and then work off of that in the majority of cases  -->
        <WorkingCheckout>.</WorkingCheckout>
        <BuildResultsRootFolder>$(WorkingCheckout)\..\BuildResults</BuildResultsRootFolder>
    </PropertyGroup>



    <Target Name="AllTargetsWrapper">

        <CallTarget Targets="BuildSolution" />
        <CallTarget Targets="CopyBuildOutputFiles" />

    </Target>


    <Target Name="BuildSolution">

        <MSBuild Projects="$(WorkingCheckout)\MySuperCoolSolution.sln" Targets="Build" Properties="Configuration=$(Configuration)">
            <Output TaskParameter="TargetOutputs" ItemName="TargetOutputsItemName"/>
        </MSBuild>
        <Message Text="BuildSolution completed" />

    </Target>   


    <Target Name="CopyBuildOutputFiles">


        <MakeDir Directories="$(BuildResultsRootFolder)\$(Configuration)" Condition="!Exists('$(BuildResultsRootFolder)\$(Configuration)\')"/>  

        <ItemGroup>
            <BuildOutputFilesExcludeFiles Include="$(WorkingCheckout)\**\*.doesnotexist" />
            <BuildOutputFilesIncludeFiles Include="$(WorkingCheckout)\**\*.dll" Exclude="@(BuildOutputFilesExcludeFiles)" />    
            <BuildOutputFilesIncludeFiles Include="$(WorkingCheckout)\**\*.exe" Exclude="@(BuildOutputFilesExcludeFiles)" />    
            <BuildOutputFilesIncludeFiles Include="$(WorkingCheckout)\**\*.config" Exclude="@(BuildOutputFilesExcludeFiles)" />
            <BuildOutputFilesIncludeFiles Include="$(WorkingCheckout)\**\*.pdb" Exclude="@(BuildOutputFilesExcludeFiles)" />
        </ItemGroup>  

        <Copy SourceFiles="@(BuildOutputFilesIncludeFiles)" 
            DestinationFolder="$(BuildResultsRootFolder)\$(Configuration)\"/>

    </Target>


</Project>
于 2013-03-18T14:06:22.163 に答える