2013-02-08 58 views
5

我與文件規範一個的NuGet規範文件:的NuGet文件被打包到錯誤的地方

<files> 
    <file src="content\App_Start\*" target="content\App_Start" /> 
    <file src="content\Views\*" target="content\Views" /> 
    <file src="content\web.config.transform" target="content" /> 
    <file src="readme.txt" target="" /> 
    </files> 

這曾經是:

<files> 
    <file src="content\*" target="content" /> 
    <file src="readme.txt" target="" /> 
    </files> 

但有奇怪的行爲,以及(spefically App_Start沒有被包括在內,儘管額外的內容文件夾仍然被添加用於視圖...參見下面的描述)

該項目本身的格式爲

\<root> 
|_ readme.txt 
|_ content 
     |_ Views 
     | |_ Home 
     |   |_ <viewname>.cshtml 
     |   |_ <viewname2>.cshtml 
     |_ App_Start 
      |_ <PreprocessFilename>.cs.pp 

什麼似乎是古怪的行爲對我來說不過是的NuGet包生產與結構的zip文件:

\<root> 
|_ readme.txt 
|_ content 
     |_ content 
     | |_ Views 
     |   |_ Home 
     |    |_ <viewname>.cshtml 
     |    |_ <viewname2>.cshtml 
     |_ App_Start 
     | |_ <PreprocessFilename>.cs.pp 
     |_ readme.txt 

所以相對於的NuGet打包文件路徑:

  • 爲什麼readme.txt在兩個地方被複制?
  • 爲什麼視圖被賦予第二個「內容」子文件夾? (而App_Start不是)
  • 如何使我的內容文件夾的副本能夠準確反映實際結構是什麼?
  • 我怎樣才能回到<file src="content\*" target="content" />指令,使nuspec文件更多的「維護」

如果是相關的,我使用的是.csproj文件來創建包。

+0

亞歷克斯 - 你有沒有想過readme.txt文件被重複的問題? – Randy 2014-12-18 20:27:12

回答

0

我有同樣的問題,我能夠解決它,但有點破解國際海事組織。我很想看到一個更好的解決方案,以便我的項目可以在最終包中包含目標dir樹,但是我今天需要這個工作以便.......

我必須做些什麼來解決這是拉在內容目錄出來,發生在根級別的所有子目錄,然後在設定的目標子目錄我希望它在結束了。

<file src="Scripts\" target="content\Scripts" /> 
0

的行爲似乎是,當你打包一個.csproject文件nuget pack MyProject.csproj,它會首先根據您的項目結構安排包裝,然後查看nuspec的其他說明。但是,當您按項目打包時,似乎沒有任何方法可以讓您在上一步中添加的內容添加到您的移動內容中。

因此,如果默認項目結構導致您的包中有不需要的內容,則應該依靠由.nuspec直接打包來代替。 nuget pack MyProject.nuspec然後,它只會獲取您的nuspec中指定的內容,您可以在其中定義您想要的內容。

如果你有一個大的項目,幾乎有你想要的結構,它可以很方便地首先從項目生成的包,使用Nuget Package Explorer來提取這個包你以後調整到適合您的需要的nuspec並且你最終收拾對手。這樣你就不必從頭開始構建它。

編輯

或者......你可以在.csproj的,你告訴它忽略某些特定文件和編寫自定義規範在.nuspec是將這些文件執行與-Exclude parameter包裝自動讀取其他數據。

我個人發現它更簡潔,但.nuspec作爲您的軟件包的唯一定義。