【问题标题】:How .Net/VisualStudio handles having projects dependencies each with different nuget target for same nuget packages.Net/VisualStudio 如何处理项目依赖项,每个项目依赖项都具有相同 nuget 包的不同 nuget 目标
【发布时间】:2018-11-15 17:18:24
【问题描述】:

我在 .Net 4.6.1 中有一个 Web 服务项目,我们称它为 Project X,它有 2 个项目引用(两个类库),我们称它们为 Project A 和 B。

A 在 packages.config 中有这个:

<package id="NLog" version="4.5.3" targetFramework="net35" />

虽然 X 和 B 在他们的 packages.config 中有这个:

<package id="NLog" version="4.5.3" targetFramework="net461" />

现在,当我在项目 X 的​​解决方案中运行此命令时:

Update-Package –reinstall nlog -ignoreDependencies

此外,我构建了 X 的解决方案,然后运行 ​​X。 现在我想知道使用项目 A 或 B 的项目 X 中的代码流是否适用于他们在 A 或 B 的代码中具有的任何基于 nlog 的日志记录?

如果回答这个问题需要更多解释,然后请求分享任何参考链接,这将帮助我理解客户端应用程序的这种设置和 nuget 目标解决方案,该应用程序引用具有不同 nuget 目标的给定 nuget 包的依赖项。

谢谢

编辑:

恕我直言,建议的问题是重复的,因为它讨论了解决方案具有不同 nuget 版本的项目时的场景,这不是我的情况。

因为我的问题是关于两个项目具有相同的 nuget 版本但不同的 targetFramework。

A 它是 targetFramework="net35", 而对于 B 和 X,它是 targetFramework="net461"。

但是所有 3 个项目 A、B 和 X 都使用相同的版本,即 4.5.3。 抱歉,我之前给出的配置显示版本不同,但这不是我要谈论的,因此已编辑以使版本相同。

所以问题又是一个项目如何在构建/执行客户端应用程序(即此处的 X)期间解决每个使用相同版本但不同 targetFramework 的项目依赖项中的 2 个/多个项目依赖项。

是不是像 X 会将具有最高 targetFramework 的 nuget dll 拾取并复制到它的 bin 中?如果不是,那会发生什么?

【问题讨论】:

  • blog.davidebbo.com/2011/01/… 可能值得一读。
  • @mjvills - 感谢您的及时回复。肯定会通过它并让您知道是否可以将仅此一项标记为我正在寻找的答案...
  • @mjvills - 我检查了建议的链接以及建议的重复链接,但两者都针对 nuget 版本不同的场景,因此不适合我的情况,版本相同但包的 targetFramework 不同.您对这方面有什么建议吗?

标签: c# asp.net visual-studio-2015 nuget .net-4.6


【解决方案1】:

是否像 X 将具有最高 targetFramework 的 nuget dll 拾取并复制到它的 bin 中?如果不是,那会发生什么?

项目 X 将拾取 nuget .Net 461 dll 并将其复制到它的 bin,但不是因为最高的 targetFramework。那是因为项目 X 引用了带有目标框架 461 的 nuget 包 NLog 直接

您可以将MSBuild项目构建输出详细程度更改为正常或以上,工具->选项->项目和解决方案->构建和运行->MSBuild项目构建输出详细程度。在输出窗口中,您可以注意到net45下的NLog.dll复制到了项目x bin文件夹:

并将net35下的NLog.dll复制到项目A的bin文件夹中:

要查看有关此问题的更多信息,我建议您查看以下主题:

MSBuild doesn't copy references (DLL files) if using project dependencies in solution

希望这会有所帮助。

【讨论】:

  • 谢谢你,里奥。它澄清了我的主要问题,剩下一个小问题。有了这个解释,项目 A 的 Dll 是用 Nlog 构建的,目标框架为 3.5,在项目 X 中工作吗?问这个问题,因为 X 将只有 4.6.1 的 Nlog 目标副本,A 的使用 Nlog 的流在运行时是否会中断X?
猜你喜欢
  • 2019-03-19
  • 2020-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多