我希望在构建一个值时找到一种在csproj文件中设置值的方法。我可以使用MSBuild中的任务将属性永久设置为值吗?在下面的示例中,我可以永久设置CustomValue = Yes吗?
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
.....
<CustomValue>XXXX</CustomValue
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids></ProjectTypeGuids>
<SccProjectName>SAK</SccProjectName>
<SccLocalPath>SAK</SccLocalPath>
<SccAuxPath>SAK</SccAuxPath>
<SccProvider>SAK</SccProvider>
</PropertyGroup>
答案 0 :(得分:3)
您可以使用XmlPoke任务来执行此操作。以这种方式改变项目似乎有点奇怪。或者,您可以设置一个微小的导入文件,
<!-- in your main project file, right below the PropertyGroup -->
<Import
Condition="Exists('Custom.props')"
Project="Custom.props"
/>
然后动态创建此属性文件,如,
<?xml version="1.0" encoding="utf-8"?>
<Project
xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
ToolsVersion="4.0">
<PropertyGroup>
<CustomValue>True</CustomValue>
</PropertyGroup>
</Project>
您可以在此.props文件上使用XmlPoke,也可以使用WriteLinesToFile创建整个文件。此辅助文件不需要检入源代码控制,导入条件使文件在文件不存在时起作用。
XmlPoke任务看起来像这样,
<XmlPoke
XmlInputPath="./Custom.props"
Namespaces="<Namespace Prefix='x'
Uri='http://schemas.microsoft.com/developer/msbuild/2003'/>"
Query="//x:PropertyGroup/x:CustomValue/@Value"
Value="True"
/>