获取Visual Studio外部的当前版本的程序包

时间:2014-07-09 19:11:57

标签: nuget nuget-package

我们正在迁移到使用包和NuGet来管理我们对第三方组件的依赖关系。当从Visual Studio中引用包或通过msbuild在构建服务器上构建时,这很有效。 但是,我们希望在构建脚本和安装程序中访问许多文件。以前这些将在源代码控制中使用一个众所周知的路径,现在我们正在使用的包的版本发生变化,因此包的路径以及文件的路径也在变化。

有没有一种简单的方法可以获得给定包的路径?我目前拥有的最佳解决方案是搜索所有packages.config文件并从中提取包版本。

我们需要访问的文件的示例是

NUnit.Runners包中的NUnit控制台可执行文件,用于运行单元测试。 我们使用安装程序重新分发的各种软件包中的许可证文件。

1 个答案:

答案 0 :(得分:1)

使用packages.config文件是一个非常好的解决方案。 NuGet本身使用两种方法:

  1. 从packages.config中读取包信息并使用它来解析包路径。
  2. 枚举packages目录中的所有目录。
  3. 如果您不想自己编写代码,可以使用NuGet.Core执行上述任一操作。可以使用的类是DefaultPackagePathResolver,PackageReferenceFile和LocalPackageRepository或SharedPackageRepository。

    第二种方法的一个问题是,有时NuGet可能偶尔会留下不一定被项目引用的NuGet包。在这种情况下,查看包目录可能会给您不正确的信息。

    我能想到的唯一其他方法可能是阅读项目文件以查找程序集引用。虽然这不适用于解决方案级别的软件包,例如NUnit.Runners。