假设我想创建一个随每个版本一起提供的静态文本文件.我希望使用版本的版本号(如中所述AssemblyInfo.cs)更新文件,但我不想手动执行此操作.
我希望我可以使用post-build事件并将版本号提供给批处理文件,如下所示:
call foo.bat $(AssemblyVersion)
Run Code Online (Sandbox Code Playgroud)
但是我找不到任何合适的变量或宏来使用.
有没有办法实现这一点,我错过了?
谁能解释这些之间的差异:
<Target Name="AfterBuild">
<!-- task here -->
</Target>
Run Code Online (Sandbox Code Playgroud)
和:
<PropertyGroup>
<PostBuildEvent>copy "$(ProjectDir)\..\lib\$(PlatformName)\x.dll" .</PostBuildEvent>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
谢谢.
在我的Defines.wxi中我有:
<?define MajorVersion="1" ?>
<?define MinorVersion="08" ?>
<?define BuildVersion="11" ?>
Run Code Online (Sandbox Code Playgroud)
在我的MyProject.Setup.wixproj中,我有:
<OutputName>MyProject</OutputName>
<OutputType>Package</OutputType>
Run Code Online (Sandbox Code Playgroud)
是否可以以某种方式在文件名中包含版本变量,以便我的文件可以命名为MyProject.1.08.11.msi?
这不起作用(没有定义这样的变量):
<OutputName>MyProject-$(MajorVersion)</OutputName>
<OutputType>Package</OutputType>
Run Code Online (Sandbox Code Playgroud)
这不起作用(没有定义这样的变量):
<Target Name="AfterBuild" Condition="'$(Configuration)' == 'Release'">
<Copy SourceFiles="$(OutputPath)$(OutputName).msi" DestinationFiles="C:\$(OutputName)-$(MajorVersion).msi" />
</Target>
Run Code Online (Sandbox Code Playgroud)
我觉得很清楚$(MajorVersion)不是从Defines.wxi文件中获取定义的正确方法.什么是?
更新
我试着把它放在MyProject.Setup.wixproj中:
<InstallerMajorVersion>7</InstallerMajorVersion>
<InstallerMinorVersion>7</InstallerMinorVersion>
<InstallerBuildNumber>7</InstallerBuildNumber>
Run Code Online (Sandbox Code Playgroud)
...
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<OutputPath>bin\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
<DefineConstants>PrebuildPath=..\..\obj\prebuild\web\;InstallerMajorVersion=$(InstallerMajorVersion);InstallerMinorVersion=$(InstallerMinorVersion);InstallerBuildNumber=$(InstallerBuildNumber)</DefineConstants>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
这在Defines.wxi中:
<?define MajorVersion="$(var.InstallerMajorVersion)" ?>
<?define MinorVersion="$(var.InstallerMinorVersion)" ?>
<?define BuildVersion="$(var.InstallerBuildNumber)" ?>
<?define Revision="0" ?>
<?define VersionNumber="$(var.InstallerMajorVersion).$(var.InstallerMinorVersion).$(var.InstallerBuildNumber)" ?>
Run Code Online (Sandbox Code Playgroud)
也没用.得到以下错误消息: