【问题标题】:NuGet does not unpack assemblies from packageNuGet 不会从包中解包程序集
【发布时间】:2016-04-05 05:44:30
【问题描述】:

环境:VS Enterprise 2015 Update 1,包管理器控制台主机版本 3.3.0.167

重现步骤:只需创建一个针对 .Net 4.5.2 的新项目(例如控制台应用程序)(但也尝试使用其他 .net 版本)。

当我安装一个 nuget 包时,该包被下载并且似乎安装没有错误。但是,nuget 不会添加对 dll 的引用。查看包文件夹时,发现没有解包 .dll,尽管 .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 包中

【问题讨论】:

  • 我在我的家用电脑上遇到了完全相同的问题(但在我的工作电脑上没有)并且还没有能够解决它。我尝试过重新安装 VS,并且尝试过以前版本的 Nuget 包管理器。
  • Log4Net 似乎对我有用,但其他包(如 RestSharp 和 Twilio)不会提取 DLL 文件或添加对项目的引用

标签: nuget nuget-package-restore


【解决方案1】:

此页面上概述的解决方法似乎有效 - 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 包了。

【讨论】:

  • 这解决了我几个小时以来一直在努力解决的问题。我曾尝试修复我的 VS 安装,清除 AppData\Local\NuGet 缓存,删除我的整个 TFS 文件夹并再次从服务器中拉取它,系统还原,祭祀古代神灵......这是第一件奏效的事情。我真的欠你的。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-08
      • 1970-01-01
      • 1970-01-01
      • 2015-02-12
      • 1970-01-01
      • 2012-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多