2016-04-25 40 views
0

VS發佈工作,但不是MSBuild。Web.config變換

我不是MSBuild的專家,但我會經歷這個過程。

繼本網站,

https://msdn.microsoft.com/en-us/vs2010trainingcourse_webdevelopment_topic4.aspx

,我已經通過步驟1-4去了。當我在VS 2015中運行「發佈」時,我選擇了「文件系統」作爲該方法,並且web.config文件根據所選的「配置」進行了更改,沒有問題。

但是,在運行時的MSBuild,

C:\Program Files (x86)\MSBuild\14.0\Bin>msbuild.exe "C:\pathToProject\project.sln" /p:Configuration=XXXX /p:OutputPath="C:\pathToOutputFolder" 

沒有工作。 web.config做了不是的變化。

我是否缺少別的東西?

回答

0

有一個名爲TransformXml的MSBuild任務,即Publish菜單項正在執行,但沒有從命令行執行。它不是項目文件的一部分,您必須手動執行它。

我有一個運行一個自定義的MSBuild腳本來部署一個站點一個構建服務器,並執行與此變換:

<!-- Transform the profile-specific .config file into Web.config, placing result in staging folder --> 
<Target Name="TransformWebConfig" Condition=" '$(WebsiteTransformFile)' != '' "> 
    <Error Condition="!Exists('$(WebsiteTransformFile)')" Text="Web configuration file $(WebsiteTransformFile) not found." /> 
    <Message Text="Transforming Web.config with $(WebsiteTransformFile)" /> 
    <TransformXml Source="Web.config" 
      Transform="$(WebsiteTransformfile)" 
      Destination="Web.transformed.config" /> 
    <Copy SourceFiles="Web.transformed.config" DestinationFiles="Web.config" /> 
    <Delete Files="Web.transformed.config" /> 
</Target> 

酒店$(WebsiteTransformFile)是我自己的財產,在文件中其他位置定義,即對應於配置文件,如Web.release.config

您可以將其添加到.csproj文件中,或將其放入單獨的文件中,然後手動執行。最好手動完成,這樣當你按F5在本​​地運行時,你將使用未經轉換的web.config,而不是你需要在服務器上部署的轉換版本。