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

Dav*_*ave 2 regex msbuild .net-4.0 visual-studio-2010

我在解决如何FileUpdateReplacementText属性中的MSBuild 目标中正确转义双引号时遇到问题。

我想做的很简单。我想搜索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)" />
Run Code Online (Sandbox Code Playgroud)

这可以正常工作,但是看起来确实很奇怪!基本上,由于我无法在ReplacementText属性中使用双引号,因此我必须将Regex字符串中的“分组,然后使用组号将”插入ReplacementText(实际上,我将(和”,但我只需要对“)进行分组。

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

尴尬...

Qta*_*tax 5

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

例如:

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

您可能也可以使用单引号,例如:

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