gpt4 book ai didi

.net - Nuget 依赖版本

转载 作者:行者123 更新时间:2023-12-01 13:42:09 24 4
gpt4 key购买 nike

最近在我们公司,我们决定将我们公司开发的库文件上传到私有(private) NuGet 服务器。在版本号开始增长之前,一切似乎都很好。使用我们的 NuGet 库的解决方案停止正确构建,我们认为版本控制是问题所在。

这是场景:

enter image description here

这是一个包含包引用的图表(如您所见,它们之间有引用)

1) 在解决方案中小号 您从私有(private) NuGet 服务器安装示例库 A、B、E 所有版本号为 1.0.0.0 .

2) 您在 中进行了更改一个 并将其版本号增加到 1.0.0.1 .

3) 你更新库一个 来自解决方案中的 NuGet 包管理器 小号 到版本 1.0.0.1

4) 你最终得到两个版本的 一个 一个用于 小号 (1.0.0.1) 和一个 乙、乙 (1.0.0.0)

5)在解决方案小号 , Visual Studio (Tested on 2012, 2015 Professional) 显示找不到引用,要重新安装包。当你这样做时,它会构建,但是当你提交下一个人的构建失败时......

一些(丑陋的?)解决方法不是将包引用为 NuGet,而是将引用嵌入到 dll 中。或者进入所有引用 的包一个 ,更新它,更改它的版本,然后更新 小号 , 女巫听起来工作量很大..

它不应该只是工作,因为当您引用 NuGet 包时,您没有指定特定版本但 >= 版本?

还是我们都做错了?

谢谢!

最佳答案

在您的情况下,当依赖包 A 升级到版本 1.0.0.1 时,有两种方法可以解决问题。

  • 在应用程序级别重定向程序集版本。
    您可以手动编辑应用程序配置文件,以将应用程序使用的程序集的旧版本重定向到新版本。然后应用配置文件中的示例配置代码如下所示。关于Redirecting Assembly Versions的详细介绍,请引用:https://msdn.microsoft.com/en-us/library/7wd6ex19(v=vs.110).aspx#Anchor_2

  •     <dependentAssembly>
    <assemblyIdentity name="someAssembly"
    publicKeyToken="32ab4ba45e0a69a1"
    culture="en-us" />
    <bindingRedirect oldVersion="7.0.0.0" newVersion="8.0.0.0" />
    </dependentAssembly>
  • 打包 NuGet 包时分配依赖项范围。
    由于您的包 B 依赖于包 A 并且包 A 的版本已更改,因此您可以使用以下代码在包 B 的 .nuspec 文件中为包 A 分配依赖关系范围。当您的解决方案 S 上安装了更高版本的 Package A 时,Package B 将使用已安装的更高版本。在您的情况下,当安装包 A 1.0.0.1 时,包 B 将依赖于包 A 1.0.0.1。

  • <dependencies>
    <dependency id="Package A" version="[1.0.0.0, higher version)" />
    </dependencies>

    关于.net - Nuget 依赖版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39142236/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com