代码之家  ›  专栏  ›  技术社区  ›  ClockEndGooner

.NET正则表达式,用于在C中查找和替换.vdproj文件中的任何ProductName值#

  •  3
  • ClockEndGooner  · 技术社区  · 15 年前

    我正在尝试编写一个NAnt扩展任务,该任务可以在VisualStudio2003生成的Setup.vdproj文件中更新不同的设置,如果您能提供以下帮助,我将不胜感激。

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

    我正在寻找一个正则表达式集,它可以将“ProductName”更改为任何其他值,而不必依赖任何其他值,所需字符串以“ProductName”=“8”开头,然后有1个或多个字符,并以“mark”结尾。我尝试了以下方法,但没有效果:

    在执行以下代码片段之前,.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应用程序”,而不是添加到它。

    1 回复  |  直到 11 年前
        1
  •  2
  •   Dan Blanchard    15 年前

    你就快到了,只差一个。
    这样改变你的正则表达式,幸福就会随之而来。。。

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