如何让csproj为nuget包的dll添加参考文件?

问题描述

我可以添加一个 dll 并确保它在 lib 和 ref 文件夹中,这样我就可以避免 .nuspec 文件中的 MSB3246、NU5128 和 NU5131 警告。

    <?xml version="1.0" encoding="utf-8"?>
<package >
  <Metadata>
    <id>NewDll</id>
    <version>1.0.0</version>
    <title>NewDll</title>
    <authors>Dll Dev Team</authors>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <license type="expression">MIT</license>
    <projectUrl>https://new.dll.com</projectUrl>
    <description>Allow NewDll dll to be used in .NET Framework 4.8 as a nuget package.</description>
    <releaseNotes>Remove missing reference assembly warning.</releaseNotes>
    <copyright>2021</copyright>
      <dependencies>
          <group targetFramework=".NETFramework4.8">
          </group>
      </dependencies>
    <references>
      <group targetFramework="net48">
        <reference file="newdll.dll" />
      </group>
    </references>
  </Metadata>
  <files>
      <file src="C:\Users\me\source\repos\Project1\dlls\newdll.dll" target="lib\net48\newdll.dll" />
    <file src="C:\Users\me\source\repos\Project1\dlls\newdll.dll" target="ref\net48\newdll.dll" />
  </files>
</package>

但我不知道如何在 .csproj 文件中做到这一点。我只完成了一部分。

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net48</TargetFramework>
    <Description>Put NewDll.dll to be used in .NET Framework 4.8 as a nuget package.</Description>
    <PackageReleaseNotes>Remove missing reference assembly warning.</PackageReleaseNotes>
    <Version>1.0.0</Version>
  </PropertyGroup>

  <!-- How do I add a reference? -->

  <ItemGroup>
    <Content Include="NewDll.dll">
      <Pack>true</Pack>
      <PackagePath>lib\$(TargetFramework)</PackagePath>
    </Content>
  </ItemGroup>
</Project>

如何确保 dll 也在 .csproj 的 nuget 包中创建 ref 文件夹?

解决方法

您可以向 PackagePath 添加多个路径,例如:

<ItemGroup>
  <None Include="NewDll.dll">
    <Pack>true</Pack>
    <PackagePath>lib\$(TargetFramework);ref\$(TargetFramework)</PackagePath>
  </None>
</ItemGroup>