.NET Regex Expression para encontrar & amp; Reemplazar cualquier valor de ProductName en un archivo .vdproj en C #

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

  •  08-07-2019
  •  | 
  •  

Pregunta

Estoy tratando de escribir una tarea de extensión NAnt que pueda actualizar diferentes configuraciones dentro de un archivo .vdproj de instalación generado por Visual Studio 2003, y agradecería ayuda con lo siguiente.

Específicamente, me gustaría usar una expresión RegEx para encontrar, y si se encuentra, reemplazar cualquier valor de cadena de valor asignado al valor ProductName con un nuevo valor de cadena en su entrada.

Estoy buscando un conjunto de expresiones RegEx para cambiar " ProductName " a cualquier otro valor sin tener que confiar en otra cosa que no sea que la cadena buscada comience con " ProductName " = " 8 " ;: y luego tiene 1 o más caracteres y termina con un " marca. He intentado lo siguiente en vano:

Antes de ejecutar el siguiente fragmento de código, se lee ProductName del archivo .vdproj:

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

... y el fragmento de código en 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);

Después de ejecutar el fragmento de código anterior, el ProductName del archivo .vdproj ahora lee:

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

Cerrar, pero esperaba "Mi otra aplicación nativa" para reemplazar " My Simple .NET Application " ;, y no agregarlo.

Cualquier información y ayuda sería muy apreciada.

¿Fue útil?

Solución

Ya casi estás allí, solo te falta uno.
Cambia tu expresión regular así y la felicidad debería seguir ...

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

Tenga en cuenta el. después del 8:

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top