后构建事件msbuild。在成功构建结束时重命名文件

时间:2017-07-26 19:57:38

标签: visual-studio file msbuild version rename

我不知道MSbuild脚本,现在没有时间学习它。我在成功构建结束时需要一个方法来重命名dacpac文件以包含当前正在构建的版本。

示例:(TfsDropLocation)\ filename.dapac to(TfsDropLocation \ filename.1.0.0.0.dacpac)

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:4)

  

有办法做到这一点吗?

答案是肯定的。如果您不介意编辑Visual Studio项目文件,那么有一个简单的解决方案,允许您使用如下所示的宏:@(VersionNumber)

要完成此操作,请卸载您的项目。然后在项目的最后,就在结束标记之前,放在脚本下面:

<PropertyGroup>
   <PostBuildEventDependsOn>
     $(PostBuildEventDependsOn);
     PostBuildMacros;
   </PostBuildEventDependsOn>    
</PropertyGroup>

<Target Name="PostBuildMacros">
  <GetAssemblyIdentity AssemblyFiles="$(TargetPath)">
    <Output TaskParameter="Assemblies" ItemName="Targets" />
  </GetAssemblyIdentity>
  <ItemGroup>
    <VersionNumber Include="@(Targets->'%(Version)')"/>
  </ItemGroup>
</Target>

现在按照承诺,程序集版本可用于使用此宏的post build事件。因此,您可以使用以下命令行在后期构建事件中通过复制任务重命名文件名:

copy /Y  "(TfsDropLocation)\filename.dapac" "(TfsDropLocation)\filename.@(VersionNumber).dapac"

如果您不想保留以前的filename.dapac,可以在构建后事件中添加del命令:

del "(TfsDropLocation)\filename.dapac"

注意:不要忽略post-build事件命令行中的双引号。

然后你可以查看输出和windows explorer,我用文件dll来测试,你可以查看我的测试结果:

enter image description here

enter image description here