繁体   English   中英

Nuget package 依赖问题

[英]Nuget package dependencies issue

我有一个项目 Customer.Invoices,它是 nuget package,csproj 文件具有以下内容。 PackageReference Customer.Prices 是 Customer.Invoices 项目中引用的 nuget package。

Customer.Groups 项目引用只是 Customer.Invoices 解决方案中的一个引用项目。

<ItemGroup>
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.2.4" />
    <PackageReference Include="Customer.Prices" Version="1.0.0.14" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\CustomerGroups\CustomerGroups.csproj" />
  </ItemGroup>

我现在正在使用 Customer.Invoices nuget package,这是我在另一个 package 项目中需要的主要 package。 我遇到了两个问题:

1.)如果我不添加 Customer.Prices nuget package 它说它在 Customer.Invoices 项目中运行方法时找不到程序集。

2.) 我得到一个未找到 CustomerGroups 项目的程序集。

我知道如何解决这些问题,因为我知道包含资产等,但不确定如何处理依赖项。 对于第二个问题,不确定这是否可行,将 privateassets=all 添加到项目引用中,就像这是一个.Net Core 2.2 项目:

<ProjectReference PrivateAssets="all" Include="..\CustomerGroups\CustomerGroups.csproj" />

再次不确定这是正确的,因为我还不太了解资产,但还需要弄清楚我是否可以让 Customer.Prices 组件正常工作,而不必添加 nuget package。

谢谢你的帮助

这两个问题都与如何构建和解决包有关。 假设您有项目AB以及A引用B A引用了一个名为A-Package的 package 。 B引用了一个名为B-Package的 package 。

旧项目格式

在旧式项目(SDK 样式格式之前)中,构建后项目的 output 将仅包含库和直接依赖项的内容。 在这里, A的 output 文件夹将包含来自ABA-Package的文件,而B的 output 文件夹将包含来自BB-Package文件。 packages.configPackageReference也会发生这种情况。

SDK 项目格式

带有PackageReferenceSDK 项目格式(这是 .NET 核心的默认值)支持传递依赖 这在此处进行了详细描述。 这意味着如果A引用BB引用 package B-Package ,那么A也将获得B-Package的内容。 对于上面的示例, A的 output 文件夹将包含来自ABA-PackageB-Package文件。

所以问题 1 中的问题很可能是使用错误框架的结果,或者没有使用带有PackageReference的 SDK 样式格式。

项目参考

第二个问题是项目引用没有复制到您的 package。 这就是找不到程序集的原因。 目前不支持此功能,但有一些解决方法 PrivateAssetsIncludeAssets和类似的属性在这里没有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM