c# - .Net/VisualStudio 如何处理项目依赖项,每个项目依赖项具有相同 nuget 包的不同 nuget 目标
问题描述
我在 .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 的解决方案中运行此命令时:
更新包 - 重新安装 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 中?如果不是,那会发生什么?
解决方案
是不是像 X 会有最高 targetFramework 的 nuget dll 被拾取并复制到它的 bin 中?如果不是,那会发生什么?
项目 X 将拾取 nuget .Net 461 dll 并将其复制到它的 bin,但不是因为最高的 targetFramework。NLog
那是因为项目 X直接使用目标框架 461引用了 nuget 包。
您可以将 MSBuild 项目构建输出详细程度更改为正常或更高,工具->选项->项目和解决方案->构建和运行->MSBuild 项目生成输出详细程度。在输出窗口中,您可以注意到复制到项目 x bin 文件夹NLog.dll
下:net45
并将NLog.dll
下面的net35
复制到项目A bin 文件夹下:
要查看有关此问题的更多信息,我建议您可以查看以下线程:
如果在解决方案中使用项目依赖项,MSBuild 不会复制引用(DLL 文件)
希望这可以帮助。
推荐阅读
- python - 网格中的反距离加权插值(Python)
- scala - Scala程序以下面的格式显示输出
- angular - Angular + PrimeNG 自定义确认对话框
- python - Django 静态文件 URL、ROOT、DIR 混淆
- objective-c - 将 excel 文件的大量记录加载到 Core Data(离线存储)
- node.js - 设置 Angular 5 + express 打字稿
- r - 如何从R中的向量中删除“”
- javascript - HTML 画布意外更改颜色
- processing - 我的绘图操作有问题
- image - 可以在图像上绘制“可擦除”箭头和线条吗?