【问题标题】:Nuget package manager update 3.1.1.0 brokenNuget 包管理器更新 3.1.1.0 损坏
【发布时间】:2015-08-02 09:10:49
【问题描述】:

我将 Nuget 包管理器更新到版本 3.1.1.0。更新后打开任何项目都会给我错误消息: 复制项目:找不到路径 'c:\users{username}\documents\visual studio 2015\projects{project name}\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\tools\lib\net45' 因为它不存在 ..... 在文件 init.ps1

我发现赋予 init.ps1 的 $installpath 变量在另外附加的 \tools 子目录名称中与旧的 nuget 不同,这显然是错误的并给出了错误。

如何影响此 $installpath 参数或将 nuget 降级到 3.1.0?

我也在新安装的 vm 中仔细检查了此行为,结果相同,VS 已安装 -> 好的,更新到 nuget 3.1.1 -> 损坏。

环境:Windows 10 德语,Visual Studio 2015 社区版英语

【问题讨论】:

标签: visual-studio nuget


【解决方案1】:

不确定这是否对其他人有帮助,但我在 VS2015 上使用 Microsoft.CodeDom.Providers.DotNetCompilerPlatform 时遇到了完全相同的错误,而为我解决的问题是在包管理器控制台中执行以下操作:

Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

然后在保存,关闭并重新打开VS之后,不再出现错误。无需为我编辑任何 ps1 文件。

FWIW。

【讨论】:

  • 我错过了它所说的包文件夹。这发生在强制关闭并恢复文件之后,所以@Tod Thomson 的解决方案对我不起作用,但确实如此。
  • DotNetCompilerPlatform.1.0.2 为我修复了它,在 VS 2015 中引用了 DotNetCompilerPlatform.1.0.0。我收到的错误:Join-Path:无法将 'System.Object[]' 转换为类型 '参数 'ChildPath' 需要 System.String'。不支持指定的方法。在 .... init.ps1:13 char:57,还有 Join-Path : 无法将参数绑定到参数“Path”,因为它在初始化时为 null ...。 ps1:14 字符:44
  • 多年后,我在 VS 2019 中也遇到了同样的问题。这为我解决了问题。
【解决方案2】:

我也遇到了同样的错误(如下):

Copy-Item : Cannot find path 'C:\Development\GitHub\pd-tech-demo\backend\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\tools\lib\net45' because it does not exist.
At C:\Development\GitHub\pd-tech-demo\backend\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\tools\init.ps1:23 char:1
+ Copy-Item $libDirectory\* $binDirectory | Out-Null
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : ObjectNotFound: (C:\Development\...tools\lib\net45:String) [Copy-Item], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.CopyItemCommand

我将 init.ps1 的第 10 行更改为:

$libDirectory = Join-Path $installPath 'lib\net45'

到:

$libDirectory = Join-Path $installPath '..\lib\net45'

解决了问题(仅在您再次恢复软件包并获得损坏的版本之前)。

真正的解决办法是包维护者更新他们的init.ps1 副本。我会跟进,看看我们能不能完成这项工作。 :)

【讨论】:

  • 这是 NuGet 中的一个错误,请参阅下面的我的 cmets
【解决方案3】:

https://github.com/NuGet/Home/issues/1125 跟踪此问题 我们还在与包所有者合作,看看他是否可以使用 init.ps1 来设置项目。此过程不遵循 NuGet 指南,但我们不确定是否有解决方法。

【讨论】:

  • 修复正在进行中,它将成为 3.1.2 版本的一部分
【解决方案4】:

我在包管理器控制台中遇到了同样的错误,最终找到了这个帖子。

正如错误消息所述,包 ...\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\tools\lib\net45 目录丢失,因此出现问题。

出于某种原因,“lib”目录直接在“Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0”目录下创建?当我将“lib”目录移动到“tools”目录时,重启VS,错误信息消失了。

【讨论】:

    【解决方案5】:

    我也有这个错误。 将init.ps1 的第 10 行更改为: 这不起作用:

    $libDirectory = Join-Path $installPath '..\lib\net45'
    

    这确实有效:

    $libDirectory = Join-Path $installPath '\lib\net45'
    

    【讨论】:

      猜你喜欢
      • 2018-01-02
      • 2015-04-23
      • 2013-11-02
      • 1970-01-01
      • 2022-11-15
      • 1970-01-01
      • 1970-01-01
      • 2015-04-16
      • 2017-08-11
      相关资源
      最近更新 更多