我有一个包含两个项目的解决方案。第一个项目称为 Library1,它引用称为 Referencelibrary 的项目二。我正在尝试将 ReferenceLibrary 的 DLL 嵌入到 Library1 的 nuget 包中,这样我就不必发布 2 个单独的 nuget 包。通过将以下条目添加到我的 csproj 文件中,我已经能够将 ReferenceLibrary 的 DLL 嵌入到 nuget 包中(看起来如此):
<ItemGroup>
<ProjectReference Include="..\ReferenceLibrary\ReferenceLibrary.csproj">
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
<IncludeAssets>ReferenceLibrary.dll</IncludeAssets>
<IncludeAssets>ReferenceLibrary.pdp</IncludeAssets>
</ProjectReference>
</ItemGroup>
但是当我导入 nuget 包并尝试运行我的测试应用程序时,出现以下异常:
我假设 DLL 已被嵌入,因为在将“IncludeAssets”添加到 csproj 之前,我无法导入 nuget 包,因为它试图引用 ReferenceLibrary nuget 包。但是在添加这些条目之后,它允许我导入它。但现在它在运行时爆炸。任何帮助将不胜感激。谢谢!
;)
最佳答案
现在描述了更新的解决方法 here .只需将 TargetsForTfmSpecificBuildOutput
和 Target
节点添加到您的 .csproj
文件中,如下所示。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetsForTfmSpecificBuildOutput>$(TargetsForTfmSpecificBuildOutput);CopyProjectReferencesToPackage</TargetsForTfmSpecificBuildOutput>
</PropertyGroup>
<Target Name="CopyProjectReferencesToPackage" DependsOnTargets="ResolveReferences">
<ItemGroup>
<BuildOutputInPackage Include="@(ReferenceCopyLocalPaths->WithMetadataValue('ReferenceSourceTarget', 'ProjectReference'))" />
</ItemGroup>
</Target>
</Project>
可在 pack 目标中找到此扩展点的官方文档 here .
然后您可能还想将属性 PrivateAssets="All"
添加到 ProjectReference
元素以禁止该项目在生成的包中显示为 NuGet 依赖项,例如:
<ProjectReference Include="MyNonNugetDependentProject.csproj" PrivateAssets="All" />
关于c# - 在 nuget 包中包含引用的项目 DLL [.Net Core RC3 *.csproj 文件],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41979310/