NuGet包还原无法为ASP.NET网站安装包

4

我有一个解决方案,其中包含一个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更新脚本,每当我运行svn更新时,脚本会运行以恢复软件包,以防其他开发人员运行了删除未加入版本控制的文件的svn清理操作。

在脚本中,我写道

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

这个命令确实会下载缺失的软件包,但它并不安装这些软件包。

有人知道为什么吗?我有遗漏什么吗?


你在下载包后构建了解决方案吗? - Krsna Kishore
@Webruster 是的,我做了。为什么? - Gqqnbig
1个回答

4

对于 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"

点击此处获取更多信息。


@LoveRight 你需要告诉我,你的包文件夹在current还是parent目录中? - Krsna Kishore
2
我在使用NuGet和一个网站时遇到了同样的问题。当我运行上述任何一个“nuget restore”命令时,会提示“packages.config中列出的所有包都已安装”。但这并不是真的。我期望这些包出现在我的解决方案下的“Bin”文件夹中,但该文件夹甚至不存在。现在怎么办?我注意到存在一个“packages”文件夹,并且它确实包含了应有的内容...但我不应该被要求手动将这些文件复制到它们应该属于的Bin文件夹中。如果我通过包管理器安装新的包,它会正确地添加到Bin文件夹中。 - Brent Arias

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接