msbuild c:如何提供所需的版本信息作为命令行参数?

我正在CruiseControl.Net构建服务器上构建一个C应用程序.

构建本身由msbuild完成,通过cruisecontrol.net我可以获得所需的版本 – 但我无法将其标记为c输出.

下面是我的msbuild项目文件.

任何意见表示赞赏,

丹麦安德斯

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="FullBuild" ToolsVersion="3.5">
  <Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>
  <UsingTask TaskName="NCover.MSBuildTasks.NCover" AssemblyFile="C:\Program Files\NCover\Build Task Plugins\NCover.MSBuildTasks.dll"/>
  <UsingTask TaskName="NCover.MSBuildTasks.NCoverReporting" AssemblyFile="C:\Program Files\NCover\Build Task Plugins\NCover.MSBuildTasks.dll"/>

  <ItemGroup>
    <MyBinaries Include="Build\*.*"/>
  </ItemGroup>

  <PropertyGroup>
    <CCNetLabel Condition="$(CCNetLabel)==''">2.0.0.0</CCNetLabel>
  </PropertyGroup>

  <ItemGroup>
    <Projects Include="$(vsproject)" />
  </ItemGroup>

  <Target Name="Rebuild">
    <MSBuild Projects="@(Projects)" StopOnFirstFailure="true" ContinueOnError="false" Targets="Rebuild" Properties="version=$(CCNetLabel)" />
  </Target>

</Project>

解决方法:

在您的buildscript中,创建一个如下所示的文件(version.info):

#define BINVERSION 1,2,3,4
#define STRVERSION "1.2.3.4"

您可能需要创建一个小实用程序来执行此操作.

在您的资源文件中,您将拥有一个版本信息资源,开头将如下所示:

VS_VERSION_INFO VERSIONINFO
 FILEVERSION 1,2,3,4
 PRODUCTVERSION 1,2,3,4
(...)
    VALUE "FileVersion", "1.2.3.4"
    VALUE "ProductVersion", "1.2.3.4"

用以下内容替换:

VS_VERSION_INFO VERSIONINFO
 FILEVERSION BINVERSION
 PRODUCTVERSION BINVERSION
(...)
    VALUE "FileVersion", STRVERSION
    VALUE "ProductVersion", STRVERSION

不要忘记在资源文件的顶部添加#include“version.info”

现在编译应用程序时,它将具有正确的版本号. (如果您正确创建了version.info).

另外看看Automatic Build Versioning in Visual Studio (codeproject)

上一篇:c – Visual studio:在构建期间复制内容,无论cpp如何变化


下一篇:Xamarin.Android android:versionCode android:versionName – 来自Jenkins Build Server