【问题标题】:NuGet package restore doesn't install packages for asp.net web siteNuGet 包还原不会为 asp.net 网站安装包
【发布时间】:2017-09-21 20:51:33
【问题描述】:

我有一个解决方案,这个解决方案包含一个 asp.net 网站(不是应用程序)。

我想启用 C# 6,所以必须安装 nuget 包。我在 Visual Studio 2015 中执行此操作,它创建 C:\solution\website\packages.config。

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.7" targetFramework="net45" />
  <package id="Microsoft.Net.Compilers" version="2.3.2" targetFramework="net45" developmentDependency="true" />
</packages>

我想遵循不将包二进制文件添加到版本控制系统中的最佳实践,所以我只提交了 packages.config。

似乎自动包恢复不适用于网站,所以我计划编写一个 svn update 脚本,每当我运行 svn update 时,该脚本将运行以恢复包,以防其他开发人员运行 svn clean 删除未版本化文件。

在我写的脚本中

nuget.exe restore C:\solution\Website\ -PackagesDirectory C:\solution\packages

该命令会下载丢失的包,但不会安装这些包。

有人知道为什么吗?我错过了什么吗?

【问题讨论】:

  • 你是不是在下载包后自己构建了解决方案?
  • @Webruster 是的,我做到了。为什么?

标签: asp.net nuget


【解决方案1】:

对于 NuGet 2.7+: 下载并安装包文件夹中缺少的任何包。

为解决方案文件恢复包

nuget restore a.sln

恢复解决方案文件的包,使用 MSBuild 版本 14.0 加载解决方案及其项目

nuget restore a.sln -MSBuildVersion 14

为项目的 packages.config 文件恢复包,packages 文件夹位于父级

nuget restore proj1\packages.config -PackagesDirectory ..\packages

在当前文件夹中恢复解决方案的包,指定包源

nuget restore -source "https://www.nuget.org/api/v2;https://www.myget.org/F/nuget"

more info

【讨论】:

  • @LoveRight 你需要打电话给我/,currentparent 中的包文件夹在哪里?
  • 我对 nuget 和网站也有同样的问题。当我运行上述任何nuget restore 命令时,我被告知“packages.config 中列出的所有包都已安装”。但事实并非如此。我希望这些包出现在我的解决方案下方的Bin 文件夹中,但该文件夹甚至不存在。现在怎么办?我注意到一个packages 文件夹确实 存在,并且它确实包含它应该包含的内容......但我不应该被要求手动将这些文件复制到它们所属的 Bin 文件夹中。如果我通过包管理器安装一个新包,它会正确添加到 Bin 文件夹中。
猜你喜欢
  • 2013-07-25
  • 2012-10-27
  • 1970-01-01
  • 1970-01-01
  • 2017-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-12
相关资源
最近更新 更多