我正在尝试编写一个NAnt扩展任务,该任务可以更新Visual Studio 2003生成的安装程序.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应用程序”,而不是添加到其中。

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

最佳答案

您几乎要在那里了-只错过了一个。
因此更改您的正则表达式,幸福就应该随之而来...

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


注意。 8之后:

关于c# - .NET正则表达式,用于查找和替换C#中的.vdproj文件中的任何ProductName值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1817108/

10-10 17:02