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! &Close Repair Successfully Completed Uninstall Successfully Completed - Installation Successfully Completed Setup Successful &Launch You 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!

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 + 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.

diff --git a/packaging/osx/clisdk/resources/de.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/de.lproj/firstTimeWelcomeMessage.html index af9179267..fb1e7333d 100644 --- a/packaging/osx/clisdk/resources/de.lproj/firstTimeWelcomeMessage.html +++ b/packaging/osx/clisdk/resources/de.lproj/firstTimeWelcomeMessage.html @@ -7,22 +7,22 @@

- 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 + 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.

diff --git a/packaging/osx/clisdk/resources/en.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/en.lproj/firstTimeWelcomeMessage.html index af9179267..fb1e7333d 100644 --- a/packaging/osx/clisdk/resources/en.lproj/firstTimeWelcomeMessage.html +++ b/packaging/osx/clisdk/resources/en.lproj/firstTimeWelcomeMessage.html @@ -7,22 +7,22 @@

- 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 + 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.

diff --git a/packaging/osx/clisdk/resources/es.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/es.lproj/firstTimeWelcomeMessage.html index af9179267..fb1e7333d 100644 --- a/packaging/osx/clisdk/resources/es.lproj/firstTimeWelcomeMessage.html +++ b/packaging/osx/clisdk/resources/es.lproj/firstTimeWelcomeMessage.html @@ -7,22 +7,22 @@

- 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 + 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.

diff --git a/packaging/osx/clisdk/resources/fr.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/fr.lproj/firstTimeWelcomeMessage.html index af9179267..fb1e7333d 100644 --- a/packaging/osx/clisdk/resources/fr.lproj/firstTimeWelcomeMessage.html +++ b/packaging/osx/clisdk/resources/fr.lproj/firstTimeWelcomeMessage.html @@ -7,22 +7,22 @@

- 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 + 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.

diff --git a/packaging/osx/clisdk/resources/it.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/it.lproj/firstTimeWelcomeMessage.html index af9179267..fb1e7333d 100644 --- a/packaging/osx/clisdk/resources/it.lproj/firstTimeWelcomeMessage.html +++ b/packaging/osx/clisdk/resources/it.lproj/firstTimeWelcomeMessage.html @@ -7,22 +7,22 @@

- 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 + 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.

diff --git a/packaging/osx/clisdk/resources/ja.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/ja.lproj/firstTimeWelcomeMessage.html index af9179267..fb1e7333d 100644 --- a/packaging/osx/clisdk/resources/ja.lproj/firstTimeWelcomeMessage.html +++ b/packaging/osx/clisdk/resources/ja.lproj/firstTimeWelcomeMessage.html @@ -7,22 +7,22 @@

- 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 + 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.

diff --git a/packaging/osx/clisdk/resources/ko.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/ko.lproj/firstTimeWelcomeMessage.html index af9179267..fb1e7333d 100644 --- a/packaging/osx/clisdk/resources/ko.lproj/firstTimeWelcomeMessage.html +++ b/packaging/osx/clisdk/resources/ko.lproj/firstTimeWelcomeMessage.html @@ -7,22 +7,22 @@

- 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 + 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.

diff --git a/packaging/osx/clisdk/resources/pl.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/pl.lproj/firstTimeWelcomeMessage.html index af9179267..fb1e7333d 100644 --- a/packaging/osx/clisdk/resources/pl.lproj/firstTimeWelcomeMessage.html +++ b/packaging/osx/clisdk/resources/pl.lproj/firstTimeWelcomeMessage.html @@ -7,22 +7,22 @@

- 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 + 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.

diff --git a/packaging/osx/clisdk/resources/pt-br.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/pt-br.lproj/firstTimeWelcomeMessage.html index af9179267..fb1e7333d 100644 --- a/packaging/osx/clisdk/resources/pt-br.lproj/firstTimeWelcomeMessage.html +++ b/packaging/osx/clisdk/resources/pt-br.lproj/firstTimeWelcomeMessage.html @@ -7,22 +7,22 @@

