自动化.net Framework程序包安装:解决程序包对其他程序包的依赖性

时间:2019-11-28 14:46:52

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

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

长话短说:我正在尝试自动为.net框架安装nuget,因此我选择在Visual Studio中使用软件包管理器控制台(如果有首选的选项,我很想听听它)。我想解决的问题是这样的: 问题输入:软件包A :版本1与软件包B版本> 1相关。版本2与软件包 B 版本> 2相关。软件包B < / strong>:版本1。版本2具有重大变化。 程序包C :版本1与程序包B版本> 1相关。

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

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

我的问题-为此,我想获取软件包依赖项,但找不到使用软件包管理器控制台执行此操作的方法。

感谢一些帮助:)

1 个答案:

答案 0 :(得分:0)

  

为此,我想获取软件包依赖关系,但找不到方法   使用包管理器控制台进行操作。

我们不能使用 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>

另一个是您可以通过命令nuget spec创建的 nuspec 文件查看软件包的依赖关系(如果您使用nuspec文件来实施依赖关系) ,这是打包项目之前使用的文档。

  

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

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

建议

  1. 我想知道为什么在升级B时删除了C所需的方法。基本上,当我们升级和修改程序包时,我们将为其提供新功能,而不会删除原始数据和方法,以防止引用其他依赖项使用相应方法从项目中打包程序。 因此,您可以还原软件包B第二版中C软件包所需的方法。

  2. 如果您对软件包B版本2进行了重大更改,并且恢复该方法的步骤有些复杂,建议您专门为C软件包制作一个软件包B的副本。 只需重命名Package B版本1并由Package C引用即可将其与B软件包的第二个版本区分开来

希望它可以为您提供帮助。