From 7a19b8caedbdb348dbc90acd88d1eac2a3fa7572 Mon Sep 17 00:00:00 2001
From: William Li
Date: Tue, 9 May 2017 22:51:17 +0000
Subject: [PATCH 01/32] Change telemetry notice for deb
---
packaging/deb/postinst | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/packaging/deb/postinst b/packaging/deb/postinst
index aac8be85c..e2e4bd4be 100755
--- a/packaging/deb/postinst
+++ b/packaging/deb/postinst
@@ -7,9 +7,12 @@ echo "Welcome to .NET Core!
---------------------
Learn more about .NET Core @ https://aka.ms/dotnet-docs. Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
-Telemetry
+NET Core Tools Telemetry
--------------
-The .NET Core tools collect usage data in order to improve your experience. The data is anonymous and does not include command-line arguments. The data is collected by Microsoft and shared with the community.
-You can opt out of telemetry by setting a DOTNET_CLI_TELEMETRY_OPTOUT environment variable to 1 using your favorite shell.
-You can read more about .NET Core tools telemetry @ https://aka.ms/dotnet-cli-telemetry."
+The .NET Core Tools include a telemetry feature that collects usage information. It is important that the .NET Team understands how the tools are being used so that we can improve them.
+
+The data collected is anonymous and will be published in an aggregated form for use by both Microsoft and community engineers under the Creative Commons Attribution License.
+
+The .NET Core Tools telemetry feature is enabled by default. You can opt-out of the telemetry feature by setting an environment variable DOTNET_CLI_TELEMETRY_OPTOUT (for example, 'export' on macOS/Linux, 'set' on Windows) to true (for example, 'true', 1). You can read more about .NET Core tools telemetry at https://aka.ms/dotnet-cli-telemetry."
+
su - $SUDO_USER -c "dotnet new > /dev/null 2>&1 || true"
From af3c2378040d700139c4ac3e12c93e461de21fbe Mon Sep 17 00:00:00 2001
From: William Li
Date: Sun, 7 May 2017 13:30:03 -0700
Subject: [PATCH 02/32] Unify telemetry text for windows
And move installer telemetry message to the end and
---
packaging/windows/clisdk/bundle.thm | 5 ++---
packaging/windows/clisdk/bundle.wxl | 16 ++++++++++------
2 files changed, 12 insertions(+), 9 deletions(-)
diff --git a/packaging/windows/clisdk/bundle.thm b/packaging/windows/clisdk/bundle.thm
index f7f30c2aa..71b7ef054 100644
--- a/packaging/windows/clisdk/bundle.thm
+++ b/packaging/windows/clisdk/bundle.thm
@@ -1,6 +1,6 @@
- #(loc.Caption)
+ #(loc.Caption)
Segoe UI
Segoe UI
Segoe UI
@@ -52,7 +52,6 @@
#(loc.ProgressHeader)#(loc.ProgressLabel)#(loc.OverallProgressPackageText)
- #(loc.FirstTimeWelcomeMessage)
@@ -70,7 +69,7 @@
#(loc.SuccessHeader)
- #(loc.SuccessInstallHeader)
+ #(loc.FirstTimeWelcomeMessage)#(loc.SuccessRepairHeader)#(loc.SuccessUninstallHeader)
diff --git a/packaging/windows/clisdk/bundle.wxl b/packaging/windows/clisdk/bundle.wxl
index 0140bab32..326a089ae 100644
--- a/packaging/windows/clisdk/bundle.wxl
+++ b/packaging/windows/clisdk/bundle.wxl
@@ -31,7 +31,6 @@ Ready? Set? Let's go!
&CloseRepair Successfully CompletedUninstall Successfully Completed
- Installation Successfully CompletedSetup Successful&LaunchYou must restart your computer before you can use the software.
@@ -51,11 +50,16 @@ Ready? Set? Let's go!
&Do not close applications. A reboot will be required.&OK&Cancel
- Welcome to .NET Core!
+ Installation Successfully Completed Welcome to .NET Core!
+
Learn more about .NET Core at https://aka.ms/dotnet-docs. Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
-Telemetry:
-The .NET Core tools collect usage data in order to improve your experience. The data is anonymous and does not include command-line arguments. The data is collected by Microsoft and shared with the community. You can opt out of telemetry by setting a DOTNET_CLI_TELEMETRY_OPTOUT environment variable to 1 using your favorite shell. You can read more about .NET Core tools telemetry at https://aka.ms/dotnet-cli-telemetry.
-Configuration:
-A command is running in the end of install process to initially populate your local package cache, to improve restore speed and enable offline access. This command will take up to a minute to complete and will only happen once.
+
+NET Core Tools Telemetry
+
+The .NET Core Tools include a telemetry feature that collects usage information. It is important that the .NET Team understands how the tools are being used so that we can improve them.
+
+The data collected is anonymous and will be published in an aggregated form for use by both Microsoft and community engineers under the Creative Commons Attribution License.
+
+The .NET Core Tools telemetry feature is enabled by default. You can opt-out of the telemetry feature by setting an environment variable DOTNET_CLI_TELEMETRY_OPTOUT (for example, 'export' on macOS/Linux, 'set' on Windows) to true (for example, 'true', 1). You can read more about .NET Core tools telemetry at https://aka.ms/dotnet-cli-telemetry.
From a94644d95749a3c9e9c83e6cc7dc1a27b4d85835 Mon Sep 17 00:00:00 2001
From: William Li
Date: Mon, 8 May 2017 18:55:42 -0700
Subject: [PATCH 03/32] Unify mac telemetry note
---
.../cs.lproj/firstTimeWelcomeMessage.html | 18 +++++++++---------
.../de.lproj/firstTimeWelcomeMessage.html | 18 +++++++++---------
.../en.lproj/firstTimeWelcomeMessage.html | 18 +++++++++---------
.../es.lproj/firstTimeWelcomeMessage.html | 18 +++++++++---------
.../fr.lproj/firstTimeWelcomeMessage.html | 18 +++++++++---------
.../it.lproj/firstTimeWelcomeMessage.html | 18 +++++++++---------
.../ja.lproj/firstTimeWelcomeMessage.html | 18 +++++++++---------
.../ko.lproj/firstTimeWelcomeMessage.html | 18 +++++++++---------
.../pl.lproj/firstTimeWelcomeMessage.html | 18 +++++++++---------
.../pt-br.lproj/firstTimeWelcomeMessage.html | 18 +++++++++---------
.../ru.lproj/firstTimeWelcomeMessage.html | 18 +++++++++---------
.../tr.lproj/firstTimeWelcomeMessage.html | 18 +++++++++---------
.../zh-hans.lproj/firstTimeWelcomeMessage.html | 18 +++++++++---------
.../zh-hant.lproj/firstTimeWelcomeMessage.html | 18 +++++++++---------
14 files changed, 126 insertions(+), 126 deletions(-)
diff --git a/packaging/osx/clisdk/resources/cs.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/cs.lproj/firstTimeWelcomeMessage.html
index af9179267..fb1e7333d 100644
--- a/packaging/osx/clisdk/resources/cs.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/cs.lproj/firstTimeWelcomeMessage.html
@@ -7,22 +7,22 @@
- Welcome to .NET Core!
+ Installation Successfully Completed Welcome to .NET Core!
- The .NET Core tools collect usage data in order to improve your experience. The data is anonymous and does not include command-line arguments. The data is collected by Microsoft and shared with the community. You can opt out of telemetry by setting a DOTNET_CLI_TELEMETRY_OPTOUT environment variable to 1 using your favorite shell. You can read more about .NET Core tools telemetry at https://aka.ms/dotnet-cli-telemetry.
-
-
- Configuration
+ NET Core Tools Telemetry
- A command is run in the end of install process to initially populate your local package cache, to improve restore speed and enable offline access. This command will take up to a minute to complete and will only happen once.
+ The .NET Core Tools include a telemetry feature that collects usage information. It is important that the .NET Team understands how the tools are being used so that we can improve them.
+
+
+ The data collected is anonymous and will be published in an aggregated form for use by both Microsoft and community engineers under the Creative Commons Attribution License.
+
+
+ The .NET Core Tools telemetry feature is enabled by default. You can opt-out of the telemetry feature by setting an environment variable DOTNET_CLI_TELEMETRY_OPTOUT (for example, 'export' on macOS/Linux, 'set' on Windows) to true (for example, 'true', 1). You can read more about .NET Core tools telemetry at https://aka.ms/dotnet-cli-telemetry.
- The .NET Core tools collect usage data in order to improve your experience. The data is anonymous and does not include command-line arguments. The data is collected by Microsoft and shared with the community. You can opt out of telemetry by setting a DOTNET_CLI_TELEMETRY_OPTOUT environment variable to 1 using your favorite shell. You can read more about .NET Core tools telemetry at https://aka.ms/dotnet-cli-telemetry.
-
-
- Configuration
+ NET Core Tools Telemetry
- A command is run in the end of install process to initially populate your local package cache, to improve restore speed and enable offline access. This command will take up to a minute to complete and will only happen once.
+ The .NET Core Tools include a telemetry feature that collects usage information. It is important that the .NET Team understands how the tools are being used so that we can improve them.
+
+
+ The data collected is anonymous and will be published in an aggregated form for use by both Microsoft and community engineers under the Creative Commons Attribution License.
+
+
+ The .NET Core Tools telemetry feature is enabled by default. You can opt-out of the telemetry feature by setting an environment variable DOTNET_CLI_TELEMETRY_OPTOUT (for example, 'export' on macOS/Linux, 'set' on Windows) to true (for example, 'true', 1). You can read more about .NET Core tools telemetry at https://aka.ms/dotnet-cli-telemetry.
- The .NET Core tools collect usage data in order to improve your experience. The data is anonymous and does not include command-line arguments. The data is collected by Microsoft and shared with the community. You can opt out of telemetry by setting a DOTNET_CLI_TELEMETRY_OPTOUT environment variable to 1 using your favorite shell. You can read more about .NET Core tools telemetry at https://aka.ms/dotnet-cli-telemetry.
-
-
- Configuration
+ NET Core Tools Telemetry
- A command is run in the end of install process to initially populate your local package cache, to improve restore speed and enable offline access. This command will take up to a minute to complete and will only happen once.
+ The .NET Core Tools include a telemetry feature that collects usage information. It is important that the .NET Team understands how the tools are being used so that we can improve them.
+
+
+ The data collected is anonymous and will be published in an aggregated form for use by both Microsoft and community engineers under the Creative Commons Attribution License.
+
+
+ The .NET Core Tools telemetry feature is enabled by default. You can opt-out of the telemetry feature by setting an environment variable DOTNET_CLI_TELEMETRY_OPTOUT (for example, 'export' on macOS/Linux, 'set' on Windows) to true (for example, 'true', 1). You can read more about .NET Core tools telemetry at https://aka.ms/dotnet-cli-telemetry.
- The .NET Core tools collect usage data in order to improve your experience. The data is anonymous and does not include command-line arguments. The data is collected by Microsoft and shared with the community. You can opt out of telemetry by setting a DOTNET_CLI_TELEMETRY_OPTOUT environment variable to 1 using your favorite shell. You can read more about .NET Core tools telemetry at https://aka.ms/dotnet-cli-telemetry.
-
-
- Configuration
+ NET Core Tools Telemetry
- A command is run in the end of install process to initially populate your local package cache, to improve restore speed and enable offline access. This command will take up to a minute to complete and will only happen once.
+ The .NET Core Tools include a telemetry feature that collects usage information. It is important that the .NET Team understands how the tools are being used so that we can improve them.
+
+
+ The data collected is anonymous and will be published in an aggregated form for use by both Microsoft and community engineers under the Creative Commons Attribution License.
+
+
+ The .NET Core Tools telemetry feature is enabled by default. You can opt-out of the telemetry feature by setting an environment variable DOTNET_CLI_TELEMETRY_OPTOUT (for example, 'export' on macOS/Linux, 'set' on Windows) to true (for example, 'true', 1). You can read more about .NET Core tools telemetry at https://aka.ms/dotnet-cli-telemetry.
- The .NET Core tools collect usage data in order to improve your experience. The data is anonymous and does not include command-line arguments. The data is collected by Microsoft and shared with the community. You can opt out of telemetry by setting a DOTNET_CLI_TELEMETRY_OPTOUT environment variable to 1 using your favorite shell. You can read more about .NET Core tools telemetry at https://aka.ms/dotnet-cli-telemetry.
-
-
- Configuration
+ NET Core Tools Telemetry
- A command is run in the end of install process to initially populate your local package cache, to improve restore speed and enable offline access. This command will take up to a minute to complete and will only happen once.
+ The .NET Core Tools include a telemetry feature that collects usage information. It is important that the .NET Team understands how the tools are being used so that we can improve them.
+
+
+ The data collected is anonymous and will be published in an aggregated form for use by both Microsoft and community engineers under the Creative Commons Attribution License.
+
+
+ The .NET Core Tools telemetry feature is enabled by default. You can opt-out of the telemetry feature by setting an environment variable DOTNET_CLI_TELEMETRY_OPTOUT (for example, 'export' on macOS/Linux, 'set' on Windows) to true (for example, 'true', 1). You can read more about .NET Core tools telemetry at https://aka.ms/dotnet-cli-telemetry.
- The .NET Core tools collect usage data in order to improve your experience. The data is anonymous and does not include command-line arguments. The data is collected by Microsoft and shared with the community. You can opt out of telemetry by setting a DOTNET_CLI_TELEMETRY_OPTOUT environment variable to 1 using your favorite shell. You can read more about .NET Core tools telemetry at https://aka.ms/dotnet-cli-telemetry.
-
-
- Configuration
+ NET Core Tools Telemetry
- A command is run in the end of install process to initially populate your local package cache, to improve restore speed and enable offline access. This command will take up to a minute to complete and will only happen once.
+ The .NET Core Tools include a telemetry feature that collects usage information. It is important that the .NET Team understands how the tools are being used so that we can improve them.
+
+
+ The data collected is anonymous and will be published in an aggregated form for use by both Microsoft and community engineers under the Creative Commons Attribution License.
+
+
+ The .NET Core Tools telemetry feature is enabled by default. You can opt-out of the telemetry feature by setting an environment variable DOTNET_CLI_TELEMETRY_OPTOUT (for example, 'export' on macOS/Linux, 'set' on Windows) to true (for example, 'true', 1). You can read more about .NET Core tools telemetry at https://aka.ms/dotnet-cli-telemetry.
- The .NET Core tools collect usage data in order to improve your experience. The data is anonymous and does not include command-line arguments. The data is collected by Microsoft and shared with the community. You can opt out of telemetry by setting a DOTNET_CLI_TELEMETRY_OPTOUT environment variable to 1 using your favorite shell. You can read more about .NET Core tools telemetry at https://aka.ms/dotnet-cli-telemetry.
-
-
- Configuration
+ NET Core Tools Telemetry
- A command is run in the end of install process to initially populate your local package cache, to improve restore speed and enable offline access. This command will take up to a minute to complete and will only happen once.
+ The .NET Core Tools include a telemetry feature that collects usage information. It is important that the .NET Team understands how the tools are being used so that we can improve them.
+
+
+ The data collected is anonymous and will be published in an aggregated form for use by both Microsoft and community engineers under the Creative Commons Attribution License.
+
+
+ The .NET Core Tools telemetry feature is enabled by default. You can opt-out of the telemetry feature by setting an environment variable DOTNET_CLI_TELEMETRY_OPTOUT (for example, 'export' on macOS/Linux, 'set' on Windows) to true (for example, 'true', 1). You can read more about .NET Core tools telemetry at https://aka.ms/dotnet-cli-telemetry.
- The .NET Core tools collect usage data in order to improve your experience. The data is anonymous and does not include command-line arguments. The data is collected by Microsoft and shared with the community. You can opt out of telemetry by setting a DOTNET_CLI_TELEMETRY_OPTOUT environment variable to 1 using your favorite shell. You can read more about .NET Core tools telemetry at https://aka.ms/dotnet-cli-telemetry.
-
-
- Configuration
+ NET Core Tools Telemetry
- A command is run in the end of install process to initially populate your local package cache, to improve restore speed and enable offline access. This command will take up to a minute to complete and will only happen once.
+ The .NET Core Tools include a telemetry feature that collects usage information. It is important that the .NET Team understands how the tools are being used so that we can improve them.
+
+
+ The data collected is anonymous and will be published in an aggregated form for use by both Microsoft and community engineers under the Creative Commons Attribution License.
+
+
+ The .NET Core Tools telemetry feature is enabled by default. You can opt-out of the telemetry feature by setting an environment variable DOTNET_CLI_TELEMETRY_OPTOUT (for example, 'export' on macOS/Linux, 'set' on Windows) to true (for example, 'true', 1). You can read more about .NET Core tools telemetry at https://aka.ms/dotnet-cli-telemetry.
- The .NET Core tools collect usage data in order to improve your experience. The data is anonymous and does not include command-line arguments. The data is collected by Microsoft and shared with the community. You can opt out of telemetry by setting a DOTNET_CLI_TELEMETRY_OPTOUT environment variable to 1 using your favorite shell. You can read more about .NET Core tools telemetry at https://aka.ms/dotnet-cli-telemetry.
-
-
- Configuration
+ NET Core Tools Telemetry
- A command is run in the end of install process to initially populate your local package cache, to improve restore speed and enable offline access. This command will take up to a minute to complete and will only happen once.
+ The .NET Core Tools include a telemetry feature that collects usage information. It is important that the .NET Team understands how the tools are being used so that we can improve them.
+
+
+ The data collected is anonymous and will be published in an aggregated form for use by both Microsoft and community engineers under the Creative Commons Attribution License.
+
+
+ The .NET Core Tools telemetry feature is enabled by default. You can opt-out of the telemetry feature by setting an environment variable DOTNET_CLI_TELEMETRY_OPTOUT (for example, 'export' on macOS/Linux, 'set' on Windows) to true (for example, 'true', 1). You can read more about .NET Core tools telemetry at https://aka.ms/dotnet-cli-telemetry.
- The .NET Core tools collect usage data in order to improve your experience. The data is anonymous and does not include command-line arguments. The data is collected by Microsoft and shared with the community. You can opt out of telemetry by setting a DOTNET_CLI_TELEMETRY_OPTOUT environment variable to 1 using your favorite shell. You can read more about .NET Core tools telemetry at https://aka.ms/dotnet-cli-telemetry.
-
-
- Configuration
+ NET Core Tools Telemetry
- A command is run in the end of install process to initially populate your local package cache, to improve restore speed and enable offline access. This command will take up to a minute to complete and will only happen once.
+ The .NET Core Tools include a telemetry feature that collects usage information. It is important that the .NET Team understands how the tools are being used so that we can improve them.
+
+
+ The data collected is anonymous and will be published in an aggregated form for use by both Microsoft and community engineers under the Creative Commons Attribution License.
+
+
+ The .NET Core Tools telemetry feature is enabled by default. You can opt-out of the telemetry feature by setting an environment variable DOTNET_CLI_TELEMETRY_OPTOUT (for example, 'export' on macOS/Linux, 'set' on Windows) to true (for example, 'true', 1). You can read more about .NET Core tools telemetry at https://aka.ms/dotnet-cli-telemetry.
- The .NET Core tools collect usage data in order to improve your experience. The data is anonymous and does not include command-line arguments. The data is collected by Microsoft and shared with the community. You can opt out of telemetry by setting a DOTNET_CLI_TELEMETRY_OPTOUT environment variable to 1 using your favorite shell. You can read more about .NET Core tools telemetry at https://aka.ms/dotnet-cli-telemetry.
-
-
- Configuration
+ NET Core Tools Telemetry
- A command is run in the end of install process to initially populate your local package cache, to improve restore speed and enable offline access. This command will take up to a minute to complete and will only happen once.
+ The .NET Core Tools include a telemetry feature that collects usage information. It is important that the .NET Team understands how the tools are being used so that we can improve them.
+
+
+ The data collected is anonymous and will be published in an aggregated form for use by both Microsoft and community engineers under the Creative Commons Attribution License.
+
+
+ The .NET Core Tools telemetry feature is enabled by default. You can opt-out of the telemetry feature by setting an environment variable DOTNET_CLI_TELEMETRY_OPTOUT (for example, 'export' on macOS/Linux, 'set' on Windows) to true (for example, 'true', 1). You can read more about .NET Core tools telemetry at https://aka.ms/dotnet-cli-telemetry.
- The .NET Core tools collect usage data in order to improve your experience. The data is anonymous and does not include command-line arguments. The data is collected by Microsoft and shared with the community. You can opt out of telemetry by setting a DOTNET_CLI_TELEMETRY_OPTOUT environment variable to 1 using your favorite shell. You can read more about .NET Core tools telemetry at https://aka.ms/dotnet-cli-telemetry.
-
-
- Configuration
+ NET Core Tools Telemetry
- A command is run in the end of install process to initially populate your local package cache, to improve restore speed and enable offline access. This command will take up to a minute to complete and will only happen once.
+ The .NET Core Tools include a telemetry feature that collects usage information. It is important that the .NET Team understands how the tools are being used so that we can improve them.
+
+
+ The data collected is anonymous and will be published in an aggregated form for use by both Microsoft and community engineers under the Creative Commons Attribution License.
+
+
+ The .NET Core Tools telemetry feature is enabled by default. You can opt-out of the telemetry feature by setting an environment variable DOTNET_CLI_TELEMETRY_OPTOUT (for example, 'export' on macOS/Linux, 'set' on Windows) to true (for example, 'true', 1). You can read more about .NET Core tools telemetry at https://aka.ms/dotnet-cli-telemetry.
- The .NET Core tools collect usage data in order to improve your experience. The data is anonymous and does not include command-line arguments. The data is collected by Microsoft and shared with the community. You can opt out of telemetry by setting a DOTNET_CLI_TELEMETRY_OPTOUT environment variable to 1 using your favorite shell. You can read more about .NET Core tools telemetry at https://aka.ms/dotnet-cli-telemetry.
-
-
- Configuration
+ NET Core Tools Telemetry
- A command is run in the end of install process to initially populate your local package cache, to improve restore speed and enable offline access. This command will take up to a minute to complete and will only happen once.
+ The .NET Core Tools include a telemetry feature that collects usage information. It is important that the .NET Team understands how the tools are being used so that we can improve them.
+
+
+ The data collected is anonymous and will be published in an aggregated form for use by both Microsoft and community engineers under the Creative Commons Attribution License.
+
+
+ The .NET Core Tools telemetry feature is enabled by default. You can opt-out of the telemetry feature by setting an environment variable DOTNET_CLI_TELEMETRY_OPTOUT (for example, 'export' on macOS/Linux, 'set' on Windows) to true (for example, 'true', 1). You can read more about .NET Core tools telemetry at https://aka.ms/dotnet-cli-telemetry.
- The .NET Core tools collect usage data in order to improve your experience. The data is anonymous and does not include command-line arguments. The data is collected by Microsoft and shared with the community. You can opt out of telemetry by setting a DOTNET_CLI_TELEMETRY_OPTOUT environment variable to 1 using your favorite shell. You can read more about .NET Core tools telemetry at https://aka.ms/dotnet-cli-telemetry.
-
-
- Configuration
+ NET Core Tools Telemetry
- A command is run in the end of install process to initially populate your local package cache, to improve restore speed and enable offline access. This command will take up to a minute to complete and will only happen once.
+ The .NET Core Tools include a telemetry feature that collects usage information. It is important that the .NET Team understands how the tools are being used so that we can improve them.
+
+
+ The data collected is anonymous and will be published in an aggregated form for use by both Microsoft and community engineers under the Creative Commons Attribution License.
+
+
+ The .NET Core Tools telemetry feature is enabled by default. You can opt-out of the telemetry feature by setting an environment variable DOTNET_CLI_TELEMETRY_OPTOUT (for example, 'export' on macOS/Linux, 'set' on Windows) to true (for example, 'true', 1). You can read more about .NET Core tools telemetry at https://aka.ms/dotnet-cli-telemetry.
- Installation Successfully Completed Welcome to .NET Core!
+ Installation Completed Successfully Welcome to .NET Core!
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
diff --git a/packaging/osx/clisdk/resources/de.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/de.lproj/firstTimeWelcomeMessage.html
index fb1e7333d..013aa7290 100644
--- a/packaging/osx/clisdk/resources/de.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/de.lproj/firstTimeWelcomeMessage.html
@@ -7,7 +7,7 @@
- Installation Successfully Completed Welcome to .NET Core!
+ Installation Completed Successfully Welcome to .NET Core!
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
diff --git a/packaging/osx/clisdk/resources/en.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/en.lproj/firstTimeWelcomeMessage.html
index fb1e7333d..013aa7290 100644
--- a/packaging/osx/clisdk/resources/en.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/en.lproj/firstTimeWelcomeMessage.html
@@ -7,7 +7,7 @@
- Installation Successfully Completed Welcome to .NET Core!
+ Installation Completed Successfully Welcome to .NET Core!
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
diff --git a/packaging/osx/clisdk/resources/es.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/es.lproj/firstTimeWelcomeMessage.html
index fb1e7333d..013aa7290 100644
--- a/packaging/osx/clisdk/resources/es.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/es.lproj/firstTimeWelcomeMessage.html
@@ -7,7 +7,7 @@
- Installation Successfully Completed Welcome to .NET Core!
+ Installation Completed Successfully Welcome to .NET Core!
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
diff --git a/packaging/osx/clisdk/resources/fr.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/fr.lproj/firstTimeWelcomeMessage.html
index fb1e7333d..013aa7290 100644
--- a/packaging/osx/clisdk/resources/fr.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/fr.lproj/firstTimeWelcomeMessage.html
@@ -7,7 +7,7 @@
- Installation Successfully Completed Welcome to .NET Core!
+ Installation Completed Successfully Welcome to .NET Core!
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
diff --git a/packaging/osx/clisdk/resources/it.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/it.lproj/firstTimeWelcomeMessage.html
index fb1e7333d..013aa7290 100644
--- a/packaging/osx/clisdk/resources/it.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/it.lproj/firstTimeWelcomeMessage.html
@@ -7,7 +7,7 @@
- Installation Successfully Completed Welcome to .NET Core!
+ Installation Completed Successfully Welcome to .NET Core!
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
diff --git a/packaging/osx/clisdk/resources/ja.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/ja.lproj/firstTimeWelcomeMessage.html
index fb1e7333d..013aa7290 100644
--- a/packaging/osx/clisdk/resources/ja.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/ja.lproj/firstTimeWelcomeMessage.html
@@ -7,7 +7,7 @@
- Installation Successfully Completed Welcome to .NET Core!
+ Installation Completed Successfully Welcome to .NET Core!
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
diff --git a/packaging/osx/clisdk/resources/ko.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/ko.lproj/firstTimeWelcomeMessage.html
index fb1e7333d..013aa7290 100644
--- a/packaging/osx/clisdk/resources/ko.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/ko.lproj/firstTimeWelcomeMessage.html
@@ -7,7 +7,7 @@
- Installation Successfully Completed Welcome to .NET Core!
+ Installation Completed Successfully Welcome to .NET Core!
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
diff --git a/packaging/osx/clisdk/resources/pl.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/pl.lproj/firstTimeWelcomeMessage.html
index fb1e7333d..013aa7290 100644
--- a/packaging/osx/clisdk/resources/pl.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/pl.lproj/firstTimeWelcomeMessage.html
@@ -7,7 +7,7 @@
- Installation Successfully Completed Welcome to .NET Core!
+ Installation Completed Successfully Welcome to .NET Core!
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
diff --git a/packaging/osx/clisdk/resources/pt-br.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/pt-br.lproj/firstTimeWelcomeMessage.html
index fb1e7333d..013aa7290 100644
--- a/packaging/osx/clisdk/resources/pt-br.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/pt-br.lproj/firstTimeWelcomeMessage.html
@@ -7,7 +7,7 @@
- Installation Successfully Completed Welcome to .NET Core!
+ Installation Completed Successfully Welcome to .NET Core!
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
diff --git a/packaging/osx/clisdk/resources/ru.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/ru.lproj/firstTimeWelcomeMessage.html
index fb1e7333d..013aa7290 100644
--- a/packaging/osx/clisdk/resources/ru.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/ru.lproj/firstTimeWelcomeMessage.html
@@ -7,7 +7,7 @@
- Installation Successfully Completed Welcome to .NET Core!
+ Installation Completed Successfully Welcome to .NET Core!
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
diff --git a/packaging/osx/clisdk/resources/tr.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/tr.lproj/firstTimeWelcomeMessage.html
index fb1e7333d..013aa7290 100644
--- a/packaging/osx/clisdk/resources/tr.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/tr.lproj/firstTimeWelcomeMessage.html
@@ -7,7 +7,7 @@
- Installation Successfully Completed Welcome to .NET Core!
+ Installation Completed Successfully Welcome to .NET Core!
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
diff --git a/packaging/osx/clisdk/resources/zh-hans.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/zh-hans.lproj/firstTimeWelcomeMessage.html
index fb1e7333d..013aa7290 100644
--- a/packaging/osx/clisdk/resources/zh-hans.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/zh-hans.lproj/firstTimeWelcomeMessage.html
@@ -7,7 +7,7 @@
- Installation Successfully Completed Welcome to .NET Core!
+ Installation Completed Successfully Welcome to .NET Core!
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
diff --git a/packaging/osx/clisdk/resources/zh-hant.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/zh-hant.lproj/firstTimeWelcomeMessage.html
index fb1e7333d..013aa7290 100644
--- a/packaging/osx/clisdk/resources/zh-hant.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/zh-hant.lproj/firstTimeWelcomeMessage.html
@@ -7,7 +7,7 @@
- Installation Successfully Completed Welcome to .NET Core!
+ Installation Completed Successfully Welcome to .NET Core!
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
diff --git a/packaging/windows/clisdk/bundle.wxl b/packaging/windows/clisdk/bundle.wxl
index 326a089ae..cab64f34a 100644
--- a/packaging/windows/clisdk/bundle.wxl
+++ b/packaging/windows/clisdk/bundle.wxl
@@ -50,7 +50,7 @@ Ready? Set? Let's go!
&Do not close applications. A reboot will be required.&OK&Cancel
- Installation Successfully Completed Welcome to .NET Core!
+ Installation Completed Successfully Welcome to .NET Core!
Learn more about .NET Core at https://aka.ms/dotnet-docs. Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
From 303634978aaaa9a13f6c97cef2c62e1a73519e5a Mon Sep 17 00:00:00 2001
From: William Li
Date: Mon, 15 May 2017 11:48:56 -0700
Subject: [PATCH 05/32] Change to Installation completed successfully. Welcome
to .NET Core!
---
.../osx/clisdk/resources/cs.lproj/firstTimeWelcomeMessage.html | 2 +-
.../osx/clisdk/resources/de.lproj/firstTimeWelcomeMessage.html | 2 +-
.../osx/clisdk/resources/en.lproj/firstTimeWelcomeMessage.html | 2 +-
.../osx/clisdk/resources/es.lproj/firstTimeWelcomeMessage.html | 2 +-
.../osx/clisdk/resources/fr.lproj/firstTimeWelcomeMessage.html | 2 +-
.../osx/clisdk/resources/it.lproj/firstTimeWelcomeMessage.html | 2 +-
.../osx/clisdk/resources/ja.lproj/firstTimeWelcomeMessage.html | 2 +-
.../osx/clisdk/resources/ko.lproj/firstTimeWelcomeMessage.html | 2 +-
.../osx/clisdk/resources/pl.lproj/firstTimeWelcomeMessage.html | 2 +-
.../clisdk/resources/pt-br.lproj/firstTimeWelcomeMessage.html | 2 +-
.../osx/clisdk/resources/ru.lproj/firstTimeWelcomeMessage.html | 2 +-
.../osx/clisdk/resources/tr.lproj/firstTimeWelcomeMessage.html | 2 +-
.../clisdk/resources/zh-hans.lproj/firstTimeWelcomeMessage.html | 2 +-
.../clisdk/resources/zh-hant.lproj/firstTimeWelcomeMessage.html | 2 +-
packaging/windows/clisdk/bundle.wxl | 2 +-
15 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/packaging/osx/clisdk/resources/cs.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/cs.lproj/firstTimeWelcomeMessage.html
index 013aa7290..9b8f34d1a 100644
--- a/packaging/osx/clisdk/resources/cs.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/cs.lproj/firstTimeWelcomeMessage.html
@@ -7,7 +7,7 @@
- Installation Completed Successfully Welcome to .NET Core!
+ Installation completed successfully. Welcome to .NET Core!
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
diff --git a/packaging/osx/clisdk/resources/de.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/de.lproj/firstTimeWelcomeMessage.html
index 013aa7290..9b8f34d1a 100644
--- a/packaging/osx/clisdk/resources/de.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/de.lproj/firstTimeWelcomeMessage.html
@@ -7,7 +7,7 @@
- Installation Completed Successfully Welcome to .NET Core!
+ Installation completed successfully. Welcome to .NET Core!
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
diff --git a/packaging/osx/clisdk/resources/en.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/en.lproj/firstTimeWelcomeMessage.html
index 013aa7290..9b8f34d1a 100644
--- a/packaging/osx/clisdk/resources/en.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/en.lproj/firstTimeWelcomeMessage.html
@@ -7,7 +7,7 @@
- Installation Completed Successfully Welcome to .NET Core!
+ Installation completed successfully. Welcome to .NET Core!
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
diff --git a/packaging/osx/clisdk/resources/es.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/es.lproj/firstTimeWelcomeMessage.html
index 013aa7290..9b8f34d1a 100644
--- a/packaging/osx/clisdk/resources/es.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/es.lproj/firstTimeWelcomeMessage.html
@@ -7,7 +7,7 @@
- Installation Completed Successfully Welcome to .NET Core!
+ Installation completed successfully. Welcome to .NET Core!
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
diff --git a/packaging/osx/clisdk/resources/fr.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/fr.lproj/firstTimeWelcomeMessage.html
index 013aa7290..9b8f34d1a 100644
--- a/packaging/osx/clisdk/resources/fr.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/fr.lproj/firstTimeWelcomeMessage.html
@@ -7,7 +7,7 @@
- Installation Completed Successfully Welcome to .NET Core!
+ Installation completed successfully. Welcome to .NET Core!
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
diff --git a/packaging/osx/clisdk/resources/it.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/it.lproj/firstTimeWelcomeMessage.html
index 013aa7290..9b8f34d1a 100644
--- a/packaging/osx/clisdk/resources/it.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/it.lproj/firstTimeWelcomeMessage.html
@@ -7,7 +7,7 @@
- Installation Completed Successfully Welcome to .NET Core!
+ Installation completed successfully. Welcome to .NET Core!
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
diff --git a/packaging/osx/clisdk/resources/ja.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/ja.lproj/firstTimeWelcomeMessage.html
index 013aa7290..9b8f34d1a 100644
--- a/packaging/osx/clisdk/resources/ja.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/ja.lproj/firstTimeWelcomeMessage.html
@@ -7,7 +7,7 @@
- Installation Completed Successfully Welcome to .NET Core!
+ Installation completed successfully. Welcome to .NET Core!
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
diff --git a/packaging/osx/clisdk/resources/ko.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/ko.lproj/firstTimeWelcomeMessage.html
index 013aa7290..9b8f34d1a 100644
--- a/packaging/osx/clisdk/resources/ko.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/ko.lproj/firstTimeWelcomeMessage.html
@@ -7,7 +7,7 @@
- Installation Completed Successfully Welcome to .NET Core!
+ Installation completed successfully. Welcome to .NET Core!
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
diff --git a/packaging/osx/clisdk/resources/pl.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/pl.lproj/firstTimeWelcomeMessage.html
index 013aa7290..9b8f34d1a 100644
--- a/packaging/osx/clisdk/resources/pl.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/pl.lproj/firstTimeWelcomeMessage.html
@@ -7,7 +7,7 @@
- Installation Completed Successfully Welcome to .NET Core!
+ Installation completed successfully. Welcome to .NET Core!
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
diff --git a/packaging/osx/clisdk/resources/pt-br.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/pt-br.lproj/firstTimeWelcomeMessage.html
index 013aa7290..9b8f34d1a 100644
--- a/packaging/osx/clisdk/resources/pt-br.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/pt-br.lproj/firstTimeWelcomeMessage.html
@@ -7,7 +7,7 @@
- Installation Completed Successfully Welcome to .NET Core!
+ Installation completed successfully. Welcome to .NET Core!
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
diff --git a/packaging/osx/clisdk/resources/ru.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/ru.lproj/firstTimeWelcomeMessage.html
index 013aa7290..9b8f34d1a 100644
--- a/packaging/osx/clisdk/resources/ru.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/ru.lproj/firstTimeWelcomeMessage.html
@@ -7,7 +7,7 @@
- Installation Completed Successfully Welcome to .NET Core!
+ Installation completed successfully. Welcome to .NET Core!
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
diff --git a/packaging/osx/clisdk/resources/tr.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/tr.lproj/firstTimeWelcomeMessage.html
index 013aa7290..9b8f34d1a 100644
--- a/packaging/osx/clisdk/resources/tr.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/tr.lproj/firstTimeWelcomeMessage.html
@@ -7,7 +7,7 @@
- Installation Completed Successfully Welcome to .NET Core!
+ Installation completed successfully. Welcome to .NET Core!
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
diff --git a/packaging/osx/clisdk/resources/zh-hans.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/zh-hans.lproj/firstTimeWelcomeMessage.html
index 013aa7290..9b8f34d1a 100644
--- a/packaging/osx/clisdk/resources/zh-hans.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/zh-hans.lproj/firstTimeWelcomeMessage.html
@@ -7,7 +7,7 @@
- Installation Completed Successfully Welcome to .NET Core!
+ Installation completed successfully. Welcome to .NET Core!
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
diff --git a/packaging/osx/clisdk/resources/zh-hant.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/zh-hant.lproj/firstTimeWelcomeMessage.html
index 013aa7290..9b8f34d1a 100644
--- a/packaging/osx/clisdk/resources/zh-hant.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/zh-hant.lproj/firstTimeWelcomeMessage.html
@@ -7,7 +7,7 @@
- Installation Completed Successfully Welcome to .NET Core!
+ Installation completed successfully. Welcome to .NET Core!
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
diff --git a/packaging/windows/clisdk/bundle.wxl b/packaging/windows/clisdk/bundle.wxl
index cab64f34a..25dcd632d 100644
--- a/packaging/windows/clisdk/bundle.wxl
+++ b/packaging/windows/clisdk/bundle.wxl
@@ -50,7 +50,7 @@ Ready? Set? Let's go!
&Do not close applications. A reboot will be required.&OK&Cancel
- Installation Completed Successfully Welcome to .NET Core!
+ Installation completed successfully. Welcome to .NET Core!
Learn more about .NET Core at https://aka.ms/dotnet-docs. Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
From 3813c419481bc6abcd154598cf0e7d015436fdd1 Mon Sep 17 00:00:00 2001
From: William Li
Date: Mon, 15 May 2017 11:39:42 -0700
Subject: [PATCH 06/32] Add leading dot back
---
packaging/deb/postinst | 2 +-
.../osx/clisdk/resources/cs.lproj/firstTimeWelcomeMessage.html | 2 +-
.../osx/clisdk/resources/de.lproj/firstTimeWelcomeMessage.html | 2 +-
.../osx/clisdk/resources/en.lproj/firstTimeWelcomeMessage.html | 2 +-
.../osx/clisdk/resources/es.lproj/firstTimeWelcomeMessage.html | 2 +-
.../osx/clisdk/resources/fr.lproj/firstTimeWelcomeMessage.html | 2 +-
.../osx/clisdk/resources/it.lproj/firstTimeWelcomeMessage.html | 2 +-
.../osx/clisdk/resources/ja.lproj/firstTimeWelcomeMessage.html | 2 +-
.../osx/clisdk/resources/ko.lproj/firstTimeWelcomeMessage.html | 2 +-
.../osx/clisdk/resources/pl.lproj/firstTimeWelcomeMessage.html | 2 +-
.../clisdk/resources/pt-br.lproj/firstTimeWelcomeMessage.html | 2 +-
.../osx/clisdk/resources/ru.lproj/firstTimeWelcomeMessage.html | 2 +-
.../osx/clisdk/resources/tr.lproj/firstTimeWelcomeMessage.html | 2 +-
.../clisdk/resources/zh-hans.lproj/firstTimeWelcomeMessage.html | 2 +-
.../clisdk/resources/zh-hant.lproj/firstTimeWelcomeMessage.html | 2 +-
packaging/windows/clisdk/bundle.wxl | 2 +-
16 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/packaging/deb/postinst b/packaging/deb/postinst
index e2e4bd4be..f92c16afa 100755
--- a/packaging/deb/postinst
+++ b/packaging/deb/postinst
@@ -7,7 +7,7 @@ echo "Welcome to .NET Core!
---------------------
Learn more about .NET Core @ https://aka.ms/dotnet-docs. Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
-NET Core Tools Telemetry
+.NET Core Tools Telemetry
--------------
The .NET Core Tools include a telemetry feature that collects usage information. It is important that the .NET Team understands how the tools are being used so that we can improve them.
diff --git a/packaging/osx/clisdk/resources/cs.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/cs.lproj/firstTimeWelcomeMessage.html
index 9b8f34d1a..81144ea7f 100644
--- a/packaging/osx/clisdk/resources/cs.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/cs.lproj/firstTimeWelcomeMessage.html
@@ -13,7 +13,7 @@
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
- NET Core Tools Telemetry
+ .NET Core Tools Telemetry
The .NET Core Tools include a telemetry feature that collects usage information. It is important that the .NET Team understands how the tools are being used so that we can improve them.
diff --git a/packaging/osx/clisdk/resources/de.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/de.lproj/firstTimeWelcomeMessage.html
index 9b8f34d1a..81144ea7f 100644
--- a/packaging/osx/clisdk/resources/de.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/de.lproj/firstTimeWelcomeMessage.html
@@ -13,7 +13,7 @@
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
- NET Core Tools Telemetry
+ .NET Core Tools Telemetry
The .NET Core Tools include a telemetry feature that collects usage information. It is important that the .NET Team understands how the tools are being used so that we can improve them.
diff --git a/packaging/osx/clisdk/resources/en.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/en.lproj/firstTimeWelcomeMessage.html
index 9b8f34d1a..81144ea7f 100644
--- a/packaging/osx/clisdk/resources/en.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/en.lproj/firstTimeWelcomeMessage.html
@@ -13,7 +13,7 @@
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
- NET Core Tools Telemetry
+ .NET Core Tools Telemetry
The .NET Core Tools include a telemetry feature that collects usage information. It is important that the .NET Team understands how the tools are being used so that we can improve them.
diff --git a/packaging/osx/clisdk/resources/es.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/es.lproj/firstTimeWelcomeMessage.html
index 9b8f34d1a..81144ea7f 100644
--- a/packaging/osx/clisdk/resources/es.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/es.lproj/firstTimeWelcomeMessage.html
@@ -13,7 +13,7 @@
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
- NET Core Tools Telemetry
+ .NET Core Tools Telemetry
The .NET Core Tools include a telemetry feature that collects usage information. It is important that the .NET Team understands how the tools are being used so that we can improve them.
diff --git a/packaging/osx/clisdk/resources/fr.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/fr.lproj/firstTimeWelcomeMessage.html
index 9b8f34d1a..81144ea7f 100644
--- a/packaging/osx/clisdk/resources/fr.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/fr.lproj/firstTimeWelcomeMessage.html
@@ -13,7 +13,7 @@
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
- NET Core Tools Telemetry
+ .NET Core Tools Telemetry
The .NET Core Tools include a telemetry feature that collects usage information. It is important that the .NET Team understands how the tools are being used so that we can improve them.
diff --git a/packaging/osx/clisdk/resources/it.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/it.lproj/firstTimeWelcomeMessage.html
index 9b8f34d1a..81144ea7f 100644
--- a/packaging/osx/clisdk/resources/it.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/it.lproj/firstTimeWelcomeMessage.html
@@ -13,7 +13,7 @@
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
- NET Core Tools Telemetry
+ .NET Core Tools Telemetry
The .NET Core Tools include a telemetry feature that collects usage information. It is important that the .NET Team understands how the tools are being used so that we can improve them.
diff --git a/packaging/osx/clisdk/resources/ja.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/ja.lproj/firstTimeWelcomeMessage.html
index 9b8f34d1a..81144ea7f 100644
--- a/packaging/osx/clisdk/resources/ja.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/ja.lproj/firstTimeWelcomeMessage.html
@@ -13,7 +13,7 @@
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
- NET Core Tools Telemetry
+ .NET Core Tools Telemetry
The .NET Core Tools include a telemetry feature that collects usage information. It is important that the .NET Team understands how the tools are being used so that we can improve them.
diff --git a/packaging/osx/clisdk/resources/ko.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/ko.lproj/firstTimeWelcomeMessage.html
index 9b8f34d1a..81144ea7f 100644
--- a/packaging/osx/clisdk/resources/ko.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/ko.lproj/firstTimeWelcomeMessage.html
@@ -13,7 +13,7 @@
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
- NET Core Tools Telemetry
+ .NET Core Tools Telemetry
The .NET Core Tools include a telemetry feature that collects usage information. It is important that the .NET Team understands how the tools are being used so that we can improve them.
diff --git a/packaging/osx/clisdk/resources/pl.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/pl.lproj/firstTimeWelcomeMessage.html
index 9b8f34d1a..81144ea7f 100644
--- a/packaging/osx/clisdk/resources/pl.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/pl.lproj/firstTimeWelcomeMessage.html
@@ -13,7 +13,7 @@
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
- NET Core Tools Telemetry
+ .NET Core Tools Telemetry
The .NET Core Tools include a telemetry feature that collects usage information. It is important that the .NET Team understands how the tools are being used so that we can improve them.
diff --git a/packaging/osx/clisdk/resources/pt-br.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/pt-br.lproj/firstTimeWelcomeMessage.html
index 9b8f34d1a..81144ea7f 100644
--- a/packaging/osx/clisdk/resources/pt-br.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/pt-br.lproj/firstTimeWelcomeMessage.html
@@ -13,7 +13,7 @@
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
- NET Core Tools Telemetry
+ .NET Core Tools Telemetry
The .NET Core Tools include a telemetry feature that collects usage information. It is important that the .NET Team understands how the tools are being used so that we can improve them.
diff --git a/packaging/osx/clisdk/resources/ru.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/ru.lproj/firstTimeWelcomeMessage.html
index 9b8f34d1a..81144ea7f 100644
--- a/packaging/osx/clisdk/resources/ru.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/ru.lproj/firstTimeWelcomeMessage.html
@@ -13,7 +13,7 @@
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
- NET Core Tools Telemetry
+ .NET Core Tools Telemetry
The .NET Core Tools include a telemetry feature that collects usage information. It is important that the .NET Team understands how the tools are being used so that we can improve them.
diff --git a/packaging/osx/clisdk/resources/tr.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/tr.lproj/firstTimeWelcomeMessage.html
index 9b8f34d1a..81144ea7f 100644
--- a/packaging/osx/clisdk/resources/tr.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/tr.lproj/firstTimeWelcomeMessage.html
@@ -13,7 +13,7 @@
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
- NET Core Tools Telemetry
+ .NET Core Tools Telemetry
The .NET Core Tools include a telemetry feature that collects usage information. It is important that the .NET Team understands how the tools are being used so that we can improve them.
diff --git a/packaging/osx/clisdk/resources/zh-hans.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/zh-hans.lproj/firstTimeWelcomeMessage.html
index 9b8f34d1a..81144ea7f 100644
--- a/packaging/osx/clisdk/resources/zh-hans.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/zh-hans.lproj/firstTimeWelcomeMessage.html
@@ -13,7 +13,7 @@
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
- NET Core Tools Telemetry
+ .NET Core Tools Telemetry
The .NET Core Tools include a telemetry feature that collects usage information. It is important that the .NET Team understands how the tools are being used so that we can improve them.
diff --git a/packaging/osx/clisdk/resources/zh-hant.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/zh-hant.lproj/firstTimeWelcomeMessage.html
index 9b8f34d1a..81144ea7f 100644
--- a/packaging/osx/clisdk/resources/zh-hant.lproj/firstTimeWelcomeMessage.html
+++ b/packaging/osx/clisdk/resources/zh-hant.lproj/firstTimeWelcomeMessage.html
@@ -13,7 +13,7 @@
Learn more about .NET Core at https://aka.ms/dotnet-docs . Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
- NET Core Tools Telemetry
+ .NET Core Tools Telemetry
The .NET Core Tools include a telemetry feature that collects usage information. It is important that the .NET Team understands how the tools are being used so that we can improve them.
diff --git a/packaging/windows/clisdk/bundle.wxl b/packaging/windows/clisdk/bundle.wxl
index 25dcd632d..e7ad81713 100644
--- a/packaging/windows/clisdk/bundle.wxl
+++ b/packaging/windows/clisdk/bundle.wxl
@@ -54,7 +54,7 @@ Ready? Set? Let's go!
Learn more about .NET Core at https://aka.ms/dotnet-docs. Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
-NET Core Tools Telemetry
+.NET Core Tools Telemetry
The .NET Core Tools include a telemetry feature that collects usage information. It is important that the .NET Team understands how the tools are being used so that we can improve them.
From 3d80c0f22a2830c87e118417912747a976aed23a Mon Sep 17 00:00:00 2001
From: faahmad
Date: Thu, 18 May 2017 11:40:12 +0530
Subject: [PATCH 07/32] Insert new bits of testplatform.
---
build/DependencyVersions.props | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props
index 6e2132971..5ac3df41d 100644
--- a/build/DependencyVersions.props
+++ b/build/DependencyVersions.props
@@ -7,7 +7,7 @@
2.0.0-alpha-20170509-24.3.0-beta1-24181.0.0-rel-20170501-473
- 15.3.0-preview-20170502-03
+ 15.3.0-preview-20170517-02$(CLI_SharedFrameworkVersion)$(CLI_SharedFrameworkVersion)$(CLI_SharedFrameworkVersion)
From b3ba4eaac65b8a8b29a7a825c0fc0a525081f171 Mon Sep 17 00:00:00 2001
From: Vijay Ramakrishnan
Date: Thu, 18 May 2017 11:32:33 -0700
Subject: [PATCH 08/32] Updating the websdk version to 2.0.0-rel-20170518-503
---
build/DependencyVersions.props | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props
index 5ac3df41d..f0e79ba63 100644
--- a/build/DependencyVersions.props
+++ b/build/DependencyVersions.props
@@ -6,7 +6,7 @@
2.0.0-rc4-61325-082.0.0-alpha-20170509-24.3.0-beta1-2418
- 1.0.0-rel-20170501-473
+ 2.0.0-rel-20170518-50315.3.0-preview-20170517-02$(CLI_SharedFrameworkVersion)$(CLI_SharedFrameworkVersion)
From 77bdf5f7ee45075c79c1cd803d1fc4a089fd3542 Mon Sep 17 00:00:00 2001
From: Mike Lorbetske
Date: Thu, 18 May 2017 14:53:44 -0700
Subject: [PATCH 09/32] Update to SetupCrossgen dev-119 - Coherence 25098
---
NuGet.Config | 2 +-
build/BundledRuntimes.props | 3 ++-
build/DependencyVersions.props | 11 +++++-----
.../commands/dotnet-new/NewCommandShim.cs | 22 +++++--------------
.../NuGet.tempaspnetpatch.config | 2 +-
.../NuGet.tempaspnetpatch.config | 2 +-
6 files changed, 16 insertions(+), 26 deletions(-)
diff --git a/NuGet.Config b/NuGet.Config
index 120a5daf6..6559a10f0 100644
--- a/NuGet.Config
+++ b/NuGet.Config
@@ -6,7 +6,7 @@
-
+
diff --git a/build/BundledRuntimes.props b/build/BundledRuntimes.props
index 8abc1c555..f9d2a589a 100644
--- a/build/BundledRuntimes.props
+++ b/build/BundledRuntimes.props
@@ -38,7 +38,8 @@
$(OSName)linux
- Build.RS.$(AspNetCoreRuntimeInstallerArchiveFileNameOSToken)$(ArchiveExtension)
+ -$(AspNetCoreCoherenceTimestamp)
+ Build.RS.$(AspNetCoreRuntimeInstallerArchiveFileNameOSToken)$(AspNetCoreRuntimeInstallerArchiveSuffix)$(ArchiveExtension)$(PackagesDirectory)/$(AspNetCoreRuntimeInstallerArchiveFileName)AspNetCorePackageStoreLib$(Architecture).wixlib
diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props
index 5ac3df41d..4ce7f7d6b 100644
--- a/build/DependencyVersions.props
+++ b/build/DependencyVersions.props
@@ -11,16 +11,17 @@
$(CLI_SharedFrameworkVersion)$(CLI_SharedFrameworkVersion)$(CLI_SharedFrameworkVersion)
- 1.0.0-beta2-20170503-217
- 1.0.0-beta2-20170505-222
- 1.0.0-beta2-20170505-222
+ 1.0.0-beta2-20170518-237
+ 1.0.0-beta2-20170518-237
+ 1.0.0-beta2-20170518-2372.0.0-preview1-0021112.0.0-preview1-0021110.1.0-alpha-142
- 2.0.0-preview1-92
- notimestamp
+ timestamped
+ dev-119
+ preview2-25098
diff --git a/src/dotnet/commands/dotnet-new/NewCommandShim.cs b/src/dotnet/commands/dotnet-new/NewCommandShim.cs
index 6e36fd9c0..7dea29376 100644
--- a/src/dotnet/commands/dotnet-new/NewCommandShim.cs
+++ b/src/dotnet/commands/dotnet-new/NewCommandShim.cs
@@ -6,6 +6,7 @@ using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
+using System.Reflection;
using Microsoft.DotNet.Cli;
using Microsoft.DotNet.Cli.Utils;
using Microsoft.DotNet.Configurer;
@@ -42,24 +43,11 @@ namespace Microsoft.DotNet.Tools.New
private static ITemplateEngineHost CreateHost()
{
- var builtIns = new Dictionary>
+ var builtIns = new AssemblyComponentCatalog(new[]
{
- { new Guid("0C434DF7-E2CB-4DEE-B216-D7C58C8EB4B3"), () => typeof(RunnableProjectGenerator) },
- { new Guid("3147965A-08E5-4523-B869-02C8E9A8AAA1"), () => typeof(BalancedNestingConfig) },
- { new Guid("3E8BCBF0-D631-45BA-A12D-FBF1DE03AA38"), () => typeof(ConditionalConfig) },
- { new Guid("A1E27A4B-9608-47F1-B3B8-F70DF62DC521"), () => typeof(FlagsConfig) },
- { new Guid("3FAE1942-7257-4247-B44D-2DDE07CB4A4A"), () => typeof(IncludeConfig) },
- { new Guid("3D33B3BF-F40E-43EB-A14D-F40516F880CD"), () => typeof(RegionConfig) },
- { new Guid("62DB7F1F-A10E-46F0-953F-A28A03A81CD1"), () => typeof(ReplacementConfig) },
- { new Guid("370996FE-2943-4AED-B2F6-EC03F0B75B4A"), () => typeof(ConstantMacro) },
- { new Guid("BB625F71-6404-4550-98AF-B2E546F46C5F"), () => typeof(EvaluateMacro) },
- { new Guid("10919008-4E13-4FA8-825C-3B4DA855578E"), () => typeof(GuidMacro) },
- { new Guid("F2B423D7-3C23-4489-816A-41D8D2A98596"), () => typeof(NowMacro) },
- { new Guid("011E8DC1-8544-4360-9B40-65FD916049B7"), () => typeof(RandomMacro) },
- { new Guid("8A4D4937-E23F-426D-8398-3BDBD1873ADB"), () => typeof(RegexMacro) },
- { new Guid("B57D64E0-9B4F-4ABE-9366-711170FD5294"), () => typeof(SwitchMacro) },
- { new Guid("10919118-4E13-4FA9-825C-3B4DA855578E"), () => typeof(CaseChangeMacro) }
- }.ToList();
+ typeof(RunnableProjectGenerator).GetTypeInfo().Assembly,
+ typeof(ConditionalConfig).GetTypeInfo().Assembly,
+ });
var preferences = new Dictionary
{
diff --git a/test/dotnet-migrate.Tests/NuGet.tempaspnetpatch.config b/test/dotnet-migrate.Tests/NuGet.tempaspnetpatch.config
index 33b9693d5..f38551286 100644
--- a/test/dotnet-migrate.Tests/NuGet.tempaspnetpatch.config
+++ b/test/dotnet-migrate.Tests/NuGet.tempaspnetpatch.config
@@ -6,6 +6,6 @@
-
+
\ No newline at end of file
diff --git a/test/dotnet-new.Tests/NuGet.tempaspnetpatch.config b/test/dotnet-new.Tests/NuGet.tempaspnetpatch.config
index 33b9693d5..f38551286 100644
--- a/test/dotnet-new.Tests/NuGet.tempaspnetpatch.config
+++ b/test/dotnet-new.Tests/NuGet.tempaspnetpatch.config
@@ -6,6 +6,6 @@
-
+
\ No newline at end of file
From 15abd5109e6798b88b0b4c1fb1f31b80fc84a367 Mon Sep 17 00:00:00 2001
From: mlorbetske
Date: Thu, 18 May 2017 20:44:38 -0700
Subject: [PATCH 10/32] Rollback update to package versions
---
build/DependencyVersions.props | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props
index 4ce7f7d6b..43aa99b5c 100644
--- a/build/DependencyVersions.props
+++ b/build/DependencyVersions.props
@@ -12,15 +12,15 @@
$(CLI_SharedFrameworkVersion)$(CLI_SharedFrameworkVersion)1.0.0-beta2-20170518-237
- 1.0.0-beta2-20170518-237
- 1.0.0-beta2-20170518-237
+ 1.0.0-beta2-20170505-222
+ 1.0.0-beta2-20170505-2222.0.0-preview1-0021112.0.0-preview1-0021110.1.0-alpha-142
- timestamped
- dev-119
+ notimestamp
+ 2.0.0-preview1-92preview2-25098
From fb1f98ba79977597418c4474d51becc7b6145751 Mon Sep 17 00:00:00 2001
From: mlorbetske
Date: Thu, 18 May 2017 20:46:58 -0700
Subject: [PATCH 11/32] Rollback changes to NuGet feeds for the packages
---
NuGet.Config | 2 +-
test/dotnet-migrate.Tests/NuGet.tempaspnetpatch.config | 2 +-
test/dotnet-new.Tests/NuGet.tempaspnetpatch.config | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/NuGet.Config b/NuGet.Config
index 6559a10f0..120a5daf6 100644
--- a/NuGet.Config
+++ b/NuGet.Config
@@ -6,7 +6,7 @@
-
+
diff --git a/test/dotnet-migrate.Tests/NuGet.tempaspnetpatch.config b/test/dotnet-migrate.Tests/NuGet.tempaspnetpatch.config
index f38551286..33b9693d5 100644
--- a/test/dotnet-migrate.Tests/NuGet.tempaspnetpatch.config
+++ b/test/dotnet-migrate.Tests/NuGet.tempaspnetpatch.config
@@ -6,6 +6,6 @@
-
+
\ No newline at end of file
diff --git a/test/dotnet-new.Tests/NuGet.tempaspnetpatch.config b/test/dotnet-new.Tests/NuGet.tempaspnetpatch.config
index f38551286..33b9693d5 100644
--- a/test/dotnet-new.Tests/NuGet.tempaspnetpatch.config
+++ b/test/dotnet-new.Tests/NuGet.tempaspnetpatch.config
@@ -6,6 +6,6 @@
-
+
\ No newline at end of file
From 846990c7cc9bd166f6f0a7641c6788062a55b9f0 Mon Sep 17 00:00:00 2001
From: Vijay Ramakrishnan
Date: Thu, 18 May 2017 22:37:39 -0700
Subject: [PATCH 12/32] Updating the version
---
build/DependencyVersions.props | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props
index f0e79ba63..6e3d6d7b7 100644
--- a/build/DependencyVersions.props
+++ b/build/DependencyVersions.props
@@ -6,7 +6,7 @@
2.0.0-rc4-61325-082.0.0-alpha-20170509-24.3.0-beta1-2418
- 2.0.0-rel-20170518-503
+ 2.0.0-rel-20170518-51215.3.0-preview-20170517-02$(CLI_SharedFrameworkVersion)$(CLI_SharedFrameworkVersion)
From f61d1ffbb092581da82cc8514c3fcaed7d12a58c Mon Sep 17 00:00:00 2001
From: Livar Cunha
Date: Fri, 19 May 2017 20:51:56 -0700
Subject: [PATCH 13/32] Adding a check for the min version in the CLI Resolver.
---
.../MSBuildSdkResolver.cs | 13 +-
.../Properties/AssemblyInfo.cs | 7 +
.../SemanticVersion.cs | 181 ++++++++++++++++++
.../StringExtensions.cs | 15 ++
...GivenThatIWantToCompareSemanticVersions.cs | 82 ++++++++
.../GivenThatWeWantToParseSemanticVersions.cs | 88 +++++++++
...oft.DotNet.MSBuildSdkResolver.Tests.csproj | 1 +
7 files changed, 386 insertions(+), 1 deletion(-)
create mode 100644 src/Microsoft.DotNet.MSBuildSdkResolver/Properties/AssemblyInfo.cs
create mode 100644 src/Microsoft.DotNet.MSBuildSdkResolver/SemanticVersion.cs
create mode 100644 src/Microsoft.DotNet.MSBuildSdkResolver/StringExtensions.cs
create mode 100644 test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenThatIWantToCompareSemanticVersions.cs
create mode 100644 test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenThatWeWantToParseSemanticVersions.cs
diff --git a/src/Microsoft.DotNet.MSBuildSdkResolver/MSBuildSdkResolver.cs b/src/Microsoft.DotNet.MSBuildSdkResolver/MSBuildSdkResolver.cs
index 418ee8bb8..414fd576b 100644
--- a/src/Microsoft.DotNet.MSBuildSdkResolver/MSBuildSdkResolver.cs
+++ b/src/Microsoft.DotNet.MSBuildSdkResolver/MSBuildSdkResolver.cs
@@ -53,6 +53,17 @@ namespace Microsoft.DotNet.MSBuildSdkResolver
netcoreSdkVersion = new DirectoryInfo(netcoreSdkDir).Name;;
}
+ if (SemanticVersion.Parse(netcoreSdkVersion) < SemanticVersion.Parse(sdkReference.MinimumVersion))
+ {
+ return factory.IndicateFailure(
+ new[]
+ {
+ $"Version {netcoreSdkVersion} of the SDK is smaller than the minimum version"
+ + $" {sdkReference.MinimumVersion} requested. Check that a recent enough .NET Core SDK is"
+ + " installed and/or increase the version specified in global.json."
+ });
+ }
+
string msbuildSdkDir = Path.Combine(msbuildSdksDir, sdkReference.Name, "Sdk");
if (!Directory.Exists(msbuildSdkDir))
{
@@ -60,7 +71,7 @@ namespace Microsoft.DotNet.MSBuildSdkResolver
new[]
{
$"{msbuildSdkDir} not found. Check that a recent enough .NET Core SDK is installed"
- + " and/or increase the version specified in global.json. "
+ + " and/or increase the version specified in global.json."
});
}
diff --git a/src/Microsoft.DotNet.MSBuildSdkResolver/Properties/AssemblyInfo.cs b/src/Microsoft.DotNet.MSBuildSdkResolver/Properties/AssemblyInfo.cs
new file mode 100644
index 000000000..4f10005e9
--- /dev/null
+++ b/src/Microsoft.DotNet.MSBuildSdkResolver/Properties/AssemblyInfo.cs
@@ -0,0 +1,7 @@
+// Copyright (c) .NET Foundation and contributors. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: InternalsVisibleTo("Microsoft.DotNet.MSBuildSdkResolver.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")]
\ No newline at end of file
diff --git a/src/Microsoft.DotNet.MSBuildSdkResolver/SemanticVersion.cs b/src/Microsoft.DotNet.MSBuildSdkResolver/SemanticVersion.cs
new file mode 100644
index 000000000..aeb3184f6
--- /dev/null
+++ b/src/Microsoft.DotNet.MSBuildSdkResolver/SemanticVersion.cs
@@ -0,0 +1,181 @@
+// Copyright (c) .NET Foundation and contributors. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+namespace Microsoft.DotNet.MSBuildSdkResolver
+{
+ internal sealed class SemanticVersion
+ {
+ public int Major { get; private set; }
+ public int Minor { get; private set; }
+ public int Patch { get; private set; }
+ public string Pre { get; private set; }
+ public string Build { get; private set; }
+
+ public SemanticVersion(int major, int minor, int patch) : this(major, minor, patch, string.Empty, string.Empty)
+ {
+ }
+
+ public SemanticVersion(int major, int minor, int patch, string pre) :
+ this(major, minor, patch, pre, string.Empty)
+ {
+ }
+
+ public SemanticVersion(int major, int minor, int patch, string pre, string build)
+ {
+ Major = major;
+ Minor = minor;
+ Patch = patch;
+ Pre = pre;
+ Build = build;
+ }
+
+ public static bool operator ==(SemanticVersion s1, SemanticVersion s2)
+ {
+ return Compare(s1, s2) == 0;
+ }
+
+ public static bool operator !=(SemanticVersion s1, SemanticVersion s2)
+ {
+ return !(s1 == s2);
+ }
+
+ public static bool operator <(SemanticVersion s1, SemanticVersion s2)
+ {
+ return Compare(s1, s2) < 0;
+ }
+
+ public static bool operator >(SemanticVersion s1, SemanticVersion s2)
+ {
+ return Compare(s1, s2) > 0;
+ }
+
+ public static bool operator >=(SemanticVersion s1, SemanticVersion s2)
+ {
+ return Compare(s1, s2) >= 0;
+ }
+
+ public static bool operator <=(SemanticVersion s1, SemanticVersion s2)
+ {
+ return Compare(s1, s2) <= 0;
+ }
+
+ public static SemanticVersion Parse(string semanticVersionString)
+ {
+ int majorSeparator = semanticVersionString.IndexOf(".");
+ if (majorSeparator == -1)
+ {
+ return null;
+ }
+
+ int major = 0;
+ if (!int.TryParse(semanticVersionString.Substring(0, majorSeparator), out major))
+ {
+ return null;
+ }
+
+ int minorStart = majorSeparator + 1;
+ int minorSeparator = semanticVersionString.IndexOf(".", minorStart);
+ if (minorSeparator == -1)
+ {
+ return null;
+ }
+
+ int minor = 0;
+ if (!int.TryParse(semanticVersionString.Substring(minorStart, minorSeparator - minorStart), out minor))
+ {
+ return null;
+ }
+
+ int patch = 0;
+ int patchStart = minorSeparator + 1;
+ int patchSeparator = semanticVersionString.FindFirstNotOf("0123456789", patchStart);
+ if (patchSeparator == -1)
+ {
+ if (!int.TryParse(semanticVersionString.Substring(patchStart), out patch))
+ {
+ return null;
+ }
+
+ return new SemanticVersion(major, minor, patch);
+ }
+
+ if (!int.TryParse(semanticVersionString.Substring(patchStart, patchSeparator - patchStart), out patch))
+ {
+ return null;
+ }
+
+ int preStart = patchSeparator;
+ int preSeparator = semanticVersionString.IndexOf("+", preStart);
+ if (preSeparator == -1)
+ {
+ return new SemanticVersion(major, minor, patch, semanticVersionString.Substring(preStart));
+ }
+ else
+ {
+ int buildStart = preSeparator + 1;
+ return new SemanticVersion(
+ major,
+ minor,
+ patch,
+ semanticVersionString.Substring(preStart, preSeparator - preStart),
+ semanticVersionString.Substring(buildStart));
+ }
+ }
+
+ public override bool Equals(object obj)
+ {
+ if (obj == null)
+ {
+ return false;
+ }
+
+ var other = obj as SemanticVersion;
+ if (other == null)
+ {
+ return false;
+ }
+
+ return this == other;
+ }
+
+ public override int GetHashCode()
+ {
+ return Major.GetHashCode() ^
+ Minor.GetHashCode() ^
+ Patch.GetHashCode() ^
+ Pre.GetHashCode() ^
+ Build.GetHashCode();
+ }
+
+ private static int Compare(SemanticVersion s1, SemanticVersion s2)
+ {
+ if (s1.Major != s2.Major)
+ {
+ return s1.Major > s2.Major ? 1 : -1;
+ }
+
+ if (s1.Minor != s2.Minor)
+ {
+ return s1.Minor > s2.Minor ? 1 : -1;
+ }
+
+ if (s1.Patch != s2.Patch)
+ {
+ return s1.Patch > s2.Patch ? 1 : -1;
+ }
+
+ if (string.IsNullOrEmpty(s1.Pre) != string.IsNullOrEmpty(s2.Pre))
+ {
+ return string.IsNullOrEmpty(s1.Pre) ? 1 : -1;
+ }
+
+ int preCompare = string.Compare(s1.Pre, s2.Pre);
+ if (preCompare != 0)
+ {
+ return preCompare;
+ }
+
+ return string.Compare(s1.Build, s2.Build);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Microsoft.DotNet.MSBuildSdkResolver/StringExtensions.cs b/src/Microsoft.DotNet.MSBuildSdkResolver/StringExtensions.cs
new file mode 100644
index 000000000..8382008c9
--- /dev/null
+++ b/src/Microsoft.DotNet.MSBuildSdkResolver/StringExtensions.cs
@@ -0,0 +1,15 @@
+namespace Microsoft.DotNet.MSBuildSdkResolver
+{
+ internal static class StringExtensions
+ {
+ public static int FindFirstNotOf(this string s, string chars, int startIndex)
+ {
+ for (int i = startIndex; i < s.Length; i++)
+ {
+ if (chars.IndexOf(s[i]) == -1) return i;
+ }
+
+ return -1;
+ }
+ }
+}
\ No newline at end of file
diff --git a/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenThatIWantToCompareSemanticVersions.cs b/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenThatIWantToCompareSemanticVersions.cs
new file mode 100644
index 000000000..ee1e4f85e
--- /dev/null
+++ b/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenThatIWantToCompareSemanticVersions.cs
@@ -0,0 +1,82 @@
+// Copyright (c) .NET Foundation and contributors. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+using Xunit;
+using Microsoft.DotNet.MSBuildSdkResolver;
+using FluentAssertions;
+
+namespace Microsoft.DotNet.Cli.Utils.Tests
+{
+ public class GivenThatWeWantToCompareSemanticVersions
+ {
+ [Theory]
+ [InlineData("2.0.0", "1.0.0")]
+ [InlineData("1.1.0", "1.0.0")]
+ [InlineData("1.0.1", "1.0.0")]
+ [InlineData("1.0.0", "1.0.0-pre")]
+ [InlineData("1.0.0-pre+2", "1.0.0-pre+1")]
+ public void OneSemanticVersionIsBiggerThanTheOther(string s1, string s2)
+ {
+ var biggerThan = SemanticVersion.Parse(s1) > SemanticVersion.Parse(s2);
+ var smallerThan = SemanticVersion.Parse(s1) < SemanticVersion.Parse(s2);
+ biggerThan.Should().BeTrue();
+ smallerThan.Should().BeFalse();
+ }
+
+ [Theory]
+ [InlineData("1.0.0", "2.0.0")]
+ [InlineData("1.0.0", "1.1.0")]
+ [InlineData("1.0.0", "1.0.1")]
+ [InlineData("1.0.0-pre", "1.0.0")]
+ [InlineData("1.0.0-pre+1", "1.0.0-pre+2")]
+ public void OneSemanticVersionIsSmallerThanTheOther(string s1, string s2)
+ {
+ var smallerThan = SemanticVersion.Parse(s1) < SemanticVersion.Parse(s2);
+ var biggerThan = SemanticVersion.Parse(s1) > SemanticVersion.Parse(s2);
+ smallerThan.Should().BeTrue();
+ biggerThan.Should().BeFalse();
+ }
+
+ [Theory]
+ [InlineData("2.0.0", "1.0.0")]
+ [InlineData("1.0.0", "1.0.0")]
+ public void OneSemanticVersionIsBiggerThanOrEqualsTheOther(string s1, string s2)
+ {
+ var biggerThanOrEquals = SemanticVersion.Parse(s1) >= SemanticVersion.Parse(s2);
+ biggerThanOrEquals.Should().BeTrue();
+ }
+
+ [Theory]
+ [InlineData("1.0.0", "2.0.0")]
+ [InlineData("1.0.0", "1.0.0")]
+ public void OneSemanticVersionIsSmallerThanOrEqualsTheOther(string s1, string s2)
+ {
+ var smallerThanOrEquals = SemanticVersion.Parse(s1) <= SemanticVersion.Parse(s2);
+ smallerThanOrEquals.Should().BeTrue();
+ }
+
+ [Theory]
+ [InlineData("1.2.3", "1.2.3")]
+ [InlineData("1.2.3-pre", "1.2.3-pre")]
+ [InlineData("1.2.3-pre+1", "1.2.3-pre+1")]
+ public void SemanticVersionsCanBeEqual(string s1, string s2)
+ {
+ var equals = SemanticVersion.Parse(s1) == SemanticVersion.Parse(s2);
+ var different = SemanticVersion.Parse(s1) != SemanticVersion.Parse(s2);
+ equals.Should().BeTrue();
+ different.Should().BeFalse();
+ }
+
+ [Theory]
+ [InlineData("1.2.3", "1.2.0")]
+ [InlineData("1.2.3-pre", "1.2.3-pra")]
+ [InlineData("1.2.3-pre+1", "1.2.3-pre+2")]
+ public void SemanticVersionsCanBeDifferent(string s1, string s2)
+ {
+ var different = SemanticVersion.Parse(s1) != SemanticVersion.Parse(s2);
+ var equals = SemanticVersion.Parse(s1) == SemanticVersion.Parse(s2);
+ different.Should().BeTrue();
+ equals.Should().BeFalse();
+ }
+ }
+}
\ No newline at end of file
diff --git a/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenThatWeWantToParseSemanticVersions.cs b/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenThatWeWantToParseSemanticVersions.cs
new file mode 100644
index 000000000..6adf1ba96
--- /dev/null
+++ b/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenThatWeWantToParseSemanticVersions.cs
@@ -0,0 +1,88 @@
+// Copyright (c) .NET Foundation and contributors. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+using Xunit;
+using Microsoft.DotNet.MSBuildSdkResolver;
+using FluentAssertions;
+
+namespace Microsoft.DotNet.Cli.Utils.Tests
+{
+ public class GivenThatWeWantToParseSemanticVersions
+ {
+ [Fact]
+ public void ReturnsNullWhenNoMajorSeparatorIsFound()
+ {
+ var semanticVersion = SemanticVersion.Parse("1");
+
+ semanticVersion.Should().BeNull();
+ }
+
+ [Fact]
+ public void ReturnsNullWhenMajorPortionIsNotANumber()
+ {
+ var semanticVersion = SemanticVersion.Parse("a.0.0");
+
+ semanticVersion.Should().BeNull();
+ }
+
+ [Fact]
+ public void ReturnsNullWhenNoMinorSeparatorIsFound()
+ {
+ var semanticVersion = SemanticVersion.Parse("1.0");
+
+ semanticVersion.Should().BeNull();
+ }
+
+ [Fact]
+ public void ReturnsNullWhenMinorPortionIsNotANumber()
+ {
+ var semanticVersion = SemanticVersion.Parse("1.a.0");
+
+ semanticVersion.Should().BeNull();
+ }
+
+ [Fact]
+ public void ReturnsNullWhenPatchPortionIsNotANumber()
+ {
+ var semanticVersion = SemanticVersion.Parse("1.0.a");
+
+ semanticVersion.Should().BeNull();
+ }
+
+ [Fact]
+ public void ReturnsSemanticVersionWhenOnlyMajorMinorPatchIsFound()
+ {
+ var semanticVersion = SemanticVersion.Parse("1.2.3");
+
+ semanticVersion.Should().NotBeNull();
+ semanticVersion.Major.Should().Be(1);
+ semanticVersion.Minor.Should().Be(2);
+ semanticVersion.Patch.Should().Be(3);
+ }
+
+ [Fact]
+ public void ReturnsSemanticVersionWhenOnlyMajorMinorPatchAndPreIsFound()
+ {
+ var semanticVersion = SemanticVersion.Parse("1.2.3-pre");
+
+ semanticVersion.Should().NotBeNull();
+ semanticVersion.Major.Should().Be(1);
+ semanticVersion.Minor.Should().Be(2);
+ semanticVersion.Patch.Should().Be(3);
+ semanticVersion.Pre.Should().Be("-pre");
+ }
+
+ [Fact]
+ public void ReturnsSemanticVersionWhenMajorMinorPatchAndPreAndBuildIsFound()
+ {
+ var semanticVersion = SemanticVersion.Parse("1.2.3-pre+build");
+
+ semanticVersion.Should().NotBeNull();
+ semanticVersion.Major.Should().Be(1);
+ semanticVersion.Minor.Should().Be(2);
+ semanticVersion.Patch.Should().Be(3);
+ semanticVersion.Pre.Should().Be("-pre");
+ semanticVersion.Build.Should().Be("build");
+ }
+ }
+}
\ No newline at end of file
diff --git a/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/Microsoft.DotNet.MSBuildSdkResolver.Tests.csproj b/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/Microsoft.DotNet.MSBuildSdkResolver.Tests.csproj
index 521db63a2..eed809d9d 100644
--- a/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/Microsoft.DotNet.MSBuildSdkResolver.Tests.csproj
+++ b/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/Microsoft.DotNet.MSBuildSdkResolver.Tests.csproj
@@ -21,6 +21,7 @@
+
From a4213f78e0e11c666006bcf605640b70dc10a9fd Mon Sep 17 00:00:00 2001
From: Livar Cunha
Date: Fri, 19 May 2017 22:40:11 -0700
Subject: [PATCH 14/32] Adding more tests for the min version check in the
resolver.
---
.../MSBuildSdkResolver.cs | 3 +-
.../Properties/AssemblyInfo.cs | 7 ---
.../GivenAnMSBuildSdkResolver.cs | 61 ++++++++++++++++++-
3 files changed, 62 insertions(+), 9 deletions(-)
delete mode 100644 src/Microsoft.DotNet.MSBuildSdkResolver/Properties/AssemblyInfo.cs
diff --git a/src/Microsoft.DotNet.MSBuildSdkResolver/MSBuildSdkResolver.cs b/src/Microsoft.DotNet.MSBuildSdkResolver/MSBuildSdkResolver.cs
index 414fd576b..882ad8c65 100644
--- a/src/Microsoft.DotNet.MSBuildSdkResolver/MSBuildSdkResolver.cs
+++ b/src/Microsoft.DotNet.MSBuildSdkResolver/MSBuildSdkResolver.cs
@@ -53,7 +53,8 @@ namespace Microsoft.DotNet.MSBuildSdkResolver
netcoreSdkVersion = new DirectoryInfo(netcoreSdkDir).Name;;
}
- if (SemanticVersion.Parse(netcoreSdkVersion) < SemanticVersion.Parse(sdkReference.MinimumVersion))
+ if (!string.IsNullOrEmpty(sdkReference.MinimumVersion) &&
+ SemanticVersion.Parse(netcoreSdkVersion) < SemanticVersion.Parse(sdkReference.MinimumVersion))
{
return factory.IndicateFailure(
new[]
diff --git a/src/Microsoft.DotNet.MSBuildSdkResolver/Properties/AssemblyInfo.cs b/src/Microsoft.DotNet.MSBuildSdkResolver/Properties/AssemblyInfo.cs
deleted file mode 100644
index 4f10005e9..000000000
--- a/src/Microsoft.DotNet.MSBuildSdkResolver/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) .NET Foundation and contributors. All rights reserved.
-// Licensed under the MIT license. See LICENSE file in the project root for full license information.
-
-using System.Reflection;
-using System.Runtime.CompilerServices;
-
-[assembly: InternalsVisibleTo("Microsoft.DotNet.MSBuildSdkResolver.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")]
\ No newline at end of file
diff --git a/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenAnMSBuildSdkResolver.cs b/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenAnMSBuildSdkResolver.cs
index 5870dab63..fc3b47901 100644
--- a/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenAnMSBuildSdkResolver.cs
+++ b/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenAnMSBuildSdkResolver.cs
@@ -47,13 +47,72 @@ namespace Microsoft.DotNet.Cli.Utils.Tests
new MockContext { ProjectFilePath = environment.TestDirectory.FullName },
new MockFactory());
- result.Success.Should().Be(true);
+ result.Success.Should().BeTrue();
result.Path.Should().Be(expected.FullName);
result.Version.Should().Be("99.99.98");
result.Warnings.Should().BeNullOrEmpty();
result.Errors.Should().BeNullOrEmpty();
}
+ [Fact]
+ public void ItReturnsNullIfTheVersionFoundDoesNotSatisfyTheMinVersion()
+ {
+ var environment = new TestEnvironment();
+ environment.CreateSdkDirectory(ProgramFiles.X64, "Some.Test.Sdk", "99.99.99");
+
+ var resolver = environment.CreateResolver();
+ var result = (MockResult)resolver.Resolve(
+ new SdkReference("Some.Test.Sdk", null, "999.99.99"),
+ new MockContext { ProjectFilePath = environment.TestDirectory.FullName },
+ new MockFactory());
+
+ result.Success.Should().BeFalse();
+ result.Path.Should().BeNull();
+ result.Version.Should().BeNull();
+ result.Warnings.Should().BeNullOrEmpty();
+ result.Errors.Should().Contain("Version 99.99.99 of the SDK is smaller than the minimum version 999.99.99"
+ + " requested. Check that a recent enough .NET Core SDK is installed and/or increase the version"
+ + " specified in global.json.");
+ }
+
+ [Fact]
+ public void ItReturnsTheVersionIfItIsEqualToTheMinVersion()
+ {
+ var environment = new TestEnvironment();
+ var expected = environment.CreateSdkDirectory(ProgramFiles.X64, "Some.Test.Sdk", "99.99.99");
+
+ var resolver = environment.CreateResolver();
+ var result = (MockResult)resolver.Resolve(
+ new SdkReference("Some.Test.Sdk", null, "99.99.99"),
+ new MockContext { ProjectFilePath = environment.TestDirectory.FullName },
+ new MockFactory());
+
+ result.Success.Should().BeTrue();
+ result.Path.Should().Be(expected.FullName);
+ result.Version.Should().Be("99.99.99");
+ result.Warnings.Should().BeNullOrEmpty();
+ result.Errors.Should().BeNullOrEmpty();
+ }
+
+ [Fact]
+ public void ItReturnsTheVersionIfItIsHigherThanTheMinVersion()
+ {
+ var environment = new TestEnvironment();
+ var expected = environment.CreateSdkDirectory(ProgramFiles.X64, "Some.Test.Sdk", "999.99.99");
+
+ var resolver = environment.CreateResolver();
+ var result = (MockResult)resolver.Resolve(
+ new SdkReference("Some.Test.Sdk", null, "99.99.99"),
+ new MockContext { ProjectFilePath = environment.TestDirectory.FullName },
+ new MockFactory());
+
+ result.Success.Should().BeTrue();
+ result.Path.Should().Be(expected.FullName);
+ result.Version.Should().Be("999.99.99");
+ result.Warnings.Should().BeNullOrEmpty();
+ result.Errors.Should().BeNullOrEmpty();
+ }
+
private enum ProgramFiles
{
X64,
From 3db157aba66ca9c2d8f838b31926fefc78342c6b Mon Sep 17 00:00:00 2001
From: John Beisner
Date: Mon, 22 May 2017 12:53:52 -0700
Subject: [PATCH 15/32] First draft changes for install script for the SDK and
Runtime.
---
scripts/obtain/dotnet-install.ps1 | 57 ++++------
scripts/obtain/dotnet-install.sh | 180 ++++++++++++++++++++----------
2 files changed, 146 insertions(+), 91 deletions(-)
diff --git a/scripts/obtain/dotnet-install.ps1 b/scripts/obtain/dotnet-install.ps1
index c2f5e6d15..737928e49 100644
--- a/scripts/obtain/dotnet-install.ps1
+++ b/scripts/obtain/dotnet-install.ps1
@@ -10,18 +10,14 @@
Installs dotnet cli. If dotnet installation already exists in the given directory
it will update it only if the requested version differs from the one already installed.
.PARAMETER Channel
- Default: preview
- Channel is the way of reasoning about stability and quality of dotnet. This parameter takes one of the values:
- - future - Possibly unstable, frequently changing, may contain new finished and unfinished features
- - preview - Pre-release stable with known issues and feature gaps
- - production - Most stable releases
+ Default: master
+ Download from the Channel specified
.PARAMETER Version
Default: latest
Represents a build version on specific channel. Possible values:
- - 4-part version in a format A.B.C.D - represents specific version of build
- latest - most latest build on specific channel
- - lkg - last known good version on specific channel
- Note: LKG work is in progress. Once the work is finished, this will become new default
+ - 3-part version in a format A.B.C - represents specific version of build
+ examples: 2.0.0-preview2-006120; 1.1.0
.PARAMETER InstallDir
Default: %LocalAppData%\Microsoft\dotnet
Path to where to install dotnet. Note that binaries will be placed directly in a given directory.
@@ -46,7 +42,11 @@
Displays diagnostics information.
.PARAMETER AzureFeed
Default: https://dotnetcli.azureedge.net/dotnet
- This parameter should not be usually changed by user. It allows to change URL for the Azure feed used by this installer.
+ This parameter typically is not changed by the user.
+ It allows to change URL for the Azure feed used by this installer.
+.PARAMETER UncachedFeed
+ This parameter typically is not changed by the user.
+ It allows to change URL for the Uncached feed used by this installer.
.PARAMETER ProxyAddress
If set, the installer will use the proxy when making web requests
.PARAMETER ProxyUseDefaultCredentials
@@ -55,7 +55,7 @@
#>
[cmdletbinding()]
param(
- [string]$Channel="rel-1.0.0",
+ [string]$Channel="master",
[string]$Version="Latest",
[string]$InstallDir="",
[string]$Architecture="",
@@ -149,8 +149,8 @@ function GetHTTPResponse([Uri] $Uri)
$HttpClient = New-Object System.Net.Http.HttpClient
}
# Default timeout for HttpClient is 100s. For a 50 MB download this assumes 500 KB/s average, any less will time out
- # 5 minutes allows it to work over much slower connections.
- $HttpClient.Timeout = New-TimeSpan -Minutes 5
+ # 10 minutes allows it to work over much slower connections.
+ $HttpClient.Timeout = New-TimeSpan -Minutes 10
$Response = $HttpClient.GetAsync($Uri).Result
if (($Response -eq $null) -or (-not ($Response.IsSuccessStatusCode)))
{
@@ -173,15 +173,15 @@ function GetHTTPResponse([Uri] $Uri)
}
-function Get-Latest-Version-Info([string]$AzureFeed, [string]$AzureChannel, [string]$CLIArchitecture) {
+function Get-Latest-Version-Info([string]$AzureFeed, [string]$Channel, [string]$CLIArchitecture) {
Say-Invocation $MyInvocation
$VersionFileUrl = $null
if ($SharedRuntime) {
- $VersionFileUrl = "$UncachedFeed/$AzureChannel/dnvm/latest.sharedfx.win.$CLIArchitecture.version"
+ $VersionFileUrl = "$UncachedFeed/Runtime/$Channel/latest.version"
}
else {
- $VersionFileUrl = "$UncachedFeed/Sdk/$AzureChannel/latest.version"
+ $VersionFileUrl = "$UncachedFeed/Sdk/$Channel/latest.version"
}
$Response = GetHTTPResponse -Uri $VersionFileUrl
@@ -189,7 +189,7 @@ function Get-Latest-Version-Info([string]$AzureFeed, [string]$AzureChannel, [str
switch ($Response.Content.Headers.ContentType) {
{ ($_ -eq "application/octet-stream") } { $VersionText = [Text.Encoding]::UTF8.GetString($StringContent) }
- { ($_ -eq "text/plain") } { $VersionText = $StringContent }
+ { ($_ -eq "text/plain") } { ($_ -eq "text/plain; charset=UTF-8") } { $VersionText = $StringContent }
default { throw "``$Response.Content.Headers.ContentType`` is an unknown .version file content type." }
}
@@ -198,38 +198,26 @@ function Get-Latest-Version-Info([string]$AzureFeed, [string]$AzureChannel, [str
return $VersionInfo
}
-# TODO: AzureChannel and Channel should be unified
-function Get-Azure-Channel-From-Channel([string]$Channel) {
- Say-Invocation $MyInvocation
- # For compatibility with build scripts accept also directly Azure channels names
- switch ($Channel.ToLower()) {
- { ($_ -eq "future") -or ($_ -eq "dev") } { return "dev" }
- { $_ -eq "production" } { throw "Production channel does not exist yet" }
- default { return $_ }
- }
-}
-
-function Get-Specific-Version-From-Version([string]$AzureFeed, [string]$AzureChannel, [string]$CLIArchitecture, [string]$Version) {
+function Get-Specific-Version-From-Version([string]$AzureFeed, [string]$Channel, [string]$CLIArchitecture, [string]$Version) {
Say-Invocation $MyInvocation
switch ($Version.ToLower()) {
{ $_ -eq "latest" } {
- $LatestVersionInfo = Get-Latest-Version-Info -AzureFeed $AzureFeed -AzureChannel $AzureChannel -CLIArchitecture $CLIArchitecture
+ $LatestVersionInfo = Get-Latest-Version-Info -AzureFeed $AzureFeed -Channel $Channel -CLIArchitecture $CLIArchitecture
return $LatestVersionInfo.Version
}
- { $_ -eq "lkg" } { throw "``-Version LKG`` not supported yet." }
default { return $Version }
}
}
-function Get-Download-Links([string]$AzureFeed, [string]$AzureChannel, [string]$SpecificVersion, [string]$CLIArchitecture) {
+function Get-Download-Links([string]$AzureFeed, [string]$Channel, [string]$SpecificVersion, [string]$CLIArchitecture) {
Say-Invocation $MyInvocation
$ret = @()
if ($SharedRuntime) {
- $PayloadURL = "$AzureFeed/$AzureChannel/Binaries/$SpecificVersion/dotnet-win-$CLIArchitecture.$SpecificVersion.zip"
+ $PayloadURL = "$AzureFeed/Runtime/$SpecificVersion/dotnet-sharedframework-win-$CLIArchitecture.$SpecificVersion.zip"
}
else {
$PayloadURL = "$AzureFeed/Sdk/$SpecificVersion/dotnet-dev-win-$CLIArchitecture.$SpecificVersion.zip"
@@ -394,10 +382,9 @@ function Prepend-Sdk-InstallRoot-To-Path([string]$InstallRoot, [string]$BinFolde
}
}
-$AzureChannel = Get-Azure-Channel-From-Channel -Channel $Channel
$CLIArchitecture = Get-CLIArchitecture-From-Architecture $Architecture
-$SpecificVersion = Get-Specific-Version-From-Version -AzureFeed $AzureFeed -AzureChannel $AzureChannel -CLIArchitecture $CLIArchitecture -Version $Version
-$DownloadLinks = Get-Download-Links -AzureFeed $AzureFeed -AzureChannel $AzureChannel -SpecificVersion $SpecificVersion -CLIArchitecture $CLIArchitecture
+$SpecificVersion = Get-Specific-Version-From-Version -AzureFeed $AzureFeed -Channel $Channel -CLIArchitecture $CLIArchitecture -Version $Version
+$DownloadLinks = Get-Download-Links -AzureFeed $AzureFeed -Channel $Channel -SpecificVersion $SpecificVersion -CLIArchitecture $CLIArchitecture
if ($DryRun) {
Say "Payload URLs:"
diff --git a/scripts/obtain/dotnet-install.sh b/scripts/obtain/dotnet-install.sh
index ecb28613b..337662e6b 100755
--- a/scripts/obtain/dotnet-install.sh
+++ b/scripts/obtain/dotnet-install.sh
@@ -111,6 +111,22 @@ get_os_download_name_from_platform() {
get_current_os_name() {
eval $invocation
+ local uname=$(uname)
+ if [ "$uname" = "Darwin" ]; then
+ echo "osx"
+ return 0
+ else [ "$uname" = "Linux" ]; then
+ echo "linux"
+ return 0
+ fi
+
+ say_err "OS name could not be detected: $ID.$VERSION_ID"
+ return 1
+}
+
+get_distro_specific_os_name() {
+ eval $invocation
+
local uname=$(uname)
if [ "$uname" = "Darwin" ]; then
echo "osx"
@@ -140,12 +156,19 @@ machine_has() {
return $?
}
+
check_min_reqs() {
- if ! machine_has "curl"; then
- say_err "curl is required to download dotnet. Install curl to proceed."
+ local hasMinimum=false
+ if machine_has "curl"; then
+ hasMinimum=true;
+ fi
+ if machine_has "wget"; then
+ hasMinimum=true;
+ fi
+ if [ "$hasMinimum" = "false" ]; then
+ say_err "curl (recommended) or wget are required to download dotnet. Install missing prerequisite to proceed."
return 1
fi
-
return 0
}
@@ -307,23 +330,20 @@ is_dotnet_package_installed() {
# args:
# azure_feed - $1
-# azure_channel - $2
+# channel - $2
# normalized_architecture - $3
get_latest_version_info() {
eval $invocation
local azure_feed=$1
- local azure_channel=$2
+ local channel=$2
local normalized_architecture=$3
-
- local osname
- osname=$(get_current_os_name) || return 1
local version_file_url=null
if [ "$shared_runtime" = true ]; then
- version_file_url="$uncached_feed/$azure_channel/dnvm/latest.sharedfx.$osname.$normalized_architecture.version"
+ version_file_url="$uncached_feed/Runtime/$channel/latest.version"
else
- version_file_url="$uncached_feed/Sdk/$azure_channel/latest.version"
+ version_file_url="$uncached_feed/Sdk/$channel/latest.version"
fi
say_verbose "get_latest_version_info: latest url: $version_file_url"
@@ -331,51 +351,27 @@ get_latest_version_info() {
return $?
}
-# args:
-# channel - $1
-get_azure_channel_from_channel() {
- eval $invocation
-
- local channel=$(to_lowercase $1)
- case $channel in
- future|dev)
- echo "dev"
- return 0
- ;;
- production)
- say_err "Production channel does not exist yet"
- return 1
- esac
-
- echo $channel
- return 0
-}
-
# args:
# azure_feed - $1
-# azure_channel - $2
+# channel - $2
# normalized_architecture - $3
# version - $4
get_specific_version_from_version() {
eval $invocation
local azure_feed=$1
- local azure_channel=$2
+ local channel=$2
local normalized_architecture=$3
local version=$(to_lowercase $4)
case $version in
latest)
local version_info
- version_info="$(get_latest_version_info $azure_feed $azure_channel $normalized_architecture)" || return 1
+ version_info="$(get_latest_version_info $azure_feed $channel $normalized_architecture)" || return 1
say_verbose "get_specific_version_from_version: version_info=$version_info"
echo "$version_info" | get_version_from_version_info
return 0
;;
- lkg)
- say_err "``--version LKG`` not supported yet."
- return 1
- ;;
*)
echo $version
return 0
@@ -385,23 +381,23 @@ get_specific_version_from_version() {
# args:
# azure_feed - $1
-# azure_channel - $2
+# channel - $2
# normalized_architecture - $3
# specific_version - $4
construct_download_link() {
eval $invocation
local azure_feed=$1
- local azure_channel=$2
+ local channel=$2
local normalized_architecture=$3
local specific_version=${4//[$'\t\r\n']}
local osname
osname=$(get_current_os_name) || return 1
-
+
local download_link=null
if [ "$shared_runtime" = true ]; then
- download_link="$azure_feed/$azure_channel/Binaries/$specific_version/dotnet-$osname-$normalized_architecture.$specific_version.tar.gz"
+ download_link="$azure_feed/Runtime/$specific_version/dotnet-sharedframework-$osname-$normalized_architecture.$specific_version.tar.gz"
else
download_link="$azure_feed/Sdk/$specific_version/dotnet-dev-$osname-$normalized_architecture.$specific_version.tar.gz"
fi
@@ -410,6 +406,33 @@ construct_download_link() {
return 0
}
+# args:
+# azure_feed - $1
+# channel - $2
+# normalized_architecture - $3
+# specific_version - $4
+construct_alt_download_link() {
+ eval $invocation
+
+ local azure_feed=$1
+ local channel=$2
+ local normalized_architecture=$3
+ local specific_version=${4//[$'\t\r\n']}
+
+ local distro_specific_osname
+ distro_specific_osname=$(get_distro_specific_os_name) || return 1
+
+ local alt_download_link=null
+ if [ "$shared_runtime" = true ]; then
+ alt_download_link="$azure_feed/Runtime/$specific_version/dotnet-sharedframework-$distro_specific_osname-$normalized_architecture.$specific_version.tar.gz"
+ else
+ alt_download_link="$azure_feed/Sdk/$specific_version/dotnet-dev-$distro_specific_osname-$normalized_architecture.$specific_version.tar.gz"
+ fi
+
+ echo "$alt_download_link"
+ return 0
+}
+
get_user_install_path() {
eval $invocation
@@ -520,42 +543,70 @@ extract_dotnet_package() {
# [out_path] - $2 - stdout if not provided
download() {
eval $invocation
-
+
local remote_path=$1
local out_path=${2:-}
local failed=false
- if [ -z "$out_path" ]; then
- curl --fail -s $remote_path || failed=true
- else
- curl --fail -s -o $out_path $remote_path || failed=true
+ if machine_has "curl"; then
+ downloadcurl $remote_path $out_path || failed=true
+ elif machine_has "wget"; then
+ downloadwget $remote_path $out_path || failed=true
fi
-
if [ "$failed" = true ]; then
say_err "Download failed"
return 1
fi
}
+downloadcurl() {
+ eval $invocation
+ local remote_path=$1
+ local out_path=${2:-}
+
+ local failed=false
+ if [ -z "$out_path" ]; then
+ curl --retry 10 -sSL --create-dirs $remote_path || failed=true
+ else
+ curl --retry 10 -sSL --create-dirs -o $out_path $remote_path || failed=true
+ fi
+}
+
+downloadwget() {
+ eval $invocation
+ local remote_path=$1
+ local out_path=${2:-}
+
+ local failed=false
+ if [ -z "$out_path" ]; then
+ wget -q --tries 10 $remote_path || failed=true
+ else
+ wget -v --tries 10 -O $out_path $remote_path || failed=true
+ fi
+}
+
calculate_vars() {
eval $invocation
- azure_channel=$(get_azure_channel_from_channel "$channel")
- say_verbose "azure_channel=$azure_channel"
-
normalized_architecture=$(get_normalized_architecture_from_architecture "$architecture")
say_verbose "normalized_architecture=$normalized_architecture"
- specific_version=$(get_specific_version_from_version $azure_feed $azure_channel $normalized_architecture $version)
+ specific_version=$(get_specific_version_from_version $azure_feed $channel $normalized_architecture $version)
say_verbose "specific_version=$specific_version"
if [ -z "$specific_version" ]; then
say_err "Could not get version information."
return 1
fi
- download_link=$(construct_download_link $azure_feed $azure_channel $normalized_architecture $specific_version)
+ download_link=$(construct_download_link $azure_feed $channel $normalized_architecture $specific_version)
say_verbose "download_link=$download_link"
-
+
+ if [ "$uname" = "Linux" ]; then
+ alt_download_link=$(construct_alt_download_link $azure_feed $channel $normalized_architecture $specific_version)
+ say_verbose "alt_download_link=$alt_download_link"
+ return 0
+ fi
+
install_root=$(resolve_installation_path $install_dir)
say_verbose "install_root=$install_root"
}
@@ -574,6 +625,14 @@ install_dotnet() {
say "Downloading $download_link"
download "$download_link" $zip_path
+
+ # if the download fails, download the alt_download_link
+ if [ "$uname" = "Linux" ] && [ -r $zip_path ]; then
+ say "Downloading $alt_download_link"
+ download "$alt_download_link" $zip_path
+ return 0
+ fi
+
say_verbose "Downloaded file exists and readable? $(if [ -r $zip_path ]; then echo "yes"; else echo "no"; fi)"
say "Extracting zip"
@@ -586,7 +645,7 @@ local_version_file_relative_path="/.version"
bin_folder_relative_path=""
temporary_file_template="${TMPDIR:-/tmp}/dotnet.XXXXXXXXX"
-channel="rel-1.0.0"
+channel="master"
version="Latest"
install_dir=""
architecture=""
@@ -638,6 +697,10 @@ do
shift
azure_feed="$1"
;;
+ --uncached-feed|-[Uu]ncached[Ff]eed)
+ shift
+ uncached_feed="$1"
+ ;;
--runtime-id|-[Rr]untime[Ii]d)
shift
runtime_id="$1"
@@ -653,7 +716,7 @@ do
echo "Options:"
echo " -c,--channel Download from the CHANNEL specified (default: $channel)."
echo " -Channel"
- echo " -v,--version Use specific version, ``latest`` or ``lkg``. Defaults to ``latest``."
+ echo " -v,--version Use specific version, ``latest``. Defaults to ``latest``."
echo " -Version"
echo " -i,--install-dir Install under specified location (see Install Location below)"
echo " -InstallDir"
@@ -665,7 +728,8 @@ do
echo " --dry-run,-DryRun Do not perform installation. Display download link."
echo " --no-path, -NoPath Do not set PATH for the current process."
echo " --verbose,-Verbose Display diagnostics information."
- echo " --azure-feed,-AzureFeed Azure feed location. Defaults to $azure_feed"
+ echo " --azure-feed,-AzureFeed Azure feed location. Defaults to $azure_feed, This parameter typically is not changed by the user."
+ echo " --uncached-feed,-UncachedFeed Uncached feed location. This parameter typically is not changed by the user."
echo " --runtime-id Installs the .NET Tools for the given platform (use linux-x64 for portable linux)."
echo " -RuntimeId"
echo " -?,--?,-h,--help,-Help Shows this help message"
@@ -690,6 +754,10 @@ check_min_reqs
calculate_vars
if [ "$dry_run" = true ]; then
say "Payload URL: $download_link"
+ if [ "$uname" = "Linux" ]; then
+ say "Alternate payload URL: $alt_download_link"
+ return 0
+ fi
say "Repeatable invocation: ./$(basename $0) --version $specific_version --channel $channel --install-dir $install_dir"
exit 0
fi
From 6c572260797c46596823db8188ddc5183c19c50c Mon Sep 17 00:00:00 2001
From: Mike Lorbetske
Date: Mon, 22 May 2017 14:02:33 -0700
Subject: [PATCH 16/32] Update to SetupCrossgen 123 - Coherence 25149
---
build/DependencyVersions.props | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props
index 8c2b4965f..8c16eaf5c 100644
--- a/build/DependencyVersions.props
+++ b/build/DependencyVersions.props
@@ -12,9 +12,9 @@
$(CLI_SharedFrameworkVersion)$(CLI_SharedFrameworkVersion)$(CLI_SharedFrameworkVersion)
- 1.0.0-beta2-20170518-237
- 1.0.0-beta2-20170519-239
- 1.0.0-beta2-20170519-239
+ 1.0.0-beta2-20170522-240
+ 1.0.0-beta2-20170522-240
+ 1.0.0-beta2-20170522-2402.0.0-preview2-25319-022.0.0-preview2-25319-020.1.0-alpha-142
@@ -23,8 +23,8 @@
timestamped
- dev-121
- preview2-25102
+ dev-123
+ preview2-25149
From cff302d678e4af5a566d581c45fb4e2b234c490b Mon Sep 17 00:00:00 2001
From: John Beisner
Date: Mon, 22 May 2017 14:15:43 -0700
Subject: [PATCH 17/32] Changes per manual testing on ubuntu-x64
---
scripts/obtain/dotnet-install.sh | 28 ++++++++++++++--------------
1 file changed, 14 insertions(+), 14 deletions(-)
diff --git a/scripts/obtain/dotnet-install.sh b/scripts/obtain/dotnet-install.sh
index 337662e6b..4766eefea 100755
--- a/scripts/obtain/dotnet-install.sh
+++ b/scripts/obtain/dotnet-install.sh
@@ -115,9 +115,11 @@ get_current_os_name() {
if [ "$uname" = "Darwin" ]; then
echo "osx"
return 0
- else [ "$uname" = "Linux" ]; then
- echo "linux"
- return 0
+ else
+ if [ "$uname" = "Linux" ]; then
+ echo "linux"
+ return 0
+ fi
fi
say_err "OS name could not be detected: $ID.$VERSION_ID"
@@ -160,11 +162,11 @@ machine_has() {
check_min_reqs() {
local hasMinimum=false
if machine_has "curl"; then
- hasMinimum=true;
- fi
- if machine_has "wget"; then
- hasMinimum=true;
+ hasMinimum=true
+ elif machine_has "wget"; then
+ hasMinimum=true
fi
+
if [ "$hasMinimum" = "false" ]; then
say_err "curl (recommended) or wget are required to download dotnet. Install missing prerequisite to proceed."
return 1
@@ -601,10 +603,9 @@ calculate_vars() {
download_link=$(construct_download_link $azure_feed $channel $normalized_architecture $specific_version)
say_verbose "download_link=$download_link"
- if [ "$uname" = "Linux" ]; then
+ if [ "$(uname)" = "Linux" ]; then
alt_download_link=$(construct_alt_download_link $azure_feed $channel $normalized_architecture $specific_version)
say_verbose "alt_download_link=$alt_download_link"
- return 0
fi
install_root=$(resolve_installation_path $install_dir)
@@ -627,10 +628,10 @@ install_dotnet() {
download "$download_link" $zip_path
# if the download fails, download the alt_download_link
- if [ "$uname" = "Linux" ] && [ -r $zip_path ]; then
- say "Downloading $alt_download_link"
+ if [ "$(uname)" = "Linux" ] && [ -r $zip_path ]; then
+ say "Cannot download $download_link"
+ say "Downloading alternate: $alt_download_link"
download "$alt_download_link" $zip_path
- return 0
fi
say_verbose "Downloaded file exists and readable? $(if [ -r $zip_path ]; then echo "yes"; else echo "no"; fi)"
@@ -754,9 +755,8 @@ check_min_reqs
calculate_vars
if [ "$dry_run" = true ]; then
say "Payload URL: $download_link"
- if [ "$uname" = "Linux" ]; then
+ if [ "$(uname)" = "Linux" ]; then
say "Alternate payload URL: $alt_download_link"
- return 0
fi
say "Repeatable invocation: ./$(basename $0) --version $specific_version --channel $channel --install-dir $install_dir"
exit 0
From 283bff55ce5464632c484722c3bef2d20173ce46 Mon Sep 17 00:00:00 2001
From: John Beisner
Date: Mon, 22 May 2017 16:17:31 -0700
Subject: [PATCH 18/32] Changes per manual testing on Windows-x64
---
scripts/obtain/dotnet-install.ps1 | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/obtain/dotnet-install.ps1 b/scripts/obtain/dotnet-install.ps1
index 737928e49..52a3f0477 100644
--- a/scripts/obtain/dotnet-install.ps1
+++ b/scripts/obtain/dotnet-install.ps1
@@ -189,7 +189,7 @@ function Get-Latest-Version-Info([string]$AzureFeed, [string]$Channel, [string]$
switch ($Response.Content.Headers.ContentType) {
{ ($_ -eq "application/octet-stream") } { $VersionText = [Text.Encoding]::UTF8.GetString($StringContent) }
- { ($_ -eq "text/plain") } { ($_ -eq "text/plain; charset=UTF-8") } { $VersionText = $StringContent }
+ { ($_.StartsWith("text/plain")) } { $VersionText = $StringContent }
default { throw "``$Response.Content.Headers.ContentType`` is an unknown .version file content type." }
}
From 82629fa44be88b0f775e97c2ae3dd575d67f5661 Mon Sep 17 00:00:00 2001
From: Vijay Ramakrishnan
Date: Mon, 22 May 2017 17:51:01 -0700
Subject: [PATCH 19/32] Updating the websdk version to 2.0.0-rel-20170518-512
---
build/DependencyVersions.props | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props
index 8c16eaf5c..60040c72b 100644
--- a/build/DependencyVersions.props
+++ b/build/DependencyVersions.props
@@ -7,7 +7,7 @@
1.0.0-rc-170511-02.0.0-preview2-20170506-14.3.0-preview1-2500
- 1.0.0-rel-20170501-473
+ 2.0.0-rel-20170518-51215.3.0-preview-20170502-03$(CLI_SharedFrameworkVersion)$(CLI_SharedFrameworkVersion)
From 37267bf15812f548218c339df4c70aaabd9d08a2 Mon Sep 17 00:00:00 2001
From: Livar Cunha
Date: Mon, 22 May 2017 10:28:12 -0700
Subject: [PATCH 20/32] Addressing code review comments and trying to fix the
windows break.
---
.../FXVersion.cs | 129 +++++++++++++
.../MSBuildSdkResolver.cs | 43 ++++-
.../SemanticVersion.cs | 181 ------------------
.../GivenAnMSBuildSdkResolver.cs | 4 +-
...GivenThatIWantToCompareSemanticVersions.cs | 87 ++-------
.../GivenThatWeWantToParseSemanticVersions.cs | 75 ++++----
...oft.DotNet.MSBuildSdkResolver.Tests.csproj | 5 +-
7 files changed, 233 insertions(+), 291 deletions(-)
create mode 100644 src/Microsoft.DotNet.MSBuildSdkResolver/FXVersion.cs
delete mode 100644 src/Microsoft.DotNet.MSBuildSdkResolver/SemanticVersion.cs
diff --git a/src/Microsoft.DotNet.MSBuildSdkResolver/FXVersion.cs b/src/Microsoft.DotNet.MSBuildSdkResolver/FXVersion.cs
new file mode 100644
index 000000000..076f2f237
--- /dev/null
+++ b/src/Microsoft.DotNet.MSBuildSdkResolver/FXVersion.cs
@@ -0,0 +1,129 @@
+// Copyright (c) .NET Foundation and contributors. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+namespace Microsoft.DotNet.MSBuildSdkResolver
+{
+ // Note: This is not SemVer (esp., in comparing pre-release part, fx_ver_t does not
+ // compare multiple dot separated identifiers individually.) ex: 1.0.0-beta.2 vs. 1.0.0-beta.11
+ // See the original version of this code here: https://github.com/dotnet/core-setup/blob/master/src/corehost/cli/fxr/fx_ver.cpp
+ internal sealed class FXVersion
+ {
+ public int Major { get; }
+ public int Minor { get; }
+ public int Patch { get; }
+ public string Pre { get; }
+ public string Build { get; }
+
+ public FXVersion(int major, int minor, int patch, string pre = "", string build = "")
+ {
+ Major = major;
+ Minor = minor;
+ Patch = patch;
+ Pre = pre;
+ Build = build;
+ }
+
+ public static int Compare(FXVersion s1, FXVersion s2)
+ {
+ if (s1.Major != s2.Major)
+ {
+ return s1.Major > s2.Major ? 1 : -1;
+ }
+
+ if (s1.Minor != s2.Minor)
+ {
+ return s1.Minor > s2.Minor ? 1 : -1;
+ }
+
+ if (s1.Patch != s2.Patch)
+ {
+ return s1.Patch > s2.Patch ? 1 : -1;
+ }
+
+ if (string.IsNullOrEmpty(s1.Pre) != string.IsNullOrEmpty(s2.Pre))
+ {
+ return string.IsNullOrEmpty(s1.Pre) ? 1 : -1;
+ }
+
+ int preCompare = string.CompareOrdinal(s1.Pre, s2.Pre);
+ if (preCompare != 0)
+ {
+ return preCompare;
+ }
+
+ return string.CompareOrdinal(s1.Build, s2.Build);
+ }
+
+ public static bool TryParse(string fxVersionString, out FXVersion FXVersion)
+ {
+ FXVersion = null;
+ if (string.IsNullOrEmpty(fxVersionString))
+ {
+ return false;
+ }
+
+ int majorSeparator = fxVersionString.IndexOf(".");
+ if (majorSeparator == -1)
+ {
+ return false;
+ }
+
+ int major = 0;
+ if (!int.TryParse(fxVersionString.Substring(0, majorSeparator), out major))
+ {
+ return false;
+ }
+
+ int minorStart = majorSeparator + 1;
+ int minorSeparator = fxVersionString.IndexOf(".", minorStart);
+ if (minorSeparator == -1)
+ {
+ return false;
+ }
+
+ int minor = 0;
+ if (!int.TryParse(fxVersionString.Substring(minorStart, minorSeparator - minorStart), out minor))
+ {
+ return false;
+ }
+
+ int patch = 0;
+ int patchStart = minorSeparator + 1;
+ int patchSeparator = fxVersionString.FindFirstNotOf("0123456789", patchStart);
+ if (patchSeparator == -1)
+ {
+ if (!int.TryParse(fxVersionString.Substring(patchStart), out patch))
+ {
+ return false;
+ }
+
+ FXVersion = new FXVersion(major, minor, patch);
+ return true;
+ }
+
+ if (!int.TryParse(fxVersionString.Substring(patchStart, patchSeparator - patchStart), out patch))
+ {
+ return false;
+ }
+
+ int preStart = patchSeparator;
+ int preSeparator = fxVersionString.IndexOf("+", preStart);
+ if (preSeparator == -1)
+ {
+ FXVersion = new FXVersion(major, minor, patch, fxVersionString.Substring(preStart));
+ }
+ else
+ {
+ int buildStart = preSeparator + 1;
+ FXVersion = new FXVersion(
+ major,
+ minor,
+ patch,
+ fxVersionString.Substring(preStart, preSeparator - preStart),
+ fxVersionString.Substring(buildStart));
+ }
+
+ return true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Microsoft.DotNet.MSBuildSdkResolver/MSBuildSdkResolver.cs b/src/Microsoft.DotNet.MSBuildSdkResolver/MSBuildSdkResolver.cs
index 882ad8c65..67f885b88 100644
--- a/src/Microsoft.DotNet.MSBuildSdkResolver/MSBuildSdkResolver.cs
+++ b/src/Microsoft.DotNet.MSBuildSdkResolver/MSBuildSdkResolver.cs
@@ -53,15 +53,16 @@ namespace Microsoft.DotNet.MSBuildSdkResolver
netcoreSdkVersion = new DirectoryInfo(netcoreSdkDir).Name;;
}
- if (!string.IsNullOrEmpty(sdkReference.MinimumVersion) &&
- SemanticVersion.Parse(netcoreSdkVersion) < SemanticVersion.Parse(sdkReference.MinimumVersion))
+ if (!IsNetCoreSDKOveridden(netcoreSdkVersion) &&
+ IsNetCoreSDKSmallerThanTheMinimumVersion(netcoreSdkVersion, sdkReference.MinimumVersion))
{
return factory.IndicateFailure(
new[]
{
$"Version {netcoreSdkVersion} of the SDK is smaller than the minimum version"
+ $" {sdkReference.MinimumVersion} requested. Check that a recent enough .NET Core SDK is"
- + " installed and/or increase the version specified in global.json."
+ + " installed, increase the minimum version specified in the project, or increase"
+ + " the version specified in global.json."
});
}
@@ -79,6 +80,42 @@ namespace Microsoft.DotNet.MSBuildSdkResolver
return factory.IndicateSuccess(msbuildSdkDir, netcoreSdkVersion);
}
+ private bool IsNetCoreSDKOveridden(string netcoreSdkVersion)
+ {
+ return netcoreSdkVersion == null;
+ }
+
+ private bool IsNetCoreSDKSmallerThanTheMinimumVersion(string netcoreSdkVersion, string minimumVersion)
+ {
+ FXVersion netCoreSdkFXVersion;
+ FXVersion minimumFXVersion;
+
+ if (string.IsNullOrEmpty(minimumVersion))
+ {
+ return false;
+ }
+
+ if (FailsToParseVersions(netcoreSdkVersion, minimumVersion, out netCoreSdkFXVersion, out minimumFXVersion))
+ {
+ return true;
+ }
+
+ return FXVersion.Compare(netCoreSdkFXVersion, minimumFXVersion) == -1;
+ }
+
+ private bool FailsToParseVersions(
+ string netcoreSdkVersion,
+ string minimumVersion,
+ out FXVersion netCoreSdkFXVersion,
+ out FXVersion minimumFXVersion)
+ {
+ netCoreSdkFXVersion = null;
+ minimumFXVersion = null;
+
+ return !FXVersion.TryParse(netcoreSdkVersion, out netCoreSdkFXVersion) ||
+ !FXVersion.TryParse(minimumVersion, out minimumFXVersion);
+ }
+
private string ResolveNetcoreSdkDirectory(SdkResolverContext context)
{
foreach (string exeDir in GetDotnetExeDirectoryCandidates())
diff --git a/src/Microsoft.DotNet.MSBuildSdkResolver/SemanticVersion.cs b/src/Microsoft.DotNet.MSBuildSdkResolver/SemanticVersion.cs
deleted file mode 100644
index aeb3184f6..000000000
--- a/src/Microsoft.DotNet.MSBuildSdkResolver/SemanticVersion.cs
+++ /dev/null
@@ -1,181 +0,0 @@
-// Copyright (c) .NET Foundation and contributors. All rights reserved.
-// Licensed under the MIT license. See LICENSE file in the project root for full license information.
-
-namespace Microsoft.DotNet.MSBuildSdkResolver
-{
- internal sealed class SemanticVersion
- {
- public int Major { get; private set; }
- public int Minor { get; private set; }
- public int Patch { get; private set; }
- public string Pre { get; private set; }
- public string Build { get; private set; }
-
- public SemanticVersion(int major, int minor, int patch) : this(major, minor, patch, string.Empty, string.Empty)
- {
- }
-
- public SemanticVersion(int major, int minor, int patch, string pre) :
- this(major, minor, patch, pre, string.Empty)
- {
- }
-
- public SemanticVersion(int major, int minor, int patch, string pre, string build)
- {
- Major = major;
- Minor = minor;
- Patch = patch;
- Pre = pre;
- Build = build;
- }
-
- public static bool operator ==(SemanticVersion s1, SemanticVersion s2)
- {
- return Compare(s1, s2) == 0;
- }
-
- public static bool operator !=(SemanticVersion s1, SemanticVersion s2)
- {
- return !(s1 == s2);
- }
-
- public static bool operator <(SemanticVersion s1, SemanticVersion s2)
- {
- return Compare(s1, s2) < 0;
- }
-
- public static bool operator >(SemanticVersion s1, SemanticVersion s2)
- {
- return Compare(s1, s2) > 0;
- }
-
- public static bool operator >=(SemanticVersion s1, SemanticVersion s2)
- {
- return Compare(s1, s2) >= 0;
- }
-
- public static bool operator <=(SemanticVersion s1, SemanticVersion s2)
- {
- return Compare(s1, s2) <= 0;
- }
-
- public static SemanticVersion Parse(string semanticVersionString)
- {
- int majorSeparator = semanticVersionString.IndexOf(".");
- if (majorSeparator == -1)
- {
- return null;
- }
-
- int major = 0;
- if (!int.TryParse(semanticVersionString.Substring(0, majorSeparator), out major))
- {
- return null;
- }
-
- int minorStart = majorSeparator + 1;
- int minorSeparator = semanticVersionString.IndexOf(".", minorStart);
- if (minorSeparator == -1)
- {
- return null;
- }
-
- int minor = 0;
- if (!int.TryParse(semanticVersionString.Substring(minorStart, minorSeparator - minorStart), out minor))
- {
- return null;
- }
-
- int patch = 0;
- int patchStart = minorSeparator + 1;
- int patchSeparator = semanticVersionString.FindFirstNotOf("0123456789", patchStart);
- if (patchSeparator == -1)
- {
- if (!int.TryParse(semanticVersionString.Substring(patchStart), out patch))
- {
- return null;
- }
-
- return new SemanticVersion(major, minor, patch);
- }
-
- if (!int.TryParse(semanticVersionString.Substring(patchStart, patchSeparator - patchStart), out patch))
- {
- return null;
- }
-
- int preStart = patchSeparator;
- int preSeparator = semanticVersionString.IndexOf("+", preStart);
- if (preSeparator == -1)
- {
- return new SemanticVersion(major, minor, patch, semanticVersionString.Substring(preStart));
- }
- else
- {
- int buildStart = preSeparator + 1;
- return new SemanticVersion(
- major,
- minor,
- patch,
- semanticVersionString.Substring(preStart, preSeparator - preStart),
- semanticVersionString.Substring(buildStart));
- }
- }
-
- public override bool Equals(object obj)
- {
- if (obj == null)
- {
- return false;
- }
-
- var other = obj as SemanticVersion;
- if (other == null)
- {
- return false;
- }
-
- return this == other;
- }
-
- public override int GetHashCode()
- {
- return Major.GetHashCode() ^
- Minor.GetHashCode() ^
- Patch.GetHashCode() ^
- Pre.GetHashCode() ^
- Build.GetHashCode();
- }
-
- private static int Compare(SemanticVersion s1, SemanticVersion s2)
- {
- if (s1.Major != s2.Major)
- {
- return s1.Major > s2.Major ? 1 : -1;
- }
-
- if (s1.Minor != s2.Minor)
- {
- return s1.Minor > s2.Minor ? 1 : -1;
- }
-
- if (s1.Patch != s2.Patch)
- {
- return s1.Patch > s2.Patch ? 1 : -1;
- }
-
- if (string.IsNullOrEmpty(s1.Pre) != string.IsNullOrEmpty(s2.Pre))
- {
- return string.IsNullOrEmpty(s1.Pre) ? 1 : -1;
- }
-
- int preCompare = string.Compare(s1.Pre, s2.Pre);
- if (preCompare != 0)
- {
- return preCompare;
- }
-
- return string.Compare(s1.Build, s2.Build);
- }
- }
-}
\ No newline at end of file
diff --git a/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenAnMSBuildSdkResolver.cs b/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenAnMSBuildSdkResolver.cs
index fc3b47901..46df30ca9 100644
--- a/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenAnMSBuildSdkResolver.cs
+++ b/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenAnMSBuildSdkResolver.cs
@@ -71,8 +71,8 @@ namespace Microsoft.DotNet.Cli.Utils.Tests
result.Version.Should().BeNull();
result.Warnings.Should().BeNullOrEmpty();
result.Errors.Should().Contain("Version 99.99.99 of the SDK is smaller than the minimum version 999.99.99"
- + " requested. Check that a recent enough .NET Core SDK is installed and/or increase the version"
- + " specified in global.json.");
+ + " requested. Check that a recent enough .NET Core SDK is installed, increase the minimum version"
+ + " specified in the project, or increase the version specified in global.json.");
}
[Fact]
diff --git a/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenThatIWantToCompareSemanticVersions.cs b/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenThatIWantToCompareSemanticVersions.cs
index ee1e4f85e..d7554ef2b 100644
--- a/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenThatIWantToCompareSemanticVersions.cs
+++ b/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenThatIWantToCompareSemanticVersions.cs
@@ -7,76 +7,29 @@ using FluentAssertions;
namespace Microsoft.DotNet.Cli.Utils.Tests
{
- public class GivenThatWeWantToCompareSemanticVersions
+ public class GivenThatWeWantToCompareFXVersions
{
[Theory]
- [InlineData("2.0.0", "1.0.0")]
- [InlineData("1.1.0", "1.0.0")]
- [InlineData("1.0.1", "1.0.0")]
- [InlineData("1.0.0", "1.0.0-pre")]
- [InlineData("1.0.0-pre+2", "1.0.0-pre+1")]
- public void OneSemanticVersionIsBiggerThanTheOther(string s1, string s2)
+ [InlineData("2.0.0", "1.0.0", 1)]
+ [InlineData("1.1.0", "1.0.0", 1)]
+ [InlineData("1.0.1", "1.0.0", 1)]
+ [InlineData("1.0.0", "1.0.0-pre", 1)]
+ [InlineData("1.0.0-pre+2", "1.0.0-pre+1", 1)]
+ [InlineData("1.0.0", "2.0.0", -1)]
+ [InlineData("1.0.0", "1.1.0", -1)]
+ [InlineData("1.0.0", "1.0.1", -1)]
+ [InlineData("1.0.0-pre", "1.0.0", -1)]
+ [InlineData("1.0.0-pre+1", "1.0.0-pre+2", -1)]
+ [InlineData("1.2.3", "1.2.3", 0)]
+ [InlineData("1.2.3-pre", "1.2.3-pre", 0)]
+ [InlineData("1.2.3-pre+1", "1.2.3-pre+1", 0)]
+ public void OneFXVersionIsBiggerThanTheOther(string s1, string s2, int expectedResult)
{
- var biggerThan = SemanticVersion.Parse(s1) > SemanticVersion.Parse(s2);
- var smallerThan = SemanticVersion.Parse(s1) < SemanticVersion.Parse(s2);
- biggerThan.Should().BeTrue();
- smallerThan.Should().BeFalse();
- }
-
- [Theory]
- [InlineData("1.0.0", "2.0.0")]
- [InlineData("1.0.0", "1.1.0")]
- [InlineData("1.0.0", "1.0.1")]
- [InlineData("1.0.0-pre", "1.0.0")]
- [InlineData("1.0.0-pre+1", "1.0.0-pre+2")]
- public void OneSemanticVersionIsSmallerThanTheOther(string s1, string s2)
- {
- var smallerThan = SemanticVersion.Parse(s1) < SemanticVersion.Parse(s2);
- var biggerThan = SemanticVersion.Parse(s1) > SemanticVersion.Parse(s2);
- smallerThan.Should().BeTrue();
- biggerThan.Should().BeFalse();
- }
-
- [Theory]
- [InlineData("2.0.0", "1.0.0")]
- [InlineData("1.0.0", "1.0.0")]
- public void OneSemanticVersionIsBiggerThanOrEqualsTheOther(string s1, string s2)
- {
- var biggerThanOrEquals = SemanticVersion.Parse(s1) >= SemanticVersion.Parse(s2);
- biggerThanOrEquals.Should().BeTrue();
- }
-
- [Theory]
- [InlineData("1.0.0", "2.0.0")]
- [InlineData("1.0.0", "1.0.0")]
- public void OneSemanticVersionIsSmallerThanOrEqualsTheOther(string s1, string s2)
- {
- var smallerThanOrEquals = SemanticVersion.Parse(s1) <= SemanticVersion.Parse(s2);
- smallerThanOrEquals.Should().BeTrue();
- }
-
- [Theory]
- [InlineData("1.2.3", "1.2.3")]
- [InlineData("1.2.3-pre", "1.2.3-pre")]
- [InlineData("1.2.3-pre+1", "1.2.3-pre+1")]
- public void SemanticVersionsCanBeEqual(string s1, string s2)
- {
- var equals = SemanticVersion.Parse(s1) == SemanticVersion.Parse(s2);
- var different = SemanticVersion.Parse(s1) != SemanticVersion.Parse(s2);
- equals.Should().BeTrue();
- different.Should().BeFalse();
- }
-
- [Theory]
- [InlineData("1.2.3", "1.2.0")]
- [InlineData("1.2.3-pre", "1.2.3-pra")]
- [InlineData("1.2.3-pre+1", "1.2.3-pre+2")]
- public void SemanticVersionsCanBeDifferent(string s1, string s2)
- {
- var different = SemanticVersion.Parse(s1) != SemanticVersion.Parse(s2);
- var equals = SemanticVersion.Parse(s1) == SemanticVersion.Parse(s2);
- different.Should().BeTrue();
- equals.Should().BeFalse();
+ FXVersion fxVersion1;
+ FXVersion fxVersion2;
+ FXVersion.TryParse(s1, out fxVersion1);
+ FXVersion.TryParse(s2, out fxVersion2);
+ FXVersion.Compare(fxVersion1, fxVersion2).Should().Be(expectedResult);
}
}
}
\ No newline at end of file
diff --git a/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenThatWeWantToParseSemanticVersions.cs b/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenThatWeWantToParseSemanticVersions.cs
index 6adf1ba96..1ade1399f 100644
--- a/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenThatWeWantToParseSemanticVersions.cs
+++ b/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenThatWeWantToParseSemanticVersions.cs
@@ -7,82 +7,83 @@ using FluentAssertions;
namespace Microsoft.DotNet.Cli.Utils.Tests
{
- public class GivenThatWeWantToParseSemanticVersions
+ public class GivenThatWeWantToParseFXVersions
{
[Fact]
public void ReturnsNullWhenNoMajorSeparatorIsFound()
{
- var semanticVersion = SemanticVersion.Parse("1");
-
- semanticVersion.Should().BeNull();
+ FXVersion fxVersion;
+ FXVersion.TryParse("1", out fxVersion).Should().BeFalse();
}
[Fact]
public void ReturnsNullWhenMajorPortionIsNotANumber()
{
- var semanticVersion = SemanticVersion.Parse("a.0.0");
-
- semanticVersion.Should().BeNull();
+ FXVersion fxVersion;
+ FXVersion.TryParse("a.0.0", out fxVersion).Should().BeFalse();
}
[Fact]
public void ReturnsNullWhenNoMinorSeparatorIsFound()
{
- var semanticVersion = SemanticVersion.Parse("1.0");
-
- semanticVersion.Should().BeNull();
+ FXVersion fxVersion;
+ FXVersion.TryParse("1.0", out fxVersion).Should().BeFalse();
}
[Fact]
public void ReturnsNullWhenMinorPortionIsNotANumber()
{
- var semanticVersion = SemanticVersion.Parse("1.a.0");
-
- semanticVersion.Should().BeNull();
+ FXVersion fxVersion;
+ FXVersion.TryParse("1.a.0", out fxVersion).Should().BeFalse();
}
[Fact]
public void ReturnsNullWhenPatchPortionIsNotANumber()
{
- var semanticVersion = SemanticVersion.Parse("1.0.a");
-
- semanticVersion.Should().BeNull();
+ FXVersion fxVersion;
+ FXVersion.TryParse("1.0.a", out fxVersion).Should().BeFalse();
}
[Fact]
- public void ReturnsSemanticVersionWhenOnlyMajorMinorPatchIsFound()
+ public void ReturnsFXVersionWhenOnlyMajorMinorPatchIsFound()
{
- var semanticVersion = SemanticVersion.Parse("1.2.3");
+ FXVersion fxVersion;
- semanticVersion.Should().NotBeNull();
- semanticVersion.Major.Should().Be(1);
- semanticVersion.Minor.Should().Be(2);
- semanticVersion.Patch.Should().Be(3);
+ var result = FXVersion.TryParse("1.2.3", out fxVersion);
+
+ result.Should().BeTrue();
+ fxVersion.Major.Should().Be(1);
+ fxVersion.Minor.Should().Be(2);
+ fxVersion.Patch.Should().Be(3);
}
[Fact]
- public void ReturnsSemanticVersionWhenOnlyMajorMinorPatchAndPreIsFound()
+ public void ReturnsFXVersionWhenOnlyMajorMinorPatchAndPreIsFound()
{
- var semanticVersion = SemanticVersion.Parse("1.2.3-pre");
+ FXVersion fxVersion;
- semanticVersion.Should().NotBeNull();
- semanticVersion.Major.Should().Be(1);
- semanticVersion.Minor.Should().Be(2);
- semanticVersion.Patch.Should().Be(3);
- semanticVersion.Pre.Should().Be("-pre");
+ var result = FXVersion.TryParse("1.2.3-pre", out fxVersion);
+
+ result.Should().BeTrue();
+ fxVersion.Major.Should().Be(1);
+ fxVersion.Minor.Should().Be(2);
+ fxVersion.Patch.Should().Be(3);
+ fxVersion.Pre.Should().Be("-pre");
}
[Fact]
- public void ReturnsSemanticVersionWhenMajorMinorPatchAndPreAndBuildIsFound()
+ public void ReturnsFXVersionWhenMajorMinorPatchAndPreAndBuildIsFound()
{
- var semanticVersion = SemanticVersion.Parse("1.2.3-pre+build");
+ FXVersion fxVersion;
+
+ var result = FXVersion.TryParse("1.2.3-pre+build", out fxVersion);
- semanticVersion.Should().NotBeNull();
- semanticVersion.Major.Should().Be(1);
- semanticVersion.Minor.Should().Be(2);
- semanticVersion.Patch.Should().Be(3);
- semanticVersion.Pre.Should().Be("-pre");
- semanticVersion.Build.Should().Be("build");
+ result.Should().BeTrue();
+ fxVersion.Major.Should().Be(1);
+ fxVersion.Minor.Should().Be(2);
+ fxVersion.Patch.Should().Be(3);
+ fxVersion.Pre.Should().Be("-pre");
+ fxVersion.Build.Should().Be("build");
}
}
}
\ No newline at end of file
diff --git a/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/Microsoft.DotNet.MSBuildSdkResolver.Tests.csproj b/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/Microsoft.DotNet.MSBuildSdkResolver.Tests.csproj
index eed809d9d..9fe884da1 100644
--- a/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/Microsoft.DotNet.MSBuildSdkResolver.Tests.csproj
+++ b/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/Microsoft.DotNet.MSBuildSdkResolver.Tests.csproj
@@ -21,7 +21,6 @@
-
@@ -30,6 +29,10 @@
+
+
+
+
From 1fe96fd86e41070f52414972650105a6c5e8881b Mon Sep 17 00:00:00 2001
From: John Beisner
Date: Tue, 23 May 2017 08:15:41 -0700
Subject: [PATCH 21/32] Changes per additional manual testing on ubuntu-x64
---
scripts/obtain/dotnet-install.sh | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/scripts/obtain/dotnet-install.sh b/scripts/obtain/dotnet-install.sh
index 4766eefea..eeb765790 100755
--- a/scripts/obtain/dotnet-install.sh
+++ b/scripts/obtain/dotnet-install.sh
@@ -626,15 +626,17 @@ install_dotnet() {
say "Downloading $download_link"
download "$download_link" $zip_path
-
- # if the download fails, download the alt_download_link
- if [ "$(uname)" = "Linux" ] && [ -r $zip_path ]; then
- say "Cannot download $download_link"
- say "Downloading alternate: $alt_download_link"
- download "$alt_download_link" $zip_path
- fi
-
say_verbose "Downloaded file exists and readable? $(if [ -r $zip_path ]; then echo "yes"; else echo "no"; fi)"
+
+ # if the download fails, download the alt_download_link [Linux only]
+ if [ "$(uname)" = "Linux" ] && [ ! -r $zip_path ]; then
+ say "Cannot download $download_link"
+ alt_zip_path=$(mktemp $temporary_file_template)
+ say_verbose "Alternate zip path: $alt_zip_path"
+ say "Downloading alternate: $alt_download_link"
+ download "$alt_download_link" $alt_zip_path
+ say_verbose "Downloaded alternate file exists and readable? $(if [ -r $alt_zip_path ]; then echo "yes"; else echo "no"; fi)"
+ fi
say "Extracting zip"
extract_dotnet_package $zip_path $install_root
From 33e8e7dfde9d5d4393b684e6374b5327ce946064 Mon Sep 17 00:00:00 2001
From: Mike Lorbetske
Date: Tue, 23 May 2017 09:36:24 -0700
Subject: [PATCH 22/32] Update to SetupCrossgen 125 - Coherence 25159
---
build/DependencyVersions.props | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props
index 60040c72b..b2444f07d 100644
--- a/build/DependencyVersions.props
+++ b/build/DependencyVersions.props
@@ -12,9 +12,9 @@
$(CLI_SharedFrameworkVersion)$(CLI_SharedFrameworkVersion)$(CLI_SharedFrameworkVersion)
- 1.0.0-beta2-20170522-240
- 1.0.0-beta2-20170522-240
- 1.0.0-beta2-20170522-240
+ 1.0.0-beta2-20170523-241
+ 1.0.0-beta2-20170523-241
+ 1.0.0-beta2-20170523-2412.0.0-preview2-25319-022.0.0-preview2-25319-020.1.0-alpha-142
@@ -23,8 +23,8 @@
timestamped
- dev-123
- preview2-25149
+ dev-125
+ preview2-25159
From 6222e66a07b8ba35cb5f7a31928c58368ab037b6 Mon Sep 17 00:00:00 2001
From: John Beisner
Date: Tue, 23 May 2017 10:45:15 -0700
Subject: [PATCH 23/32] Changes per code review - stronger download failure
logic.
---
scripts/obtain/dotnet-install.ps1 | 2 +-
scripts/obtain/dotnet-install.sh | 44 ++++++++++++++++++++-----------
2 files changed, 29 insertions(+), 17 deletions(-)
diff --git a/scripts/obtain/dotnet-install.ps1 b/scripts/obtain/dotnet-install.ps1
index 52a3f0477..96ea8c802 100644
--- a/scripts/obtain/dotnet-install.ps1
+++ b/scripts/obtain/dotnet-install.ps1
@@ -217,7 +217,7 @@ function Get-Download-Links([string]$AzureFeed, [string]$Channel, [string]$Speci
$ret = @()
if ($SharedRuntime) {
- $PayloadURL = "$AzureFeed/Runtime/$SpecificVersion/dotnet-sharedframework-win-$CLIArchitecture.$SpecificVersion.zip"
+ $PayloadURL = "$AzureFeed/Runtime/$SpecificVersion/dotnet-win-$CLIArchitecture.$SpecificVersion.zip"
}
else {
$PayloadURL = "$AzureFeed/Sdk/$SpecificVersion/dotnet-dev-win-$CLIArchitecture.$SpecificVersion.zip"
diff --git a/scripts/obtain/dotnet-install.sh b/scripts/obtain/dotnet-install.sh
index eeb765790..d05bb7b1a 100755
--- a/scripts/obtain/dotnet-install.sh
+++ b/scripts/obtain/dotnet-install.sh
@@ -277,12 +277,12 @@ get_normalized_architecture_from_architecture() {
return 0
;;
x86)
- say_err "Architecture ``x86`` currently not supported"
+ say_err "Architecture \`x86\` currently not supported"
return 1
;;
esac
- say_err "Architecture ``$architecture`` not supported. If you think this is a bug, please report it at https://github.com/dotnet/cli/issues"
+ say_err "Architecture \`$architecture\` not supported. If you think this is a bug, please report it at https://github.com/dotnet/cli/issues"
return 1
}
@@ -399,7 +399,7 @@ construct_download_link() {
local download_link=null
if [ "$shared_runtime" = true ]; then
- download_link="$azure_feed/Runtime/$specific_version/dotnet-sharedframework-$osname-$normalized_architecture.$specific_version.tar.gz"
+ download_link="$azure_feed/Runtime/$specific_version/dotnet-$osname-$normalized_architecture.$specific_version.tar.gz"
else
download_link="$azure_feed/Sdk/$specific_version/dotnet-dev-$osname-$normalized_architecture.$specific_version.tar.gz"
fi
@@ -426,7 +426,7 @@ construct_alt_download_link() {
local alt_download_link=null
if [ "$shared_runtime" = true ]; then
- alt_download_link="$azure_feed/Runtime/$specific_version/dotnet-sharedframework-$distro_specific_osname-$normalized_architecture.$specific_version.tar.gz"
+ alt_download_link="$azure_feed/Runtime/$specific_version/dotnet-$distro_specific_osname-$normalized_architecture.$specific_version.tar.gz"
else
alt_download_link="$azure_feed/Sdk/$specific_version/dotnet-dev-$distro_specific_osname-$normalized_architecture.$specific_version.tar.gz"
fi
@@ -554,11 +554,14 @@ download() {
downloadcurl $remote_path $out_path || failed=true
elif machine_has "wget"; then
downloadwget $remote_path $out_path || failed=true
+ else
+ failed=true
fi
if [ "$failed" = true ]; then
- say_err "Download failed"
+ say_verbose "Download failed: $remote_path"
return 1
fi
+ return 0
}
downloadcurl() {
@@ -572,6 +575,11 @@ downloadcurl() {
else
curl --retry 10 -sSL --create-dirs -o $out_path $remote_path || failed=true
fi
+ if [ "$failed" = true ]; then
+ say_verbose "Curl download failed"
+ return 1
+ fi
+ return 0
}
downloadwget() {
@@ -585,6 +593,11 @@ downloadwget() {
else
wget -v --tries 10 -O $out_path $remote_path || failed=true
fi
+ if [ "$failed" = true ]; then
+ say_verbose "Wget download failed"
+ return 1
+ fi
+ return 0
}
calculate_vars() {
@@ -614,7 +627,8 @@ calculate_vars() {
install_dotnet() {
eval $invocation
-
+ local download_failed=false
+
if is_dotnet_package_installed $install_root "sdk" $specific_version; then
say ".NET SDK version $specific_version is already installed."
return 0
@@ -623,19 +637,17 @@ install_dotnet() {
mkdir -p $install_root
zip_path=$(mktemp $temporary_file_template)
say_verbose "Zip path: $zip_path"
-
+
say "Downloading $download_link"
- download "$download_link" $zip_path
- say_verbose "Downloaded file exists and readable? $(if [ -r $zip_path ]; then echo "yes"; else echo "no"; fi)"
+ download "$download_link" $zip_path || download_failed=true
# if the download fails, download the alt_download_link [Linux only]
- if [ "$(uname)" = "Linux" ] && [ ! -r $zip_path ]; then
+ if [ "$(uname)" = "Linux" ] && [ "$download_failed" = true ]; then
say "Cannot download $download_link"
- alt_zip_path=$(mktemp $temporary_file_template)
- say_verbose "Alternate zip path: $alt_zip_path"
+ zip_path=$(mktemp $temporary_file_template)
+ say_verbose "Alternate zip path: $zip_path"
say "Downloading alternate: $alt_download_link"
- download "$alt_download_link" $alt_zip_path
- say_verbose "Downloaded alternate file exists and readable? $(if [ -r $alt_zip_path ]; then echo "yes"; else echo "no"; fi)"
+ download "$alt_download_link" $zip_path
fi
say "Extracting zip"
@@ -719,7 +731,7 @@ do
echo "Options:"
echo " -c,--channel Download from the CHANNEL specified (default: $channel)."
echo " -Channel"
- echo " -v,--version Use specific version, ``latest``. Defaults to ``latest``."
+ echo " -v,--version Use specific version, or \`latest\`. Defaults to \`latest\`."
echo " -Version"
echo " -i,--install-dir Install under specified location (see Install Location below)"
echo " -InstallDir"
@@ -769,7 +781,7 @@ install_dotnet
bin_path=$(get_absolute_path $(combine_paths $install_root $bin_folder_relative_path))
if [ "$no_path" = false ]; then
- say "Adding to current process PATH: ``$bin_path``. Note: This change will be visible only when sourcing script."
+ say "Adding to current process PATH: \`$bin_path\`. Note: This change will be visible only when sourcing script."
export PATH=$bin_path:$PATH
else
say "Binaries of dotnet can be found in $bin_path"
From 1ded4f11e3d10c809bc7ee0ca03d4ae85e122af1 Mon Sep 17 00:00:00 2001
From: John Beisner
Date: Tue, 23 May 2017 11:28:38 -0700
Subject: [PATCH 24/32] Forcing 'curl' to return an usable exitcode.
---
scripts/obtain/dotnet-install.sh | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/scripts/obtain/dotnet-install.sh b/scripts/obtain/dotnet-install.sh
index d05bb7b1a..75d65a40d 100755
--- a/scripts/obtain/dotnet-install.sh
+++ b/scripts/obtain/dotnet-install.sh
@@ -193,7 +193,6 @@ check_pre_reqs() {
[ -z "$($LDCONFIG_COMMAND -p | grep libunwind)" ] && say_err "Unable to locate libunwind. Install libunwind to continue" && failing=true
[ -z "$($LDCONFIG_COMMAND -p | grep libssl)" ] && say_err "Unable to locate libssl. Install libssl to continue" && failing=true
- [ -z "$($LDCONFIG_COMMAND -p | grep libcurl)" ] && say_err "Unable to locate libcurl. Install libcurl to continue" && failing=true
[ -z "$($LDCONFIG_COMMAND -p | grep libicu)" ] && say_err "Unable to locate libicu. Install libicu to continue" && failing=true
fi
@@ -571,9 +570,9 @@ downloadcurl() {
local failed=false
if [ -z "$out_path" ]; then
- curl --retry 10 -sSL --create-dirs $remote_path || failed=true
+ curl --retry 10 -sSL -f --create-dirs $remote_path || failed=true
else
- curl --retry 10 -sSL --create-dirs -o $out_path $remote_path || failed=true
+ curl --retry 10 -sSL -f --create-dirs -o $out_path $remote_path || failed=true
fi
if [ "$failed" = true ]; then
say_verbose "Curl download failed"
@@ -638,15 +637,15 @@ install_dotnet() {
zip_path=$(mktemp $temporary_file_template)
say_verbose "Zip path: $zip_path"
- say "Downloading $download_link"
+ say "Downloading link: $download_link"
download "$download_link" $zip_path || download_failed=true
# if the download fails, download the alt_download_link [Linux only]
if [ "$(uname)" = "Linux" ] && [ "$download_failed" = true ]; then
- say "Cannot download $download_link"
+ say "Cannot download: $download_link"
zip_path=$(mktemp $temporary_file_template)
say_verbose "Alternate zip path: $zip_path"
- say "Downloading alternate: $alt_download_link"
+ say "Downloading alternate link: $alt_download_link"
download "$alt_download_link" $zip_path
fi
From 229518b486f3c3ced4de054e57c76465e973c137 Mon Sep 17 00:00:00 2001
From: John Beisner
Date: Tue, 23 May 2017 15:09:31 -0700
Subject: [PATCH 25/32] =?UTF-8?q?Default=20channel=20in=20the=20install=20?=
=?UTF-8?q?scripts;=20=20dotnet-install.ps1=20and=20dotnet-install.sh=20?=
=?UTF-8?q?=3D=20=E2=80=9Crelease/1.0.0=E2=80=9D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
For the Runtime: resolves to: 1.0.5
For the SDK: resolves to: 1.0.4
---
scripts/obtain/dotnet-install.ps1 | 4 ++--
scripts/obtain/dotnet-install.sh | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/scripts/obtain/dotnet-install.ps1 b/scripts/obtain/dotnet-install.ps1
index 96ea8c802..3b59674e7 100644
--- a/scripts/obtain/dotnet-install.ps1
+++ b/scripts/obtain/dotnet-install.ps1
@@ -10,7 +10,7 @@
Installs dotnet cli. If dotnet installation already exists in the given directory
it will update it only if the requested version differs from the one already installed.
.PARAMETER Channel
- Default: master
+ Default: release/1.0.0
Download from the Channel specified
.PARAMETER Version
Default: latest
@@ -55,7 +55,7 @@
#>
[cmdletbinding()]
param(
- [string]$Channel="master",
+ [string]$Channel="release/1.0.0",
[string]$Version="Latest",
[string]$InstallDir="",
[string]$Architecture="",
diff --git a/scripts/obtain/dotnet-install.sh b/scripts/obtain/dotnet-install.sh
index 75d65a40d..65f70e39f 100755
--- a/scripts/obtain/dotnet-install.sh
+++ b/scripts/obtain/dotnet-install.sh
@@ -659,7 +659,7 @@ local_version_file_relative_path="/.version"
bin_folder_relative_path=""
temporary_file_template="${TMPDIR:-/tmp}/dotnet.XXXXXXXXX"
-channel="master"
+channel="release/1.0.0"
version="Latest"
install_dir=""
architecture=""
From 3539fb2a779afe149912d2a936c7328a96defe84 Mon Sep 17 00:00:00 2001
From: Livar Cunha
Date: Tue, 23 May 2017 15:57:53 -0700
Subject: [PATCH 26/32] Disabling net461 tests for the resolver.
---
.../MSBuildSdkResolver.cs | 16 ++--------------
...rosoft.DotNet.MSBuildSdkResolver.Tests.csproj | 4 ++--
2 files changed, 4 insertions(+), 16 deletions(-)
diff --git a/src/Microsoft.DotNet.MSBuildSdkResolver/MSBuildSdkResolver.cs b/src/Microsoft.DotNet.MSBuildSdkResolver/MSBuildSdkResolver.cs
index 67f885b88..76372cf09 100644
--- a/src/Microsoft.DotNet.MSBuildSdkResolver/MSBuildSdkResolver.cs
+++ b/src/Microsoft.DotNet.MSBuildSdkResolver/MSBuildSdkResolver.cs
@@ -95,7 +95,8 @@ namespace Microsoft.DotNet.MSBuildSdkResolver
return false;
}
- if (FailsToParseVersions(netcoreSdkVersion, minimumVersion, out netCoreSdkFXVersion, out minimumFXVersion))
+ if (!FXVersion.TryParse(netcoreSdkVersion, out netCoreSdkFXVersion) ||
+ !FXVersion.TryParse(minimumVersion, out minimumFXVersion))
{
return true;
}
@@ -103,19 +104,6 @@ namespace Microsoft.DotNet.MSBuildSdkResolver
return FXVersion.Compare(netCoreSdkFXVersion, minimumFXVersion) == -1;
}
- private bool FailsToParseVersions(
- string netcoreSdkVersion,
- string minimumVersion,
- out FXVersion netCoreSdkFXVersion,
- out FXVersion minimumFXVersion)
- {
- netCoreSdkFXVersion = null;
- minimumFXVersion = null;
-
- return !FXVersion.TryParse(netcoreSdkVersion, out netCoreSdkFXVersion) ||
- !FXVersion.TryParse(minimumVersion, out minimumFXVersion);
- }
-
private string ResolveNetcoreSdkDirectory(SdkResolverContext context)
{
foreach (string exeDir in GetDotnetExeDirectoryCandidates())
diff --git a/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/Microsoft.DotNet.MSBuildSdkResolver.Tests.csproj b/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/Microsoft.DotNet.MSBuildSdkResolver.Tests.csproj
index 9fe884da1..a21bb4731 100644
--- a/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/Microsoft.DotNet.MSBuildSdkResolver.Tests.csproj
+++ b/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/Microsoft.DotNet.MSBuildSdkResolver.Tests.csproj
@@ -2,8 +2,8 @@
- net461;$(CliTargetFramework)
- $(CliTargetFramework)
+
+ $(CliTargetFramework)$(CLI_SharedFrameworkVersion)Exe../../tools/Key.snk
From d3373d9459e2caef608a29b26bafc0a620c6f305 Mon Sep 17 00:00:00 2001
From: John Beisner
Date: Tue, 23 May 2017 16:41:46 -0700
Subject: [PATCH 27/32] Removing unused parameters.; ".StartsWith" method for
strings is not always present.
---
scripts/obtain/dotnet-install.ps1 | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/scripts/obtain/dotnet-install.ps1 b/scripts/obtain/dotnet-install.ps1
index 3b59674e7..f6b7cad3c 100644
--- a/scripts/obtain/dotnet-install.ps1
+++ b/scripts/obtain/dotnet-install.ps1
@@ -173,7 +173,7 @@ function GetHTTPResponse([Uri] $Uri)
}
-function Get-Latest-Version-Info([string]$AzureFeed, [string]$Channel, [string]$CLIArchitecture) {
+function Get-Latest-Version-Info([string]$AzureFeed, [string]$Channel) {
Say-Invocation $MyInvocation
$VersionFileUrl = $null
@@ -189,7 +189,8 @@ function Get-Latest-Version-Info([string]$AzureFeed, [string]$Channel, [string]$
switch ($Response.Content.Headers.ContentType) {
{ ($_ -eq "application/octet-stream") } { $VersionText = [Text.Encoding]::UTF8.GetString($StringContent) }
- { ($_.StartsWith("text/plain")) } { $VersionText = $StringContent }
+ { ($_ -eq "text/plain") } { $VersionText = $StringContent }
+ { ($_ -eq "text/plain; charset=UTF-8") } { $VersionText = $StringContent }
default { throw "``$Response.Content.Headers.ContentType`` is an unknown .version file content type." }
}
@@ -199,12 +200,12 @@ function Get-Latest-Version-Info([string]$AzureFeed, [string]$Channel, [string]$
}
-function Get-Specific-Version-From-Version([string]$AzureFeed, [string]$Channel, [string]$CLIArchitecture, [string]$Version) {
+function Get-Specific-Version-From-Version([string]$AzureFeed, [string]$Channel, [string]$Version) {
Say-Invocation $MyInvocation
switch ($Version.ToLower()) {
{ $_ -eq "latest" } {
- $LatestVersionInfo = Get-Latest-Version-Info -AzureFeed $AzureFeed -Channel $Channel -CLIArchitecture $CLIArchitecture
+ $LatestVersionInfo = Get-Latest-Version-Info -AzureFeed $AzureFeed -Channel $Channel
return $LatestVersionInfo.Version
}
default { return $Version }
@@ -383,7 +384,7 @@ function Prepend-Sdk-InstallRoot-To-Path([string]$InstallRoot, [string]$BinFolde
}
$CLIArchitecture = Get-CLIArchitecture-From-Architecture $Architecture
-$SpecificVersion = Get-Specific-Version-From-Version -AzureFeed $AzureFeed -Channel $Channel -CLIArchitecture $CLIArchitecture -Version $Version
+$SpecificVersion = Get-Specific-Version-From-Version -AzureFeed $AzureFeed -Channel $Channel -Version $Version
$DownloadLinks = Get-Download-Links -AzureFeed $AzureFeed -Channel $Channel -SpecificVersion $SpecificVersion -CLIArchitecture $CLIArchitecture
if ($DryRun) {
From eb602459759b2fafce98db0f56d24d586e7491d0 Mon Sep 17 00:00:00 2001
From: Matt Ellis
Date: Fri, 19 May 2017 15:59:44 -0700
Subject: [PATCH 28/32] Update Roslyn to latest 15.3 version
---
NuGet.Config | 1 +
build/DependencyVersions.props | 5 +++--
src/redist/redist.csproj | 4 ++++
src/tool_roslyn/tool_roslyn.csproj | 10 +++++-----
4 files changed, 13 insertions(+), 7 deletions(-)
diff --git a/NuGet.Config b/NuGet.Config
index cfd31b5b0..fc37b121d 100644
--- a/NuGet.Config
+++ b/NuGet.Config
@@ -10,6 +10,7 @@
+
diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props
index 8c16eaf5c..b1369db3b 100644
--- a/build/DependencyVersions.props
+++ b/build/DependencyVersions.props
@@ -3,7 +3,8 @@
2.0.0-preview2-25319-0215.3.0-preview-000246-05
- 2.0.0-rc4-61325-08
+ 2.3.0-beta2-61716-09
+ 1.6.0-beta2-253041.0.0-rc-170511-02.0.0-preview2-20170506-14.3.0-preview1-2500
@@ -20,7 +21,7 @@
0.1.0-alpha-1421.2.1-alpha-0021300.2.0
-
+
timestampeddev-123
diff --git a/src/redist/redist.csproj b/src/redist/redist.csproj
index d0ffe6ddd..88aba73b6 100644
--- a/src/redist/redist.csproj
+++ b/src/redist/redist.csproj
@@ -23,6 +23,10 @@
+
+
diff --git a/src/tool_roslyn/tool_roslyn.csproj b/src/tool_roslyn/tool_roslyn.csproj
index b99d2818a..89a201128 100644
--- a/src/tool_roslyn/tool_roslyn.csproj
+++ b/src/tool_roslyn/tool_roslyn.csproj
@@ -16,7 +16,7 @@
-
+
@@ -30,9 +30,9 @@
AfterTargets="Publish"
BeforeTargets="RemoveFilesAfterPublish">
-
-
@@ -42,14 +42,14 @@
SectionName="%(AssetsToRemoveFromDeps.SectionName)"
AssetPath="%(AssetsToRemoveFromDeps.Identity)" />
-
- e.ToLower().Trim('"'))
+ : new [] { string.Empty };
+ }
+
+ return _executableExtensions;
+ }
+ }
+
+ private IEnumerable SearchPaths
+ {
+ get
+ {
+ if (_searchPaths == null)
+ {
+ var searchPaths = new List { GetApplicationBasePath() };
+
+ searchPaths.AddRange(
+ _getEnvironmentVariable("PATH")
+ .Split(Path.PathSeparator)
+ .Select(p => p.Trim('"')));
+
+ _searchPaths = searchPaths;
+ }
+
+ return _searchPaths;
+ }
+ }
+
+ public string GetCommandPath(string commandName)
+ {
+ var commandPath = SearchPaths.Join(
+ ExecutableExtensions.ToArray(),
+ p => true, s => true,
+ (p, s) => Path.Combine(p, commandName + s))
+ .FirstOrDefault(File.Exists);
+
+ return commandPath;
+ }
+
+ private static string GetApplicationBasePath()
+ {
+ return Path.GetFullPath(AppContext.BaseDirectory);
+ }
+ }
+}
diff --git a/src/Microsoft.DotNet.MSBuildSdkResolver/MSBuildSdkResolver.cs b/src/Microsoft.DotNet.MSBuildSdkResolver/MSBuildSdkResolver.cs
index 76372cf09..1097d6e2c 100644
--- a/src/Microsoft.DotNet.MSBuildSdkResolver/MSBuildSdkResolver.cs
+++ b/src/Microsoft.DotNet.MSBuildSdkResolver/MSBuildSdkResolver.cs
@@ -106,71 +106,24 @@ namespace Microsoft.DotNet.MSBuildSdkResolver
private string ResolveNetcoreSdkDirectory(SdkResolverContext context)
{
- foreach (string exeDir in GetDotnetExeDirectoryCandidates())
- {
- string workingDir = context.SolutionFilePath ?? context.ProjectFilePath;
- string netcoreSdkDir = Interop.hostfxr_resolve_sdk(exeDir, workingDir);
+ string exeDir = GetDotnetExeDirectoryCandidates();
+ string workingDir = context.SolutionFilePath ?? context.ProjectFilePath;
+ string netcoreSdkDir = Interop.hostfxr_resolve_sdk(exeDir, workingDir);
- if (netcoreSdkDir != null)
- {
- return netcoreSdkDir;
- }
- }
-
- return null;
+ return netcoreSdkDir;
}
- // Search for [ProgramFiles]\dotnet in this order.
- private static readonly string[] s_programFiles = new[]
- {
- // "c:\Program Files" on x64 machine regardless process architecture.
- // Undefined on x86 machines.
- "ProgramW6432",
-
- // "c:\Program Files (x86)" on x64 machine regardless of process architecture
- // Undefined on x86 machines.
- "ProgramFiles(x86)",
-
- // "c:\Program Files" or "C:\Program Files (x86)" on x64 machine depending on process architecture.
- // "c:\Program Files" on x86 machines (therefore not redundant with the two locations above in that case).
- //
- // NOTE: hostfxr will search this on its own if multilevel lookup is not disable, but we do it explicitly
- // to prevent an environment with disabled multilevel lookup from crippling desktop msbuild and VS.
- "ProgramFiles",
- };
-
- private List GetDotnetExeDirectoryCandidates()
+ private string GetDotnetExeDirectoryCandidates()
{
string environmentOverride = _getEnvironmentVariable("DOTNET_MSBUILD_SDK_RESOLVER_CLI_DIR");
if (environmentOverride != null)
{
- return new List(capacity: 1) { environmentOverride };
+ return environmentOverride;
}
- // Initial capacity is 2 because while there are 3 candidates, we expect at most 2 unique ones (x64 + x86)
- // Also, N=3 here means that we needn't be concerned with the O(N^2) complexity of the foreach + contains.
- var candidates = new List(capacity: 2);
- foreach (string variable in s_programFiles)
- {
- string directory = _getEnvironmentVariable(variable);
- if (directory == null)
- {
- continue;
- }
+ var environmentProvider = new EnvironmentProvider(_getEnvironmentVariable);
- directory = Path.Combine(directory, "dotnet");
- if (!candidates.Contains(directory))
- {
- candidates.Add(directory);
- }
- }
-
- if (candidates.Count == 0)
- {
- candidates.Add(null);
- }
-
- return candidates;
+ return Path.GetDirectoryName(environmentProvider.GetCommandPath("dotnet"));
}
}
}
diff --git a/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenAnMSBuildSdkResolver.cs b/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenAnMSBuildSdkResolver.cs
index 46df30ca9..e60300ff3 100644
--- a/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenAnMSBuildSdkResolver.cs
+++ b/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenAnMSBuildSdkResolver.cs
@@ -8,6 +8,7 @@ using Microsoft.DotNet.Tools.Test.Utilities;
using System.Collections.Generic;
using System.IO;
using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
using Xunit;
using Xunit.Abstractions;
using System;
@@ -40,6 +41,7 @@ namespace Microsoft.DotNet.Cli.Utils.Tests
var expected = environment.CreateSdkDirectory(ProgramFiles.X64, "Some.Test.Sdk", "99.99.98");
environment.CreateSdkDirectory(ProgramFiles.X64, "Some.Test.Sdk", "99.99.99");
environment.CreateGlobalJson(environment.TestDirectory, "99.99.98");
+ environment.CreateMuxerAndAddToPath(ProgramFiles.X64);
var resolver = environment.CreateResolver();
var result = (MockResult)resolver.Resolve(
@@ -122,6 +124,10 @@ namespace Microsoft.DotNet.Cli.Utils.Tests
private sealed class TestEnvironment : SdkResolverContext
{
+ public string Muxer => RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "dotnet.exe" : "dotnet";
+
+ public string PathEnvironmentVariable { get; set; }
+
public DirectoryInfo TestDirectory { get; }
public TestEnvironment(string identifier = "", [CallerMemberName] string callingMethod = "")
@@ -130,6 +136,8 @@ namespace Microsoft.DotNet.Cli.Utils.Tests
"temp",
identifier: identifier,
callingMethod: callingMethod);
+
+ PathEnvironmentVariable = string.Empty;
}
public SdkResolver CreateResolver()
@@ -148,30 +156,30 @@ namespace Microsoft.DotNet.Cli.Utils.Tests
return dir;
}
+ public void CreateMuxerAndAddToPath(ProgramFiles programFiles)
+ {
+ var muxerDirectory = TestDirectory.GetDirectory(GetProgramFilesDirectory(programFiles).FullName, "dotnet");
+
+ new FileInfo(Path.Combine(muxerDirectory.FullName, Muxer)).Create();
+
+ PathEnvironmentVariable = $"{muxerDirectory}{Path.PathSeparator}{PathEnvironmentVariable}";
+ }
+
public void CreateGlobalJson(DirectoryInfo directory, string version)
=> File.WriteAllText(directory.GetFile("global.json").FullName,
$@"{{ ""sdk"": {{ ""version"": ""{version}"" }} }}");
public string GetEnvironmentVariable(string variable)
{
- ProgramFiles programFiles;
-
switch (variable)
{
- case "ProgramW6432":
- programFiles = ProgramFiles.X64;
- break;
- case "ProgramFiles(x86)":
- programFiles = ProgramFiles.X86;
- break;
- case "ProgramFiles":
- programFiles = ProgramFiles.Default;
- break;
+ case "PATH":
+ return PathEnvironmentVariable;
+ case "PATHEX":
+ return ".exe";
default:
return null;
}
-
- return GetProgramFilesDirectory(programFiles).FullName;
}
}
From 79a817bbc7332e07c4908a9c622234648c86f642 Mon Sep 17 00:00:00 2001
From: Livar Cunha
Date: Tue, 23 May 2017 10:34:38 -0700
Subject: [PATCH 30/32] Fixing windows build and addressing code review
comments.
---
.../EnvironmentProvider.cs | 29 ++++---------------
.../Interop.NETFramework.cs | 2 ++
.../Interop.NETStandard.cs | 4 +--
.../MSBuildSdkResolver.cs | 4 +--
.../GivenAnMSBuildSdkResolver.cs | 2 --
5 files changed, 12 insertions(+), 29 deletions(-)
diff --git a/src/Microsoft.DotNet.MSBuildSdkResolver/EnvironmentProvider.cs b/src/Microsoft.DotNet.MSBuildSdkResolver/EnvironmentProvider.cs
index c079257cf..c45ad256c 100644
--- a/src/Microsoft.DotNet.MSBuildSdkResolver/EnvironmentProvider.cs
+++ b/src/Microsoft.DotNet.MSBuildSdkResolver/EnvironmentProvider.cs
@@ -12,7 +12,6 @@ namespace Microsoft.DotNet.MSBuildSdkResolver
internal class EnvironmentProvider
{
private IEnumerable _searchPaths;
- private IEnumerable _executableExtensions;
private readonly Func _getEnvironmentVariable;
@@ -21,21 +20,11 @@ namespace Microsoft.DotNet.MSBuildSdkResolver
_getEnvironmentVariable = getEnvironmentVariable;
}
- public IEnumerable ExecutableExtensions
+ public string ExecutableExtension
{
get
{
- if (_executableExtensions == null)
- {
-
- _executableExtensions = RuntimeInformation.IsOSPlatform(OSPlatform.Windows)
- ? _getEnvironmentVariable("PATHEXT")
- .Split(';')
- .Select(e => e.ToLower().Trim('"'))
- : new [] { string.Empty };
- }
-
- return _executableExtensions;
+ return Interop.RunningOnWindows ? ".exe" : string.Empty;
}
}
@@ -45,7 +34,7 @@ namespace Microsoft.DotNet.MSBuildSdkResolver
{
if (_searchPaths == null)
{
- var searchPaths = new List { GetApplicationBasePath() };
+ var searchPaths = new List();
searchPaths.AddRange(
_getEnvironmentVariable("PATH")
@@ -61,18 +50,12 @@ namespace Microsoft.DotNet.MSBuildSdkResolver
public string GetCommandPath(string commandName)
{
- var commandPath = SearchPaths.Join(
- ExecutableExtensions.ToArray(),
- p => true, s => true,
- (p, s) => Path.Combine(p, commandName + s))
+ var commandNameWithExtension = commandName + ExecutableExtension;
+ var commandPath = SearchPaths
+ .Select(p => Path.Combine(p, commandNameWithExtension))
.FirstOrDefault(File.Exists);
return commandPath;
}
-
- private static string GetApplicationBasePath()
- {
- return Path.GetFullPath(AppContext.BaseDirectory);
- }
}
}
diff --git a/src/Microsoft.DotNet.MSBuildSdkResolver/Interop.NETFramework.cs b/src/Microsoft.DotNet.MSBuildSdkResolver/Interop.NETFramework.cs
index d1d567e8b..2101637f3 100644
--- a/src/Microsoft.DotNet.MSBuildSdkResolver/Interop.NETFramework.cs
+++ b/src/Microsoft.DotNet.MSBuildSdkResolver/Interop.NETFramework.cs
@@ -12,6 +12,8 @@ namespace Microsoft.DotNet.MSBuildSdkResolver
{
internal static partial class Interop
{
+ internal static readonly bool RunningOnWindows = true;
+
static Interop()
{
PreloadLibrary("hostfxr.dll");
diff --git a/src/Microsoft.DotNet.MSBuildSdkResolver/Interop.NETStandard.cs b/src/Microsoft.DotNet.MSBuildSdkResolver/Interop.NETStandard.cs
index bff6fd84b..afb2fd32a 100644
--- a/src/Microsoft.DotNet.MSBuildSdkResolver/Interop.NETStandard.cs
+++ b/src/Microsoft.DotNet.MSBuildSdkResolver/Interop.NETStandard.cs
@@ -14,13 +14,13 @@ namespace Microsoft.DotNet.MSBuildSdkResolver
{
internal static partial class Interop
{
- internal static readonly bool s_runningOnWindows = RuntimeInformation.IsOSPlatform(OSPlatform.Windows);
+ internal static readonly bool RunningOnWindows = RuntimeInformation.IsOSPlatform(OSPlatform.Windows);
private static int hostfxr_resolve_sdk(string exe_dir, string working_dir, [Out] StringBuilder buffer, int buffer_size)
{
// hostfxr string encoding is platform -specific so dispatch to the
// appropriately annotated P/Invoke for the current platform.
- return s_runningOnWindows
+ return RunningOnWindows
? windows_hostfxr_resolve_sdk(exe_dir, working_dir, buffer, buffer_size)
: unix_hostfxr_resolve_sdk(exe_dir, working_dir, buffer, buffer_size);
}
diff --git a/src/Microsoft.DotNet.MSBuildSdkResolver/MSBuildSdkResolver.cs b/src/Microsoft.DotNet.MSBuildSdkResolver/MSBuildSdkResolver.cs
index 1097d6e2c..4edf02190 100644
--- a/src/Microsoft.DotNet.MSBuildSdkResolver/MSBuildSdkResolver.cs
+++ b/src/Microsoft.DotNet.MSBuildSdkResolver/MSBuildSdkResolver.cs
@@ -106,14 +106,14 @@ namespace Microsoft.DotNet.MSBuildSdkResolver
private string ResolveNetcoreSdkDirectory(SdkResolverContext context)
{
- string exeDir = GetDotnetExeDirectoryCandidates();
+ string exeDir = GetDotnetExeDirectory();
string workingDir = context.SolutionFilePath ?? context.ProjectFilePath;
string netcoreSdkDir = Interop.hostfxr_resolve_sdk(exeDir, workingDir);
return netcoreSdkDir;
}
- private string GetDotnetExeDirectoryCandidates()
+ private string GetDotnetExeDirectory()
{
string environmentOverride = _getEnvironmentVariable("DOTNET_MSBUILD_SDK_RESOLVER_CLI_DIR");
if (environmentOverride != null)
diff --git a/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenAnMSBuildSdkResolver.cs b/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenAnMSBuildSdkResolver.cs
index e60300ff3..8354539b0 100644
--- a/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenAnMSBuildSdkResolver.cs
+++ b/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenAnMSBuildSdkResolver.cs
@@ -175,8 +175,6 @@ namespace Microsoft.DotNet.Cli.Utils.Tests
{
case "PATH":
return PathEnvironmentVariable;
- case "PATHEX":
- return ".exe";
default:
return null;
}
From a692cb89f37e64f9130231cf839fe2c49f6bca1b Mon Sep 17 00:00:00 2001
From: Livar Cunha
Date: Tue, 23 May 2017 23:19:56 -0700
Subject: [PATCH 31/32] Fixing the tests to handle the extra tests added by the
min version change.
---
.../GivenAnMSBuildSdkResolver.cs | 3 +++
1 file changed, 3 insertions(+)
diff --git a/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenAnMSBuildSdkResolver.cs b/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenAnMSBuildSdkResolver.cs
index 8354539b0..ad98825b5 100644
--- a/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenAnMSBuildSdkResolver.cs
+++ b/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenAnMSBuildSdkResolver.cs
@@ -61,6 +61,7 @@ namespace Microsoft.DotNet.Cli.Utils.Tests
{
var environment = new TestEnvironment();
environment.CreateSdkDirectory(ProgramFiles.X64, "Some.Test.Sdk", "99.99.99");
+ environment.CreateMuxerAndAddToPath(ProgramFiles.X64);
var resolver = environment.CreateResolver();
var result = (MockResult)resolver.Resolve(
@@ -82,6 +83,7 @@ namespace Microsoft.DotNet.Cli.Utils.Tests
{
var environment = new TestEnvironment();
var expected = environment.CreateSdkDirectory(ProgramFiles.X64, "Some.Test.Sdk", "99.99.99");
+ environment.CreateMuxerAndAddToPath(ProgramFiles.X64);
var resolver = environment.CreateResolver();
var result = (MockResult)resolver.Resolve(
@@ -101,6 +103,7 @@ namespace Microsoft.DotNet.Cli.Utils.Tests
{
var environment = new TestEnvironment();
var expected = environment.CreateSdkDirectory(ProgramFiles.X64, "Some.Test.Sdk", "999.99.99");
+ environment.CreateMuxerAndAddToPath(ProgramFiles.X64);
var resolver = environment.CreateResolver();
var result = (MockResult)resolver.Resolve(
From e8b799f04e589f008b12a20b737eea672b600f0a Mon Sep 17 00:00:00 2001
From: Livar Cunha
Date: Wed, 24 May 2017 00:11:39 -0700
Subject: [PATCH 32/32] Fixing the channel for release/2.0.0.
---
build/BranchInfo.props | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/build/BranchInfo.props b/build/BranchInfo.props
index 5510dc8b9..0d146ab2a 100644
--- a/build/BranchInfo.props
+++ b/build/BranchInfo.props
@@ -1,6 +1,6 @@
- master
- master
+ release/2.0.0
+ release/2.0.0