2011-01-31 69 views
24

美好的一天!從命令行運行web.config轉換

我希望能夠使用VS2010發佈ASP.NET MVC 2項目從命令行發佈對話框

對於命令行,我得到以下工作:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe .\SolutionFolder\MyProject.csproj /p:Configuration=Release;DeployOnBuild=True;PackageAsSingleFile=False;outdir=c:\_OutputFolder\ 

我有一個轉型的Web.config不適用(倒是WebDeploy包)唯一的問題。我不使用WebDeploy。有什麼辦法可以應用Web.config轉換嗎?

謝謝!

+0

的[MSBuild的腳本和VS2010發佈應用的Web.config變換](可能的複製http://stackoverflow.com/questions/2905151/msbuild- script-vs-vs2010-publish-apply-web-config-transform) – 2011-01-31 11:37:26

回答

22

您也可以嘗試使用XDT轉換工具:

http://ctt.codeplex.com

我使用這個,而不是用晦澀的MSBuild目標搞亂。

+0

似乎是迄今爲止最好的解決方案。 – artvolk 2011-05-23 10:55:49

+0

現在所有的文檔鏈接都已經死在這個頁面上。 – Luke 2018-01-04 11:40:31

9

這裏是另一種方法,它使用的MSBuild改造Web.config文件:

http://sedodream.com/2010/04/26/ConfigTransformationsOutsideOfWebAppBuilds.aspx

在我的測試效果比較好。基本上,你創建一個項目文件僅執行的TransformXML任務:

<Project ToolsVersion="4.0" DefaultTargets="Demo" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
<UsingTask TaskName="TransformXml" 
     AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll"/> 

<Target Name="Demo"> 
    <TransformXml Source="app.config" 
        Transform="Transform.xml" 
        Destination="app.prod.config"/> 
</Target> 

4

我認爲這是值得一提的是,你還可以用PowerShell的的DLL是Visual Studio的使用用途:Microsoft.Web.XmlTransform.dll

PowerShell腳本,請參閱:Web.Config transforms outside of Microsoft MSBuild?

加載DLL,而不是周圍的抄襲,我做這樣的(所以你看在哪裏可以找到這個DLL,至少在我在工作情況下,我們不得不查找這些位置):

if (Test-Path "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.XmlTransform.dll") { 
    Add-Type -LiteralPath "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.XmlTransform.dll" 
} elseif (Test-Path "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.XmlTransform.dll") { 
    Add-Type -LiteralPath "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.XmlTransform.dll" 
} else { 
    throw [System.IO.FileNotFoundException] "Microsoft.Web.XmlTransform.dll not found." 
}