NuGet不会从包中解压缩程序集

时间:2015-12-31 08:10:18

标签: nuget nuget-package-restore

环境:VS Enterprise 2015 Update 1,程序包管理器控制台主机版本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包

3 个答案:

答案 0 :(得分:12)

此页面上列出的解决方法似乎有效 - 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

     

刚刚修复了我的>系统。进入用户配置文件NuGet缓存   (C:\ Users \ .nuget \ packages),并删除了所有内容   那里。我认为在恢复过程中我的缓存已全部清除   DLL文件,当我尝试安装包时,它正在使用   缓存而不是NuGet的文件。现在我已经清除了   缓存,我现在可以安装NuGet包。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

在我们的构建代理上有类似的行为。原因:.nupkg文件已添加到资源库! 在这种情况下,nuget假定该软件包已经存在,并且不会解压缩.nupkg文件。

从存储库中删除文件,并通过构建。