2017-08-07 30 views
0
發佈到IIS

我已經做了發佈研究了相當數量和部署Web應用程序與VSTS,到目前爲止,我已經找到了以下內容:最佳實踐分離Web應用程序使用VS生成定義

1.使用.pubxml文件並將DeployOnBuild = True傳遞給MSBuildArguments

2.複製併發布工件並創建單獨的版本定義。

我們正在使用第一種方法,但發現構建可以標記爲成功,但發佈失敗(在我們的例子中,這是一個糟糕的轉換) 因此,我們決定考慮分離發佈步驟並創建我們的更改發佈。 soft fialure

我遇到的問題是,複製文件和發佈的文物步驟只複製DLL和我們的.js和.html /的CSS的變化似乎並沒有使它的UI。作爲一項解決方案,我將這些參數添加到Copy Files方法,但發佈需要很長時間。 (沒有與發佈定義沒有問題)

**\* 
!$tf\** 
**\!$tf\** 
**\!Debug\** 
**\*!pdb 

所有導遊在線使用發佈文物和創建一個單獨版本的定義似乎在說同樣的事情,只有從bin文件夾推DLL文件的IIS服務器。

這裏是我的構建定義: Build Definition

所以我的問題是,爲什麼沒有用戶界面的變化時被釋放完成,如果這在其他地方心不是一個問題,部署到網站?

+0

您使用哪個任務發佈工件? – virusstorm

+0

@virusstorm我更新了我的帖子以顯示我的構建是如何設置的 – Dave

+0

我沒有前臺服務器來測試這個,所以我要關閉內存。我認爲你的「複製文件」是正確的,你有正確的順序的一切。您可以通過查看構建的工件來驗證這一點。如果你看到你的內容文件,那麼你的問題是在發佈。如果你沒有看到這些文件,那肯定是'Copy Files'任務。 – virusstorm

回答

0

不,不是真的。我們通常不僅發佈DLL和我們的.js和.html/.css作爲構建工件,而且還發布整個Web應用程序。

的Visual Studio生成任務通常與MSBuild的參數爲(如果你使用ASP.NET構建模板,它的默認設置):

/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\" 

這樣,Web應用程序(發佈的文件)將被直接複製到$(build.artifactstagingdirectory)。所以你不需要複製文件任務。

如果您需要部署所有文件,可以使用**中的複製文件任務

然後,當您將應用程序部署到發佈定義中的IIS服務器時,將會下載構建工件中的整個Web應用程序。

+0

好的,它看起來像是在我的構建定義MSBuildArguments之前,所以不知道爲什麼Web應用程序沒有正確部署。我將再次檢查,看看引號和反斜槓是否會對Build有所幫助。ArtifactStagingDirectory – Dave

+0

所以我更新了這個構建參數,它看起來像用deploy.cmd文件和一個我認爲來自BuildArtifactStagingDirectory的solution.zip部署了一堆文件到我的wwwroot文件夾。所以它沒有真正部署任何東西來顯示我的更改? – Dave

+0

MSBuild參數剛剛將來自Publish Artifacts步驟的文件放在我的wwwroot文件夾中,而我沒有看到我的更改反映在其他文件夾中。 – Dave

相關問題