dpr*_*ero 1 visual-studio nuget
我们的开发团队一直很小,直到现在,都在开发一个 Visual Studio 2012 解决方案。我们正在成长,并希望通过为不同的项目团队提供多种解决方案来更好地分离。
但是,在某些情况下,一种解决方案中的代码需要使用另一种解决方案中的代码。我们已经决定使用内部(即私有)NuGet 包将是管理这些依赖项的好方法。
但是,问题是如何处理处于不同 SDLC 阶段(例如开发、QA、暂存、生产等)的同一包的多个版本?
示例:如果我们有这三个解决方案......
CoreStuff
CoolProject1
CoolProject2
Run Code Online (Sandbox Code Playgroud)
如果在 CoolProject1 中工作,并且我们需要利用 CoreStuff 中的代码,我们可以添加 NuGet 包。据推测,这个包将是 CoreStuff 的最新生产(稳定)版本。
但是,如果在 CoolProject2 上工作的开发人员知道 CoreStuff 当前正在开发中的一些更改并希望使用该版本怎么办?
不确定最好的方法是为每个包创建单独的包(似乎需要根据解决方案所处的阶段来回更改包引用)还是以某种方式利用同一包的多个版本(不确定这是否易于管理)与 NuGet)。
有人处理这样的事情吗?
首先要记住的是,NuGet 不会自动更新你的包引用,所以如果你已经将你的解决方案“链接”到最新的 CoreStuff 稳定包(比如 1.2.2),那么如果更新,就不会有任何问题提供了(不稳定的)版本(假设您使用的包没有从包存储库中消失)。显然,如果您升级包参考,那么您将获得不稳定的包。
因此,最简单的解决方案是确保在发布其他包之前通过 NuGet 包管理器将项目“链接”到稳定包。虽然 UI 只允许您获取最新版本,但包管理器控制台可以获取包的任何版本,因此您可以使用它来明确提供版本号,例如:
Install-Package CoreStuff -Version 1.2.2 -Project CoolProject1
Run Code Online (Sandbox Code Playgroud)
如果这不是解决方案,那么还有其他几种方法可以解决此问题:
最重要的是,如果 CoreStuff.v-next 的版本号更高,请确保不会在同一存储库中获取 CoreStuff.1.2.2 和 CoreStuff.v-next,因为在这种情况下 NuGet UI不会让您选择 v1.2.2(但包管理器控制台可以!)。
如果您想从一种包类型切换到另一种包类型,则必须进行手动更新(无论如何在更改到下一个包版本时总是必须这样做),但这并不是一件坏事,因为这会迫使开发人员至少检查包的更新没有破坏任何东西。
| 归档时间: |
|
| 查看次数: |
1608 次 |
| 最近记录: |