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

标签 c# .net visual-studio nuget .net-core

我有一个包含两个项目的解决方案。第一个项目称为 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/

相关文章:

c# - 减小位图图像的物理尺寸?

c# - AWS S3 如何将文件从一个存储桶移动到不同区域的另一个存储桶

c# - 如何获取随机索引的 DropDownList 值?

asp.net - .NET 的 HTML sanitizer

c# - 使用 Visual C# 2010 Express 在 C# 项目中添加引用 'SHDocVw'

c# - 将 IEnumerable<string> 作为用户定义的表类型参数传递给 SQL Server 存储过程

c# - WPF - 项目模板的网格用法

c# - 使用撤消和重做功能绘制形状和字符串

.net - "Programming in the Cloud"会起飞吗?

c# - Visual Studio Ordered 测试运行两次