2011-05-31 40 views
24

我是在Visual Studio 2010中添加web.config transformations的狂熱粉絲。另請參見Scott Hanselman's recent talk at MIX2011app.config轉換

有趣的是,該功能(至少出現)只能用於Web項目。

在我們的解決方案中,我們有幾個Windows服務根據部署環境連接到不同的數據庫。

有沒有人想出一個很好的,完整的方式來實現類似的'app.config轉換'功能?

注意:我們正在使用TFS 2010以持續集成方式構建我們的解決方案。

+0

之前重命名爲web.config,然後重新命名回來?這會起作用嗎? – 2011-05-31 11:53:52

+4

Off topic - 但是你看過@appharbor的傢伙看過這個工具嗎?http://webconfigtransformationtester.apphb.com/ – superlogical 2011-05-31 12:12:14

+0

@Jake Scott - 我沒有! +1爲酷鏈接 – isNaN1247 2011-05-31 12:15:22

回答

14

您可以對任何XML文件使用XML轉換功能 - 我們一直都在這樣做。它可以通過MSBuild任務獲得。

嘗試添加以下到您的構建腳本:

<UsingTask TaskName="TransformXml" 
      AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll"/> 

<TransformXml Source="Path\To\Your\Xml.config" 
       Transform="Path\To\Your\Xml.$(Configuration).config" 
       Destination="Path\To\Your\Output.config" /> 
+2

而不是這SlowCheetah應該使用http://visualstudiogallery.msdn.microsoft.com/69023d00-a4f9-4a34-a6cd-7e854ba318b5 – 2012-04-28 02:50:14

+5

這是一個非常明確的聲明 - 你說它*應該*在沒有限定的情況下使用,請您進一步解釋?從我所看到的情況來看,SlowCheetah適用於當你按下F5時在VS內轉換。當F5無用時,此處的上下文是CI。 SlowCheetah可能支持CI方案,但是它還提供了什麼,使這種方法自動比這個更好?我不是說這不是更好,只是認爲它需要證明:) – 2012-05-15 12:20:28

+0

當然,我應該澄清。 SlowCheetah由兩部分組成:用於創建轉換/預覽/等的VS UI組件以及用於執行所有轉換的MSBuild任務/目標。所以VS組件只需要將SlowCheetah添加到項目中。從CI服務器/命令行執行這些操作非常簡單。請訪問我的博客http://sedodream.com/2011/12/12/SlowCheetahXMLTransformsFromACIServer.aspx。希望清除它:) – 2012-05-15 16:49:31

3

使用盧克·貝內特的回答把我關在正確的軌道上。我爲我們提供了found this to be the answer

FTA(見鏈接的代碼片段):

  1. 添加一個新的屬性ProjectConfigFileName指向你的app.config文件

  2. 添加一個版本App.Config中的每個配置,即,App.Debug.config要讓它們嵌套在App.Config下,編輯您的csproj文件,

  3. 在Microsoft.CSharp.targets導入之後將Microsoft.Web.Publishing.targets導入到您的csproj文件中。

  4. 在您的AfterBuild目標中調用TransformXml任務。請注意,默認情況下,BeforeBuild和AfterBuild目標被註釋掉。

15

我知道你已經有一個答案,但我今天早上這是我見過的迄今爲止最好的實現跨越SlowCheetah絆倒了。還有一個blog post從CI服務器獲取它的運行。

+0

很好找,我一定會去看看 – isNaN1247 2012-01-09 15:14:38

+0

是的,很好找。我的app.config現在會自動用適當的SQL Server連接字符串進行更新,當我部署時,或者當我點擊F5運行應用程序時。很棒的發現! – 2013-01-09 13:33:07

+0

FWIW,SlowCheetah的積極開發和支持現已停止。作者敦促感興趣的各方投票,而不是要添加Visual Studio的功能。在這裏看到他的博客文章:http://sedodream.com/2014/08/11/SlowCheetahIsGoingIntoMaintenanceMode.aspx – Bampfer 2014-12-19 17:10:04

9

我寫了很好的擴展自動化改造的app.config像一個內置的Web應用程序項目 Configuration Transform

+0

不錯!我還沒有嘗試過,但原則上看起來不錯。 – isNaN1247 2012-05-28 07:45:32

+0

它作爲一個魅力:-) – 2016-03-22 13:55:43

+0

在我的情況下,我看到空文件,而不是我正在尋找的變換,例如,我的app.cdebug.config是(我的假設是會有標籤,我可以預覽更改)<?xml version =「1.0」?> <! - 有關使用app.config轉換的更多信息,請訪問http://go.microsoft.com/fwlink/?LinkId=125889 - > BeHappy 2017-02-17 21:14:53

0

如果您有多個客戶端組件,不想重複相同的配置數據,我創建Profigurator。它會將JSON文件作爲輸入並將設置應用於app.config或web.config。

這是一個有點粗糙,因爲我寫這個,但我目前使用它在生產系統部署,它很好。

相關問題