[UnitTest] 讓 TFS 套用 App.config Transformation 切換連線字串

https://dotblogs.com.tw/yc421206/archive/2014/07/28/146082.aspx 根據上篇,可輕易地在專案建立出不同環境的組態設定,但是 TFS 上的 Build 沒有正常的切換環境,測試專案的連線字串沒有根據我期望的切換,不像 Web 那樣,原來還需要一些設定,以下分享我成功的方法。

開發環境

  • TFS 2017
  • VS 2015 Update3

操作步驟

很簡單,只要在測試專案加上以下

  <UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.Publishing.Tasks.dll" />
  <Target Name="AfterCompile" Condition="exists('app.$(Configuration).config')">
    <TransformXml Source="app.config" Destination="$(IntermediateOutputPath)$(TargetFileName).config" Transform="app.$(Configuration).config" />
    <ItemGroup>
      <AppConfigWithTargetPath Remove="app.config" />
      <AppConfigWithTargetPath Include="$(IntermediateOutputPath)$(TargetFileName).config">
        <TargetPath>$(TargetFileName).config</TargetPath>
      </AppConfigWithTargetPath>
    </ItemGroup>
  </Target>
要注意一下VS的版本

 

在TFS Build vNext 設定組態,看你是要 release、debug、Dev

完成之後,TFS 就能如我預期的切換資料庫連線字串了

參考資料

http://stackoverflow.com/questions/5091243/app-config-replacements-for-unit-tests

http://stackoverflow.com/questions/3004210/app-config-transformation-for-projects-which-are-not-web-projects-in-visual-stud

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET

Image result for microsoft+mvp+logo