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

Mat*_*ten 0 msbuild rename file version visual-studio

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

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

有没有办法做到这一点?

Leo*_*SFT 6

有没有办法做到这一点?

答案是肯定的。如果您不介意编辑 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>
Run Code Online (Sandbox Code Playgroud)

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

copy /Y  "(TfsDropLocation)\filename.dapac" "(TfsDropLocation)\filename.@(VersionNumber).dapac"
Run Code Online (Sandbox Code Playgroud)

如果不想保留之前的filename.dapac,可以del在 post-build 事件中添加一条命令:

del "(TfsDropLocation)\filename.dapac"
Run Code Online (Sandbox Code Playgroud)

注意:不要忽略构建后事件命令行中的双引号。

然后你可以检查你的输出和windows资源管理器,我用文件dll来测试,你可以检查我的测试结果:

在此处输入图片说明

在此处输入图片说明