是否可以創建包含自定義構建步驟(分析生成的程序集並自動生成一些元數據)的nuget包?目標環境應該是新的.csproj格式的.NET Core(目前使用Visual Studio 2017 RC)。最好的情況是,如果這隻會添加一個msbuild步驟並且不依賴項目生成的程序集。創建包含.NET Core的自定義構建步驟的nuget包
如果發現應該可以使用完整的.NET,但msbuild的文檔和.NET Core的新.csproj目前有點稀疏。
是否可以創建包含自定義構建步驟(分析生成的程序集並自動生成一些元數據)的nuget包?目標環境應該是新的.csproj格式的.NET Core(目前使用Visual Studio 2017 RC)。最好的情況是,如果這隻會添加一個msbuild步驟並且不依賴項目生成的程序集。創建包含.NET Core的自定義構建步驟的nuget包
如果發現應該可以使用完整的.NET,但msbuild的文檔和.NET Core的新.csproj目前有點稀疏。
如果在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。
感謝您的信息。你知道任何nuget包可以添加一個可以用作參考的自定義構建步驟嗎?可能是一個.NET核心? – Fionn
您可以將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目標在編譯步驟之前自動生成程序集屬性
我認爲這樣做的方法是通過[內置目標導入](http://stackoverflow.com/a/ 517852分之25513519)。不知道它是否適用於Core項目,但我不明白爲什麼它不會。比安裝腳本更容易。 –