如何在Visual Studio 2015中修复DNX/DNVM?

58
今天我在 Windows 7 x64 上安装了 VS 2015,主要是为了测试新的 .Net Core 功能等。为了测试,我创建了一个新的 C# “控制台应用程序(Package)”解决方案,并收到以下消息:

DNX SDK 版本“dnx-clr-win-x86.1.0.0-beta5”安装失败。该解决方案将在此会话中使用 DNX SDK 版本“dnx-clr-win-x86.1.0.0-beta5”。

我无法编译和调试项目。当我打开项目属性中的调试选项卡时,VS 也会崩溃。 打开解决方案时,DNVM 的输出如下:
Invoke-Command : The term 'x86' is not recognized as the name of a cmdlet, func
tion, script file, or operable program. Check the spelling of the name, or if a
 path was included, verify that the path is correct and try again.
C:\Program Files\Microsoft DNX\Dnvm\dnvm.ps1:1451 ????:27
+             Invoke-Command <<<<  ([ScriptBlock]::Create("dnvm-$cmd $cmdargs")
)
    + CategoryInfo          : ObjectNotFound: (x86:String) [Invoke-Command], C 
   ommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException,Microsoft.PowerShell.Co 
   mmands.InvokeCommandCommand

Invoke-Command : The term 'x86' is not recognized as the name of a cmdlet, func
tion, script file, or operable program. Check the spelling of the name, or if a
 path was included, verify that the path is correct and try again.
C:\Program Files\Microsoft DNX\Dnvm\dnvm.ps1:1451 ????:27
+             Invoke-Command <<<<  ([ScriptBlock]::Create("dnvm-$cmd $cmdargs")
)
    + CategoryInfo          : ObjectNotFound: (x86:String) [Invoke-Command], C 
   ommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException,Microsoft.PowerShell.Co 
   mmands.InvokeCommandCommand

Invoke-Command : The term 'x86' is not recognized as the name of a cmdlet, func
tion, script file, or operable program. Check the spelling of the name, or if a
 path was included, verify that the path is correct and try again.
C:\Program Files\Microsoft DNX\Dnvm\dnvm.ps1:1451 ????:27
+             Invoke-Command <<<<  ([ScriptBlock]::Create("dnvm-$cmd $cmdargs")
)
    + CategoryInfo          : ObjectNotFound: (x86:String) [Invoke-Command], C 
   ommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException,Microsoft.PowerShell.Co 
   mmands.InvokeCommandCommand

有任何想法如何修复它吗?

另外,我之前已经单独安装了VS 2015预览版和DNX / DNVM。但我认为在安装VS 2015之前已经彻底删除了它。这会对当前的VS安装产生影响吗?

8个回答

55

这是一个已知问题

ASP.NET 5:在Windows 7 SP1上,如果没有PowerShell 3.0,则无法安装DNX SDK。

症状

创建ASP.NET 5项目时,会收到以下错误消息:

DNX SDK版本“dnx-clr-win-x86.1.0.0-beta5”安装失败。本次会话将使用DNX SDK版本“dnx-clr-win-x86-1.0.0-beta5”

解决方法

为了解决此问题,请安装Windows PowerShell 3.0(或更高版本),然后尝试再次创建项目。要查看当前的PS版本,请运行$PsVersionTable命令(详细信息)。

链接:


2
安装 Powershell 3.0 对我来说解决了问题!谢谢! - Joseph Woodward
1
我安装了PowerShell 4(Windows 7操作系统),它也能正常工作。我想跳过3。 :) - Geoff Gunter
我收到了这个错误信息。我已经安装了PowerShell有一段时间了,但是我在上周二刚刚安装了VS2015来开始学习MVC。这是否意味着我必须放弃我过去几天在MVC上所做的所有工作,然后重新创建我的项目?又有什么保证这不会再次发生呢? - user153923
也许是我安装的PowerShell版本有问题,但除了这一步骤外,我还必须按照ph1ll的步骤(即编辑dnvm.ps1文件)才能使一切正常运行。 - monty
除了这个答案和下面ph1ll的答案之外,我还必须确保在尝试构建我的项目时VS以管理员模式运行。然后它就可以工作了! - kyoob
我已经安装了PowerShell 4.0,但仍然遇到了这个错误。但是@AlejandroC提供的“dnvm upgrade”解决方案帮了我大忙! - Mobigital

14

打开控制台并运行以下命令来安装最新版本:

dnvm upgrade

