调用 msbuild 包时如何将本地 DLL 引用包含到 nuget 包中?

Kab*_*buo 3 msbuild nuget-package

我们有几个项目需要包含一些静态 DLL。因此,项目文件包含如下代码:

   <ItemGroup>
     <Reference Include="..\_Solutions\dependencies\abc123.dll" />
     <Reference Include="..\_Solutions\dependencies\def456.dll" />
     <Reference Include="System.Web" />
   </ItemGroup>
Run Code Online (Sandbox Code Playgroud)

预期的:

我们预计这两个dll;abc123.dll并且def456.dll会在 nupkg 文件中找到。

实际的:

然而,nupkg不包括abc123.dll也不是def456.dll文件。

Rol*_*sen 13

人们总是可以在 nuget-package 中包含自定义内容。像这样:

<ItemGroup>
  <Content Include="$(OutputPath)\ReferencedLib.dll">
    <Pack>true</Pack>
    <PackagePath>lib\$(TargetFramework)</PackagePath>
  </Content>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

如果您针对多个框架:

<PropertyGroup>
  <TargetFrameworks>netstandard2.0;netstandard1.6</TargetFrameworks>
  <TargetsForTfmSpecificContentInPackage>$(TargetsForTfmSpecificContentInPackage);IncludeReferencedProjectInPackage</TargetsForTfmSpecificContentInPackage>
</PropertyGroup>
<Target Name="IncludeReferencedProjectInPackage" Condition="'$(IncludeBuildOutput)' != 'false'">
  <ItemGroup>
    <TfmSpecificPackageFile Include="$(OutputPath)\ReferencedLib.dll" PackagePath="lib/$(TargetFramework)" />
  </ItemGroup>
</Target>
Run Code Online (Sandbox Code Playgroud)


Joy*_*Joy 0

调用 msbuild pack 时如何将本地 DLL 引用包含到 nuget 包中?

根据GitHub 上的问题,目前 NuGet 不直接支持此功能。

我建议的解决方法是使用该.nuspec文件:

NuGet 允许您通过在项目中设置属性以及允许您传递用于解析 .nuspec 文件的替换标记的属性来禁用生成的 .nuspec 文件的自动生成和文件的自动收集。

详情请参阅马丁的回答。