检查 PropertyGroup 项目是否设置为 .csproj 中的值
Check if PropertyGroup item is set to a value in .csproj
我正在使用 .targets
文件在 .csproj 文件中包含常用功能。
在目标文件中,我想检查之前是否设置了一个属性,如果是,则不要重新设置。
我需要这个,因为我在许多解决方案中都使用了特定的目标文件,并且我想包含自定义 属性 只有在之前没有设置的情况下。
我说的属性是
<PropertyGroup>
<CodeAnalysisRuleSet>$(SolutionDir)CustomizedAllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
如果在导入目标文件之前指定了此规则集,我不想将其再次包含在 .targets
文件中。
如果之前设置了 <CodeAnalysisRuleSet>...</CodeAnalysisRuleSet>
,我该如何签入 .csproj?
我最常看到的模式是根据与空值的比较来有条件地设置它:
<PropertyGroup>
<CodeAnalysisRuleSet Condition="'$(CodeAnalysisRuleSet)' == ''">$(SolutionDir)CustomizedAllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
[编辑:用代码示例回复评论]
这是一个对我有用的更长的例子:
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PropertyValue Condition="$(PropertyValue) == ''">Default value</PropertyValue>
</PropertyGroup>
<Target Name="Build">
<Message Text="$(PropertyValue)" />
</Target>
</Project>
给出控制台输出:
Project "D:\temp\test.proj" on node 1 (default targets).
Build:
Default value
Done Building Project "D:\temp\test.proj" (default targets).
我正在使用 .targets
文件在 .csproj 文件中包含常用功能。
在目标文件中,我想检查之前是否设置了一个属性,如果是,则不要重新设置。
我需要这个,因为我在许多解决方案中都使用了特定的目标文件,并且我想包含自定义 属性 只有在之前没有设置的情况下。
我说的属性是
<PropertyGroup>
<CodeAnalysisRuleSet>$(SolutionDir)CustomizedAllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
如果在导入目标文件之前指定了此规则集,我不想将其再次包含在 .targets
文件中。
如果之前设置了 <CodeAnalysisRuleSet>...</CodeAnalysisRuleSet>
,我该如何签入 .csproj?
我最常看到的模式是根据与空值的比较来有条件地设置它:
<PropertyGroup>
<CodeAnalysisRuleSet Condition="'$(CodeAnalysisRuleSet)' == ''">$(SolutionDir)CustomizedAllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
[编辑:用代码示例回复评论]
这是一个对我有用的更长的例子:
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PropertyValue Condition="$(PropertyValue) == ''">Default value</PropertyValue>
</PropertyGroup>
<Target Name="Build">
<Message Text="$(PropertyValue)" />
</Target>
</Project>
给出控制台输出:
Project "D:\temp\test.proj" on node 1 (default targets).
Build:
Default value
Done Building Project "D:\temp\test.proj" (default targets).