长话短说:我正在尝试通过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所需的方法!
我要做什么-为安装过程编写脚本,提示用户这些类型的依赖项。
我的问题-为此,我想获取软件包依赖项,但找不到使用软件包管理器控制台执行此操作的方法。
感谢一些帮助:)
答案 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软件包的两个版本,这会导致版本冲突。
建议:
我想知道为什么在升级B时删除了C所需的方法。基本上,当我们升级和修改程序包时,我们将为其提供新功能,而不会删除原始数据和方法,以防止引用其他依赖项使用相应方法从项目中打包程序。 因此,您可以还原软件包B第二版中C软件包所需的方法。
如果您对软件包B版本2进行了重大更改,并且恢复该方法的步骤有些复杂,建议您专门为C软件包制作一个软件包B的副本。 只需重命名Package B版本1并由Package C引用即可将其与B软件包的第二个版本区分开来。
希望它可以为您提供帮助。