0

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

长话短说:我正在尝试为 .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 所需的方法!

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

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

感谢一些帮助:)

4

1 回答 1

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>

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

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

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

建议

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

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

希望它可以帮助你。

于 2019-11-29T09:36:12.283 回答