.NET 解决方案范围的依赖管理

  • Vinayak Palankar
  • 李永伦

2011 年 8 月 18 日

话题:.NET语言 & 开发

NuGet已经发布 1.4 版了,它在 1.3 版的基础上做了改进,比如说,可以在解决方案级别进行包的管理,改进 Update-Package 命令,支持在更新包的时候添加版本范围的约束等等。除了新特性,还有一共 88 个工作项的修正,其中 71 个是错误修正。

最新版本的关键特性是 NuGet 可以在解决方案级别管理包了。在之前的版本,用户不得不打开多个对话框才能把包安装到多个项目,这个过程非常麻烦。有了这个新特性,用户只需打开一个对话框就能向多个项目安装 / 卸载 / 更新包了。

NuGet 还对包的管理控制台 Update-Package 做了改进,使之更易在命令行里把多个项目的所有包都保持在相同的版本。Update-Package 现在也提供多个选项了。

NuGet 组还考虑到更新所有项目里的所有包时可能出现的问题。因为在线列表里的包会更新到最新版本,所以有可能应用程序里的包被升级到一个它不支持的版本。这种情况的处理可以通过选项指定一个版本范围来约束包的更新,确保应用程序里的包不会升级到它不支持的版本。要添加约束,可以手动编辑 packages.config 文件,在里面使用新的 allowedVersions 属性。

另外,为了帮助用户把所有项目和它们的包之间的依赖关系可视化,NuGet 1.4 带来了 Package Visualizer。这个特性只适用于 Visual Studio Premium 或以上。

除了所有的新特性,还有若干工作项已经得到修复。发布说明特别指出三个已经修复的错误:

  • 问题 603:分布于不同仓库的包的依赖关系在指定一个特定的包源就能解析了。
  • 问题 1036: 在后期生成事件里添加“NuGet Pack SomeProject.csproj”不再导致无限循环了。
  • 问题 961:“-source”选项支持相对路径了。

NuGet 1.5 版的工作已经开展了,Phill Haack 在他的公告里特别提到将来版本的基调

  • 简单的包的创建过程: 我们一直都想降低创建和分享代码的门槛,无论是在 Visual Studio 里面还是外面。
  • 适用于企业的 NuGet:这包括 visual Studio 以外的 CI 场景,还有支持验证的在线列表等。
  • 灵活打包: 包含没有引用但需要部署的程序集,反之亦然。
  • 开发者工作流程: 我们关注那些常见但不满足我们自己预期的工作流程,以及我们可以怎样为它们提供支持。这包括我们已经确知的工作流程,比如使用预发行包等。

NuGet是一个 Visual Studio 2010 扩展,它使得在使用.NET Framework 的 Visual Studio 项目里添加、删除和更新库和工具变得更加容易。

查看英文原文:Solution Wide Dependency Management for .NET

.NET语言 & 开发