我们有几个项目需要包含一些静态DLL。因此,项目文件包括如下代码:
<ItemGroup>
<Reference Include="..\_Solutions\dependencies\abc123.dll" />
<Reference Include="..\_Solutions\dependencies\def456.dll" />
<Reference Include="System.Web" />
</ItemGroup>
预期:
我们期待这两个dll;将在nupkg文件中找到abc123.dll
和def456.dll
。
实际
但是,nupkg不包含abc123.dll
和def456.dll
文件。
答案 0 :(得分:4)
人们总是可以在nuget-package中包含自定义内容。像这样:
<ItemGroup>
<Content Include="$(OutputPath)\ReferencedLib.dll">
<Pack>true</Pack>
<PackagePath>lib\$(TargetFramework)</PackagePath>
</Content>
</ItemGroup>
如果您定位多个框架:
<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>
答案 1 :(得分:0)
如何在调用msbuild pack时将本地DLL引用包含在nuget包中?
根据the issue on the GitHub,目前NuGet并未直接支持。
我建议的解决方法是使用.nuspec
文件:
NuGet允许您禁用自动生成结果 .nuspec文件和通过设置自动收集文件 项目中的财产,以及 允许您传递替换标记以解析的替换标记的属性 .nuspec文件。
有关详细信息,请参阅Martin`s answer。