重新打开VS,你就可以编译了。

如果这不起作用,请尝试删除C:\Users\username\.dnx文件夹。然后重新打开VS,它会在相同位置重新创建.dnx文件夹,其中只有2个脚本:bin\dnvm.cmd和bin\dnvm.ps1 注意:这将删除所有已安装的运行时

重新运行dnvm upgrade,检查项目属性下的解决方案DNX SDK版本是否与已安装的版本匹配。


10
我也遇到了这个问题。似乎与dnvm.ps1脚本未引用安装路径有关。Visual Studio中的命令dnvm install "C:\Program Files (x86)\Microsoft Web Tools\DNX\dnx-clr-win-x86.1.0.0-beta5.nupkg"被调用为dnvm-install C:\Program Files (x86)\Microsoft Web Tools\DNX\dnx-clr-win-x86.1.0.0-beta5.nupkg,这样会失败,因为路径应该加上引号。更多信息可在我打开的pull请求上找到。
解决方法是修改“C:\ Program Files \ Microsoft DNX \ Dnvm \ dnvm.ps1”中的以下内容。该行循环处理参数,确保任何包含空格或括号的参数都被引用。
替换以下行:
$cmdargs = @($args[1..($args.Length-1)])

随着:

# Combine arguments, ensuring any containing whitespace or parenthesis are correctly quoted 
ForEach ($arg In $args[1..($args.Length-1)]) {
    if ($arg -match "[\s\(\)]") {
        $cmdargs += """$arg"""
    } else {
        $cmdargs += $arg
    }
    $cmdargs += " "
}

如果您在进行此更改后仍然遇到问题,请删除C:\Users\username\.dnx文件夹,然后重新打开Visual Studio以便让Visual Studio重新创建该文件夹。


这应该是被接受的答案!只需在“包管理器控制台”中执行 dnvm install "C:\Program Files (x86)\Microsoft Web Tools\DNX\dnx-clr-win-x86.1.0.0-beta5.nupkg" 即可。 - Serj Sagan
@SerjSagan,你建议的命令不起作用。它会给出相同的错误。(实际上,这个命令与原始脚本尝试执行的命令相同,并且失败了。) - MEMark
谢谢 @ph1ll.. 现在我只是好奇为什么重新启动 VS 后它认为应该安装 beta5 版本 - Shane Courtrille

7
我可以通过以下方式来修复它: 在2015年的开发人员命令提示符中输入此命令

dnvm install 1.0.0-beta5

肯定这种方法可以解决你的问题!

0

今天早些时候我遇到了类似的问题,通过阅读本页面中的评论后,我解决了这个问题。

首先,我必须说我已经安装了PowerShell 3.0(对于大多数人来说,没有安装它似乎是这个问题的主要原因),但我仍然遇到了同样的问题。

因此,我不需要像建议的那样编辑和修改涉及路径中带有空格等的powershell脚本,而只需简单地执行以下操作(更简单):

1.- 在Windows资源管理器中转到“C:\ Program Files(x86)\ Microsoft Web Tools \ DNX”,并“复制”其所有内容(基本上是所有软件包及其子文件夹)

2.- 将所有内容“粘贴”到没有空格的路径中。 我使用了“C:\ Temp \”

3.- 在命令行上运行以下命令(请注意,现在路径位置中没有空格)

dnvm update-self
dnvm install "C:\Temp\dnx-clr-win-x64.1.0.0-beta5.nupkg"
dnvm install "C:\Temp\dnx-coreclr-win-x64.1.0.0-beta5.nupkg"
dnvm list

4.- 现在打开您的 Visual Studio 解决方案,然后在您的项目 -> 属性 -> 应用程序选项卡中,您现在可以指定您想要使用的 DNX SDK 版本,其中包括您现在可用的版本

5.- 重新构建您的解决方案,现在应该一切正常了

太好了!


0

尝试

dnvm update-self
dnvm install -u  -r clr  -OS win  -a x86  beta5 -ngen 

重要的是 -u 参数(不稳定)和 beta5 版本字符串。


0

0

如果有人在观看一些过时的教程(就像我一样),在使用Visual Studio 2015时出现了dnx不可用的问题,请查看下面的link

.NET Core和ASP.NET Core 1.0的RC2版本已经从DNX转移到.NET Core CLI。

在链接页面上的表格中,您将看到DNX / DNU命令及其CLI对应命令之间的映射关系。例如:

dnx run变为dotnet run


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