代码之家  ›  专栏  ›  技术社区  ›  Sharada

更新依赖项包时强制更新包版本

  •  3
  • Sharada  · 技术社区  · 8 年前

    我们有一个包含组件列表的本地nuget商店,许多应用程序都使用这些组件。

    PackageB )定义为依赖关系。从nuget图的角度来看,我们可以说 cousin-dependencies

    cousin dependency graph

    假设核心组件 包装B 将接口类型定义为 InterfaceA InterfaceC .

    PackageA ClassA 接口A PackageC ClassC 哪些工具 接口C .

    包装 ,和 包装C 两者都有定义 包装B

    接口A ,和 . 因此,为 包装 ,和 包装B ,我们在应用程序中升级到这些版本。

    我们没有意识到,另一个团队也对 接口C , ;并为 -我们的应用程序中不需要的更新。所以我们没有升级 包装C

    没有编译时错误。只是在测试应用程序时,我们开始遇到以下错误:

    问题的根本原因是当我们更新 包装B 接口C ,它不再与旧版本的 . 包装C

    问题

    为了避免这个问题,我希望能够在核心包 PacakgeB

    i、 e.如果 包装 更新后,它将自动强制更新到 PacakgeA 包装C . 这可能吗?

    我假设有一些规范可以指示nuget或msbuild在应用程序项目级别处理这个问题。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Dmitry Zinoviev    8 年前

    似乎需要在app.config中指定正确的版本

    这是我的项目中的app.config

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="XLabs.Serialization" publicKeyToken="d65109b36e5040e4" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-2.0.5782.15703" newVersion="2.0.5782.15703" />
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
    </configuration>
    

    publicKeyToken 并设置正确的版本号