如何将Visual Studio项目程序集版本传递给另一个项目以用于后期构建事件?

时间:2010-06-11 06:21:16

标签: msbuild variables parameters wix post-build

我有一个包含2个项目的解决方案:

  • 我的应用1.2.54 (C#WinForms)
  • 我的应用程序设置1.0.0.0 (WiX设置)

我想在WiX安装项目中添加一个生成后事件来运行批处理文件,并向其传递My Application的程序集版本号的命令行参数。代码可能如下所示:

CALL MyBatchFile.bat "$(fileVersion.ProductVersion($(var.My Application.TargetPath)))"

但是这会导致以下错误:

  

未处理的异常:表达式   “”我的申请“不可能   评估。方法'System.String.My   应用程序未找到。 C:\我的   Application \ My Application Setup \ My   应用程序Setup.wixproj

     

错误:表达式“”“。我   申请“无法评估。   方法'System.String.My Application'   未找到。 C:\我的应用程序\我的   Application Setup \ My Application   Setup.wixproj

我希望能够以某种方式将“1.2.54”传递给MyBatchFile.bat。

1 个答案:

答案 0 :(得分:2)

在您的Wix项目文件(*.wixproj)中覆盖AfterBuild目标以调用您的批处理文件:

<Target Name="AfterBuild">
  <!-- Get "My Application" assembly version -->
  <GetAssemblyIdentity AssemblyFiles="../my_assembly_dir/MyAssembly.dll">
    <Output TaskParameter="Assemblies" ItemName="AssemblyIdentity"/>
  </GetAssemblyIdentity>

  <Exec Command="MyBatchFile.bat %(AssemblyIdentity.Version)"/>
</Target>