.NET Regex Expression para encontrar & amp; Reemplazar cualquier valor de ProductName en un archivo .vdproj en C #
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.
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: