Nupack是一種使用Visual Studio構建時,基於彙編或NUSPEC生產.NET 4.0+的Nuget軟件包的簡便方法。它被實現為nuget軟件包。
當Nupack通過項目引用時,沒有創建依賴關係,只有一個新的構建步驟可以自動將項目輸出包裝到帶有項目名稱為ID的Nuget軟件包中。
當將.NUSPEC文件視為項目的一部分時,Nupack尊重規範,並且不應用任何自動配置來生成預期的Nuget軟件包。
使用Nuget軟件包依賴項生產一個簡單的庫(LIB文件夾)。當未檢測到類型庫的項目的NUSPEC文件時,將自動應用此模式。
當軟件包是基於控制台應用程序和.NUSPEC的情況下,則使用.targets文件定義構建目錄,以提供一種簡單的方法來添加構建操作步驟作為郵政構建,並帶有5個參數:
依賴項可以是Nuget軟件包,項目參考等...它們必須遞歸將其包含在帶有充分錶格的生成的Nuget軟件包中。
Nuget過程不會傳播XML文檔和輸出中依賴的資源,並且在Nupack包裝過程中無法考慮。讓Nupack自動傳播它們,有助於在每個節點中保持清潔的結構和文檔。
Nupack可以提供一個庫來開發插件作為Nuget軟件包。它將從package.config檢測插件,並將其從nupack文件夾加載,以在Nupack中添加其他行為。插件將與傳遞給nupack的參數調用,並在保存結果之前從原始包裝構造器中生產一個包裝構造器。插件在Nuget創建後被處置。
nupack必須創建一個特定的軟件包,以將插件(庫)存儲在nupack文件夾中時,當項目參考nupack.extension。
當Nupack由名為[庫]的控制台應用程序引用。 Optimizer並引用名為[庫]的庫時,將完成優化器模式。生成的nuget軟件包包含[庫] .dll到lib文件夾中,並且[庫] .optimizer.exe將帶有.targets文件的構建文件夾放置在具有相同參數的Postbuild上的構建文件夾中,而不是標準的構建操作,用於控制台應用程序模式。 Nuget軟件包將[庫]名稱為ID。這意味著如果[庫]是nuget生產者,則不會完成模式。優化器模式將是重寫IL的切入點,例如或基於[庫] .DLL使用。
Visual Studio 2017更改了Nuget集成模板。 Nupack必須進行更新以支持Visual Studio 2017。
Nuget令人沮喪的是要有一個乾淨整整的元數據。不幸的是,InderblyInfo沒有提供揭示所有Nuget需求的方法。另一方面,通常有必要在多個地方聲明引起同步問題並添加維護開銷的相同信息。使用github.com API自動完成Nuget創建可能是一件好事,可以保持反應性。