NuGet不会从包中解压程序集

6

环境信息: VS Enterprise 2015 Update 1,Package Manager Console Host 版本 3.3.0.167

复现步骤:创建一个新项目(例如控制台应用程序),目标框架为 .Net 4.5.2(也尝试过其他 .net 版本)。

当我安装 NuGet 包时,该包被下载并似乎已经成功安装。然而,NuGet 没有添加对 dll 的引用。在查看 packages 文件夹时,发现没有未解压的 .dlls,虽然 .nupkg 文件存在且不损坏(我可以使用 NuGet 包浏览器打开它并查看 lib 文件夹的内容)。

有什么想法是什么原因导致这种情况出现的吗?

输出在包管理器控制台中:

PM> install-package log4net -verbose
  Attempting to gather dependencies information for package 'log4net.2.0.5' with respect to project 'ConsoleApplication4', targeting '.NETFramework,Version=v4.5.2'
  Attempting to resolve dependencies for package 'log4net.2.0.5' with DependencyBehavior 'Lowest'
  Resolving actions to install package 'log4net.2.0.5'
  Resolved actions to install package 'log4net.2.0.5'
  For adding package 'log4net.2.0.5' to project 'ConsoleApplication4' that targets 'net452'.
  For adding package 'log4net.2.0.5' to project 'ConsoleApplication4' that targets 'net452'.
  Adding package 'log4net.2.0.5' to folder 'c:\Projects\ConsoleApplication4\packages'
  Added package 'log4net.2.0.5' to folder 'c:\Projects\ConsoleApplication4\packages'
  Added package 'log4net.2.0.5' to 'packages.config'
  Added file 'packages.config' to project 'ConsoleApplication4'.
  Successfully installed 'log4net 2.0.5' to ConsoleApplication4

软件包文件夹的内容:

C:\Projects\ConsoleApplication4\packages\log4net.2.0.5>tree /f .
Folder PATH listing for volume OSDisk
Volume serial number is 8CE4-F2E5
C:\PROJECTS\CONSOLEAPPLICATION4\PACKAGES\LOG4NET.2.0.5
¦   log4net.2.0.5.nupkg
¦
+---lib
    +---net10-full
    ¦       log4net.xml
    ¦
    +---net11-full
    ¦       log4net.xml
    ¦
    +---net20-full
    ¦       log4net.xml
    ¦
    +---net35-client
    ¦       log4net.xml
    ¦
    +---net35-full
    ¦       log4net.xml
    ¦
    +---net40-client
    ¦       log4net.xml
    ¦
    +---net40-full
    ¦       log4net.xml
    ¦
    +---net45-full
            log4net.xml

更新:发生在一些,但不是所有的NuGet包中


1
我在家里的电脑上遇到了完全相同的问题(但在工作电脑上没有),但我还没有解决它。我尝试重新安装了VS,也尝试了早期版本的Nuget包管理器。 - Anthony
1
Log4Net 对我来说似乎可以工作,但是像 RestSharp 和 Twilio 这样的其他包无法提取 DLL 文件或将其添加到项目中的引用。 - Anthony
3个回答

13
这个页面上提到的解决方法似乎有效-https://connect.microsoft.com/VisualStudio/feedback/details/1656768/installing-certain-nuget-packages-fails-to-actually-extract-the-dll-files-to-the-relevant-lib-folder-and-fails-to-add-an-assembly-reference-to-the-csproj-file。以下是Miles Rush在2015年11月25日12:16 PM发布的评论:我刚刚在我的系统上解决了这个问题。进入用户配置文件NuGet缓存(C:\ Users \ .nuget \ packages),并删除其中的所有内容。我认为在还原过程中,我的缓存被清除了所有DLL文件,当我尝试安装一个包时,它使用的是缓存而不是来自NuGet的文件。现在我已经清除了缓存,我现在可以安装NuGet包了。

这解决了我苦苦思索数小时的问题。我尝试过修复我的VS安装,清除AppData\Local\NuGet缓存,删除整个TFS文件夹并再次从服务器拉取,系统还原,向古老的神祈求……这是第一件奏效的事情。我真的感激你。 - Isaac Lyman

1

我刚刚遇到了这个问题(在VS2017企业版中),虽然上面的答案没有解决问题,但是删除解决方案中packages文件夹中的所有内容解决了问题。


1
我们的构建代理出现了类似的行为。原因是.nupkg文件被添加到存储库中!在这种情况下,NuGet认为该软件包已经存在,并且不会解压缩.nupkg文件。 从存储库中删除该文件后,构建通过了。

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