.NET Regex Expression For Finding&在C#中替换.vdproj文件中的任何ProductName值

StackOverflow https://stackoverflow.com/questions/1817108

  •  08-07-2019
  •  | 
  •  

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

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

我正在寻找一个RegEx表达式设置来改变“ProductName”任何其他值,而不必依赖于所寻求的字符串以“ProductName”开头的任何其他值。 =“8”:然后具有1个或多个字符并以“标记。我试过以下无济于事:

在执行以下代码片段之前,.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之后:

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top