【问题标题】:.Net Core Nuget reference issue.Net Core Nuget 参考问题
【发布时间】:2020-05-14 06:52:00
【问题描述】:

我有多个 .net 核心项目。我的项目结构是多个独立的库项目,每个项目都有不同的 nuget 包引用,并且一个主 Web 项目引用了这些库项目。

我的问题是在我的主要 Web 项目中,我必须再次提供相同的 nuget 引用。如果我没有给出 nuget 引用,我会收到错误消息。有什么办法可以只引用库而不是 web 项目中的 nuget 包引用?无论如何只是添加库应该自动导入nuget引用? 如何避免在主项目中添加相同的 nuget 引用?

================================================ ================ 我认为我的上述问题并不清楚让我举个例子

  • 解决方案1

    LibProject1 ->Nuget1 参考 ->Nuget2 参考
    LibProject2 ->Nuget3 参考

  • 解决方案2

    ->Lib1项目参考
    ->Lib2项目参考

在此结构中,Solution2 项目出现运行时错误,因为它缺少 nuget 库。我必须在我的库解决方案中已经给出的解决方案 2 中明确给出相同的 Nuget 引用。如何避免在我的解决方案2 中再次提供参考。它应该自动将所有引用的库从 lib1 和 lib2 获取到我的解决方案 2。

【问题讨论】:

  • 实际上处理nuget更容易,如果您有多个使用同一个库的项目,只需将其添加到两者中即可。 Nuget 足够聪明,只需下载一次库并为您处理项目引用。无论如何,你都需要你的两个项目都引用这个库,否则它不会编译。
  • Visual Studio 中有什么选项可以解决这个问题吗?
  • 右键单击您的项目,“管理 nuget 包”。您将看到已安装的 nuget。您可以升级和降级他们的版本、删除、搜索 Nuget 库等。
  • 如果您右键单击您的解决方案图标,您将看到为您的整个解决方案管理包的选项。您将获得项目列表以及其中的所有 nuget 包。如果您想确保所有项目都具有相同的库版本,这真的很有帮助
  • 这仅在基于 .NET Core SDK 的项目中受支持。如果您的项目仍采用旧格式,那么您所观察到的是设计使然。

标签: .net visual-studio .net-core reference nuget


【解决方案1】:

有什么办法我可以只引用库而不是 nuget 包 Web项目中的参考?无论如何只是添加库应该 自动导入nuget引用?我怎样才能避免添加相同的 主项目中的 nuget 引用?

在我看来,您的实际问题是 msbuild 在应该这样做时没有将那些 nuget 引用复制到 MVC 项目。

当 MVC 项目将 project reference 添加到库项目中,并且库项目引用了一些 nuget 包时,预期的行为是在构建过程中引用的 nuget 程序集应该存在于 MVC 的输出文件夹中。在您的情况下,它们不存在,这会导致运行时错误...

请尝试重新构建 MVC 项目,如果不起作用,则将此脚本添加到您的项目文件(xx.csproj)并再次重新构建 MVC 项目:

  <PropertyGroup>
    <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
  </PropertyGroup>

让我知道它是否有帮助:)

【讨论】:

    【解决方案2】:

    听起来您正在创建自己的 NuGet 包,然后从主项目中引用这些 NuGet 包。这是正确的做法。

    虽然打包程序可能会为您执行此操作,但控制 NuGet 包创建的最佳方式是为您正在创建的每个 NuGet 包创建一个 .NuSpec 文件。您指定需要在包中的文件,以及依赖项。

    在 .NuSpec 文件中指定依赖项,您可以具体说明它需要哪些 NuGet 包,以及哪些版本可以使用它。当您从主项目中引用它时,它会知道它需要哪些 NuGet 包才能完成这项工作。

    您可以在 Microsoft 阅读有关 NuSpec 文件的所有信息:https://docs.microsoft.com/en-us/nuget/reference/nuspec

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-11
      • 1970-01-01
      • 2017-09-18
      • 2020-05-01
      相关资源
      最近更新 更多