.net core 如何通过MSBuild包目标将ref程序集添加到NuGet包?
我正在开发一个库,目标是net35(.NET Framework 3.5)、netstandard2.0(.NET Standard 2.0)和netcoreapp3.1(.NET Core 3.1) 对于其中一项功能,库在内部使用,因此此功能仅在针对net35(.NET Framework 3.5)和netcoreapp3.1(.NET Core 3.1)时有效 我使用MSBuild为我的库创建NuGet包,但由于WPF用于netcoreapp3.1,因此我也为netcoreapp3.1创建,以便非Windows平台上的使用者在构建项目时使用该引用程序集,如本节所述.net core 如何通过MSBuild包目标将ref程序集添加到NuGet包?,.net-core,msbuild,nuget,nuget-package,dotnet-sdk,.net Core,Msbuild,Nuget,Nuget Package,Dotnet Sdk,我正在开发一个库,目标是net35(.NET Framework 3.5)、netstandard2.0(.NET Standard 2.0)和netcoreapp3.1(.NET Core 3.1) 对于其中一项功能,库在内部使用,因此此功能仅在针对net35(.NET Framework 3.5)和netcoreapp3.1(.NET Core 3.1)时有效 我使用MSBuild为我的库创建NuGet包,但由于WPF用于netcoreapp3.1,因此我也为netcoreapp3.1创建,
我的问题是:如何指示MSBuild将创建的NuGet软件包包含在“ref/”文件夹中?我也在上问了这个问题,我得到的答案是没有本地支持,因此我实施了一个解决方法,并将其发布在此处供其他人使用:
<!-- Generate also reference assembly. -->
<!-- See: -->
<!-- https://docs.microsoft.com/en-us/dotnet/standard/assembly/reference-assemblies#generating-reference-assemblies -->
<!-- https://github.com/dotnet/roslyn/blob/master/docs/features/refout.md -->
<PropertyGroup>
<ProduceReferenceAssembly>true</ProduceReferenceAssembly>
</PropertyGroup>
<!-- This is a workaround until better support for \ref (Reference Assembly) is added in Pack target. -->
<!-- See: -->
<!-- https://docs.microsoft.com/en-us/nuget/create-packages/select-assemblies-referenced-by-projects#packagereference-support -->
<!-- Need a away to specify \ref (Reference Assembly) as target folder in Pack target (https://github.com/NuGet/Home/issues/4184) -->
<PropertyGroup>
<!-- Supress warning NU5131 (https://docs.microsoft.com/en-us/nuget/reference/errors-and-warnings/nu5131) which is reported because .nuspec file is not updated -->
<!-- to contain <references> element (https://docs.microsoft.com/en-us/nuget/reference/nuspec#explicit-assembly-references) for all files inside the 'ref\' directory. -->
<NoWarn>$(NoWarn),NU5131</NoWarn>
<!-- See https://docs.microsoft.com/en-us/nuget/reference/msbuild-targets#targetsfortfmspecificcontentinpackage -->
<TargetsForTfmSpecificContentInPackage>$(TargetsForTfmSpecificContentInPackage);AddRefAssemblyToPackage</TargetsForTfmSpecificContentInPackage>
</PropertyGroup>
<Target Name="AddRefAssemblyToPackage">
<!-- Add reference assembly and XML documentation to 'ref/'. -->
<ItemGroup Condition=" Exists('$(BaseOutputPath)$(Configuration)\$(TargetFramework)\ref\$(AssemblyName).dll') ">
<TfmSpecificPackageFile Include="$(BaseOutputPath)$(Configuration)\$(TargetFramework)\ref\$(AssemblyName).dll" PackagePath="ref/$(TargetFramework)" />
<TfmSpecificPackageFile Include="$(BaseOutputPath)$(Configuration)\$(TargetFramework)\$(AssemblyName).xml" PackagePath="ref/$(TargetFramework)" />
</ItemGroup>
</Target>
真的
$(诺瓦恩),5131号
$(targetsfortfmspecificcontentPackage);添加重新组装到包装中