替换为从文件读取或从代码生成的值?
不知道什么是慢吞吞的。但对于msbuild,可以定义自定义替换任务来执行此操作:
<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>
然后可以使用此任务替换配置文件的元素:
<Target Name="BeforeBuild">
<ReplaceFileText
InputFilename="$(YouConfigFilePath)YourConfigFile.config"
OutputFilename="$(YouConfigFilePath)YourConfigFile.config"
MatchExpression="1f3ac2"
ReplacementText="$(Value)" />
</Target>
注意,由于替换值是从代码生成的,您可能需要使用powershell脚本或其他脚本来设置msbuild属性的值:
How to set value for msbuild property using powershell?
希望这有帮助。