- 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 + 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.

diff --git a/packaging/osx/clisdk/resources/ru.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/ru.lproj/firstTimeWelcomeMessage.html index af9179267..fb1e7333d 100644 --- a/packaging/osx/clisdk/resources/ru.lproj/firstTimeWelcomeMessage.html +++ b/packaging/osx/clisdk/resources/ru.lproj/firstTimeWelcomeMessage.html @@ -7,22 +7,22 @@

- 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 + 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.

diff --git a/packaging/osx/clisdk/resources/tr.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/tr.lproj/firstTimeWelcomeMessage.html index af9179267..fb1e7333d 100644 --- a/packaging/osx/clisdk/resources/tr.lproj/firstTimeWelcomeMessage.html +++ b/packaging/osx/clisdk/resources/tr.lproj/firstTimeWelcomeMessage.html @@ -7,22 +7,22 @@

- 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 + 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.

diff --git a/packaging/osx/clisdk/resources/zh-hans.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/zh-hans.lproj/firstTimeWelcomeMessage.html index af9179267..fb1e7333d 100644 --- a/packaging/osx/clisdk/resources/zh-hans.lproj/firstTimeWelcomeMessage.html +++ b/packaging/osx/clisdk/resources/zh-hans.lproj/firstTimeWelcomeMessage.html @@ -7,22 +7,22 @@

- 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 + 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.

diff --git a/packaging/osx/clisdk/resources/zh-hant.lproj/firstTimeWelcomeMessage.html b/packaging/osx/clisdk/resources/zh-hant.lproj/firstTimeWelcomeMessage.html index af9179267..fb1e7333d 100644 --- a/packaging/osx/clisdk/resources/zh-hant.lproj/firstTimeWelcomeMessage.html +++ b/packaging/osx/clisdk/resources/zh-hant.lproj/firstTimeWelcomeMessage.html @@ -7,22 +7,22 @@

- 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 + 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.

From 74028a54975399aac06ec605446a0137bf5e7b73 Mon Sep 17 00:00:00 2001 From: William Li Date: Thu, 11 May 2017 09:15:15 -0700 Subject: [PATCH 04/32] change to Installation Completed Successfully --- .../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 fb1e7333d..013aa7290 100644 --- a/packaging/osx/clisdk/resources/cs.lproj/firstTimeWelcomeMessage.html +++ b/packaging/osx/clisdk/resources/cs.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/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-2 4.3.0-beta1-2418 1.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-08 2.0.0-alpha-20170509-2 4.3.0-beta1-2418 - 1.0.0-rel-20170501-473 + 2.0.0-rel-20170518-503 15.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-237 2.0.0-preview1-002111 2.0.0-preview1-002111 0.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-222 2.0.0-preview1-002111 2.0.0-preview1-002111 0.1.0-alpha-142 - timestamped - dev-119 + notimestamp + 2.0.0-preview1-92 preview2-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-08 2.0.0-alpha-20170509-2 4.3.0-beta1-2418 - 2.0.0-rel-20170518-503 + 2.0.0-rel-20170518-512 15.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-240 2.0.0-preview2-25319-02 2.0.0-preview2-25319-02 0.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-0 2.0.0-preview2-20170506-1 4.3.0-preview1-2500 - 1.0.0-rel-20170501-473 + 2.0.0-rel-20170518-512 15.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-241 2.0.0-preview2-25319-02 2.0.0-preview2-25319-02 0.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-02 15.3.0-preview-000246-05 - 2.0.0-rc4-61325-08 + 2.3.0-beta2-61716-09 + 1.6.0-beta2-25304 1.0.0-rc-170511-0 2.0.0-preview2-20170506-1 4.3.0-preview1-2500 @@ -20,7 +21,7 @@ 0.1.0-alpha-142 1.2.1-alpha-002130 0.2.0 - + timestamped dev-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