我使用VSTS构建和发布包含多个aspnet项目的解决方案。解决方案级别是一个包含dev / test和production的所有数据库连接字符串的文件夹。这些文件作为文件链接包含在项目中,并且始终可以选择复制它们。 Web.config转换会根据构建配置将configSource更改为所需的文件。
<connectionStrings configSource="Configuration\ConnectionStrings.Development.config" xdt:Transform="Replace" />
这一切都很棒。对于VSTS VSBuild任务,我有这些参数来为webdeploy生成一个zip文件
/ p:DeployOnBuild = true / p:WebPublishMethod = Package / p:PackageAsSingleFile = true / p:SkipInvalidConfigurations = true /p:PackageLocation="$(build.stagingDirectory)" / P:DefineConstants =&#34; $(CompilerConstants)&#34;
现在出现了我的问题:我希望将当前项目名称作为连接字符串中的应用程序名称,以查看查询来自SQL Server概要分析器的位置。我过去使用额外的构建目标
<Target Name="ReplaceAppNamesInConnectionStrings">
<FindAndReplaceInFile FileName="$(PublishDir)\configuration\ConnectionStrings.Development.config" SearchString="@@APPNAME@@" ReplacementString="$(ProjectName)" FileMustExist="False" />
<FindAndReplaceInFile FileName="$(PublishDir)\configuration\ConnectionStrings.Production.config" SearchString="@@APPNAME@@" ReplacementString="$(ProjectName)" FileMustExist="False" />
</Target>
如何使用VSTS执行此操作?它似乎总是在创建zip文件之前将文件从链接源复制到输出中,我可以将其替换掉。我尝试过post build事件或VSTS替换令牌步骤。