2017-01-03 85 views
1

是否可以創建包含自定義構建步驟(分析生成的程序集並自動生成一些元數據)的nuget包?目標環境應該是新的.csproj格式的.NET Core(目前使用Visual Studio 2017 RC)。最好的情況是,如果這隻會添加一個msbuild步驟並且不依賴項目生成的程序集。創建包含.NET Core的自定義構建步驟的nuget包

如果發現應該可以使用完整的.NET,但msbuild的文檔和.NET Core的新.csproj目前有點稀疏。

+0

我認爲這樣做的方法是通過[內置目標導入](http://stackoverflow.com/a/ 517852分之25513519)。不知道它是否適用於Core項目,但我不明白爲什麼它不會。比安裝腳本更容易。 –

回答

1

如果在nuget包中找到它,Nuget可能會在安裝過程中執行「init.ps1」powershell腳本。但請注意,該腳本支持修改中的NuGet 3.X:

在的NuGet 3.xx的PowerShell腳本的支持進行了修改,不再執行安裝和卸載腳本(install.ps1,uninstall.ps1),但init腳本仍然執行。

此外,在命令行或其他操作系統上在Visual Studio之外運行NuGet無法執行這些Powershell腳本,因爲它們依賴於Visual Studio自動化。 Powershell在NuGet中提供了一個墊片以允許缺少在Visual Studio中運行的功能 Powershell腳本支持被修改爲不再執行安裝和卸載腳本,但init腳本仍然執行。

在「PowerShell安裝和卸載腳本」中可找到更多here

+0

感謝您的信息。你知道任何nuget包可以添加一個可以用作參考的自定義構建步驟嗎?可能是一個.NET核心? – Fionn

2

您可以將MSBuild目標添加到「build」文件夾中的NuGet包中。目標或道具文件名稱必須與包裹ID匹配。當通過「PackageReference」或packages.config安裝時,NuGet會自動將目標/道具文件導入到csproj中,因此這些文件必須寫爲有效的MSBuild代碼。

也就是說,如果你的包被命名爲「MyClassLibrary」,你可以有以下佈局:

(package root) 
    lib/ 
     netstandard1.3/ 
      MyClassLibrary.dll 
    build/ 
     netstandard1.3/ 
      MyClassLibrary.props 
      MyClassLibrary.targets 

例如,見Microsoft.Extensions.Configuration.UserSecrets上NuGet.org或及其在GitHub上source code。此包使用MSBuild目標在編譯步驟之前自動生成程序集屬性

相關問題