是否可以创建包含自定义构建步骤的nuget包(分析生成的程序集并自动生成一些元数据)?目标环境应该是具有新.csproj格式的.NET Core(目前使用Visual Studio 2017 RC)。最好的情况是,如果这只添加了一个msbuild步骤,并且没有依赖于项目产生的程序集。
如果看到它应该可以使用完整的.NET,但是msbuild的文档和.NET Core的新.csproj目前有点稀疏。
答案 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。