代码之家  ›  专栏  ›  技术社区  ›  LearningNeverEnds

怎样Net/VisualStudio处理项目依赖关系,每个项目依赖关系都具有相同nuget包的不同nuget目标

  •  0
  • LearningNeverEnds  · 技术社区  · 6 年前

    我在中有一个web服务项目。Net 4.6.1我们称之为项目 十、 ,它有2个项目引用(都是类lib),让我们称它们为project A和B .

    A. 已将此打包。配置:

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

    虽然 X和B 他们的包裹里有这个。配置:

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

    现在,当我在project 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。 很抱歉,我之前给出的配置显示版本不同,但这不是我的意图,因此我进行了编辑以使版本相同。

    所以问题又来了,一个引用了两个或多个项目依赖关系的项目如何在客户端应用程序的构建/执行过程中得到解决,每个项目都使用相同版本但不同的targetFramework。 十、 在这里

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   Community Dan Abramov    4 年前

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

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

    您可以将MSBuild项目生成输出详细信息更改为普通或更高版本,工具->选项->项目和解决方案->构建并运行->MSBuild项目生成输出详细信息。在输出窗口中,您可以注意到 NLog.dll net45 复制到project x bin文件夹:

    enter image description here

    以及 NLog。动态链接库 net35 将bin文件夹复制到项目:

    enter image description here

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

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

    希望这有帮助。