创建包含.NET Core自定义生成步骤的nuget包

时间:2017-01-03 08:06:00

标签: msbuild nuget .net-core visual-studio-2017

是否可以创建包含自定义构建步骤的nuget包(分析生成的程序集并自动生成一些元数据)?目标环境应该是具有新.csproj格式的.NET Core(目前使用Visual Studio 2017 RC)。最好的情况是,如果这只添加了一个msbuild步骤,并且没有依赖于项目产生的程序集。

如果看到它应该可以使用完整的.NET,但是msbuild的文档和.NET Core的新.csproj目前有点稀疏。

2 个答案:

答案 0 :(得分:4)

您可以在" build"中添加MSBuild目标到NuGet包。夹。目标或道具文件名必须与包ID匹配。通过" PackageReference"安装时或者packages.config,NuGet会自动将目标/ props文件导入到csproj中,因此这些文件必须写成有效的MSBuild代码。

即。如果您的包名为" MyClassLibrary",您可以使用以下布局:

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

例如,请参阅NuGet.org上的Microsoft.Extensions.Configuration.UserSecrets或GitHub上的source code。此程序包使用MSBuild目标在编译步骤

之前自动生成程序集属性

答案 1 :(得分:1)

Nuget可以执行" init.ps1"如果在您的nuget包中找到它,则在安装期间使用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