FinalEdit:尽管在第一篇文章中相关目录不起作用,但如果我简单地$(MsBuildThisFileDirectory)
从Exec
行中删除它就可以了。
Edit2:我将新目标添加到DefaultTargets
. 现在默认运行它们。但是,使用 postbuild 命令的时间现在已经关闭。我添加<Exec Command="call $(MsBuildThisFileDirectory)documentation\tools\GenerateDocumentation.bat" IgnoreExitCode="false" />
到目标中,但它给出的错误C:\Users\my
不是有效的批处理文件,因为空间实际上是C:\Users\my program\documentation\tools\GenerateDocumentation.bat
. 在路径周围加上引号会给我MSB4025
带来 Name 不能以 开头的错误$
。
编辑:我已经尝试了 stijn 的代码,当我使用 /t:RetrieveIdentities 从命令行显式运行它时它可以工作,但由于某种原因,它似乎没有运行。
我一直在使用 Doxygen 为我的源代码生成文档,但是,我希望能够自动完成。我编写了一个简单的.bat
脚本来使用我想要的配置文件运行 Doxygen 并将输出编译到.chm
帮助文件中,但是我无法在 Doxygen 中自动更改修订号。
我试图通过使用 MSBuild 向具有新修订号的配置文件添加新行来简单地更新配置文件,但是当不存在任何文件时,我无法打印任何内容,甚至无法创建新文件。
到目前为止,我从其他类似问题中获得的代码,但我似乎无法让它工作。
<ItemGroup>
<MyTextFile Include="\documentation\DoxygenConfigFile.doxyconfig"/>
<MyItems Include="PROJECT_NUMBER = %(MyAssemblyIdentitiesAssemblyInfo.Version)"/>
</ItemGroup>
<Target Name="RetrieveIdentities">
<GetAssemblyIdentity AssemblyFiles="bin\foo.exe">
<Output TaskParameter="Assemblies" ItemName="MyAssemblyIdentities"/>
</GetAssemblyIdentity>
<WriteLinesToFile File="@(MyTextFile)" Lines="@(MyItems)" Overwrite="false" Encoding="UTF8" />
</Target>