调用MSbuild发布

调用MSbuild发布,msbuild,publishing,Msbuild,Publishing,是否可以在生成期间、在预生成事件中或在后生成事件中调用MSbuild publish?我正试图从一个解决方案中发布两个web项目。我使用的是文件系统发布。这里的要求是,构建解决方案应该负责发布这两个web项目。有谁能提出建议吗?我不会在构建后事件中加入太多部署逻辑。它变得“脆弱” 创建一个单独的.msbuild文件,并在其中执行“额外”逻辑,而不是过多地干扰.csproj文件 下面是一个基本的例子。 将下面的xml放在名为“MyBuildAndDeploy.msbuild”的文件中,将其与.sl

是否可以在生成期间、在预生成事件中或在后生成事件中调用MSbuild publish?我正试图从一个解决方案中发布两个web项目。我使用的是文件系统发布。这里的要求是,构建解决方案应该负责发布这两个web项目。有谁能提出建议吗?

我不会在构建后事件中加入太多部署逻辑。它变得“脆弱”

创建一个单独的.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>

.
$(工作签出)\..\BuildResults