如何配置NuGet包安装时自动设置指定PackageReference属性?
实现NuGet包安装时自动配置指定资产属性
可以通过以下两种方式实现你的需求,让用户安装DevKit包后自动添加<PrivateAssets>all</PrivateAssets>和<IncludeAssets>compile</IncludeAssets>属性:
方法一:直接在DevKit项目的csproj中配置默认资产
在DevKit项目的<PropertyGroup>节点下添加以下配置:
<PackageIncludeAssets>compile</PackageIncludeAssets> <PackagePrivateAssets>all</PackagePrivateAssets>
这两个属性的作用是:
PackageIncludeAssets:定义NuGet包被安装时默认的IncludeAssets值PackagePrivateAssets:定义NuGet包被安装时默认的PrivateAssets值
配置完成后,用户安装你的DevKit包时,自动生成的PackageReference会自动带上你需要的属性,效果和手动添加完全一致:
<PackageReference Include="Tum4ik.JustClipboardManager.PluginDevKit" Version="3.2.24181.11"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>compile</IncludeAssets> </PackageReference>
方法二:通过NuBuild props文件强制更新属性
如果需要更灵活的控制(比如兼容不同场景),可以在DevKit包中添加一个build props文件:
- 在DevKit项目根目录创建
build文件夹,里面新建Tum4ik.JustClipboardManager.PluginDevKit.props文件,内容如下:
<Project> <ItemGroup> <PackageReference Update="Tum4ik.JustClipboardManager.PluginDevKit"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>compile</IncludeAssets> </PackageReference> </ItemGroup> </Project>
- 在DevKit的csproj中添加配置,确保这个props文件被打包到NuGet包的
build目录:
<ItemGroup> <None Include="build\Tum4ik.JustClipboardManager.PluginDevKit.props" Pack="true" PackagePath="build" /> </ItemGroup>
用户安装包后,这个props文件会自动导入到他们的项目中,强制更新该PackageReference的资产属性。
这两种方法都能满足你的需求——开发阶段可以正常调用DevKit的API,分发插件时不会将DevKit的DLL包含在分发包中。
内容的提问来源于stack exchange,提问作者Yevheniy Tymchishin
相关产品推荐
相关产品推荐

