2015-11-06 3 views
1

Я использую Visual Studio 2013. Я пытаюсь опубликовать приложение ClickOnce из командной строки, передав /target: опубликуйте. Тем не менее, я хотел бы сделать несколько дополнительных шагов после того, как MSBuild завершит копирование всех файлов в папку публикации. Это то, что я придумал до сих пор:MSBuild: Как запустить пользовательскую цель после _CopyFilesToPublishFolder?

<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
    <MSBuildCommunityTasksPath>$(SolutionDir)\.build</MSBuildCommunityTasksPath> 
    <MSBuildCommunityTasksLib>$(MSBuildCommunityTasksPath)\MSBuild.Community.Tasks.dll</MSBuildCommunityTasksLib> 
    <ClickOnceBuildDirectory>$(ProjectDir)\bin\app.publish</ClickOnceBuildDirectory> 
    </PropertyGroup> 

    <Import Project="$(MSBuildCommunityTasksPath)\MSBuild.Community.Tasks.targets" /> 
    <UsingTask TaskName="FileUpdate" AssemblyFile="$(MSBuildCommunityTasksLib)" /> 

    <Target Name="CustomPostPublishActions" AfterTargets="PublishBuild" > 
    <!-- Create directory --> 
    <MakeDir Directories="$(ProjectDir)..\Deploy\Client\Application Files" /> 
    <!-- Copy published website to deployment location --> 
    <ItemGroup> 
     <_CopyItems Include="$(ClickOnceBuildDirectory)\**\*.*" /> 
    </ItemGroup> 
    <Copy SourceFiles="@(_CopyItems)" DestinationFolder="$(ProjectDir)..\Deploy\Client" /> 
    <!-- Write publish.htm file for ClickOnce --> 
    <Copy SourceFiles="$(ProjectDir)\..\..\Build\publish.htm" DestinationFiles="$(ProjectDir)..\Deploy\Client\publish.htm" /> 
    <FileUpdate Files="$(ProjectDir)..\Deploy\Client\publish.htm" Regex="{VERSION}" IgnoreCase="true" Multiline="true" Singleline="false" ReplacementText="$(ApplicationVersion)" /> 
    </Target> 
</Project> 

К сожалению, это порядок, что цели получить запуска:

CustomPostPublishActions: 
     Creating directory "C:\MyProject\..\Deploy\Client\Application Files". 
     Copying file from "C:\MyProject\\bin\app.publish\DeploymentScheduler.exe" to "C:\MyProject\..\Deploy\Client\DeploymentScheduler.exe". 
     Copying file from "C:\MyProject\\..\..\Build\publish.htm" to "C:\MyProject\..\Deploy\Client\publish.htm". 
     Updating File "C:\MyProject\..\Deploy\Client\publish.htm". 
_CopyFilesToPublishFolder: 
     Creating directory "bin\app.publish\Application Files\MyApplication_1_0_0_0". 
     Copying file from "bin\MyProject.exe.manifest" to "bin\app.publish\Application Files\MyProject_1_0_0_0\MyProject.exe.manifest". 
     Copying file from "bin\app.publish\MyProject.exe" to "bin\app.publish\Application Files\MyProject_1_0_0_0\MyProject.exe.deploy". 
     Copying file from "app.config" to "bin\app.publish\Application Files\MyProject_1_0_0_0\MyProject.exe.config.deploy". 
     Copying file from "obj\Debug\MyProject.pdb" to "bin\app.publish\Application Files\MyProject_1_0_0_0\MyProject.pdb.deploy". 
    1>Done Building Project 

В принципе, как я могу получить мои целевые «CustomPostPublishActions» запустить ПОСЛЕ "_CopyFilesToPublishFolder"? Возможно ли это? Любая помощь действительно ценится!

ответ

2

Есть предопределенными цели, которые могут быть перезаписаны для запуска до или после того, как публиковать, обновлять свой скрипт так:

<Target Name="AfterPublish"> 
    <!-- Create directory --> 
    <MakeDir Directories="$(ProjectDir)..\Deploy\Client\Application Files" /> 
    <!-- Copy published website to deployment location --> 
    <ItemGroup> 
     <_CopyItems Include="$(ClickOnceBuildDirectory)\**\*.*" /> 
    </ItemGroup> 
    <Copy SourceFiles="@(_CopyItems)" DestinationFolder="$(ProjectDir)..\Deploy\Client" /> 
    <!-- Write publish.htm file for ClickOnce --> 
    <Copy SourceFiles="$(ProjectDir)\..\..\Build\publish.htm" DestinationFiles="$(ProjectDir)..\Deploy\Client\publish.htm" /> 
    <FileUpdate Files="$(ProjectDir)..\Deploy\Client\publish.htm" Regex="{VERSION}" IgnoreCase="true" Multiline="true" Singleline="false" ReplacementText="$(ApplicationVersion)" /> 
</Target> 

Это link даст вам представление о существующих перегружаемых целях и как вы можете работать с их.

Смежные вопросы