簡體   English   中英

將Web服務部署到Nuget包

[英]Deploy Web Service to Nuget Package

我在Visual Studio解決方案中有幾個WCF和WebAPI服務以及MVC網站。 當前,我們正在為這些服務和網站創建WebDeploy包,以部署到IIS。 我開始研究Octopus Deploy而不是WebDeploy來部署我們的服務和網站。 但是,Octopus Deploy使用Nuget包進行部署。

我試圖弄清楚如何輕松創建一個Nuget包,其中包含通常會發布到WebDeploy包中的所有文件。 這可能不是項目目錄或bin目錄中的所有文件。 我發現這篇博客文章描述了在構建過程中如何將csproj打包到Nuget包中,但是我發現生成的包不包含我的任何依賴dll。 我意識到我可以為每個項目手動編寫一個nuspec並確切地包含我想要的文件,但是我正在尋找一種更自動的方式,因為當我的項目更改時,這會帶來更多的維護。

有沒有人知道一種生成nuspec或Nuget軟件包的好方法,該軟件包僅包含運行該應用程序所需的文件,類似於發布到WebDeploy軟件包中僅包含所需文件的方式?

Octopus Deploy有一個名為“ Octo.exe”的CLI,可以將您的應用程序打包為NUPKG。

您將需要安裝Octopus Tools,可以從https://octopus.com/downloads下載。

請參閱http://docs.octopusdeploy.com/display/OD/Using+Octo.exe以獲取文檔及其使用方法。

當成功通過構建時,使用Octo.exe的一個很好的示例是Continuous Integration管道的一部分,您可以調用它來打包應用程序並將其發送到Octopus服務器。

在對Visual Studio,MSBuild和TeamCity進行了一些嘗試之后,我發現了一種對我有用的方法。 我的問題是我不想打包項目目錄中的所有文件,而只打包運行應用程序所需的文件。 作為發布時的一種選擇,WebDeploy可以很好地處理此問題。 我的csproj文件中已經有設置,可以在構建時創建WebDeploy包,但這是一個zip文件,我不希望該zip文件位於我的Nuget包中。

我發現了兩種解決方法:

  1. 在TeamCity中,我設置了一個新的生成配置,該配置將打包我擁有的所有nuspec文件,並將生成的Nuget包發布到我的Octopus Deploy Nuget提要中。 我發現我可以將由CI構建配置創建的現有WebDeploy軟件包用作工件依賴項,並且在將工件作為該依賴項的一部分時,TeamCity實際上可以解壓縮zip文件。 然后,我的nuspec文件引用了從zip文件中提取的整個文件夾結構,並將其打包到Nupak中。

  2. 我能夠修改csproj設置,以使用我在Visual Studio中生成的特定發布配置文件,該配置文件將執行WebDeploy包到文件系統。 這將導致文件夾結構與#1的zip文件中的文件夾結構相同,只是將其復制到目錄中。 然后,我的Nuget構建配置可以簡單地獲取那些依賴項,並將它們打包為與#1中相同的方式。

我決定選擇選項#1,因為它只需要對現有的csproj和CI構建配置進行最小的更改,並且不會破壞我們當前使用WebDeploy進行部署的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM