是否有一个宏或机制来获取MSBuild中的项目版本

时间:2018-06-01 18:14:26

标签: visual-studio-2015 msbuild versioning

我需要调用一个.bat文件来为我的项目输出调整一些自定义包装。是否有某种内置机制将版本作为字符串获取,以便我可以将其作为参数传递给我的bat文件?

我看到有一个assemblyInfo.cs文件到版本程序集,但是如何将这些信息导入我的构建过程?

1 个答案:

答案 0 :(得分:1)

  

是否有一个宏或机制来获取MSBuild中的项目版本

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

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

有办法做到这一点吗?

答案是肯定的。如果您不介意编辑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事件。所以我们可以通过构建事件中的命令来获取它:

echo @(VersionNumber)

我们可以使用命令行将其写入bat文件:

echo @(VersionNumber) > $(TargetDir)install.bat

希望这有帮助。