我更新了Nuget包管理器到3.1.1.0版本。更新后打开任何项目给我的错误信息:无法找到路径"c:users{username}documentsvisual studio 2015projects{项目名}packagesMicrosoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0toolslibnet45",因为它不存在.....文件init.ps1
我发现$installpath变量给init。Ps1在额外附加的tools子目录名称中与旧的nuget不同,这显然是错误的,并给出错误。
如何影响这个$installpath参数或将nuget降级到3.1.0?
我在新安装的vm中也检查了这种行为,结果相同,VS安装-> ok,更新到nuget 3.1.1 ->破碎。
环境:Windows 10德语,Visual Studio 2015 Community Edition英语
不确定这是否会帮助其他人,但我在VS2015上得到了与Microsoft.CodeDom.Providers.DotNetCompilerPlatform完全相同的错误,为我修复它的是在包管理器控制台上做以下操作:
Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
然后保存,关闭和重新打开VS,没有更多的错误。不需要为我编辑任何ps1文件。
就其价值而言。
我也得到了相同的错误(如下所示):
Copy-Item : Cannot find path 'C:DevelopmentGitHubpd-tech-demobackendpackagesMicrosoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0toolslibnet45' because it does not exist.
At C:DevelopmentGitHubpd-tech-demobackendpackagesMicrosoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0toolsinit.ps1:23 char:1
+ Copy-Item $libDirectory* $binDirectory | Out-Null
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:Development...toolslibnet45:String) [Copy-Item], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.CopyItemCommand
我把init.ps1
的第10行从:
$libDirectory = Join-Path $installPath 'libnet45'
:
$libDirectory = Join-Path $installPath '..libnet45'
修复问题(直到您再次恢复软件包并得到损坏的版本)。
真正的解决方法是让包维护者更新他们的init.ps1
副本。我去跟进一下,看看我们能不能完成这件事。:)
此问题由https://github.com/NuGet/Home/issues/1125跟踪我们还与包所有者合作,看看他是否可以使用init。Ps1用于设置项目。这个过程不遵循NuGet指南,但我们不确定是否有解决方案。
我在包管理器控制台得到了同样的错误,最终找到了这个线程。
正如错误信息所说,包…Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0toolslibnet45目录丢失,因此出现问题。
"lib"目录是直接在"Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0"目录下创建的,因为某些原因?当我将"lib"目录移动到"tools"目录时,重新启动VS,错误信息消失了。
我也有这个错误。将init.ps1
的第10行更改为:这行不通:
$libDirectory = Join-Path $installPath '..libnet45'
这个成功了:
$libDirectory = Join-Path $installPath 'libnet45'