usar - msbuild visual studio
¿Cómo reemplazar la cadena en el archivo usando msbuild? (4)
Quiero reemplazar una cadena como "how ru" en el archivo test.xml por una cadena "i fine" en otro archivo xy.xml.using expresión regular en ms build.
es decir, tengo que leer la cadena de un archivo (xy.xml) y reemplazarla en otro archivo test.xml. así que por favor proporcione los pasos necesarios para resolver este problema con el ejemplo
Corrí los dos reemplazos contra el mismo archivo que se encuentra en una unidad Unix y usé la ruta unc para / server / ruta ...:
<ReplaceFileText
InputFilename="$(fileToUpdate)"
OutputFilename="$(fileToUpdate)"
MatchExpression="15.0.0"
ReplacementText="15.3.1"/>
<FileUpdate Files="$(fileToUpdate2)"
Regex="15.0.0"
ReplacementText="15.3.1" />
y la acción personalizada cs anterior no agrega el bom; sin embargo, el FileUpdate hizo:
%head -2 branding.h branding2.h
==> branding.h <==
#/* branding.h
#** This file captures common branding strings in a format usable by both sed and C-preprocessor.
==> branding2.h <==
#/* branding.h
#** This file captures common branding strings in a format usable by both sed and C-preprocessor.
Gracias csharptest.net - Estaba haciendo ejecutables con comandos de subtitulado de Perl para compilaciones de Unix.
Esto ya no es necesario ... ahora puede insertar C # en el proyecto / archivo de compilación ...
Defina una tarea personalizada y los parámetros de la siguiente manera:
<UsingTask TaskName="ReplaceFileText" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)/Microsoft.Build.Tasks.v4.0.dll">
<ParameterGroup>
<InputFilename ParameterType="System.String" Required="true" />
<OutputFilename ParameterType="System.String" Required="true" />
<MatchExpression ParameterType="System.String" Required="true" />
<ReplacementText ParameterType="System.String" Required="true" />
</ParameterGroup>
<Task>
<Reference Include="System.Core" />
<Using Namespace="System" />
<Using Namespace="System.IO" />
<Using Namespace="System.Text.RegularExpressions" />
<Code Type="Fragment" Language="cs">
<![CDATA[
File.WriteAllText(
OutputFilename,
Regex.Replace(File.ReadAllText(InputFilename), MatchExpression, ReplacementText)
);
]]>
</Code>
</Task>
</UsingTask>
Entonces simplemente llámalo como cualquier otra tarea de MSBuild
<Target Name="AfterBuild">
<ReplaceFileText
InputFilename="$(OutputPath)File.exe.config"
OutputFilename="$(OutputPath)File.exe.config"
MatchExpression="/$version/$"
ReplacementText="1.0.0.2" />
</Target>
El ejemplo anterior reemplaza "$ version $" con "1.0.0.2" en "File.exe.config" ubicado en el directorio de salida.
Puede usar la tarea FileUpdate de MSBuild Community Tasks como se explica en el artículo http://geekswithblogs.net/mnf/archive/2009/07/03/msbuild-task-to-replace-content-in-text-files.aspx