NuGet 打包并包含dll等资源的配置 解决方案
直接帖代码
.csproj
<PropertyGroup>
<PackageId>ShenTong.EntityFrameworkCore.Oscar</PackageId>
<PackageVersion>1.0.0-alpha-1.0</PackageVersion>
<Authors>microestc</Authors>
<Company>shentong</Company>
<Description>Oscar database provider for Entity Framework Core.</Description>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<TargetsForTfmSpecificBuildOutput>$(TargetsForTfmSpecificBuildOutput);LibContentTarget</TargetsForTfmSpecificBuildOutput>
</PropertyGroup>
<Target Name="LibContentTarget">
<ItemGroup>
<TfmSpecificPackageFile Include="lib\System.Data.OscarClient.dll" Condition="'$(TargetFramework)' == 'netstandard2.1'">
<PackagePath>lib\$(TargetFramework)</PackagePath>
</TfmSpecificPackageFile>
</ItemGroup>
</Target>
<ItemGroup>
<Reference Include="System.Data.OscarClient">
<HintPath>lib\System.Data.OscarClient.dll</HintPath>
<PrivateAssets>all</PrivateAssets>
</Reference>
</ItemGroup>
用于创建自定义包的高级扩展点
pack 目标提供了两个扩展点,这些点在内部特定于目标框架的内部版本中运行。 扩展点支持包括特定于目标框架的内容和程序集到包中:
TargetsForTfmSpecificBuildOutput 目标:用于 lib 文件夹内的文件或使用 BuildOutputTargetFolder指定的文件夹。
TargetsForTfmSpecificContentInPackage 目标:用于 BuildOutputTargetFolder以外的文件。
TargetsForTfmSpecificBuildOutput
编写一个自定义目标并将其指定为 $(TargetsForTfmSpecificBuildOutput) 属性的值。 对于需要进入 BuildOutputTargetFolder 的任何文件(默认情况下 lib),目标应将这些文件写入 ItemGroup BuildOutputInPackage 并设置以下两个元数据值:
FinalOutputPath:文件的绝对路径;如果未提供,则标识用于计算源路径。
TargetPath:(可选)当文件需要进入到 lib<TargetFramework> 中的子文件夹时设置,如在其各自的区域性文件夹下的附属程序集。 默认为文件的名称。
另一种方式是
修改 .nuspec 文件配置
优先使用第一种方案