【问题标题】:Automating .net framework package installation: resolving package dependency on other packages自动化 .net 框架包安装:解决包对其他包的依赖
【发布时间】:2020-03-24 06:15:27
【问题描述】:

长话短说:我正在尝试通过 VS2019 包管理器控制台在解决方案中自动化包 .net 框架 nuget 更新,但我无法获得对其他包的包依赖项(虽然我知道数据可用,因为您可以在 UI 中看到它)。

长话短说:我正在尝试为 .net 框架自动安装 nuget,我选择在 Visual Studio 中使用包管理器控制台(如果有首选选项,我很想听听它)。我要解决的问题是: 问题输入:包A:版本1,依赖包B版本> 1.版本2依赖包B版本> 2.包B:版本 1。版本 2 有一个重大更改。 包C:版本1,依赖包B版本> 1。

我要解决的问题:我有同一个项目引用的这 3 个包。我想将包 A 升级到版本 2。它的依赖项是包 B 版本 > 2。运行包 A 更新到版本 2(通过包管理器 UI 或控制台)会将包 B 更新到版本 2。Boom! - 包 C 将仅在运行时检测到它缺少 B 版本 1 所需的方法!

我要做什么 - 编写安装过程脚本,提示用户输入这些类型的依赖项。

我的问题 - 为此我想获得一个包依赖项,但我找不到使用包管理器控制台的方法。

感谢一些帮助:)

【问题讨论】:

    标签: nuget visual-studio-2019 .net-framework-version package-manager-console


    【解决方案1】:

    为此,我想获得一个包依赖项,但我找不到方法 使用包管理器控制台来完成。

    我们无法使用nuget管理控制台来获取包依赖。除了UI查看nuget包依赖外,我们可以从nuget项目A中的csproj文件中获取依赖。这是相关内容在 A.csproj 文件中:

    <ItemGroup>
            <PackageReference Include="Antlr">
              <Version>3.5.0.2</Version>
            </PackageReference>
            <PackageReference Include="Microsoft.Extensions.Logging">
              <Version>3.0.0</Version>
            </PackageReference>
    </ItemGroup>
    

    另一个是你可以通过 nuspec 文件查看包的依赖关系,该文件由命令nuget spec 创建(如果你使用 nuspec 文件来强制依赖),它是您在打包项目之前使用的文档。

    编写安装过程脚本提示用户输入这些类型 依赖关系。

    注意:鉴于您的情况,不能在同一个项目中使用两个版本的nuget包,这样会导致版本冲突。

    建议

    1. 不知道为什么你在升级B的时候删除了C所要求的方法。基本上我们升级和修改包的时候,都会给它增加新的特性,不删除原有的数据和方法,防止引用其他依赖项目中的包使用相应的方法。 所以你可以在Package B版本二中恢复C包所需的方法。

    2. 如果对包B版本2做了较大改动,恢复方法的步骤有点复杂,我建议你可以专门为C包制作一个包B的副本。 只需将包 B 版本 1 重命名并由包 C 引用以区别于 B 包的第二个版本

    希望对你有帮助。

    【讨论】:

    • 谢谢!使用 nuspec 文件给了我我需要的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多