【问题标题】:How can I retrieve major/minor/build/revision number on build events如何检索构建事件的主要/次要/构建/修订号
【发布时间】:2011-02-28 08:37:22
【问题描述】:

喂!

我正在使用这段代码,在构建后事件中复制一些文件:

<PropertyGroup>
    <DemoPath1>..\demoPath1</DemoPath1>
</PropertyGroup>
<Target Name="AfterBuild">
    <Exec Command="robocopy $(ProjectDir)$(DemoPath1) $(ProjectDir)demoPath2/$(Revision) * /XD .svn _svn /XF *.cs /S" IgnoreExitCode="true" />
</Target>

如您所见,我想使用$(Revision) - 显然,这行不通...

谁能帮帮我?

@mods:我不知道要使用哪个标签……一方面是 msbuild,另一方面是 Visual Studio……?随意编辑!

【问题讨论】:

标签: visual-studio msbuild csproj post-build-event post-build


【解决方案1】:

最简单的方法是:

<GetAssemblyIdentity AssemblyFiles="$(TargetPath)">
  <Output TaskParameter="Assemblies" ItemName="AssemblyVersion" />
</GetAssemblyIdentity>

我就是这样使用它的:

<Exec Command="robocopy $(ProjectDir)$(SomeProperty) $(ProjectDir)somePath/%(AssemblyVersion.Version) * /S" IgnoreExitCode="true" />

【讨论】:

  • 您确定 AssemblyVersion.Version 正确吗?它没有得到任何东西,至少 AssemblyInfo.Version 返回 0.0.0.0 - 虽然那也是错误的,因为它与我在 AssemblyInfo.cs 中的设置不匹配
  • 您是否在GetAssemblyIdentity-task 中引用了正确的程序集?
  • 我正在使用 AssemblyFiles="$(TargetDir)\$(TargetName).exe 引用我的项目生成的可执行文件。$(TargetDir)\$(TargetName).exe 也用于以下复制任务和正确的 .exe 文件被复制,所以我假设我引用它的方式是正确的。但它可能是一个问题,它是一个可执行文件,而不是一个 DLL 文件?
【解决方案2】:

您没有提出要从哪里获取版本号的问题。不管你怎么理解,你需要做的就是自己填充 $(Revision) 属性。提供更多细节,我可能会帮助你。

【讨论】:

    猜你喜欢
    • 2016-02-11
    • 1970-01-01
    • 2013-09-13
    • 1970-01-01
    • 2015-08-08
    • 1970-01-01
    • 2011-10-31
    • 2023-04-05
    • 1970-01-01
    相关资源
    最近更新 更多