MSBuild FileUpdate目标的ReplacementText字符串中出现双引号问题

时间:2011-11-14 22:56:16

标签: regex visual-studio-2010 .net-4.0 msbuild

我有一个问题,想法如何在FileUpdate属性的MSBuild ReplacementText目标中正确转义双引号。

我想做的事情非常简单。我想搜索AssemblyFileVersion("1.0.0.0")并将其替换为AssemblyFileVersion("1.0.0.<revision number here>")。我正在使用看起来像这样的FileUpdate元素:

<FileUpdate Files="Properties\AssemblyInfo.cs" Regex="AssemblyFileVersion(\(\x22)(\d+)\.(\d+)\.(\d+)\.(\d+)" ReplacementText="AssemblyFileVersion$1$2.$3.$4.$(build_vcs_number_1)" />

这很好用,但这确实是一种奇怪的方式!基本上,由于我无法在ReplacementText属性中使用双引号,我必须将“从正则表达式字符串中分组,然后使用组号将”插入{{1} (实际上,我将(和“,但我只需要分组”)分组。

我已经尝试了所有标准方法 - \“,”“,\ x22,\ x22,\”,但没有任何效果。我必须在这里遗漏一些明显的东西,但它是什么?

...尴尬

1 个答案:

答案 0 :(得分:4)

在带引号的字符串中的* ML中,使用&quot;来表示引号。

例如:

<FileUpdate Files="Properties\AssemblyInfo.cs" Regex="(AssemblyFileVersion\(&quot;\d+\.\d+\.\d+\.)\d+(&quot;\))" ReplacementText="$1$(build_vcs_number_1)$2" />

您可能也可以使用单引号,如下所示:

<FileUpdate Files="Properties\AssemblyInfo.cs" Regex='(AssemblyFileVersion\("\d+\.\d+\.\d+\.)\d+("\))' ReplacementText="$1$(build_vcs_number_1)$2" />