3

我正在尝试编写一个 NAnt 扩展任务,该任务可以更新 Visual Studio 2003 生成的 Setup .vdproj 文件中的不同设置,并希望获得以下帮助。

具体来说,我想使用 RegEx 表达式来查找,如果找到,将分配给 ProductName 值的任何值字符串值替换为整个新字符串值。

我正在寻找一个 RegEx 表达式集以将“ProductName”更改为任何其他值,而不必依赖任何其他内容,而不是所寻求的字符串以“ProductName”=“8”开头:然后有 1 个或多个字符并以 a 结尾" 标记。我尝试了以下方法无济于事:

在执行以下代码片段之前,.vdproj 文件的 ProductName 为:

"ProductName" = "8:My Simple .NET Application"

...以及 C# 中的代码片段:

string _theProductName = "My Other Native Application";

Regex productNameExpression = new Regex( @"(?:\""ProductName\"" = \""8:*)" );

_theProjectFileContents = 
productNameExpression.Replace(_theProjectFileContents, 
                              "\"ProductName\" = \"8:" + _theProductName + "\"" );

bool updatedProductName = 
(_theProjectFileContents.IndexOf(_theProductName) >= 0);

执行上述代码片段后,.vdproj 文件的 ProductName 现在显示为:

"ProductName" = "8:My Simple .NET Application"My Other Native Application"

关闭,但我期待“我的其他本机应用程序”替换“我的简单 .NET 应用程序”,而不是添加到它。

任何见解和帮助将不胜感激。

4

1 回答 1

2

你就快到了——只少了一个 .
因此改变你的正则表达式,幸福应该随之而来......

Regex productNameExpression = new Regex(@"(?:\""ProductName\"" = \""8:.*)"); 

注意 . 8之后:

于 2009-11-29T23:33:04.710 回答