2015-07-21 54 views
58

今天我在Windows 7 x64上安裝了VS 2015。主要是測試新的.NET的核心功能和等,並測試我創造了新的C#「控制檯應用程序(包)」的解決方案,得到了這樣的信息:如何修復Visual Studio 2015中的DNX/DNVM?

DNX SDK版本「DNX-CLR-雙贏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 Preview和DNX/DNVM。但我想,在VS 2015安裝之前,我完全刪除了它。這可能會影響當前的VS安裝嗎?

回答

55

這是一個known issue

ASP.NET 5:在Windows 7 SP1上,如果沒有 Powershell 3.0,則無法安裝DNX SDK。

症狀

當你創建一個ASP.NET項目5,您會收到以下錯誤信息:

DNX SDK版本「DNX-CLR-雙贏x86.1.0。 0-beta5'未能安裝。該 解決方案將使用DNX SDK版本 'DNX-CLR-雙贏x86-1.0.0-β5' 的 本次會議

解決方法

要解決此問題,安裝Windows PowerShell 3.0 (或更高)並嘗試再次創建該項目。要查看您當前的PS版本,請運行$PsVersionTable命令(details)。

鏈接:

+2

安裝PowerShell的3.0做的工作對我來說!謝謝! –

+1

我安裝了Powershell 4(Windows 7操作系統),它也能正常工作。想圖我會跳過3. :) –

+0

救命,謝謝你的提示! –

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,該路徑應該引用路徑。更多信息,請上拉要求我在開:

https://github.com/aspnet/dnvm/pull/357

作爲一種變通方法,對我來說,解決辦法是改變「C以下:\ Program Files文件\微軟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中重新創建文件夾的問題。

+0

這應該是公認的答案!只要在Package Manager控制檯中執行'dnvm install'C:\ Program Files(x86)\ Microsoft Web Tools \ DNX \ dnx-clr-win-x86.1.0.0-beta5.nupkg「' –

+0

@SerjSagan您的建議命令不起作用。它給出了同樣的錯誤。 (它實際上是與原始腳本嘗試執行的相同的命令,並且失敗。) – MEMark

+0

謝謝@ ph1ll ..現在我只是好奇它爲什麼認爲beta5是什麼應該安裝,當我重新啓動VS –

14

Install the latest version通過打開控制檯並運行:

dnvm upgrade

如果重新打開VS你應該能夠編譯。

如果這不起作用,請嘗試刪除C:\Users\username\.dnx文件夾。重新打開VS,它將僅使用2個腳本在相同位置重新創建.dnx文件夾:bin \ dnvm.cmd和bin \ dnvm.ps1 注意:這將刪除所有已安裝的運行時間

重新運行dnvm upgrade並在項目屬性下檢查解決方案DNX SDK版本您是否匹配安裝的項目。

7

我可以通過這種方式解決它: 在Developer命令提示符下輸入2015年此命令

dnvm安裝1.0.0 beta5的

肯定這樣將可以解決您的問題。 !

+1

我先試了這個,它爲我工作。 – glaucon

0

今天早些時候我有類似的問題,在閱讀本頁中的評論後我設法解決它的方式非常簡單。

首先,我必須說我已經安裝了PowerShell 3.0(沒有安裝它似乎是大多數人的這個問題的主要來源),但我仍然有這個問題。

所以不是不必編輯和修改涉及順序PowerShell腳本,以使它們與空格等路徑工作的建議,我只是做了簡單如下(更簡單):

1。 - 在Windows資源管理器中轉到「C:\ Program Files文件(x86)\ Microsoft Web Tools \ DNX」並「複製」其所有內容(基本上所有包和子文件夾)012-將所有內容放入沒有空格的路徑中。我用「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

如果任何人有DNX在Visual Studio 2015年沒問題了,一邊看一些有點過時的教程(像我一樣),查看以下link

.NET Core和ASP.NET 1.0核心的RC2發佈來自移動DNX 添加到.NET Core CLI。

在鏈接頁面的表格中,您將看到DNX/DNU命令與其CLI對應項之間的映射。 例如:

dnx run成爲dotnet run