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

Is there a macro or mechanism to get project version in MSBuild

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

我看到有一个 assemblyInfo.cs 文件来对程序集进行版本控制,但我如何才能将该信息纳入我的构建过程?

Is there a macro or mechanism to get project version in 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 构建事件。所以我们可以通过构建事件中的命令获取它:

echo @(VersionNumber)

我们可以通过命令行将其写入bat文件:

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

希望对您有所帮助。