如何使用内置的NuGet的PackageManagement提供程序还原nuget?

时间:2018-10-22 03:19:56

标签: nuget package-management

(我有一种强烈的感觉,在这里我不了解某些基本知识,所以请忍受...)

我在网络共享上有一个本地NuGet软件包提要,其中有一些软件包,并且我有一个用户random.randint(low=10, high=30, size=6)文件,该文件指向该网络共享作为软件包源。在项目文件夹(git存储库)中,我有一个random文件,该文件按名称引用了此本地feed中的程序包。我想将此包还原到该项目文件夹中。

我认为这很困难,因为这不是Visual Studio项目。我在常规的文本编辑器中使用它,并具有一些PowerShell构建脚本。

我知道我可以下载nuget.exe二进制文件并将其放在我的路径或工作目录中,然后从命令行执行NuGet.Config,但是我想在这里解决的问题是一个哲学上的纯洁。即:

  • 我的存储库应该是可移植的,并且具有最少的先决条件依赖性
  • 我的存储库不得包含无关的无关二进制文件或代码

因此,我无法将packages.config二进制文件提交到存储库以使其可移植;相反,我想依靠“现代Windows 10环境”的先决条件依赖性,它为我提供了PowerShell和内置的PackageManagement工具,这些工具可以引导包括PowerShellGet和NuGet在内的各种提供程序。

感觉正确正确的路径,因为PackageManagement被设计为对任何软件包管理解决方案的内置,统一接口。 (但是我是否误解了这一点,它实际上仅是为了将软件安装到您的操作系统或用户帐户?我找不到任何明确描述此内容的东西。)

因此,是否有可能利用内置的PackageManagement从nuget restore文件中进行nuget.exe(或等效操作),而超出Visual Studio的范围?或者,如果不是直接解决方案,是否存在一个显而易见/简单的解决方案,可以将其从PackageManagement引导至可以完成这种还原的工作?

1 个答案:

答案 0 :(得分:1)

您可以从NuGet团队的NuGet.Client repo中获得启发,他们拥有一个configure.ps1 powershell脚本,该脚本为开发/构建设置了存储库,并调用了两个自定义cmdlet Install-NuGet(从固定的HTTP源下载nuget.exe),然后Restore-SolutionPackages(恢复packages.config文件),两者都在common.ps1文件中定义。

因此,您可能拥有一个Powershell脚本,该脚本下载nuget.exe并运行还原。这意味着在克隆存储库后(偶尔在拉出后),开发人员需要采取额外的手动操作,然后才能使用Visual Studio构建解决方案。但是,如果这是NuGet团队自己做的方式,那可能不太可怕,对吧?至少您可以指出先例。

如果让开发人员手动运行脚本来解决此问题,则可以调查自定义MSBuild目标(可以从相关的csproj文件中包含它,也可以简单地创建Directory.Build.targets file)并使MSBuild在需要时执行此操作您构建解决方案。但是,您可能需要花费时间来确保为自定义目标正确设置了incremental builds,否则会减慢构建时间。