0

有没有办法自定义构建后事件宏,我想将新程序集移动到由程序集版本命名的同一目录中的子文件夹,即

复制 $(TargetDir)$(TargetFileName) $(TargetDir)$( ASSEMBLYVERSION )\$(TargetFileName)

然而,没有这样的“宏观”。有点像这样构建可执行文件以获得版本

call foo.bat $(TargetName)

我们让 foo.bat 通过调用打印您传入的程序集版本的托管应用程序来评估目标的版本,例如 GetVersion.exe

for /f %%t in ('GetVersion.exe %1') do (
        set _version=%%t
    )
echo %_version%

有任何想法吗??当然有一种方法可以直接自定义宏??

4

1 回答 1

1

不确定是否可以通过构建后脚本完成,但您可以修改项目文件以执行相同的操作。

右键单击项目并选择“卸载项目”。

然后再次右键单击它并选择“编辑项目”。

现在在项目文件中,找到“AfterBuild”目标。它通常位于文件的底部并被注释掉。

取消注释,或粘贴以下内容:

<Target Name="AfterBuild">
  <GetAssemblyIdentity AssemblyFiles="path\to\bin\$(Configuration)\$(OutputName).dll">
    <Output TaskParameter="Assemblies" ItemName="AssemblyVersion"/>
  </GetAssemblyIdentity>

  <Copy 
    SourceFiles="path\to\bin\$(Configuration)\$(OutputName).dll" 
    DestinationFiles="path\to\bin\$(Configuration)\%(AssemblyVersion.Version)\$(OutputName).dll" />
</Target>

最后再次右键单击项目并选择“重新加载项目”。

您可能需要修改变量名称,并可能在复制到文件夹之前创建文件夹。希望这会有所帮助。

取自WiX 的自动安装程序版本号的想法

于 2009-10-06T15:40:39.117 回答