对于MSBuild项目,我想输出某种.config
文件,该文件将沿生成的二进制文件重新分配,因此编译时可以由二进制文件的用户检查构建时使用的参数。
输出文件格式:
PropertyName1=ValueA
PropertyName2=ValueB
...
理想情况下,要写入的属性列表只包含其名称。也许像:
<ItemGroup>
<MyExposedDictionary Include="Configuration" />
<MyExposedDictionary Include="Platform" />
<MyExposedDictionary Include="PropertyName1" />
...
</ItemGroup>
使用MyExposedDictionary
作为赋予某些DotConfigFileWriter
任务的参数,以及目标文件的路径。
我找到several ways到write down values的文件,包括一个C# code in it的子目标,但我是MSBuild的新手,我不确定我如何将这些要求合并为一个Target
以使其可重复使用。
答案 0 :(得分:0)
我不确定您的问题所在。我有一个类似的要求,即刚编译的程序创建一个文件。我编辑了项目的属性:在build events
输入Post-build action
之类的
REM create special file
"$(ProjectDir)$(OutDir)MyProgram.exe" /WriteFile MyFile.xml
当然,您还必须更改程序,以便在使用该参数调用时执行正确的操作(并在完成该操作后停止 - 不显示GUI或作为Windows服务启动)。
答案 1 :(得分:0)
如果有人来到这里有相同的要求,这就是我最终的结果。对结果并不满意,因为我希望有一些更通用的东西,但至少它能完成这项工作,并在我的项目中融合得很好:
<Target Name="WriteBuildProperties" BeforeTargets="PreBuildEvent">
<WriteLinesToFile File="$(DotConfigFile)" Overwrite="true" Lines="" />
<WriteLinesToFile File="$(DotConfigFile)" Lines="ProjectName=$(ProjectName)" />
<WriteLinesToFile File="$(DotConfigFile)" Lines="Configuration=$(Configuration)" />
...
</Target>
如果有人碰巧有更优雅的解决方案,请跳进去!