diff --git a/GettingStartedDeb.md b/GettingStartedDeb.md index 3649657ed9..1c0fe83c00 100644 --- a/GettingStartedDeb.md +++ b/GettingStartedDeb.md @@ -97,6 +97,7 @@ sudo ldconfig Now let's get DNVM. To do this run: ``` +sudo apt-get install unzip curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh | DNX_BRANCH=dev sh && source ~/.dnx/dnvm/dnvm.sh ``` diff --git a/dnvm.ps1 b/dnvm.ps1 index 41ef8444e7..5fe89519ce 100644 --- a/dnvm.ps1 +++ b/dnvm.ps1 @@ -67,7 +67,7 @@ function _WriteOut { ### Constants $ProductVersion="1.0.0" -$BuildVersion="beta6-10383" +$BuildVersion="beta6-10393" $Authors="Microsoft Open Technologies, Inc." # If the Version hasn't been replaced... @@ -87,13 +87,14 @@ Set-Variable -Option Constant "RuntimePackageName" "dnx" Set-Variable -Option Constant "DefaultFeed" "https://www.nuget.org/api/v2" Set-Variable -Option Constant "DefaultUnstableFeed" "https://www.myget.org/F/aspnetvnext/api/v2" Set-Variable -Option Constant "CrossGenCommand" "dnx-crossgen" +Set-Variable -Option Constant "OldCrossGenCommand" "k-crossgen" Set-Variable -Option Constant "CommandPrefix" "dnvm-" Set-Variable -Option Constant "DefaultArchitecture" "x86" Set-Variable -Option Constant "DefaultRuntime" "clr" Set-Variable -Option Constant "AliasExtension" ".txt" # These are intentionally using "%" syntax. The environment variables are expanded whenever the value is used. -Set-Variable -Option Constant "OldUserHomes" @("%USERPROFILE%\.kre","%USERPROFILE%\.k") +Set-Variable -Option Constant "OldUserHomes" @("%USERPROFILE%\.kre", "%USERPROFILE%\.k") Set-Variable -Option Constant "DefaultUserHome" "%USERPROFILE%\$DefaultUserDirectoryName" Set-Variable -Option Constant "HomeEnvVar" "DNX_HOME" @@ -678,7 +679,7 @@ function Ngen-Library( [Parameter(Mandatory=$true)] [string]$runtimeBin, - [ValidateSet("x86","x64")] + [ValidateSet("x86", "x64")] [Parameter(Mandatory=$true)] [string]$architecture) { @@ -751,7 +752,11 @@ function dnvm-help { $Script:ExitCodes = $ExitCodes.UnknownCommand return } - $help = Get-Help "dnvm-$Command" -ShowWindow:$false + if($Host.Version.Major -lt 3) { + $help = Get-Help "dnvm-$Command" + } else { + $help = Get-Help "dnvm-$Command" -ShowWindow:$false + } if($PassThru -Or $Host.Version.Major -lt 3) { $help } else { @@ -818,7 +823,7 @@ function dnvm-help { if($help.description) { _WriteOut _WriteOut -ForegroundColor $ColorScheme.Help_Header "remarks:" - $help.description.Text.Split(@("`r","`n"), "RemoveEmptyEntries") | + $help.description.Text.Split(@("`r", "`n"), "RemoveEmptyEntries") | ForEach-Object { _WriteOut " $_" } } @@ -833,7 +838,11 @@ function dnvm-help { _WriteOut -ForegroundColor $ColorScheme.Help_Header "commands: " Get-Command "$CommandPrefix*" | ForEach-Object { - $h = Get-Help $_.Name -ShowWindow:$false + if($Host.Version.MajorVersion -lt 3) { + $h = Get-Help $_.Name + } else { + $h = Get-Help $_.Name -ShowWindow:$false + } $name = $_.Name.Substring($CommandPrefix.Length) if($DeprecatedCommands -notcontains $name) { _WriteOut -NoNewLine " " @@ -896,31 +905,26 @@ function dnvm-list { function dnvm-alias { param( [Alias("d")] - [Parameter(ParameterSetName="Delete",Mandatory=$true)] [switch]$Delete, - [Parameter(ParameterSetName="Read",Mandatory=$false,Position=0)] - [Parameter(ParameterSetName="Write",Mandatory=$true,Position=0)] - [Parameter(ParameterSetName="Delete",Mandatory=$true,Position=0)] [string]$Name, - - [Parameter(ParameterSetName="Write",Mandatory=$true,Position=1)] + [string]$Version, [Alias("arch")] - [ValidateSet("", "x86","x64")] - [Parameter(ParameterSetName="Write", Mandatory=$false)] + [ValidateSet("", "x86", "x64", "arm")] [string]$Architecture = "", [Alias("r")] - [ValidateSet("", "clr","coreclr")] - [Parameter(ParameterSetName="Write")] + [ValidateSet("", "clr", "coreclr")] [string]$Runtime = "") - switch($PSCmdlet.ParameterSetName) { - "Read" { Read-Alias $Name } - "Write" { Write-Alias $Name $Version -Architecture $Architecture -Runtime $Runtime } - "Delete" { Delete-Alias $Name } + if($Version) { + Write-Alias $Name $Version -Architecture $Architecture -Runtime $Runtime + } elseif ($Delete) { + Delete-Alias $Name + } else { + Read-Alias $Name } } @@ -964,12 +968,12 @@ function dnvm-upgrade { [string]$Alias = "default", [Alias("arch")] - [ValidateSet("", "x86","x64")] + [ValidateSet("", "x86", "x64", "arm")] [Parameter(Mandatory=$false)] [string]$Architecture = "", [Alias("r")] - [ValidateSet("", "clr","coreclr")] + [ValidateSet("", "clr", "coreclr")] [Parameter(Mandatory=$false)] [string]$Runtime = "", @@ -1026,12 +1030,12 @@ function dnvm-install { [string]$VersionNuPkgOrAlias, [Alias("arch")] - [ValidateSet("", "x86","x64")] + [ValidateSet("", "x86", "x64", "arm")] [Parameter(Mandatory=$false)] [string]$Architecture = "", [Alias("r")] - [ValidateSet("", "clr","coreclr")] + [ValidateSet("", "clr", "coreclr")] [Parameter(Mandatory=$false)] [string]$Runtime = "", @@ -1124,7 +1128,8 @@ function dnvm-install { else { $Architecture = GetArch $Architecture $Runtime = GetRuntime $Runtime - $UnpackFolder = Join-Path $RuntimesDir "temp" + $TempFolder = Join-Path $RuntimesDir "temp" + $UnpackFolder = Join-Path $TempFolder $runtimeFullName $DownloadFile = Join-Path $UnpackFolder "$runtimeFullName.nupkg" if(Test-Path $UnpackFolder) { @@ -1155,7 +1160,19 @@ function dnvm-install { else { _WriteOut "Installing to $RuntimeFolder" _WriteDebug "Moving package contents to $RuntimeFolder" - Move-Item $UnpackFolder $RuntimeFolder + try { + Move-Item $UnpackFolder $RuntimeFolder + } catch { + if(Test-Path $RuntimeFolder) { + #Attempt to cleanup the runtime folder if it is there after a fail. + Remove-Item $RuntimeFolder -Recurse -Force + throw + } + } + #If there is nothing left in the temp folder remove it. There could be other installs happening at the same time as this. + if(-Not(Test-Path $(Join-Path $TempFolder "*"))) { + Remove-Item $TempFolder -Recurse + } } dnvm-use $PackageVersion -Architecture:$Architecture -Runtime:$Runtime -Persistent:$Persistent @@ -1179,11 +1196,18 @@ function dnvm-install { else { _WriteOut "Compiling native images for $runtimeFullName to improve startup performance..." Write-Progress -Activity "Installing runtime" -Status "Generating runtime native images" -Id 1 + + if(Get-Command $CrossGenCommand -ErrorAction SilentlyContinue) { + $crossGenCommand = $CrossGenCommand + } else { + $crossGenCommand = $OldCrossGenCommand + } + if ($DebugPreference -eq 'SilentlyContinue') { - Start-Process $CrossGenCommand -Wait -WindowStyle Hidden + Start-Process $crossGenCommand -Wait -WindowStyle Hidden } else { - Start-Process $CrossGenCommand -Wait -NoNewWindow + Start-Process $crossGenCommand -Wait -NoNewWindow } _WriteOut "Finished native image compilation." } @@ -1220,12 +1244,12 @@ function dnvm-use { [string]$VersionOrAlias, [Alias("arch")] - [ValidateSet("", "x86","x64")] + [ValidateSet("", "x86", "x64", "arm")] [Parameter(Mandatory=$false)] [string]$Architecture = "", [Alias("r")] - [ValidateSet("", "clr","coreclr")] + [ValidateSet("", "clr", "coreclr")] [Parameter(Mandatory=$false)] [string]$Runtime = "", @@ -1431,11 +1455,7 @@ if(!$cmd) { try { if(Get-Command -Name "$CommandPrefix$cmd" -ErrorAction SilentlyContinue) { _WriteDebug "& dnvm-$cmd $cmdargs" - if($host.Version.Major -lt 3) { - Invoke-Command ([ScriptBlock]::Create("dnvm-$cmd $cmdargs")) - } else { - & "dnvm-$cmd" @cmdargs - } + Invoke-Command ([ScriptBlock]::Create("dnvm-$cmd $cmdargs")) } else { _WriteOut "Unknown command: '$cmd'" diff --git a/dnvm.sh b/dnvm.sh index 3d06adeeef..6d7f477197 100644 --- a/dnvm.sh +++ b/dnvm.sh @@ -2,7 +2,7 @@ # Source this file from your .bash-profile or script to use # "Constants" -_DNVM_BUILDNUMBER="beta6-10383" +_DNVM_BUILDNUMBER="beta6-10393" _DNVM_AUTHORS="Microsoft Open Technologies, Inc." _DNVM_RUNTIME_PACKAGE_NAME="dnx" _DNVM_RUNTIME_FRIENDLY_NAME=".NET Execution Environment" @@ -208,7 +208,7 @@ __dnvm_unpack() { #Set shell commands as executable find "$runtimeFolder/bin/" -type f \ - -exec sh -c "head -c 11 {} | grep '/bin/bash' > /dev/null" \; -print | xargs chmod 775 + -exec sh -c "head -c 20 {} | grep '/usr/bin/env bash\|/bin/bash' > /dev/null" \; -print | xargs chmod 775 #Set dnx to be executable chmod 775 "$runtimeFolder/bin/dnx" @@ -413,7 +413,7 @@ dnvm() fi if [[ $arch == "x86" && $runtime == "coreclr" ]]; then - printf "%b\n" "${Red}Core CLR doesn't currently have a 32 bit build. You must use x64." + printf "%b\n" "${Red}Core CLR doesn't currently have a 32 bit build. You must use x64.${RCol}" return 1 fi diff --git a/dnvminstall.sh b/dnvminstall.sh index c4190f5d50..c6ede6c79d 100644 --- a/dnvminstall.sh +++ b/dnvminstall.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash _dnvmsetup_has() { type "$1" > /dev/null 2>&1 diff --git a/samples/latest/HelloMvc/Startup.cs b/samples/latest/HelloMvc/Startup.cs index f801938ec3..d40f7a5e45 100644 --- a/samples/latest/HelloMvc/Startup.cs +++ b/samples/latest/HelloMvc/Startup.cs @@ -14,10 +14,7 @@ namespace HelloMvc { app.UseErrorPage(); - app.UseMvc(routes => - { - routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}"); - }); + app.UseMvcWithDefaultRoute(); app.UseWelcomePage(); }