gpt4 book ai didi

c# - 在 nuget 包中包含引用的项目 DLL [.Net Core RC3 *.csproj 文件]

转载 作者:太空狗 更新时间:2023-10-30 00:09:57 25 4
gpt4 key购买 nike

我有一个包含两个项目的解决方案。第一个项目称为 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 包并尝试运行我的测试应用程序时,出现以下异常:

Exception Screenshot我假设 DLL 已被嵌入,因为在将“IncludeAssets”添加到 csproj 之前,我无法导入 nuget 包,因为它试图引用 ReferenceLibrary nuget 包。但是在添加这些条目之后,它允许我导入它。但现在它在运行时爆炸。任何帮助将不胜感激。谢谢!

;)

最佳答案

现在描述了更新的解决方法 here .只需将 TargetsForTfmSpecificBuildOutputTarget 节点添加到您的 .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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com