2012-05-28 36 views
26

我想要創建一個NuGet包,它在安裝過程中向目標項目的根目錄添加一個.cs文件(該包的使用者被鼓勵稍後修改的基類)。Can NuGet是否可以將.cs文件添加到目標項目?

這可能嗎?到目前爲止,我發現的一切都是「不,你只能在軟件包目錄下面安裝文件」。

回答

37

只需將您的.cs文件放在名爲「content」的文件夾中,位於包的根目錄下。 。

從文檔:

「你可以佈局遵循的NuGet約定的目錄結構

工具 - 一包的工具文件夾是從包管理器訪問的PowerShell腳本和程序。控制檯中的文件夾複製到目標項目後,它被添加到`$ ENV:路徑(PATH)環境變量

LIB - lib文件夾中集(.dll文件)添加組件。 [R安裝軟件包時引用。

content - 安裝軟件包時,內容文件夾中的文件被複制到應用程序的根目錄。

將Content文件夾視爲目標應用程序的根目錄。例如,如果我想要一個包到目標應用程序的/ images目錄添加圖像,務必將圖像放置在包中的內容/圖片文件夾「

參見:http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package#From_a_convention_based_working_directory

+0

將更新包工作後,當我做修改 –

+4

注意,內容只複製當安裝軟件包時,升級/恢復軟件包不會更改內容t因此內容不能用nuget升級。 Nuget實際上只對.net程序集依賴項有用。 – trampster

+0

@trampster今天仍然如此? NuGet最近的副本是否允許更新「內容」文件? – Todd

8

您還可以使用nuspec的<files>部分,將文件移動到內容的文件夾時,包正在興建?

<?xml version="1.0"?> 
<package> 
    <metadata> 
    ... 
    </metadata> 
    <files> 
    <file src="App.Template.config" target="content" /> 
    <file src="Program.template.cs" target="content" /> 
    </files> 
</package> 
+2

目錄通配符\ * \ *可能很有用。以下內容將./Assets目錄中的所有子目錄複製到包中的./content/Assets(並排除任何名爲readme.txt的文件)。 stevieg

相關問題