2014-07-03 95 views
18

所以我實際上想把一個網站項目(不是web應用程序,所以沒有csproj文件)打包到一個NuGet包中,準備好Octopus使用,但卻跑到一個磚牆在另一個..如何將一個文件夾添加到nuspec文件

我看着使用OctoPack,但它不支持網站項目只有Web應用程序項目。

我現在試圖找到一種方法來添加一個文件夾(在我的情況下是一個網站)到一個Nuget包,但Nuget不允許通過命令行做到這一點嗎?它還需要一個.csproj文件!

我也嘗試嘗試創建NuGet規範文件並將其傳遞到文件夾中但不可能?

目前,我可能不得不使用NuGet包瀏覽器,但我想編寫腳本。

我看了這個問題,但似乎並沒有處理我的方案 Can I create a nuget package without a project file

因此,沒有人知道如何以最佳方式通過命令行的文件夾添加到NuGet包!?

回答

30

我不知道OctoPack,但nuget.exe,包裝分兩步進行:

  1. 要麼手動創建一個.nuspec,或產生一個從.csproj的或現有的組件(見nuget specthe docs中)。
  2. 撥打nuget pack,將上一步創建的.nuspec作爲參數。

由於您沒有放置.csproj文件,因此您無法手動創建.nuspec文件(或使用GUI工具(如NuGet Package Explorer))。

你可以閱讀所有關於如何在Nuspec Reference中創建.nuspec文件的信息,尤其是關於Specifying Files to Include in the Package的部分。

如果你想包括一個文件夾中的包(?遞歸),你需要像這樣添加一些東西到XML:

<files> 
    <file src="bin\Release\**\*.*" target="content" /> 
</files> 

這將需要的所有文件和(遞歸)子文件夾的bin\Release文件夾,並將它們放在NuGet包的content文件夾中。

我不知道OctopusDeploy在軟件包中期望什麼格式,但這就是如何在軟件包中包含文件夾的方式。

編輯:在OctoPack README似乎有一些文件。

+0

這個遞歸語法可能是我正在尋找的,我會嘗試下一步。謝謝。 –

+0

現在,如果我能找到解決方案/擺脫強制?/content文件夾是在提取nuget包的時候創建的我會很開心 –

+2

如果你沒有指定一個目標('content'),它會把所有東西放在根目錄下。內容是NuGet包中的[特殊文件夾](http://docs.nuget.org/docs/reference/nuspec-reference#Content_Files)。 – khellang

相關問題