From 9a2e87f0d9173cfae54fdceaae230fc6a72ebd9c Mon Sep 17 00:00:00 2001 From: Shyam-Gupta Date: Mon, 9 Oct 2017 17:46:08 +0530 Subject: [PATCH 01/45] Updated version of TestPlatform to 15.5.0-preview-20170923-02 refer commit: https://github.com/dotnet/cli/pull/7709/commits/fa876f5b90d853df78de1942e596346aeb0cfaa9 --- build/DependencyVersions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props index 5f02dd04b..1f120943b 100644 --- a/build/DependencyVersions.props +++ b/build/DependencyVersions.props @@ -18,7 +18,7 @@ 4.4.0-preview3-4475 2.0.0-preview3-25514-04 2.0.0-rel-20170908-653 - 15.3.0-preview-20170628-02 + 15.5.0-preview-20170923-02 $(CLI_SharedFrameworkVersion) $(CLI_SharedFrameworkVersion) $(CLI_SharedFrameworkVersion) From b5d9f6f3e62dd2134fb16f7988c4ef8f84cab10b Mon Sep 17 00:00:00 2001 From: Shyam-Gupta Date: Tue, 10 Oct 2017 16:50:09 +0530 Subject: [PATCH 02/45] Update DependencyVersions.props --- build/DependencyVersions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props index 1f120943b..1ce1131d0 100644 --- a/build/DependencyVersions.props +++ b/build/DependencyVersions.props @@ -18,7 +18,7 @@ 4.4.0-preview3-4475 2.0.0-preview3-25514-04 2.0.0-rel-20170908-653 - 15.5.0-preview-20170923-02 + 15.5.0-preview-20171009-10 $(CLI_SharedFrameworkVersion) $(CLI_SharedFrameworkVersion) $(CLI_SharedFrameworkVersion) From a084153c1567330a17b21287a7bfebdd5eedfc3c Mon Sep 17 00:00:00 2001 From: NuGet Team Bot Date: Tue, 10 Oct 2017 15:08:33 -0700 Subject: [PATCH 03/45] Insert NuGet Build 4.5.0-preview1-4526 into cli --- build/DependencyVersions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props index 5f02dd04b..880df4900 100644 --- a/build/DependencyVersions.props +++ b/build/DependencyVersions.props @@ -15,7 +15,7 @@ 2.0.1-servicing-20170926-1 $(CLI_NETSDK_Version) - 4.4.0-preview3-4475 + 4.5.0-preview1-4526 2.0.0-preview3-25514-04 2.0.0-rel-20170908-653 15.3.0-preview-20170628-02 From 6a116d4b94685374af7b457533de055af4f80efc Mon Sep 17 00:00:00 2001 From: Vijay Ramakrishnan Date: Tue, 10 Oct 2017 16:38:32 -0700 Subject: [PATCH 04/45] Updating the websdk version to 2.0.0-rel-20171010-665 --- build/DependencyVersions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props index 5f02dd04b..9629ab151 100644 --- a/build/DependencyVersions.props +++ b/build/DependencyVersions.props @@ -17,7 +17,7 @@ 4.4.0-preview3-4475 2.0.0-preview3-25514-04 - 2.0.0-rel-20170908-653 + 2.0.0-rel-20171010-665 15.3.0-preview-20170628-02 $(CLI_SharedFrameworkVersion) $(CLI_SharedFrameworkVersion) From 857c7e3e5612f246eff41239b61d6f5428b3fd40 Mon Sep 17 00:00:00 2001 From: Daniel Plaisted Date: Tue, 10 Oct 2017 22:11:00 -0700 Subject: [PATCH 05/45] Update branch info to release/15.5 --- README.md | 62 +++++++++++++++++++++--------------------- build/BranchInfo.props | 4 +-- 2 files changed, 33 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index b7981d26c..e6d7174b4 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Looking for V1 of the .NET Core tooling? If you are looking for the v1.0.1 release of the .NET Core tools (CLI, MSBuild and the new csproj), see https://dot.net/core. -> **Note:** the release/2.0.0 branch of the CLI repo is based on an upcoming update of the SDK and is considered pre-release. For production-level usage, please use the +> **Note:** the release/15.5 branch of the CLI repo is based on an upcoming update of the SDK and is considered pre-release. For production-level usage, please use the > released version of the tools available at https://dot.net/core Found an issue? @@ -64,7 +64,7 @@ To download the .NET Core runtime **without** the SDK, visit https://github.com/ > **Note:** Be aware that the following installers are the **latest bits**. If you > want to install the latest released versions, check out the [preceding section](#looking-for-v1-of-the-net-core-tooling). -| Platform | Latest Daily Build
*release/2.0.0*
[![][version-badge]][version] | +| Platform | Latest Daily Build
*release/15.5*
[![][version-badge]][version] | | -------- | :-------------------------------------: | | **Windows x64** | [Installer][win-x64-installer] - [Checksum][win-x64-installer-checksum]
[zip][win-x64-zip] - [Checksum][win-x64-zip-checksum] | | **Windows x86** | [Installer][win-x86-installer] - [Checksum][win-x86-installer-checksum]
[zip][win-x86-zip] - [Checksum][win-x86-zip-checksum] | @@ -80,7 +80,7 @@ To download the .NET Core runtime **without** the SDK, visit https://github.com/ | **OpenSUSE 42.1** | tar.gz - See **Linux x64** | -| Latest Coherent Build2
*release/2.0.0* | +| Latest Coherent Build2
*release/15.5* | |:------:| | [![][coherent-version-badge]][coherent-version] | @@ -89,43 +89,43 @@ Reference notes: >

**2**: *A 'coherent' build is defined as a build where the Runtime version matches between the CLI and Asp.NET.* [comment]: # (The latest versions are always the same across all platforms. Just need one to show, so picking win-x64's svg.) -[version]: https://dotnetcli.blob.core.windows.net/dotnet/Sdk/release/2.0.0/latest.version -[version-badge]: https://dotnetcli.blob.core.windows.net/dotnet/Sdk/release/2.0.0/win_x64_Release_version_badge.svg -[coherent-version]: https://dotnetcli.blob.core.windows.net/dotnet/Sdk/release/2.0.0/latest.coherent.version -[coherent-version-badge]: https://dotnetcli.blob.core.windows.net/dotnet/Sdk/release/2.0.0/win_x86_Release_coherent_badge.svg +[version]: https://dotnetcli.blob.core.windows.net/dotnet/Sdk/release/15.5/latest.version +[version-badge]: https://dotnetcli.blob.core.windows.net/dotnet/Sdk/release/15.5/win_x64_Release_version_badge.svg +[coherent-version]: https://dotnetcli.blob.core.windows.net/dotnet/Sdk/release/15.5/latest.coherent.version +[coherent-version-badge]: https://dotnetcli.blob.core.windows.net/dotnet/Sdk/release/15.5/win_x86_Release_coherent_badge.svg -[win-x64-installer]: https://dotnetcli.blob.core.windows.net/dotnet/Sdk/release/2.0.0/dotnet-sdk-latest-win-x64.exe -[win-x64-installer-checksum]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Sdk/release/2.0.0/dotnet-sdk-latest-win-x64.exe.sha -[win-x64-zip]: https://dotnetcli.blob.core.windows.net/dotnet/Sdk/release/2.0.0/dotnet-sdk-latest-win-x64.zip -[win-x64-zip-checksum]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Sdk/release/2.0.0/dotnet-sdk-latest-win-x64.zip.sha +[win-x64-installer]: https://dotnetcli.blob.core.windows.net/dotnet/Sdk/release/15.5/dotnet-sdk-latest-win-x64.exe +[win-x64-installer-checksum]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Sdk/release/15.5/dotnet-sdk-latest-win-x64.exe.sha +[win-x64-zip]: https://dotnetcli.blob.core.windows.net/dotnet/Sdk/release/15.5/dotnet-sdk-latest-win-x64.zip +[win-x64-zip-checksum]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Sdk/release/15.5/dotnet-sdk-latest-win-x64.zip.sha -[win-x86-installer]: https://dotnetcli.blob.core.windows.net/dotnet/Sdk/release/2.0.0/dotnet-sdk-latest-win-x86.exe -[win-x86-installer-checksum]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Sdk/release/2.0.0/dotnet-sdk-latest-win-x86.exe.sha -[win-x86-zip]: https://dotnetcli.blob.core.windows.net/dotnet/Sdk/release/2.0.0/dotnet-sdk-latest-win-x86.zip -[win-x86-zip-checksum]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Sdk/release/2.0.0/dotnet-sdk-latest-win-x86.zip.sha +[win-x86-installer]: https://dotnetcli.blob.core.windows.net/dotnet/Sdk/release/15.5/dotnet-sdk-latest-win-x86.exe +[win-x86-installer-checksum]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Sdk/release/15.5/dotnet-sdk-latest-win-x86.exe.sha +[win-x86-zip]: https://dotnetcli.blob.core.windows.net/dotnet/Sdk/release/15.5/dotnet-sdk-latest-win-x86.zip +[win-x86-zip-checksum]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Sdk/release/15.5/dotnet-sdk-latest-win-x86.zip.sha -[osx-installer]: https://dotnetcli.blob.core.windows.net/dotnet/Sdk/release/2.0.0/dotnet-sdk-latest-osx-x64.pkg -[osx-installer-checksum]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Sdk/release/2.0.0/dotnet-sdk-latest-osx-x64.pkg.sha -[osx-targz]: https://dotnetcli.blob.core.windows.net/dotnet/Sdk/release/2.0.0/dotnet-sdk-latest-osx-x64.tar.gz -[osx-targz-checksum]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Sdk/release/2.0.0/dotnet-sdk-latest-osx-x64.tar.gz.sha +[osx-installer]: https://dotnetcli.blob.core.windows.net/dotnet/Sdk/release/15.5/dotnet-sdk-latest-osx-x64.pkg +[osx-installer-checksum]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Sdk/release/15.5/dotnet-sdk-latest-osx-x64.pkg.sha +[osx-targz]: https://dotnetcli.blob.core.windows.net/dotnet/Sdk/release/15.5/dotnet-sdk-latest-osx-x64.tar.gz +[osx-targz-checksum]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Sdk/release/15.5/dotnet-sdk-latest-osx-x64.tar.gz.sha -[linux-targz]: https://dotnetcli.blob.core.windows.net/dotnet/Sdk/release/2.0.0/dotnet-sdk-latest-linux-x64.tar.gz -[linux-targz-checksum]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Sdk/release/2.0.0/dotnet-sdk-latest-linux-x64.tar.gz.sha +[linux-targz]: https://dotnetcli.blob.core.windows.net/dotnet/Sdk/release/15.5/dotnet-sdk-latest-linux-x64.tar.gz +[linux-targz-checksum]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Sdk/release/15.5/dotnet-sdk-latest-linux-x64.tar.gz.sha -[ubuntu-14.04-installer]: https://dotnetcli.blob.core.windows.net/dotnet/Sdk/release/2.0.0/dotnet-sdk-latest-ubuntu-x64.deb -[ubuntu-14.04-installer-checksum]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Sdk/release/2.0.0/dotnet-sdk-latest-ubuntu-x64.deb.sha +[ubuntu-14.04-installer]: https://dotnetcli.blob.core.windows.net/dotnet/Sdk/release/15.5/dotnet-sdk-latest-ubuntu-x64.deb +[ubuntu-14.04-installer-checksum]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Sdk/release/15.5/dotnet-sdk-latest-ubuntu-x64.deb.sha -[ubuntu-16.04-installer]: https://dotnetcli.blob.core.windows.net/dotnet/Sdk/release/2.0.0/dotnet-sdk-latest-ubuntu.16.04-x64.deb -[ubuntu-16.04-installer-checksum]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Sdk/release/2.0.0/dotnet-sdk-latest-ubuntu.16.04-x64.deb.sha +[ubuntu-16.04-installer]: https://dotnetcli.blob.core.windows.net/dotnet/Sdk/release/15.5/dotnet-sdk-latest-ubuntu.16.04-x64.deb +[ubuntu-16.04-installer-checksum]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Sdk/release/15.5/dotnet-sdk-latest-ubuntu.16.04-x64.deb.sha -[ubuntu-16.10-installer]: https://dotnetcli.blob.core.windows.net/dotnet/Sdk/release/2.0.0/dotnet-sdk-latest-ubuntu.16.10-x64.deb -[ubuntu-16.10-installer-checksum]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Sdk/release/2.0.0/dotnet-sdk-latest-ubuntu.16.10-x64.deb.sha +[ubuntu-16.10-installer]: https://dotnetcli.blob.core.windows.net/dotnet/Sdk/release/15.5/dotnet-sdk-latest-ubuntu.16.10-x64.deb +[ubuntu-16.10-installer-checksum]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Sdk/release/15.5/dotnet-sdk-latest-ubuntu.16.10-x64.deb.sha -[debian-8-installer]: https://dotnetcli.blob.core.windows.net/dotnet/Sdk/release/2.0.0/dotnet-sdk-latest-debian-x64.deb -[debian-8-installer-checksum]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Sdk/release/2.0.0/dotnet-sdk-latest-debian-x64.deb.sha +[debian-8-installer]: https://dotnetcli.blob.core.windows.net/dotnet/Sdk/release/15.5/dotnet-sdk-latest-debian-x64.deb +[debian-8-installer-checksum]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Sdk/release/15.5/dotnet-sdk-latest-debian-x64.deb.sha -[rhel-7-installer]: https://dotnetcli.blob.core.windows.net/dotnet/Sdk/release/2.0.0/dotnet-sdk-latest-rhel-x64.rpm -[rhel-7-installer-checksum]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Sdk/release/2.0.0/dotnet-sdk-latest-rhel-x64.rpm.sha +[rhel-7-installer]: https://dotnetcli.blob.core.windows.net/dotnet/Sdk/release/15.5/dotnet-sdk-latest-rhel-x64.rpm +[rhel-7-installer-checksum]: https://dotnetclichecksums.blob.core.windows.net/dotnet/Sdk/release/15.5/dotnet-sdk-latest-rhel-x64.rpm.sha # Debian daily feed diff --git a/build/BranchInfo.props b/build/BranchInfo.props index 0d146ab2a..f048a677e 100644 --- a/build/BranchInfo.props +++ b/build/BranchInfo.props @@ -1,6 +1,6 @@ - release/2.0.0 - release/2.0.0 + release/15.5 + release/15.5 From 273f4bc4a566b0e339d41274e9b159799e5dfd45 Mon Sep 17 00:00:00 2001 From: faahmad Date: Wed, 11 Oct 2017 12:21:59 +0530 Subject: [PATCH 06/45] Fixed tests --- ...tTestBuildsAndRunsTestFromCsprojForMultipleTFM.cs | 4 ++-- .../GivenDotnetTestBuildsAndRunsTestfromCsproj.cs | 12 ++++++------ test/dotnet-vstest.Tests/VSTestTests.cs | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/test/dotnet-test.Tests/GivenDotnetTestBuildsAndRunsTestFromCsprojForMultipleTFM.cs b/test/dotnet-test.Tests/GivenDotnetTestBuildsAndRunsTestFromCsprojForMultipleTFM.cs index adfc7b0d4..0a6e2e0fd 100644 --- a/test/dotnet-test.Tests/GivenDotnetTestBuildsAndRunsTestFromCsprojForMultipleTFM.cs +++ b/test/dotnet-test.Tests/GivenDotnetTestBuildsAndRunsTestFromCsprojForMultipleTFM.cs @@ -39,9 +39,9 @@ namespace Microsoft.DotNet.Cli.Test.Tests { result.StdOut .Should().Contain("Total tests: 3. Passed: 2. Failed: 1. Skipped: 0.", "because .NET 4.6 tests will pass") - .And.Contain("Passed TestNamespace.VSTestTests.VSTestPassTestDesktop", "because .NET 4.6 tests will pass") + .And.Contain("Passed VSTestPassTestDesktop", "because .NET 4.6 tests will pass") .And.Contain("Total tests: 3. Passed: 1. Failed: 2. Skipped: 0.", "because netcoreapp2.0 tests will fail") - .And.Contain("Failed TestNamespace.VSTestTests.VSTestFailTestNetCoreApp", "because netcoreapp2.0 tests will fail"); + .And.Contain("Failed VSTestFailTestNetCoreApp", "because netcoreapp2.0 tests will fail"); } result.ExitCode.Should().Be(1); } diff --git a/test/dotnet-test.Tests/GivenDotnetTestBuildsAndRunsTestfromCsproj.cs b/test/dotnet-test.Tests/GivenDotnetTestBuildsAndRunsTestfromCsproj.cs index 807688463..050b547e1 100644 --- a/test/dotnet-test.Tests/GivenDotnetTestBuildsAndRunsTestfromCsproj.cs +++ b/test/dotnet-test.Tests/GivenDotnetTestBuildsAndRunsTestfromCsproj.cs @@ -28,8 +28,8 @@ namespace Microsoft.DotNet.Cli.Test.Tests if (!DotnetUnderTest.IsLocalized()) { result.StdOut.Should().Contain("Total tests: 2. Passed: 1. Failed: 1. Skipped: 0."); - result.StdOut.Should().Contain("Passed TestNamespace.VSTestTests.VSTestPassTest"); - result.StdOut.Should().Contain("Failed TestNamespace.VSTestTests.VSTestFailTest"); + result.StdOut.Should().Contain("Passed VSTestPassTest"); + result.StdOut.Should().Contain("Failed VSTestFailTest"); } result.ExitCode.Should().Be(1); @@ -52,8 +52,8 @@ namespace Microsoft.DotNet.Cli.Test.Tests if (!DotnetUnderTest.IsLocalized()) { result.StdOut.Should().Contain("Total tests: 2. Passed: 1. Failed: 1. Skipped: 0."); - result.StdOut.Should().Contain("Passed TestNamespace.VSTestTests.VSTestPassTest"); - result.StdOut.Should().Contain("Failed TestNamespace.VSTestTests.VSTestFailTest"); + result.StdOut.Should().Contain("Passed VSTestPassTest"); + result.StdOut.Should().Contain("Failed VSTestFailTest"); } result.ExitCode.Should().Be(1); @@ -227,8 +227,8 @@ namespace Microsoft.DotNet.Cli.Test.Tests if (!DotnetUnderTest.IsLocalized()) { result.StdOut.Should().Contain("Total tests: 2. Passed: 1. Failed: 1. Skipped: 0."); - result.StdOut.Should().Contain("Passed TestNamespace.VSTestTests.VSTestPassTest"); - result.StdOut.Should().Contain("Failed TestNamespace.VSTestTests.VSTestFailTest"); + result.StdOut.Should().Contain("Passed VSTestPassTest"); + result.StdOut.Should().Contain("Failed VSTestFailTest"); } result.ExitCode.Should().Be(1); diff --git a/test/dotnet-vstest.Tests/VSTestTests.cs b/test/dotnet-vstest.Tests/VSTestTests.cs index 47eae7e89..d1de1e8e8 100644 --- a/test/dotnet-vstest.Tests/VSTestTests.cs +++ b/test/dotnet-vstest.Tests/VSTestTests.cs @@ -42,8 +42,8 @@ namespace Microsoft.DotNet.Cli.VSTest.Tests { result.StdOut .Should().Contain("Total tests: 2. Passed: 1. Failed: 1. Skipped: 0.") - .And.Contain("Passed TestNamespace.VSTestTests.VSTestPassTest") - .And.Contain("Failed TestNamespace.VSTestTests.VSTestFailTest"); + .And.Contain("Passed VSTestPassTest") + .And.Contain("Failed VSTestFailTest"); } result.ExitCode.Should().Be(1); From c6139adcc96ad1ec9db4515360beb38c0280618d Mon Sep 17 00:00:00 2001 From: seancpeters Date: Wed, 11 Oct 2017 16:22:03 -0700 Subject: [PATCH 07/45] added a way to specify the asp.net template versions --- build/BundledTemplates.props | 10 ++++++++-- build/DependencyVersions.props | 7 ++++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/build/BundledTemplates.props b/build/BundledTemplates.props index 549508206..c0c286421 100644 --- a/build/BundledTemplates.props +++ b/build/BundledTemplates.props @@ -1,10 +1,16 @@ - - + + + + + + diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props index 6cc04f3bd..83ae30c72 100644 --- a/build/DependencyVersions.props +++ b/build/DependencyVersions.props @@ -22,9 +22,10 @@ $(CLI_SharedFrameworkVersion) $(CLI_SharedFrameworkVersion) $(CLI_SharedFrameworkVersion) - 1.0.0-beta2-20170810-304 - 1.0.0-beta2-20170810-304 - 1.0.0-beta2-20170810-304 + 1.0.0-beta2-20171004-309 + 1.0.0-beta2-20171004-309 + 1.0.0-beta2-20171004-309 + 1.0.0-beta2-20171004-309 2.0.0 2.0.0 0.1.1-alpha-167 From 2d6314e78f5c16ed65c98321fd1f1611339a560c Mon Sep 17 00:00:00 2001 From: seancpeters Date: Wed, 11 Oct 2017 16:37:49 -0700 Subject: [PATCH 08/45] removed commented out config I'd meant to remove --- build/BundledTemplates.props | 3 --- 1 file changed, 3 deletions(-) diff --git a/build/BundledTemplates.props b/build/BundledTemplates.props index c0c286421..76dd56562 100644 --- a/build/BundledTemplates.props +++ b/build/BundledTemplates.props @@ -9,8 +9,5 @@ - From 3b09db3f9eb4c23aa3811e04a557c7d78547eb29 Mon Sep 17 00:00:00 2001 From: Andy Gerlicher Date: Wed, 11 Oct 2017 17:26:43 -0700 Subject: [PATCH 09/45] MSBuild 15.5.153 --- build/DependencyVersions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props index 6cc04f3bd..f35479912 100644 --- a/build/DependencyVersions.props +++ b/build/DependencyVersions.props @@ -2,7 +2,7 @@ 2.0.0 - 15.5.0-preview-000113-1032064 + 15.5.0-preview-000153-1054696 2.6.0-beta1-62126-01 2.6.0-pre-20171003-1 1.6.0-beta2-25304 From 97f4a01869e406221d2f14e7ecfe518dad3513f1 Mon Sep 17 00:00:00 2001 From: Andy Gerlicher Date: Wed, 11 Oct 2017 17:27:36 -0700 Subject: [PATCH 10/45] MSBuild 15.5.154 --- build/DependencyVersions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props index 6cc04f3bd..9f955e997 100644 --- a/build/DependencyVersions.props +++ b/build/DependencyVersions.props @@ -2,7 +2,7 @@ 2.0.0 - 15.5.0-preview-000113-1032064 + 15.5.0-preview-000154-1054573 2.6.0-beta1-62126-01 2.6.0-pre-20171003-1 1.6.0-beta2-25304 From d15d4483329bfa376f45b9d889ed4896f9a55a3f Mon Sep 17 00:00:00 2001 From: Andy Gerlicher Date: Wed, 11 Oct 2017 18:30:57 -0700 Subject: [PATCH 11/45] Update NuGet to 4529 (signed) --- build/DependencyVersions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props index 9f955e997..8d466e1fe 100644 --- a/build/DependencyVersions.props +++ b/build/DependencyVersions.props @@ -15,7 +15,7 @@ 2.0.1-servicing-20170926-1 $(CLI_NETSDK_Version) - 4.5.0-preview1-4526 + 4.5.0-preview2-4529 2.0.0-preview3-25514-04 2.0.0-rel-20171010-665 15.5.0-preview-20171009-10 From 15ee853d4945ed1c07b18a20d4b62738d1d8fe26 Mon Sep 17 00:00:00 2001 From: NuGet Team Bot Date: Wed, 11 Oct 2017 18:44:34 -0700 Subject: [PATCH 12/45] Insert NuGet Build 4.5.0-preview2-4529 into cli --- build/DependencyVersions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props index e183f7850..989e82616 100644 --- a/build/DependencyVersions.props +++ b/build/DependencyVersions.props @@ -15,7 +15,7 @@ 2.0.1-servicing-20170926-1 $(CLI_NETSDK_Version) - 4.5.0-preview1-4526 + 4.5.0-preview2-4529 2.0.0-preview3-25514-04 2.0.0-rel-20171010-665 15.5.0-preview-20171009-10 From 821a413dd6a3372e1dee5aa86b3c70579fb77658 Mon Sep 17 00:00:00 2001 From: Livar Date: Wed, 11 Oct 2017 22:29:40 -0700 Subject: [PATCH 13/45] Updating Roslyn satellites and SDK versions --- build/DependencyVersions.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props index e183f7850..4e4a6e385 100644 --- a/build/DependencyVersions.props +++ b/build/DependencyVersions.props @@ -4,7 +4,7 @@ 2.0.0 15.5.0-preview-000153-1054696 2.6.0-beta1-62126-01 - 2.6.0-pre-20171003-1 + 2.6.0-pre-20171012-1 1.6.0-beta2-25304 4.2.0-rtm-170926-0 4.4.1-pre-20171003-1 @@ -12,7 +12,7 @@ - 2.0.1-servicing-20170926-1 + 15.5.0-preview-20171012-6 $(CLI_NETSDK_Version) 4.5.0-preview1-4526 From 7b558111ae5d1eb8173288bc533dda1b319dc0ec Mon Sep 17 00:00:00 2001 From: Nick Guerrera Date: Thu, 12 Oct 2017 16:17:27 -0700 Subject: [PATCH 14/45] Use same build number for roslyn and F# satellites --- build/DependencyVersions.props | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props index 2d8fc4aee..d9ade5d20 100644 --- a/build/DependencyVersions.props +++ b/build/DependencyVersions.props @@ -4,10 +4,12 @@ 2.0.0 15.5.0-preview-000154-1054573 2.6.0-beta1-62126-01 - 2.6.0-pre-20171012-1 1.6.0-beta2-25304 4.2.0-rtm-170926-0 - 4.4.1-pre-20171003-1 + + pre-20171012-1 + 2.6.0-$(CLI_Deps_Satellites_Build) + 4.4.1-$(CLI_Deps_Satellites_Build) - + + All + @@ -74,9 +72,33 @@ - + + + + + + + + + + + + + + "version": ".*" + "version": "$(CLI_SharedFrameworkVersion)" + + + + + + + + + - + + - + - + - - + + + + + + + + - + + + + + + + + + + - - - - - + + + + + - - diff --git a/src/tool_roslyn/RunCsc.cmd b/src/tool_roslyn/RunCsc.cmd deleted file mode 100644 index 7398082b2..000000000 --- a/src/tool_roslyn/RunCsc.cmd +++ /dev/null @@ -1,6 +0,0 @@ -@echo off - -REM Copyright (c) .NET Foundation and contributors. All rights reserved. -REM Licensed under the MIT license. See LICENSE file in the project root for full license information. - -"%~dp0..\..\..\dotnet" "%~dp0csc.exe" %* diff --git a/src/tool_roslyn/RunCsc.sh b/src/tool_roslyn/RunCsc.sh deleted file mode 100755 index 47aed63d1..000000000 --- a/src/tool_roslyn/RunCsc.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bash -# -# 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. -# - -set -e - -SOURCE="${BASH_SOURCE[0]}" -while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink - DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" - SOURCE="$(readlink "$SOURCE")" - [[ "$SOURCE" != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located -done -DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" - -"$DIR/../../../dotnet" "$DIR/csc.exe" "$@" diff --git a/src/tool_roslyn/RunVbc.cmd b/src/tool_roslyn/RunVbc.cmd deleted file mode 100644 index e891b1bf5..000000000 --- a/src/tool_roslyn/RunVbc.cmd +++ /dev/null @@ -1,6 +0,0 @@ -@echo off - -REM Copyright (c) .NET Foundation and contributors. All rights reserved. -REM Licensed under the MIT license. See LICENSE file in the project root for full license information. - -"%~dp0..\..\..\dotnet" "%~dp0vbc.exe" %* diff --git a/src/tool_roslyn/RunVbc.sh b/src/tool_roslyn/RunVbc.sh deleted file mode 100755 index 3dda886a0..000000000 --- a/src/tool_roslyn/RunVbc.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bash -# -# 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. -# - -set -e - -SOURCE="${BASH_SOURCE[0]}" -while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink - DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" - SOURCE="$(readlink "$SOURCE")" - [[ "$SOURCE" != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located -done -DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" - -"$DIR/../../../dotnet" "$DIR/vbc.exe" "$@" diff --git a/src/tool_roslyn/tool_roslyn.csproj b/src/tool_roslyn/tool_roslyn.csproj deleted file mode 100644 index bd702ca7c..000000000 --- a/src/tool_roslyn/tool_roslyn.csproj +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - $(CliVersionPrefix) - netcoreapp2.0 - $(CLI_SharedFrameworkVersion) - true - $(RoslynDirectory) - $(CommitCount) - - - - - - - - - - - - - - PreserveNewest - PreserveNewest - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/tool_roslyn_satellites/tool_roslyn_satellites.csproj b/src/tool_roslyn_satellites/tool_roslyn_satellites.csproj new file mode 100644 index 000000000..d42c632b0 --- /dev/null +++ b/src/tool_roslyn_satellites/tool_roslyn_satellites.csproj @@ -0,0 +1,35 @@ + + + + + + $(CliVersionPrefix) + $(CliTargetFramework) + $(CLI_SharedFrameworkVersion) + $(RoslynDirectory)/bincore + $(CommitCount) + false + false + false + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/test/dotnet-msbuild.Tests/GivenMsbuildForwardingApp.cs b/test/dotnet-msbuild.Tests/GivenMsbuildForwardingApp.cs index 4450258ee..a40e23b5a 100644 --- a/test/dotnet-msbuild.Tests/GivenMsbuildForwardingApp.cs +++ b/test/dotnet-msbuild.Tests/GivenMsbuildForwardingApp.cs @@ -31,8 +31,6 @@ namespace Microsoft.DotNet.Cli.MSBuild.Tests [Theory] [InlineData("MSBuildExtensionsPath")] - [InlineData("CscToolExe")] - [InlineData("VbcToolExe")] [InlineData("MSBuildSDKsPath")] [InlineData("DOTNET_CLI_TELEMETRY_SESSIONID")] public void ItSetsEnvironmentalVariables(string envVarName) @@ -66,28 +64,6 @@ namespace Microsoft.DotNet.Cli.MSBuild.Tests .Exist(); } - [Fact] - public void ItSetsCscToolExePathToValidPath() - { - var msbuildPath = ""; - var envVar = "CscToolExe"; - new FileInfo(new MSBuildForwardingApp(new string[0], msbuildPath) - .GetProcessStartInfo() - .Environment[envVar]) - .Should().NotBeNull("constructor will throw on invalid path"); - } - - [Fact] - public void ItSetsVbcToolExePathToValidPath() - { - var msbuildPath = ""; - var envVar = "VbcToolExe"; - new FileInfo(new MSBuildForwardingApp(new string[0], msbuildPath) - .GetProcessStartInfo() - .Environment[envVar]) - .Should().NotBeNull("constructor will throw on invalid path"); - } - [Fact] public void ItSetsOrIgnoresTelemetrySessionId() { From 88bcf0ffb3eeccc24462675c021e202aed397e3a Mon Sep 17 00:00:00 2001 From: Andy Gerlicher Date: Mon, 16 Oct 2017 14:40:46 -0700 Subject: [PATCH 17/45] MSBuild 15.5.160 --- build/DependencyVersions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props index fd4d8c474..d35a4da0b 100644 --- a/build/DependencyVersions.props +++ b/build/DependencyVersions.props @@ -2,7 +2,7 @@ 2.0.0 - 15.5.0-preview-000154-1054573 + 15.5.0-preview-000160-1065475 2.6.0-beta1-62126-01 1.6.0-beta2-25304 4.2.0-rtm-170926-0 From 2a3a5be07d5019487896f0a1b5784886a66eb92d Mon Sep 17 00:00:00 2001 From: Daniel Plaisted Date: Mon, 16 Oct 2017 17:23:12 -0700 Subject: [PATCH 18/45] Insert SDK 15.5.0-preview-20171017-1 --- build/DependencyVersions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props index 07508caff..637aaa3af 100644 --- a/build/DependencyVersions.props +++ b/build/DependencyVersions.props @@ -13,7 +13,7 @@ - 15.5.0-preview-20171012-6 + 15.5.0-preview-20171017-1 $(CLI_NETSDK_Version) 4.5.0-preview2-4529 From ea158bb68606e071ad2a6bde8d8acac8b48349c4 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Tue, 17 Oct 2017 09:48:16 -0700 Subject: [PATCH 19/45] Update the roslyn version to 2.6.0-beta2-62210-01. --- build/DependencyVersions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props index 637aaa3af..e4ab1f20d 100644 --- a/build/DependencyVersions.props +++ b/build/DependencyVersions.props @@ -3,7 +3,7 @@ 2.0.0 15.5.0-preview-000154-1054573 - 2.6.0-beta1-62126-01 + 2.6.0-beta2-62210-01 1.6.0-beta2-25304 4.2.0-rtm-170926-0 pre-20171012-1 From bfb045e31183c4a12e46eaf05bb32089282e3ce5 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Mon, 16 Oct 2017 18:19:34 -0700 Subject: [PATCH 20/45] Updating the brand to 2.1.1. --- build/Branding.props | 2 +- build/Version.props | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/build/Branding.props b/build/Branding.props index 2defb3b47..02463e2c5 100644 --- a/build/Branding.props +++ b/build/Branding.props @@ -1,6 +1,6 @@ - Microsoft .NET Core SDK - 15.5.0 + Microsoft .NET Core SDK - 2.1.1 .NET Standard Support for Visual Studio 2015 Microsoft .NET Core Runtime - 2.0.1 Microsoft .NET Core Host - 2.0.1 diff --git a/build/Version.props b/build/Version.props index 8e40233c3..4c47fdeba 100644 --- a/build/Version.props +++ b/build/Version.props @@ -1,8 +1,8 @@ - 15 - 5 - 0 + 2 + 1 + 1 preview $(VersionMajor).$(VersionMinor).$(VersionPatch)-$(ReleaseSuffix) From 9bd976f5ece0c0aa11e57052d25cfcf49124c8b9 Mon Sep 17 00:00:00 2001 From: Livar Date: Tue, 17 Oct 2017 16:52:20 -0700 Subject: [PATCH 21/45] Updating ASP.NET templates to 1.0.0-beta2-20170810-304 --- build/DependencyVersions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props index f601e9a3f..25243a29f 100644 --- a/build/DependencyVersions.props +++ b/build/DependencyVersions.props @@ -26,7 +26,7 @@ 1.0.0-beta2-20171004-309 1.0.0-beta2-20171004-309 1.0.0-beta2-20171004-309 - 1.0.0-beta2-20171004-309 + 1.0.0-beta2-20170810-304 2.0.0 2.0.0 0.1.1-alpha-167 From 8e2b99dae17ad1a066c7282ef68eb6846fc69f44 Mon Sep 17 00:00:00 2001 From: Livar Date: Tue, 17 Oct 2017 17:53:18 -0700 Subject: [PATCH 22/45] Removing a bundled template that should not be here. Microsoft.DotNet.Web.Client.ItemTemplates should not be here yet. --- build/BundledTemplates.props | 1 - 1 file changed, 1 deletion(-) diff --git a/build/BundledTemplates.props b/build/BundledTemplates.props index 76dd56562..397ed4f0f 100644 --- a/build/BundledTemplates.props +++ b/build/BundledTemplates.props @@ -6,7 +6,6 @@ - From d3098e7fcd4f9735f9d22e13141bdd30b02ec986 Mon Sep 17 00:00:00 2001 From: Livar Date: Wed, 18 Oct 2017 10:40:15 -0700 Subject: [PATCH 23/45] Update SDK to 15.5.0-preview-20171018-2 --- build/DependencyVersions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props index 25243a29f..cff56573d 100644 --- a/build/DependencyVersions.props +++ b/build/DependencyVersions.props @@ -13,7 +13,7 @@ - 15.5.0-preview-20171017-1 + 15.5.0-preview-20171018-2 $(CLI_NETSDK_Version) 4.5.0-preview2-4529 From f81c0fc1d758a3a958581dbe64b187560c307020 Mon Sep 17 00:00:00 2001 From: Andy Gerlicher Date: Mon, 23 Oct 2017 14:59:24 -0700 Subject: [PATCH 24/45] MSBuild 15.5.165 --- build/DependencyVersions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props index cff56573d..e4ddf2ecf 100644 --- a/build/DependencyVersions.props +++ b/build/DependencyVersions.props @@ -2,7 +2,7 @@ 2.0.0 - 15.5.0-preview-000160-1065475 + 15.5.0-preview-000165-1081473 2.6.0-beta2-62210-01 1.6.0-beta2-25304 4.2.0-rtm-170926-0 From 20b0b820a8944dd4402f4776fe193a42707edd91 Mon Sep 17 00:00:00 2001 From: Nick Guerrera Date: Tue, 24 Oct 2017 15:04:24 -0700 Subject: [PATCH 25/45] Remove unnecessary handling of verbosity in RestoreCommand We were taking care to set the console verbosity to minimal, but only when no verbosity argument is passed. However, the default verbosity for all CLI msbuild commands is already minimal and so we can just get out of the way. --- src/dotnet/commands/dotnet-restore/Program.cs | 14 +------------- .../GivenDotnetRestoreInvocation.cs | 15 +-------------- 2 files changed, 2 insertions(+), 27 deletions(-) diff --git a/src/dotnet/commands/dotnet-restore/Program.cs b/src/dotnet/commands/dotnet-restore/Program.cs index b0269370f..6cc324098 100644 --- a/src/dotnet/commands/dotnet-restore/Program.cs +++ b/src/dotnet/commands/dotnet-restore/Program.cs @@ -19,7 +19,7 @@ namespace Microsoft.DotNet.Tools.Restore { } - public static RestoreCommand FromArgs(string[] args, string msbuildPath = null) + public static RestoreCommand FromArgs(string[] args, string msbuildPath = null, bool noLogo = true) { DebugHelper.HandleDebugSwitch(ref args); @@ -37,11 +37,6 @@ namespace Microsoft.DotNet.Tools.Restore "/t:Restore" }; - if (!HasVerbosityOption(parsedRestore)) - { - msbuildArgs.Add("/ConsoleLoggerParameters:Verbosity=Minimal"); - } - msbuildArgs.AddRange(parsedRestore.OptionValuesToBeForwarded()); msbuildArgs.AddRange(parsedRestore.Arguments); @@ -65,12 +60,5 @@ namespace Microsoft.DotNet.Tools.Restore return cmd.Execute(); } - - private static bool HasVerbosityOption(AppliedOption parsedRestore) - { - return parsedRestore.HasOption("verbosity") || - parsedRestore.Arguments.Any(a => a.Contains("/v:")) || - parsedRestore.Arguments.Any(a => a.Contains("/verbosity:")); - } } } \ No newline at end of file diff --git a/test/dotnet-msbuild.Tests/GivenDotnetRestoreInvocation.cs b/test/dotnet-msbuild.Tests/GivenDotnetRestoreInvocation.cs index dd55e2abd..1c1802b2d 100644 --- a/test/dotnet-msbuild.Tests/GivenDotnetRestoreInvocation.cs +++ b/test/dotnet-msbuild.Tests/GivenDotnetRestoreInvocation.cs @@ -13,9 +13,6 @@ namespace Microsoft.DotNet.Cli.MSBuild.Tests private const string ExpectedPrefix = "exec /m /v:m /NoLogo /t:Restore"; - private string ExpectedPrefixWithConsoleLoggerParamaters = - $"{ExpectedPrefix} /ConsoleLoggerParameters:Verbosity=Minimal"; - [Theory] [InlineData(new string[] { }, "")] [InlineData(new string[] { "-s", "" }, "/p:RestoreSources=")] @@ -30,19 +27,9 @@ namespace Microsoft.DotNet.Cli.MSBuild.Tests [InlineData(new string[] { "--no-cache" }, "/p:RestoreNoCache=true")] [InlineData(new string[] { "--ignore-failed-sources" }, "/p:RestoreIgnoreFailedSources=true")] [InlineData(new string[] { "--no-dependencies" }, "/p:RestoreRecursive=false")] - public void MsbuildInvocationWithConsoleLoggerParametersIsCorrect(string[] args, string expectedAdditionalArgs) - { - expectedAdditionalArgs = (string.IsNullOrEmpty(expectedAdditionalArgs) ? "" : $" {expectedAdditionalArgs}"); - - var msbuildPath = ""; - RestoreCommand.FromArgs(args, msbuildPath) - .GetProcessStartInfo().Arguments - .Should().Be($"{ExpectedPrefixWithConsoleLoggerParamaters}{expectedAdditionalArgs}"); - } - [InlineData(new string[] { "-v", "minimal" }, @"/verbosity:minimal")] [InlineData(new string[] { "--verbosity", "minimal" }, @"/verbosity:minimal")] - public void MsbuildInvocationWithVerbosityIsCorrect(string[] args, string expectedAdditionalArgs) + public void MsbuildInvocationIsCorrect(string[] args, string expectedAdditionalArgs) { expectedAdditionalArgs = (string.IsNullOrEmpty(expectedAdditionalArgs) ? "" : $" {expectedAdditionalArgs}"); From ac921f3668f993677a676c6c750aee478b74ac00 Mon Sep 17 00:00:00 2001 From: Andy Gerlicher Date: Wed, 25 Oct 2017 16:39:37 -0700 Subject: [PATCH 26/45] Remove ImportAfter target for NuGet MSBuild common targets now import NuGet.targets directly, this is no longer needed. --- .../Microsoft.NuGet.ImportAfter.targets | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100644 resources/MSBuildImports/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets diff --git a/resources/MSBuildImports/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets b/resources/MSBuildImports/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets deleted file mode 100644 index 433922aac..000000000 --- a/resources/MSBuildImports/15.0/Microsoft.Common.targets/ImportAfter/Microsoft.NuGet.ImportAfter.targets +++ /dev/null @@ -1,18 +0,0 @@ - - - - - $(MSBuildExtensionsPath)\NuGet.targets - - - From 8fead788d77ddf4003cb271fb00787ec7959938b Mon Sep 17 00:00:00 2001 From: Nick Guerrera Date: Wed, 25 Oct 2017 10:42:08 -0700 Subject: [PATCH 27/45] Fix `dotnet build /clp:NoSummary` --- src/dotnet/commands/dotnet-build/BuildCommand.cs | 4 ++-- test/dotnet-msbuild.Tests/GivenDotnetBuildInvocation.cs | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/dotnet/commands/dotnet-build/BuildCommand.cs b/src/dotnet/commands/dotnet-build/BuildCommand.cs index c7127353b..3fcee0925 100644 --- a/src/dotnet/commands/dotnet-build/BuildCommand.cs +++ b/src/dotnet/commands/dotnet-build/BuildCommand.cs @@ -37,6 +37,8 @@ namespace Microsoft.DotNet.Tools.Build var appliedBuildOptions = result["dotnet"]["build"]; + msbuildArgs.Add($"/clp:Summary"); + if (appliedBuildOptions.HasOption("--no-incremental")) { msbuildArgs.Add("/t:Rebuild"); @@ -50,8 +52,6 @@ namespace Microsoft.DotNet.Tools.Build msbuildArgs.AddRange(appliedBuildOptions.Arguments); - msbuildArgs.Add($"/clp:Summary"); - bool noRestore = appliedBuildOptions.HasOption("--no-restore"); return new BuildCommand( diff --git a/test/dotnet-msbuild.Tests/GivenDotnetBuildInvocation.cs b/test/dotnet-msbuild.Tests/GivenDotnetBuildInvocation.cs index 259d5e257..e0742823f 100644 --- a/test/dotnet-msbuild.Tests/GivenDotnetBuildInvocation.cs +++ b/test/dotnet-msbuild.Tests/GivenDotnetBuildInvocation.cs @@ -9,8 +9,7 @@ namespace Microsoft.DotNet.Cli.MSBuild.Tests { public class GivenDotnetBuildInvocation { - const string ExpectedPrefix = "exec /m /v:m"; - const string ExpectedSuffix = "/clp:Summary"; + const string ExpectedPrefix = "exec /m /v:m /clp:Summary"; [Theory] [InlineData(new string[] { }, "/t:Build")] @@ -36,7 +35,7 @@ namespace Microsoft.DotNet.Cli.MSBuild.Tests var msbuildPath = ""; BuildCommand.FromArgs(args, msbuildPath) - .GetProcessStartInfo().Arguments.Should().Be($"{ExpectedPrefix}{expectedAdditionalArgs} {ExpectedSuffix}"); + .GetProcessStartInfo().Arguments.Should().Be($"{ExpectedPrefix}{expectedAdditionalArgs}"); } } } From 4c804c3421ddd013b4be9c699eabeedad8ac09f1 Mon Sep 17 00:00:00 2001 From: Andy Gerlicher Date: Wed, 25 Oct 2017 16:43:33 -0700 Subject: [PATCH 28/45] MSBuild 15.5.170 --- build/DependencyVersions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props index e4ddf2ecf..c2aa53b24 100644 --- a/build/DependencyVersions.props +++ b/build/DependencyVersions.props @@ -2,7 +2,7 @@ 2.0.0 - 15.5.0-preview-000165-1081473 + 15.5.0-preview-000170-1090113 2.6.0-beta2-62210-01 1.6.0-beta2-25304 4.2.0-rtm-170926-0 From 35b7ad27891aa1fdfc7505900cfe83e1aa6cdec3 Mon Sep 17 00:00:00 2001 From: Nick Guerrera Date: Tue, 24 Oct 2017 15:50:43 -0700 Subject: [PATCH 29/45] Use msbuild /restore instead of separate invocations where possible It is not currently possible when there is a -f|--framework argument because we cannot force a TargetFramework global property on to the restore evaluation. Doing so completely breaks restore by applying the TargetFramework to all projects transitively. The correct behavior is to restore for all frameworks, then build/publish/etc for the given target framework. Achieving that still requires two distinct msbuild invocations. This also changes the verbosity of implicit restore from quiet to that of the subsequent command (default=minimal). Similar to global properties, we cannot specify a distinct console verbosity for the /restore portion of the overall execution. For consistency, we apply the same verbosity change to the case where we still use two separate msbuild invocations. This also fixes an issue where the separate restore invocation's msbuild log would be overwritten by the subsequent command execution. However, this remains unfixed in the case where we still use two separate msbuild invocations. --- src/dotnet/commands/RestoringCommand.cs | 80 +++++++++++++------ src/dotnet/commands/dotnet-restore/Program.cs | 11 ++- .../GivenDotnetBuildInvocation.cs | 41 ++++++++-- .../GivenDotnetPackInvocation.cs | 8 +- .../GivenDotnetPublishInvocation.cs | 37 +++++++-- .../GivenDotnetRestoreInvocation.cs | 2 +- 6 files changed, 132 insertions(+), 47 deletions(-) diff --git a/src/dotnet/commands/RestoringCommand.cs b/src/dotnet/commands/RestoringCommand.cs index 0239fd69b..8d4f3c923 100644 --- a/src/dotnet/commands/RestoringCommand.cs +++ b/src/dotnet/commands/RestoringCommand.cs @@ -1,6 +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; using System.Collections.Generic; using System.Linq; using Microsoft.DotNet.Tools.MSBuild; @@ -10,26 +11,7 @@ namespace Microsoft.DotNet.Tools { public class RestoringCommand : MSBuildForwardingApp { - private bool NoRestore { get; } - - private IEnumerable ParsedArguments { get; } - - private IEnumerable TrailingArguments { get; } - - private IEnumerable ArgsToForwardToRestore() - { - var restoreArguments = ParsedArguments.Where(a => - !a.StartsWith("/p:TargetFramework")); - - if (!restoreArguments.Any(a => a.StartsWith("/verbosity:"))) - { - restoreArguments = restoreArguments.Concat(new string[] { "/verbosity:q" }); - } - - return restoreArguments.Concat(TrailingArguments); - } - - private bool ShouldRunImplicitRestore => !NoRestore; + public RestoreCommand SeparateRestoreCommand { get; } public RestoringCommand( IEnumerable msbuildArgs, @@ -37,18 +19,64 @@ namespace Microsoft.DotNet.Tools IEnumerable trailingArguments, bool noRestore, string msbuildPath = null) - : base(msbuildArgs, msbuildPath) + : base(GetCommandArguments(msbuildArgs, parsedArguments, noRestore), msbuildPath) { - NoRestore = noRestore; - ParsedArguments = parsedArguments; - TrailingArguments = trailingArguments; + SeparateRestoreCommand = GetSeparateRestoreCommand(parsedArguments, trailingArguments, noRestore, msbuildPath); } + private static IEnumerable GetCommandArguments( + IEnumerable msbuildArgs, + IEnumerable parsedArguments, + bool noRestore) + { + if (noRestore) + { + return msbuildArgs; + } + + if (HasArgumentToExcludeFromRestore(parsedArguments)) + { + return Prepend("/nologo", msbuildArgs); + } + + return Prepend("/restore", msbuildArgs); + } + + private static RestoreCommand GetSeparateRestoreCommand( + IEnumerable parsedArguments, + IEnumerable trailingArguments, + bool noRestore, + string msbuildPath) + { + if (noRestore || !HasArgumentToExcludeFromRestore(parsedArguments)) + { + return null; + } + + var restoreArguments = parsedArguments + .Where(a => !IsExcludedFromRestore(a)) + .Concat(trailingArguments); + + return RestoreCommand.FromArgs( + restoreArguments.ToArray(), + msbuildPath, + noLogo: false); + } + + private static IEnumerable Prepend(string argument, IEnumerable arguments) + => new[] { argument }.Concat(arguments); + + private static bool HasArgumentToExcludeFromRestore(IEnumerable arguments) + => arguments.Any(a => IsExcludedFromRestore(a)); + + private static bool IsExcludedFromRestore(string argument) + => argument.StartsWith("/p:TargetFramework=", StringComparison.Ordinal); + public override int Execute() { - if (ShouldRunImplicitRestore) + if (SeparateRestoreCommand != null) { - int exitCode = RestoreCommand.Run(ArgsToForwardToRestore().ToArray()); + int exitCode = SeparateRestoreCommand.Execute(); if (exitCode != 0) { return exitCode; diff --git a/src/dotnet/commands/dotnet-restore/Program.cs b/src/dotnet/commands/dotnet-restore/Program.cs index 6cc324098..b432150c3 100644 --- a/src/dotnet/commands/dotnet-restore/Program.cs +++ b/src/dotnet/commands/dotnet-restore/Program.cs @@ -31,11 +31,14 @@ namespace Microsoft.DotNet.Tools.Restore var parsedRestore = result["dotnet"]["restore"]; - var msbuildArgs = new List + var msbuildArgs = new List(); + + if (noLogo) { - "/NoLogo", - "/t:Restore" - }; + msbuildArgs.Add("/nologo"); + } + + msbuildArgs.Add("/t:Restore"); msbuildArgs.AddRange(parsedRestore.OptionValuesToBeForwarded()); diff --git a/test/dotnet-msbuild.Tests/GivenDotnetBuildInvocation.cs b/test/dotnet-msbuild.Tests/GivenDotnetBuildInvocation.cs index e0742823f..64b7ecda5 100644 --- a/test/dotnet-msbuild.Tests/GivenDotnetBuildInvocation.cs +++ b/test/dotnet-msbuild.Tests/GivenDotnetBuildInvocation.cs @@ -9,7 +9,7 @@ namespace Microsoft.DotNet.Cli.MSBuild.Tests { public class GivenDotnetBuildInvocation { - const string ExpectedPrefix = "exec /m /v:m /clp:Summary"; + const string ExpectedPrefix = "exec /m /v:m"; [Theory] [InlineData(new string[] { }, "/t:Build")] @@ -18,8 +18,6 @@ namespace Microsoft.DotNet.Cli.MSBuild.Tests [InlineData(new string[] { "--output", "foo" }, "/t:Build /p:OutputPath=foo")] [InlineData(new string[] { "-o", "foo1 foo2" }, "/t:Build \"/p:OutputPath=foo1 foo2\"")] [InlineData(new string[] { "--no-incremental" }, "/t:Rebuild")] - [InlineData(new string[] { "-f", "tfm" }, "/t:Build /p:TargetFramework=tfm")] - [InlineData(new string[] { "--framework", "tfm" }, "/t:Build /p:TargetFramework=tfm")] [InlineData(new string[] { "-r", "rid" }, "/t:Build /p:RuntimeIdentifier=rid")] [InlineData(new string[] { "--runtime", "rid" }, "/t:Build /p:RuntimeIdentifier=rid")] [InlineData(new string[] { "-c", "config" }, "/t:Build /p:Configuration=config")] @@ -28,14 +26,45 @@ namespace Microsoft.DotNet.Cli.MSBuild.Tests [InlineData(new string[] { "--no-dependencies" }, "/t:Build /p:BuildProjectReferences=false")] [InlineData(new string[] { "-v", "diag" }, "/t:Build /verbosity:diag")] [InlineData(new string[] { "--verbosity", "diag" }, "/t:Build /verbosity:diag")] - [InlineData(new string[] { "--no-incremental", "-o", "myoutput", "-r", "myruntime", "-v", "diag" }, "/t:Rebuild /p:OutputPath=myoutput /p:RuntimeIdentifier=myruntime /verbosity:diag")] + [InlineData(new string[] { "--no-incremental", "-o", "myoutput", "-r", "myruntime", "-v", "diag", "/ArbitrarySwitchForMSBuild" }, + "/t:Rebuild /p:OutputPath=myoutput /p:RuntimeIdentifier=myruntime /verbosity:diag /ArbitrarySwitchForMSBuild")] public void MsbuildInvocationIsCorrect(string[] args, string expectedAdditionalArgs) { expectedAdditionalArgs = (string.IsNullOrEmpty(expectedAdditionalArgs) ? "" : $" {expectedAdditionalArgs}"); var msbuildPath = ""; - BuildCommand.FromArgs(args, msbuildPath) - .GetProcessStartInfo().Arguments.Should().Be($"{ExpectedPrefix}{expectedAdditionalArgs}"); + var command = BuildCommand.FromArgs(args, msbuildPath); + + command.SeparateRestoreCommand.Should().BeNull(); + + command.GetProcessStartInfo() + .Arguments.Should() + .Be($"{ExpectedPrefix} /restore /clp:Summary{expectedAdditionalArgs}"); + } + + [Theory] + [InlineData(new string[] { "-f", "tfm" }, "/t:Restore", "/t:Build /p:TargetFramework=tfm")] + [InlineData(new string[] { "-o", "myoutput", "-f", "tfm", "-v", "diag", "/ArbitrarySwitchForMSBuild" }, + "/t:Restore /p:OutputPath=myoutput /verbosity:diag /ArbitrarySwitchForMSBuild", + "/t:Build /p:OutputPath=myoutput /p:TargetFramework=tfm /verbosity:diag /ArbitrarySwitchForMSBuild")] + public void MsbuildInvocationIsCorrectForSeparateRestore( + string[] args, + string expectedAdditionalArgsForRestore, + string expectedAdditionalArgs) + { + expectedAdditionalArgs = (string.IsNullOrEmpty(expectedAdditionalArgs) ? "" : $" {expectedAdditionalArgs}"); + + var msbuildPath = ""; + var command = BuildCommand.FromArgs(args, msbuildPath); + + command.SeparateRestoreCommand.GetProcessStartInfo() + .Arguments.Should() + .Be($"{ExpectedPrefix} {expectedAdditionalArgsForRestore}"); + + command.GetProcessStartInfo() + .Arguments.Should() + .Be($"{ExpectedPrefix} /nologo /clp:Summary{expectedAdditionalArgs}"); + } } } diff --git a/test/dotnet-msbuild.Tests/GivenDotnetPackInvocation.cs b/test/dotnet-msbuild.Tests/GivenDotnetPackInvocation.cs index aba1b15a6..74559a6fa 100644 --- a/test/dotnet-msbuild.Tests/GivenDotnetPackInvocation.cs +++ b/test/dotnet-msbuild.Tests/GivenDotnetPackInvocation.cs @@ -11,7 +11,7 @@ namespace Microsoft.DotNet.Cli.MSBuild.Tests { public class GivenDotnetPackInvocation { - const string ExpectedPrefix = "exec /m /v:m /t:pack"; + const string ExpectedPrefix = "exec /m /v:m /restore /t:pack"; [Theory] [InlineData(new string[] { }, "")] @@ -33,8 +33,10 @@ namespace Microsoft.DotNet.Cli.MSBuild.Tests expectedAdditionalArgs = (string.IsNullOrEmpty(expectedAdditionalArgs) ? "" : $" {expectedAdditionalArgs}"); var msbuildPath = ""; - PackCommand.FromArgs(args, msbuildPath) - .GetProcessStartInfo().Arguments.Should().Be($"{ExpectedPrefix}{expectedAdditionalArgs}"); + var command = PackCommand.FromArgs(args, msbuildPath); + + command.SeparateRestoreCommand.Should().BeNull(); + command.GetProcessStartInfo().Arguments.Should().Be($"{ExpectedPrefix}{expectedAdditionalArgs}"); } } } diff --git a/test/dotnet-msbuild.Tests/GivenDotnetPublishInvocation.cs b/test/dotnet-msbuild.Tests/GivenDotnetPublishInvocation.cs index f7cf3838d..4ece567bc 100644 --- a/test/dotnet-msbuild.Tests/GivenDotnetPublishInvocation.cs +++ b/test/dotnet-msbuild.Tests/GivenDotnetPublishInvocation.cs @@ -20,12 +20,10 @@ namespace Microsoft.DotNet.Cli.MSBuild.Tests this.output = output; } - const string ExpectedPrefix = "exec /m /v:m /t:Publish"; + const string ExpectedPrefix = "exec /m /v:m"; [Theory] [InlineData(new string[] { }, "")] - [InlineData(new string[] { "-f", "" }, "/p:TargetFramework=")] - [InlineData(new string[] { "--framework", "" }, "/p:TargetFramework=")] [InlineData(new string[] { "-r", "" }, "/p:RuntimeIdentifier=")] [InlineData(new string[] { "--runtime", "" }, "/p:RuntimeIdentifier=")] [InlineData(new string[] { "-o", "" }, "/p:PublishDir=")] @@ -43,10 +41,35 @@ namespace Microsoft.DotNet.Cli.MSBuild.Tests expectedAdditionalArgs = (string.IsNullOrEmpty(expectedAdditionalArgs) ? "" : $" {expectedAdditionalArgs}"); var msbuildPath = ""; - PublishCommand.FromArgs(args, msbuildPath) - .GetProcessStartInfo() - .Arguments.Should() - .Be($"{ExpectedPrefix}{expectedAdditionalArgs}"); + var command = PublishCommand.FromArgs(args, msbuildPath); + + command.SeparateRestoreCommand + .Should() + .BeNull(); + + command.GetProcessStartInfo() + .Arguments.Should() + .Be($"{ExpectedPrefix} /restore /t:Publish{expectedAdditionalArgs}"); + } + + [Theory] + [InlineData(new string[] { "-f", "" }, "/p:TargetFramework=")] + [InlineData(new string[] { "--framework", "" }, "/p:TargetFramework=")] + public void MsbuildInvocationIsCorrectForSeparateRestore(string[] args, string expectedAdditionalArgs) + { + expectedAdditionalArgs = (string.IsNullOrEmpty(expectedAdditionalArgs) ? "" : $" {expectedAdditionalArgs}"); + + var msbuildPath = ""; + var command = PublishCommand.FromArgs(args, msbuildPath); + + command.SeparateRestoreCommand + .GetProcessStartInfo() + .Arguments.Should() + .Be($"{ExpectedPrefix} /t:Restore"); + + command.GetProcessStartInfo() + .Arguments.Should() + .Be($"{ExpectedPrefix} /nologo /t:Publish{expectedAdditionalArgs}"); } [Theory] diff --git a/test/dotnet-msbuild.Tests/GivenDotnetRestoreInvocation.cs b/test/dotnet-msbuild.Tests/GivenDotnetRestoreInvocation.cs index 1c1802b2d..eb8ea6163 100644 --- a/test/dotnet-msbuild.Tests/GivenDotnetRestoreInvocation.cs +++ b/test/dotnet-msbuild.Tests/GivenDotnetRestoreInvocation.cs @@ -11,7 +11,7 @@ namespace Microsoft.DotNet.Cli.MSBuild.Tests public class GivenDotnetRestoreInvocation { private const string ExpectedPrefix = - "exec /m /v:m /NoLogo /t:Restore"; + "exec /m /v:m /nologo /t:Restore"; [Theory] [InlineData(new string[] { }, "")] From cef9a90ad130310cfa2e1f25cf40e0fa9ba63343 Mon Sep 17 00:00:00 2001 From: William Lee Date: Fri, 27 Oct 2017 10:58:25 -0700 Subject: [PATCH 30/45] Hashed telemetry and event name change (#7919) --- .../TelemetryEventEntry.cs | 7 + src/dotnet/Program.cs | 30 ++-- .../AllowListToSendFirstAppliedOptions.cs | 3 +- .../Telemetry/AllowListToSendFirstArgument.cs | 3 +- src/dotnet/Telemetry/Sha256Hasher.cs | 5 + src/dotnet/Telemetry/Telemetry.cs | 7 +- src/dotnet/Telemetry/TelemetryFilter.cs | 110 ++++++++----- .../TopLevelCommandNameAndOptionToLog.cs | 3 +- src/dotnet/TopLevelCommandParserResult.cs | 21 +++ .../InternalReportinstallsuccessCommand.cs | 22 ++- .../commands/dotnet-msbuild/MSBuildLogger.cs | 21 ++- .../commands/dotnet-new/NewCommandShim.cs | 2 +- .../GivenMSBuildLogger.cs | 76 +++++++++ test/dotnet.Tests/TelemetryCommandTest.cs | 147 ++++++++++++------ .../FakeRecordEventNameTelemetry.cs | 38 ----- 15 files changed, 340 insertions(+), 155 deletions(-) create mode 100644 src/dotnet/TopLevelCommandParserResult.cs create mode 100644 test/dotnet-msbuild.Tests/GivenMSBuildLogger.cs delete mode 100644 test/msbuild.IntegrationTests/FakeRecordEventNameTelemetry.cs diff --git a/src/Microsoft.DotNet.Cli.Utils/TelemetryEventEntry.cs b/src/Microsoft.DotNet.Cli.Utils/TelemetryEventEntry.cs index fbbf9d559..7b8214c5b 100644 --- a/src/Microsoft.DotNet.Cli.Utils/TelemetryEventEntry.cs +++ b/src/Microsoft.DotNet.Cli.Utils/TelemetryEventEntry.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; namespace Microsoft.DotNet.Cli.Utils { @@ -83,5 +84,11 @@ namespace Microsoft.DotNet.Cli.Utils public string EventName { get; } public IDictionary Properties { get; } public IDictionary Measurements { get; } + + public ApplicationInsightsEntryFormat WithAppliedToPropertiesValue(Func func) + { + var appliedProperties = Properties.ToDictionary(p => p.Key, p => func(p.Value)); + return new ApplicationInsightsEntryFormat(EventName, appliedProperties, Measurements); + } } } diff --git a/src/dotnet/Program.cs b/src/dotnet/Program.cs index 6a929f4ce..6fb3c6512 100644 --- a/src/dotnet/Program.cs +++ b/src/dotnet/Program.cs @@ -82,6 +82,7 @@ namespace Microsoft.DotNet.Cli var command = string.Empty; var lastArg = 0; var cliFallbackFolderPathCalculator = new CliFallbackFolderPathCalculator(); + TopLevelCommandParserResult topLevelCommandParserResult = TopLevelCommandParserResult.Empty; using (INuGetCacheSentinel nugetCacheSentinel = new NuGetCacheSentinel(cliFallbackFolderPathCalculator)) using (IFirstTimeUseNoticeSentinel disposableFirstTimeUseNoticeSentinel = new FirstTimeUseNoticeSentinel(cliFallbackFolderPathCalculator)) @@ -120,7 +121,13 @@ namespace Microsoft.DotNet.Cli // It's the command, and we're done! command = args[lastArg]; - if (IsDotnetBeingInvokedFromNativeInstaller(command)) + if (string.IsNullOrEmpty(command)) + { + command = "help"; + } + + topLevelCommandParserResult = new TopLevelCommandParserResult(args[lastArg]); + if (IsDotnetBeingInvokedFromNativeInstaller(topLevelCommandParserResult)) { firstTimeUseNoticeSentinel = new NoOpFirstTimeUseNoticeSentinel(); } @@ -144,7 +151,7 @@ namespace Microsoft.DotNet.Cli telemetryClient = new Telemetry.Telemetry(firstTimeUseNoticeSentinel); } TelemetryEventEntry.Subscribe(telemetryClient.TrackEvent); - TelemetryEventEntry.TelemetryFilter = new TelemetryFilter(); + TelemetryEventEntry.TelemetryFilter = new TelemetryFilter(Sha256Hasher.HashWithNormalizedCasing); } IEnumerable appArgs = @@ -158,23 +165,18 @@ namespace Microsoft.DotNet.Cli Console.WriteLine($"Telemetry is: {(telemetryClient.Enabled ? "Enabled" : "Disabled")}"); } - if (string.IsNullOrEmpty(command)) - { - command = "help"; - } - - TelemetryEventEntry.TrackEvent(command, null, null); + TelemetryEventEntry.SendFiltered(topLevelCommandParserResult); int exitCode; - if (BuiltInCommandsCatalog.Commands.TryGetValue(command, out var builtIn)) + if (BuiltInCommandsCatalog.Commands.TryGetValue(topLevelCommandParserResult.Command, out var builtIn)) { - TelemetryEventEntry.SendFiltered(Parser.Instance.ParseFrom($"dotnet {command}", appArgs.ToArray())); + TelemetryEventEntry.SendFiltered(Parser.Instance.ParseFrom($"dotnet {topLevelCommandParserResult.Command}", appArgs.ToArray())); exitCode = builtIn.Command(appArgs.ToArray()); } else { CommandResult result = Command.Create( - "dotnet-" + command, + "dotnet-" + topLevelCommandParserResult.Command, appArgs, FrameworkConstants.CommonFrameworks.NetStandardApp15) .Execute(); @@ -183,9 +185,9 @@ namespace Microsoft.DotNet.Cli return exitCode; } - private static bool IsDotnetBeingInvokedFromNativeInstaller(string command) + private static bool IsDotnetBeingInvokedFromNativeInstaller(TopLevelCommandParserResult parseResult) { - return command == "internal-reportinstallsuccess"; + return parseResult.Command == "internal-reportinstallsuccess"; } private static void ConfigureDotNetForFirstTimeUse( @@ -268,7 +270,7 @@ namespace Microsoft.DotNet.Cli string currentRid = RuntimeEnvironment.GetRuntimeIdentifier(); - // if the current RID isn't supported by the shared framework, display the RID the CLI was + // if the current RID isn't supported by the shared framework, display the RID the CLI was // built with instead, so the user knows which RID they should put in their "runtimes" section. return fxDepsFile.IsRuntimeSupported(currentRid) ? currentRid : diff --git a/src/dotnet/Telemetry/AllowListToSendFirstAppliedOptions.cs b/src/dotnet/Telemetry/AllowListToSendFirstAppliedOptions.cs index 5670f6687..dd7c43883 100644 --- a/src/dotnet/Telemetry/AllowListToSendFirstAppliedOptions.cs +++ b/src/dotnet/Telemetry/AllowListToSendFirstAppliedOptions.cs @@ -29,9 +29,10 @@ namespace Microsoft.DotNet.Cli.Telemetry if (firstOption != null) { result.Add(new ApplicationInsightsEntryFormat( - "dotnet-" + topLevelCommandNameFromParse, + "sublevelparser/command", new Dictionary { + { "verb", topLevelCommandNameFromParse}, {"argument", firstOption} })); } diff --git a/src/dotnet/Telemetry/AllowListToSendFirstArgument.cs b/src/dotnet/Telemetry/AllowListToSendFirstArgument.cs index b18c6e4f4..1b30384de 100644 --- a/src/dotnet/Telemetry/AllowListToSendFirstArgument.cs +++ b/src/dotnet/Telemetry/AllowListToSendFirstArgument.cs @@ -31,9 +31,10 @@ namespace Microsoft.DotNet.Cli.Telemetry if (firstArgument != null) { result.Add(new ApplicationInsightsEntryFormat( - "dotnet-" + topLevelCommandNameFromParse, + "sublevelparser/command", new Dictionary { + {"verb", topLevelCommandNameFromParse}, {"argument", firstArgument} })); } diff --git a/src/dotnet/Telemetry/Sha256Hasher.cs b/src/dotnet/Telemetry/Sha256Hasher.cs index bbe7cfdfb..f077b8fb8 100644 --- a/src/dotnet/Telemetry/Sha256Hasher.cs +++ b/src/dotnet/Telemetry/Sha256Hasher.cs @@ -17,6 +17,11 @@ namespace Microsoft.DotNet.Cli.Telemetry return HashInFormat(sha256, text); } + public static string HashWithNormalizedCasing(string text) + { + return Hash(text.ToUpperInvariant()); + } + private static string HashInFormat(SHA256 sha256, string text) { byte[] bytes = Encoding.UTF8.GetBytes(text); diff --git a/src/dotnet/Telemetry/Telemetry.cs b/src/dotnet/Telemetry/Telemetry.cs index fe1209339..2a88de24f 100644 --- a/src/dotnet/Telemetry/Telemetry.cs +++ b/src/dotnet/Telemetry/Telemetry.cs @@ -120,7 +120,7 @@ namespace Microsoft.DotNet.Cli.Telemetry Dictionary eventProperties = GetEventProperties(properties); Dictionary eventMeasurements = GetEventMeasures(measurements); - _client.TrackEvent(eventName, eventProperties, eventMeasurements); + _client.TrackEvent(PrependProducerNamespace(eventName), eventProperties, eventMeasurements); _client.Flush(); } catch (Exception e) @@ -129,6 +129,11 @@ namespace Microsoft.DotNet.Cli.Telemetry } } + private static string PrependProducerNamespace(string eventName) + { + return "dotnet/cli/" + eventName; + } + private Dictionary GetEventMeasures(IDictionary measurements) { Dictionary eventMeasurements = new Dictionary(_commonMeasurements); diff --git a/src/dotnet/Telemetry/TelemetryFilter.cs b/src/dotnet/Telemetry/TelemetryFilter.cs index 6d44ef58d..e71b76306 100644 --- a/src/dotnet/Telemetry/TelemetryFilter.cs +++ b/src/dotnet/Telemetry/TelemetryFilter.cs @@ -2,6 +2,7 @@ // Licensed under the MIT license. See LICENSE file in the project root for full license information. using System.Collections.Generic; +using System; using System.Linq; using Microsoft.DotNet.Cli.CommandLine; using Microsoft.DotNet.Cli.Utils; @@ -11,48 +12,15 @@ namespace Microsoft.DotNet.Cli.Telemetry internal class TelemetryFilter : ITelemetryFilter { private const string DotnetName = "dotnet"; + private readonly Func _hash; + + public TelemetryFilter(Func hash) + { + _hash = hash ?? throw new ArgumentNullException(nameof(hash)); + } public IEnumerable Filter(object objectToFilter) { - var ruleSet = new List - { new AllowListToSendFirstArgument(new HashSet{ "new", "help" }), - new AllowListToSendFirstAppliedOptions(new HashSet{ "add", "remove", "list", "sln", "nuget" }), - new TopLevelCommandNameAndOptionToLog - ( - topLevelCommandName: new HashSet { "new" }, - optionsToLog: new HashSet { "language" } - ), - new TopLevelCommandNameAndOptionToLog - ( - topLevelCommandName: new HashSet { "build", "publish" }, - optionsToLog: new HashSet { "framework", "runtime", "configuration" } - ), - new TopLevelCommandNameAndOptionToLog - ( - topLevelCommandName: new HashSet { "run", "clean", "test" }, - optionsToLog: new HashSet { "framework", "configuration" } - ), - new TopLevelCommandNameAndOptionToLog - ( - topLevelCommandName: new HashSet { "pack" }, - optionsToLog: new HashSet { "configuration" } - ), - new TopLevelCommandNameAndOptionToLog - ( - topLevelCommandName: new HashSet { "migrate" }, - optionsToLog: new HashSet { "sdk-package-version" } - ), - new TopLevelCommandNameAndOptionToLog - ( - topLevelCommandName: new HashSet { "vstest" }, - optionsToLog: new HashSet { "platform", "framework", "logger" } - ), - new TopLevelCommandNameAndOptionToLog - ( - topLevelCommandName: new HashSet { "publish" }, - optionsToLog: new HashSet { "runtime" } - ) - }; var result = new List(); if (objectToFilter is ParseResult parseResult) @@ -62,16 +30,73 @@ namespace Microsoft.DotNet.Cli.Telemetry { LogVerbosityForAllTopLevelCommand(result, parseResult, topLevelCommandName); - foreach (IParseResultLogRule rule in ruleSet) + foreach (IParseResultLogRule rule in ParseResultLogRules) { result.AddRange(rule.AllowList(parseResult)); } } } + else if(objectToFilter is TopLevelCommandParserResult topLevelCommandParserResult) + { + result.Add(new ApplicationInsightsEntryFormat( + "toplevelparser/command", + new Dictionary() + {{ "verb", topLevelCommandParserResult.Command}} + )); - return result; + } + else if (objectToFilter is InstallerSuccessReport installerSuccessReport) + { + result.Add(new ApplicationInsightsEntryFormat( + "install/reportsuccess", + new Dictionary {{ "exeName", installerSuccessReport.ExeName}} + )); + } + + return result.Select(r => r.WithAppliedToPropertiesValue(_hash)).ToList(); } + private static List ParseResultLogRules => new List + { + new AllowListToSendFirstArgument(new HashSet {"new", "help"}), + new AllowListToSendFirstAppliedOptions(new HashSet {"add", "remove", "list", "sln", "nuget"}), + new TopLevelCommandNameAndOptionToLog + ( + topLevelCommandName: new HashSet {"new"}, + optionsToLog: new HashSet {"language"} + ), + new TopLevelCommandNameAndOptionToLog + ( + topLevelCommandName: new HashSet {"build", "publish"}, + optionsToLog: new HashSet {"framework", "runtime", "configuration"} + ), + new TopLevelCommandNameAndOptionToLog + ( + topLevelCommandName: new HashSet {"run", "clean", "test"}, + optionsToLog: new HashSet {"framework", "configuration"} + ), + new TopLevelCommandNameAndOptionToLog + ( + topLevelCommandName: new HashSet {"pack"}, + optionsToLog: new HashSet {"configuration"} + ), + new TopLevelCommandNameAndOptionToLog + ( + topLevelCommandName: new HashSet {"migrate"}, + optionsToLog: new HashSet {"sdk-package-version"} + ), + new TopLevelCommandNameAndOptionToLog + ( + topLevelCommandName: new HashSet {"vstest"}, + optionsToLog: new HashSet {"platform", "framework", "logger"} + ), + new TopLevelCommandNameAndOptionToLog + ( + topLevelCommandName: new HashSet {"publish"}, + optionsToLog: new HashSet {"runtime"} + ) + }; + private static void LogVerbosityForAllTopLevelCommand( ICollection result, ParseResult parseResult, @@ -84,9 +109,10 @@ namespace Microsoft.DotNet.Cli.Telemetry parseResult[DotnetName][topLevelCommandName].AppliedOptions["verbosity"]; result.Add(new ApplicationInsightsEntryFormat( - "dotnet-" + topLevelCommandName, + "sublevelparser/command", new Dictionary() { + { "verb", topLevelCommandName}, {"verbosity", appliedOptions.Arguments.ElementAt(0)} })); } diff --git a/src/dotnet/Telemetry/TopLevelCommandNameAndOptionToLog.cs b/src/dotnet/Telemetry/TopLevelCommandNameAndOptionToLog.cs index 38a234541..9a9e6a449 100644 --- a/src/dotnet/Telemetry/TopLevelCommandNameAndOptionToLog.cs +++ b/src/dotnet/Telemetry/TopLevelCommandNameAndOptionToLog.cs @@ -36,9 +36,10 @@ namespace Microsoft.DotNet.Cli.Telemetry parseResult[DotnetName][topLevelCommandName] .AppliedOptions[option]; result.Add(new ApplicationInsightsEntryFormat( - "dotnet-" + topLevelCommandName, + "sublevelparser/command", new Dictionary { + { "verb", topLevelCommandName}, {option, appliedOptions.Arguments.ElementAt(0)} })); } diff --git a/src/dotnet/TopLevelCommandParserResult.cs b/src/dotnet/TopLevelCommandParserResult.cs new file mode 100644 index 000000000..64a9b837e --- /dev/null +++ b/src/dotnet/TopLevelCommandParserResult.cs @@ -0,0 +1,21 @@ +// 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.Cli +{ + internal class TopLevelCommandParserResult + { + public static TopLevelCommandParserResult Empty + { + get { return new TopLevelCommandParserResult(string.Empty); } + } + + public string Command { get; } + + public TopLevelCommandParserResult(string command) + { + Command = command; + } + } +} diff --git a/src/dotnet/commands/dotnet-internal-reportinstallsuccess/InternalReportinstallsuccessCommand.cs b/src/dotnet/commands/dotnet-internal-reportinstallsuccess/InternalReportinstallsuccessCommand.cs index b44e9b41c..dc91364e5 100644 --- a/src/dotnet/commands/dotnet-internal-reportinstallsuccess/InternalReportinstallsuccessCommand.cs +++ b/src/dotnet/commands/dotnet-internal-reportinstallsuccess/InternalReportinstallsuccessCommand.cs @@ -5,6 +5,7 @@ using System; using System.Linq; using System.IO; using System.Collections.Generic; +using Microsoft.DotNet.Cli.CommandLine; using Microsoft.DotNet.Configurer; using Microsoft.DotNet.Cli.Telemetry; @@ -28,12 +29,13 @@ namespace Microsoft.DotNet.Cli var result = parser.ParseFrom("dotnet internal-reportinstallsuccess", args); var internalReportinstallsuccess = result["dotnet"]["internal-reportinstallsuccess"]; - var exeName = Path.GetFileName(internalReportinstallsuccess.Arguments.Single()); - telemetry.TrackEvent( - "reportinstallsuccess", - new Dictionary { { "exeName", exeName } }, - new Dictionary()); + + var filter = new TelemetryFilter(Sha256Hasher.HashWithNormalizedCasing); + foreach (var e in filter.Filter(new InstallerSuccessReport(exeName))) + { + telemetry.TrackEvent(e.EventName, e.Properties, null); + } } internal class ThreadBlockingTelemetry : ITelemetry @@ -54,4 +56,14 @@ namespace Microsoft.DotNet.Cli } } } + + internal class InstallerSuccessReport + { + public string ExeName { get; } + + public InstallerSuccessReport(string exeName) + { + ExeName = exeName ?? throw new ArgumentNullException(nameof(exeName)); + } + } } \ No newline at end of file diff --git a/src/dotnet/commands/dotnet-msbuild/MSBuildLogger.cs b/src/dotnet/commands/dotnet-msbuild/MSBuildLogger.cs index ef9d7d93e..1a6433f90 100644 --- a/src/dotnet/commands/dotnet-msbuild/MSBuildLogger.cs +++ b/src/dotnet/commands/dotnet-msbuild/MSBuildLogger.cs @@ -7,6 +7,7 @@ using Microsoft.Build.Utilities; using Microsoft.DotNet.Cli; using Microsoft.DotNet.Cli.Telemetry; using Microsoft.DotNet.Configurer; +using System.Collections.Generic; namespace Microsoft.DotNet.Tools.MSBuild { @@ -15,6 +16,9 @@ namespace Microsoft.DotNet.Tools.MSBuild private readonly IFirstTimeUseNoticeSentinel _sentinel = new FirstTimeUseNoticeSentinel(new CliFallbackFolderPathCalculator()); private readonly ITelemetry _telemetry; + private const string NewEventName = "msbuild"; + private const string TargetFrameworkTelemetryEventName = "targetframeworkeval"; + private const string TargetFrameworkVersionTelemetryPropertyKey= "TargetFrameworkVersion"; public MSBuildLogger() { @@ -52,9 +56,24 @@ namespace Microsoft.DotNet.Tools.MSBuild } } + internal static void FormatAndSend(ITelemetry telemetry, TelemetryEventArgs args) + { + if (args.EventName == TargetFrameworkTelemetryEventName) + { + var newEventName = $"msbuild/{TargetFrameworkTelemetryEventName}"; + Dictionary maskedProperties = new Dictionary(); + if (args.Properties.TryGetValue(TargetFrameworkVersionTelemetryPropertyKey, out string value)) + { + maskedProperties.Add(TargetFrameworkVersionTelemetryPropertyKey, Sha256Hasher.HashWithNormalizedCasing(value)); + } + + telemetry.TrackEvent(newEventName, maskedProperties, measurements: null); + } + } + private void OnTelemetryLogged(object sender, TelemetryEventArgs args) { - _telemetry.TrackEvent(args.EventName, args.Properties, measurements: null); + FormatAndSend(_telemetry, args); } public override void Shutdown() diff --git a/src/dotnet/commands/dotnet-new/NewCommandShim.cs b/src/dotnet/commands/dotnet-new/NewCommandShim.cs index cf30e3ca4..4b92bdaa8 100644 --- a/src/dotnet/commands/dotnet-new/NewCommandShim.cs +++ b/src/dotnet/commands/dotnet-new/NewCommandShim.cs @@ -41,7 +41,7 @@ namespace Microsoft.DotNet.Tools.New { if (telemetry.Enabled) { - telemetry.TrackEvent(name, props, measures); + telemetry.TrackEvent($"template/{name}", props, measures); } }); } diff --git a/test/dotnet-msbuild.Tests/GivenMSBuildLogger.cs b/test/dotnet-msbuild.Tests/GivenMSBuildLogger.cs new file mode 100644 index 000000000..7e0521d9f --- /dev/null +++ b/test/dotnet-msbuild.Tests/GivenMSBuildLogger.cs @@ -0,0 +1,76 @@ +// 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 FluentAssertions; +using Xunit; +using Microsoft.DotNet.Tools.MSBuild; +using Microsoft.DotNet.Cli.Telemetry; +using Microsoft.Build.Framework; +using System.Collections.Generic; + +namespace Microsoft.DotNet.Cli.MSBuild.Tests +{ + public class GivenMSBuildLogger + { + [Fact(DisplayName = "It blocks telemetry that is not in the list")] + public void ItBlocks() + { + var fakeTelemetry = new FakeTelemetry(); + var telemetryEventArgs = new TelemetryEventArgs + { + EventName = "User Defined Event Name", + Properties = new Dictionary + { + { "User Defined Key", "User Defined Value"}, + } + }; + + MSBuildLogger.FormatAndSend(fakeTelemetry, telemetryEventArgs); + + fakeTelemetry.LogEntry.Should().BeNull(); + } + + [Fact(DisplayName = "It masks event name with targetframeworkeval only on TargetFrameworkVersion")] + public void ItMasksTargetFrameworkEventname() + { + var fakeTelemetry = new FakeTelemetry(); + var telemetryEventArgs = new TelemetryEventArgs + { + EventName = "targetframeworkeval", + Properties = new Dictionary + { + { "TargetFrameworkVersion", ".NETStandard,Version=v2.0"}, + } + }; + + MSBuildLogger.FormatAndSend(fakeTelemetry, telemetryEventArgs); + + fakeTelemetry.LogEntry.EventName.Should().Be("msbuild/targetframeworkeval"); + fakeTelemetry.LogEntry.Properties.Keys.Count.Should().Be(1); + var expectedKey = "TargetFrameworkVersion"; + fakeTelemetry.LogEntry.Properties.Should().ContainKey(expectedKey); + fakeTelemetry.LogEntry.Properties[expectedKey].Should().Be(Sha256Hasher.Hash(".NETSTANDARD,VERSION=V2.0")); + } + + public class FakeTelemetry : ITelemetry + { + public bool Enabled { get; set; } + + public void TrackEvent(string eventName, IDictionary properties, IDictionary measurements) + { + LogEntry = new LogEntry { EventName = eventName, Properties = properties, Measurement = measurements }; + + } + + public LogEntry LogEntry { get; private set; } + + } + + public class LogEntry + { + public string EventName { get; set; } + public IDictionary Properties { get; set; } + public IDictionary Measurement { get; set; } + } + } +} diff --git a/test/dotnet.Tests/TelemetryCommandTest.cs b/test/dotnet.Tests/TelemetryCommandTest.cs index 356667009..af231ecc7 100644 --- a/test/dotnet.Tests/TelemetryCommandTest.cs +++ b/test/dotnet.Tests/TelemetryCommandTest.cs @@ -16,116 +16,144 @@ namespace Microsoft.DotNet.Tests private readonly FakeRecordEventNameTelemetry _fakeTelemetry; public string EventName { get; set; } + public IDictionary Properties { get; set; } + public TelemetryCommandTests() { _fakeTelemetry = new FakeRecordEventNameTelemetry(); TelemetryEventEntry.Subscribe(_fakeTelemetry.TrackEvent); - TelemetryEventEntry.TelemetryFilter = new TelemetryFilter(); + TelemetryEventEntry.TelemetryFilter = new TelemetryFilter(Sha256Hasher.HashWithNormalizedCasing); } [Fact] public void TopLevelCommandNameShouldBeSentToTelemetry() { - string[] args = {"help"}; + string[] args = { "help" }; Cli.Program.ProcessArgs(args); - _fakeTelemetry.LogEntries.Should().Contain(e => e.EventName == args[0]); + + _fakeTelemetry.LogEntries.Should().Contain(e => e.EventName == "toplevelparser/command" && + e.Properties.ContainsKey("verb") && + e.Properties["verb"] == Sha256Hasher.Hash("HELP")); } [Fact] public void DotnetNewCommandFirstArgumentShouldBeSentToTelemetry() { const string argumentToSend = "console"; - string[] args = {"new", argumentToSend}; + string[] args = { "new", argumentToSend }; Cli.Program.ProcessArgs(args); _fakeTelemetry .LogEntries.Should() - .Contain(e => e.EventName == "dotnet-new" && e.Properties.ContainsKey("argument") && - e.Properties["argument"] == argumentToSend); + .Contain(e => e.EventName == "sublevelparser/command" && + e.Properties.ContainsKey("argument") && + e.Properties["argument"] == Sha256Hasher.Hash(argumentToSend.ToUpper()) && + e.Properties.ContainsKey("verb") && + e.Properties["verb"] == Sha256Hasher.Hash("NEW")); } [Fact] public void DotnetHelpCommandFirstArgumentShouldBeSentToTelemetry() { const string argumentToSend = "something"; - string[] args = {"help", argumentToSend}; + string[] args = { "help", argumentToSend }; Cli.Program.ProcessArgs(args); _fakeTelemetry .LogEntries.Should() - .Contain(e => e.EventName == "dotnet-help" && e.Properties.ContainsKey("argument") && - e.Properties["argument"] == argumentToSend); + .Contain(e => e.EventName == "sublevelparser/command" && + e.Properties.ContainsKey("argument") && + e.Properties["argument"] == Sha256Hasher.Hash(argumentToSend.ToUpper()) && + e.Properties.ContainsKey("verb") && + e.Properties["verb"] == Sha256Hasher.Hash("HELP")); } [Fact] public void DotnetAddCommandFirstArgumentShouldBeSentToTelemetry() { const string argumentToSend = "package"; - string[] args = {"add", argumentToSend, "aPackageName"}; + string[] args = { "add", argumentToSend, "aPackageName" }; Cli.Program.ProcessArgs(args); _fakeTelemetry .LogEntries.Should() - .Contain(e => e.EventName == "dotnet-add" && e.Properties.ContainsKey("argument") && - e.Properties["argument"] == argumentToSend); + .Contain(e => e.EventName == "sublevelparser/command" && + e.Properties.ContainsKey("argument") && + e.Properties["argument"] == Sha256Hasher.Hash(argumentToSend.ToUpper()) && + e.Properties.ContainsKey("verb") && + e.Properties["verb"] == Sha256Hasher.Hash("ADD")); } [Fact] public void DotnetAddCommandFirstArgumentShouldBeSentToTelemetry2() { const string argumentToSend = "reference"; - string[] args = {"add", argumentToSend, "aPackageName"}; + string[] args = { "add", argumentToSend, "aPackageName" }; Cli.Program.ProcessArgs(args); _fakeTelemetry .LogEntries.Should() - .Contain(e => e.EventName == "dotnet-add" && e.Properties.ContainsKey("argument") && - e.Properties["argument"] == argumentToSend); + .Contain(e => e.EventName == "sublevelparser/command" && + e.Properties.ContainsKey("argument") && + e.Properties["argument"] == Sha256Hasher.Hash(argumentToSend.ToUpper()) && + e.Properties.ContainsKey("verb") && + e.Properties["verb"] == Sha256Hasher.Hash("ADD")); } [Fact] public void DotnetRemoveCommandFirstArgumentShouldBeSentToTelemetry() { const string argumentToSend = "package"; - string[] args = {"remove", argumentToSend, "aPackageName"}; + string[] args = { "remove", argumentToSend, "aPackageName" }; Cli.Program.ProcessArgs(args); _fakeTelemetry .LogEntries.Should() - .Contain(e => e.EventName == "dotnet-remove" && e.Properties.ContainsKey("argument") && - e.Properties["argument"] == argumentToSend); + .Contain(e => e.EventName == "sublevelparser/command" && + e.Properties.ContainsKey("argument") && + e.Properties["argument"] == Sha256Hasher.Hash(argumentToSend.ToUpper()) && + e.Properties.ContainsKey("verb") && + e.Properties["verb"] == Sha256Hasher.Hash("REMOVE")); } [Fact] public void DotnetListCommandFirstArgumentShouldBeSentToTelemetry() { const string argumentToSend = "reference"; - string[] args = {"list", argumentToSend, "aPackageName"}; + string[] args = { "list", argumentToSend, "aPackageName" }; Cli.Program.ProcessArgs(args); _fakeTelemetry .LogEntries.Should() - .Contain(e => e.EventName == "dotnet-list" && e.Properties.ContainsKey("argument") && - e.Properties["argument"] == argumentToSend); + .Contain(e => e.EventName == "sublevelparser/command" && e.Properties.ContainsKey("argument") && + e.Properties["argument"] == Sha256Hasher.Hash(argumentToSend.ToUpper()) && + e.Properties.ContainsKey("verb") && + e.Properties["verb"] == Sha256Hasher.Hash("LIST")); } [Fact] public void DotnetSlnCommandFirstArgumentShouldBeSentToTelemetry() { const string argumentToSend = "list"; - string[] args = {"sln", "aSolution", argumentToSend}; + string[] args = { "sln", "aSolution", argumentToSend }; Cli.Program.ProcessArgs(args); _fakeTelemetry .LogEntries.Should() - .Contain(e => e.EventName == "dotnet-sln" && e.Properties.ContainsKey("argument") && - e.Properties["argument"] == argumentToSend); + .Contain(e => e.EventName == "sublevelparser/command" && + e.Properties.ContainsKey("argument") && + e.Properties["argument"] == Sha256Hasher.Hash(argumentToSend.ToUpper()) && + e.Properties.ContainsKey("verb") && + e.Properties["verb"] == Sha256Hasher.Hash("SLN")); } [Fact] public void DotnetNugetCommandFirstArgumentShouldBeSentToTelemetry() { const string argumentToSend = "push"; - string[] args = {"nuget", argumentToSend, "aRoot"}; + string[] args = { "nuget", argumentToSend, "aRoot" }; Cli.Program.ProcessArgs(args); _fakeTelemetry .LogEntries.Should() - .Contain(e => e.EventName == "dotnet-nuget" && e.Properties.ContainsKey("argument") && - e.Properties["argument"] == argumentToSend); + .Contain(e => e.EventName == "sublevelparser/command" && + e.Properties.ContainsKey("argument") && + e.Properties["argument"] == Sha256Hasher.Hash(argumentToSend.ToUpper()) && + e.Properties.ContainsKey("verb") && + e.Properties["verb"] == Sha256Hasher.Hash("NUGET")); } [Fact] @@ -133,12 +161,14 @@ namespace Microsoft.DotNet.Tests { const string optionKey = "language"; const string optionValueToSend = "c#"; - string[] args = {"new", "console", "--" + optionKey, optionValueToSend}; + string[] args = { "new", "console", "--" + optionKey, optionValueToSend }; Cli.Program.ProcessArgs(args); _fakeTelemetry .LogEntries.Should() - .Contain(e => e.EventName == "dotnet-new" && e.Properties.ContainsKey(optionKey) && - e.Properties[optionKey] == optionValueToSend); + .Contain(e => e.EventName == "sublevelparser/command" && e.Properties.ContainsKey(optionKey) && + e.Properties[optionKey] == Sha256Hasher.Hash(optionValueToSend.ToUpper()) && + e.Properties.ContainsKey("verb") && + e.Properties["verb"] == Sha256Hasher.Hash("NEW")); } [Fact] @@ -146,12 +176,15 @@ namespace Microsoft.DotNet.Tests { const string optionKey = "verbosity"; const string optionValueToSend = "minimal"; - string[] args = {"restore", "--" + optionKey, optionValueToSend}; + string[] args = { "restore", "--" + optionKey, optionValueToSend }; Cli.Program.ProcessArgs(args); _fakeTelemetry .LogEntries.Should() - .Contain(e => e.EventName == "dotnet-restore" && e.Properties.ContainsKey(optionKey) && - e.Properties[optionKey] == optionValueToSend); + .Contain(e => e.EventName == "sublevelparser/command" && + e.Properties.ContainsKey(optionKey) && + e.Properties[optionKey] == Sha256Hasher.Hash(optionValueToSend.ToUpper()) && + e.Properties.ContainsKey("verb") && + e.Properties["verb"] == Sha256Hasher.Hash("RESTORE")); } [Fact] @@ -159,12 +192,15 @@ namespace Microsoft.DotNet.Tests { const string optionKey = "configuration"; const string optionValueToSend = "Debug"; - string[] args = {"build", "--" + optionKey, optionValueToSend}; + string[] args = { "build", "--" + optionKey, optionValueToSend }; Cli.Program.ProcessArgs(args); _fakeTelemetry .LogEntries.Should() - .Contain(e => e.EventName == "dotnet-build" && e.Properties.ContainsKey(optionKey) && - e.Properties[optionKey] == optionValueToSend); + .Contain(e => e.EventName == "sublevelparser/command" && + e.Properties.ContainsKey(optionKey) && + e.Properties[optionKey] == Sha256Hasher.Hash(optionValueToSend.ToUpper()) && + e.Properties.ContainsKey("verb") && + e.Properties["verb"] == Sha256Hasher.Hash("BUILD")); } [Fact] @@ -176,40 +212,51 @@ namespace Microsoft.DotNet.Tests Cli.Program.ProcessArgs(args); _fakeTelemetry .LogEntries.Should() - .Contain(e => e.EventName == "dotnet-publish" && e.Properties.ContainsKey(optionKey) && - e.Properties[optionKey] == optionValueToSend); + .Contain(e => e.EventName == "sublevelparser/command" && + e.Properties.ContainsKey(optionKey) && + e.Properties[optionKey] == Sha256Hasher.Hash(optionValueToSend.ToUpper()) && + e.Properties.ContainsKey("verb") && + e.Properties["verb"] == Sha256Hasher.Hash("PUBLISH")); } [Fact] public void DotnetBuildAndPublishCommandOpinionsShouldBeSentToTelemetryWhenThereIsMultipleOption() { - string[] args = {"build", "--configuration", "Debug", "--runtime", "osx.10.11-x64"}; + string[] args = { "build", "--configuration", "Debug", "--runtime", "osx.10.11-x64" }; Cli.Program.ProcessArgs(args); _fakeTelemetry .LogEntries.Should() - .Contain(e => e.EventName == "dotnet-build" && e.Properties.ContainsKey("configuration") && - e.Properties["configuration"] == "Debug"); + .Contain(e => e.EventName == "sublevelparser/command" && e.Properties.ContainsKey("configuration") && + e.Properties["configuration"] == Sha256Hasher.Hash("DEBUG") && + e.Properties.ContainsKey("verb") && + e.Properties["verb"] == Sha256Hasher.Hash("BUILD")); _fakeTelemetry .LogEntries.Should() - .Contain(e => e.EventName == "dotnet-build" && e.Properties.ContainsKey("runtime") && - e.Properties["runtime"] == "osx.10.11-x64"); + .Contain(e => e.EventName == "sublevelparser/command" && e.Properties.ContainsKey("runtime") && + e.Properties["runtime"] == Sha256Hasher.Hash("OSX.10.11-X64") && + e.Properties.ContainsKey("verb") && + e.Properties["verb"] == Sha256Hasher.Hash("BUILD")); } [Fact] public void DotnetRunCleanTestCommandOpinionsShouldBeSentToTelemetryWhenThereIsMultipleOption() { - string[] args = {"clean", "--configuration", "Debug", "--framework", "netcoreapp1.0"}; + string[] args = { "clean", "--configuration", "Debug", "--framework", "netcoreapp1.0" }; Cli.Program.ProcessArgs(args); _fakeTelemetry .LogEntries.Should() - .Contain(e => e.EventName == "dotnet-clean" && e.Properties.ContainsKey("configuration") && - e.Properties["configuration"] == "Debug"); + .Contain(e => e.EventName == "sublevelparser/command" && e.Properties.ContainsKey("configuration") && + e.Properties["configuration"] == Sha256Hasher.Hash("DEBUG") && + e.Properties.ContainsKey("verb") && + e.Properties["verb"] == Sha256Hasher.Hash("CLEAN")); _fakeTelemetry .LogEntries.Should() - .Contain(e => e.EventName == "dotnet-clean" && e.Properties.ContainsKey("framework") && - e.Properties["framework"] == "netcoreapp1.0"); + .Contain(e => e.EventName == "sublevelparser/command" && e.Properties.ContainsKey("framework") && + e.Properties["framework"] == Sha256Hasher.Hash("NETCOREAPP1.0") && + e.Properties.ContainsKey("verb") && + e.Properties["verb"] == Sha256Hasher.Hash("CLEAN")); } [WindowsOnlyFact] @@ -222,8 +269,8 @@ namespace Microsoft.DotNet.Tests fakeTelemetry .LogEntries.Should() - .Contain(e => e.EventName == "reportinstallsuccess" && e.Properties.ContainsKey("exeName") && - e.Properties["exeName"] == "dotnet-sdk-latest-win-x64.exe"); + .Contain(e => e.EventName == "install/reportsuccess" && e.Properties.ContainsKey("exeName") && + e.Properties["exeName"] == Sha256Hasher.Hash("DOTNET-SDK-LATEST-WIN-X64.EXE")); } [Fact] diff --git a/test/msbuild.IntegrationTests/FakeRecordEventNameTelemetry.cs b/test/msbuild.IntegrationTests/FakeRecordEventNameTelemetry.cs deleted file mode 100644 index 091ededb3..000000000 --- a/test/msbuild.IntegrationTests/FakeRecordEventNameTelemetry.cs +++ /dev/null @@ -1,38 +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.Collections.Concurrent; -using System.Collections.Generic; -using Microsoft.DotNet.Cli; - -namespace Microsoft.DotNet.Cli.MSBuild.IntegrationTests -{ - public class FakeRecordEventNameTelemetry - { - public bool Enabled { get; set; } - - public string EventName { get; set; } - - public void TrackEvent(string eventName, - IDictionary properties, - IDictionary measurements) - { - LogEntries.Add( - new LogEntry - { - EventName = eventName, - Measurement = measurements, - Properties = properties - }); - } - - public ConcurrentBag LogEntries { get; set; } = new ConcurrentBag(); - - public class LogEntry - { - public string EventName { get; set; } - public IDictionary Properties { get; set; } - public IDictionary Measurement { get; set; } - } - } -} From 812cfbe90c5685e15d47b9362bed9488a1741d87 Mon Sep 17 00:00:00 2001 From: William Lee Date: Fri, 27 Oct 2017 12:29:19 -0700 Subject: [PATCH 31/45] Update SDK version to 15.5.0-preview-20171027-2 (#7925) --- build/DependencyVersions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props index c2aa53b24..3430da97a 100644 --- a/build/DependencyVersions.props +++ b/build/DependencyVersions.props @@ -13,7 +13,7 @@ - 15.5.0-preview-20171018-2 + 15.5.0-preview-20171027-2 $(CLI_NETSDK_Version) 4.5.0-preview2-4529 From e7fc8749f321e72f6c345343a016ab1bb68db2c2 Mon Sep 17 00:00:00 2001 From: Satya Madala Date: Tue, 31 Oct 2017 20:46:45 +0530 Subject: [PATCH 32/45] Insert Testplatform 15.5.0-preview-20171031-01 --- build/DependencyVersions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props index 91bc82d63..7ec665c4b 100644 --- a/build/DependencyVersions.props +++ b/build/DependencyVersions.props @@ -19,7 +19,7 @@ 4.5.0-preview2-4529 2.0.0-preview3-25514-04 2.0.0-rel-20171010-665 - 15.5.0-preview-20171012-09 + 15.5.0-preview-20171031-01 $(CLI_SharedFrameworkVersion) $(CLI_SharedFrameworkVersion) $(CLI_SharedFrameworkVersion) From 746f092c5793a05f52f60ebf8ab4ddd66d488632 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbyn=C4=9Bk=20Sailer?= Date: Tue, 31 Oct 2017 17:16:46 +0100 Subject: [PATCH 33/45] LOC CHECKIN | dotnet/cli - release/15.5 | 20171031 --- src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.cs.xlf | 2 +- src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.de.xlf | 2 +- src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.es.xlf | 2 +- src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.fr.xlf | 2 +- src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.it.xlf | 2 +- src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.ja.xlf | 2 +- src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.ko.xlf | 2 +- src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.pl.xlf | 2 +- src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.pt-BR.xlf | 2 +- src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.ru.xlf | 2 +- src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.tr.xlf | 2 +- .../commands/dotnet-run/xlf/LocalizableStrings.zh-Hans.xlf | 2 +- .../commands/dotnet-run/xlf/LocalizableStrings.zh-Hant.xlf | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.cs.xlf b/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.cs.xlf index 8ea09aff9..ac8c36c54 100644 --- a/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.cs.xlf +++ b/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.cs.xlf @@ -104,7 +104,7 @@ Aktuální {1} je {2}. A profile with the specified name could not be found or is not a valid JSON object. - Profil spuštění není objektem JSON. + Profil se zadaným názvem se nenašel nebo nepředstavuje platný objekt JSON. diff --git a/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.de.xlf b/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.de.xlf index c4888a85d..6cd88af92 100644 --- a/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.de.xlf +++ b/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.de.xlf @@ -104,7 +104,7 @@ Ein ausführbares Projekt sollte ein ausführbares TFM (z.B. netcoreapp2.0) verw A profile with the specified name could not be found or is not a valid JSON object. - Das Startprofil ist kein JSON-Objekt. + Ein Profil mit dem angegebenen Namen wurde nicht gefunden oder ist kein gültiges JSON-Objekt. diff --git a/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.es.xlf b/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.es.xlf index f22075f6b..5b7eae94b 100644 --- a/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.es.xlf +++ b/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.es.xlf @@ -104,7 +104,7 @@ El actual {1} es "{2}". A profile with the specified name could not be found or is not a valid JSON object. - El perfil de inicio no es un objeto JSON. + No se ha encontrado ningún perfil con el nombre especificado o el que se ha encontrado no es un objeto JSON válido. diff --git a/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.fr.xlf b/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.fr.xlf index cb25dab6b..6c1b28f07 100644 --- a/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.fr.xlf +++ b/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.fr.xlf @@ -104,7 +104,7 @@ Le {1} actuel est '{2}'. A profile with the specified name could not be found or is not a valid JSON object. - Le profil de lancement n'est pas un objet JSON. + Un profil avec le nom spécifié est introuvable ou n'est pas un objet JSON valide. diff --git a/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.it.xlf b/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.it.xlf index 13ca40c66..2d180a233 100644 --- a/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.it.xlf +++ b/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.it.xlf @@ -104,7 +104,7 @@ Il valore corrente di {1} è '{2}'. A profile with the specified name could not be found or is not a valid JSON object. - Il profilo di avvio non è un oggetto JSON. + Non è stato possibile trovare alcun profilo con il nome specificato oppure il profilo non è un oggetto JSON valido. diff --git a/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.ja.xlf b/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.ja.xlf index 8f52f732c..dee300d42 100644 --- a/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.ja.xlf +++ b/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.ja.xlf @@ -104,7 +104,7 @@ The current {1} is '{2}'. A profile with the specified name could not be found or is not a valid JSON object. - 起動プロファイルが JSON オブジェクトではありません。 + 指定された名前のプロファイルは見つからないか、有効な JSON オブジェクトではありません。 diff --git a/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.ko.xlf b/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.ko.xlf index 86ff5d88f..b3e5d55c4 100644 --- a/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.ko.xlf +++ b/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.ko.xlf @@ -104,7 +104,7 @@ The current {1} is '{2}'. A profile with the specified name could not be found or is not a valid JSON object. - 시작 프로필이 JSON 개체가 아닙니다. + 지정된 이름을 가진 프로필을 찾을 수 없거나 유효한 JSON 개체가 아닙니다. diff --git a/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.pl.xlf b/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.pl.xlf index b07a84d33..768e31fd1 100644 --- a/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.pl.xlf +++ b/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.pl.xlf @@ -104,7 +104,7 @@ Bieżący element {1}: „{2}”. A profile with the specified name could not be found or is not a valid JSON object. - Profil uruchamiania nie jest obiektem JSON. + Nie można znaleźć profilu o określonej nazwie lub nie jest to prawidłowy obiekt JSON. diff --git a/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.pt-BR.xlf b/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.pt-BR.xlf index 1e19ebcf8..f398083f8 100644 --- a/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.pt-BR.xlf +++ b/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.pt-BR.xlf @@ -104,7 +104,7 @@ O {1} atual é '{2}'. A profile with the specified name could not be found or is not a valid JSON object. - O perfil de inicialização não é um objeto JSON. + Um perfil com o nome especificado não pôde ser encontrado ou não é um objeto JSON válido. diff --git a/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.ru.xlf b/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.ru.xlf index cf00bd460..cb41939f1 100644 --- a/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.ru.xlf +++ b/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.ru.xlf @@ -104,7 +104,7 @@ The current {1} is '{2}'. A profile with the specified name could not be found or is not a valid JSON object. - Профиль запуска не является объектом JSON. + Не удается найти профиль с указанным именем, или он не является допустимым объектом JSON. diff --git a/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.tr.xlf b/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.tr.xlf index 9a21b7da4..c38bf1e18 100644 --- a/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.tr.xlf +++ b/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.tr.xlf @@ -104,7 +104,7 @@ Geçerli {1}: '{2}'. A profile with the specified name could not be found or is not a valid JSON object. - Başlatma profili bir JSON nesnesi değil. + Belirtilen isme sahip profil bulunamadı veya geçerli bir JSON nesnesi değil. diff --git a/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.zh-Hans.xlf b/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.zh-Hans.xlf index 4ac5ce35e..9775bb8bd 100644 --- a/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.zh-Hans.xlf +++ b/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.zh-Hans.xlf @@ -104,7 +104,7 @@ The current {1} is '{2}'. A profile with the specified name could not be found or is not a valid JSON object. - 启动配置文件不是 JSON 对象。 + 找不到具有指定名称的配置文件或该配置文件不是有效的 JSON 对象。 diff --git a/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.zh-Hant.xlf b/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.zh-Hant.xlf index 05567e529..6c88ba3c0 100644 --- a/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.zh-Hant.xlf +++ b/src/dotnet/commands/dotnet-run/xlf/LocalizableStrings.zh-Hant.xlf @@ -104,7 +104,7 @@ The current {1} is '{2}'. A profile with the specified name could not be found or is not a valid JSON object. - 啟動設定檔並非 JSON 物件。 + 找不到具有指定名稱的設定檔,或不是有效的 JSON 物件。 From ec1e49039586018d616daf857e840475b3ae6a55 Mon Sep 17 00:00:00 2001 From: Andy Gerlicher Date: Wed, 1 Nov 2017 15:27:15 -0700 Subject: [PATCH 34/45] MSBuild 15.5.172 --- build/DependencyVersions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props index 7ec665c4b..f65609c02 100644 --- a/build/DependencyVersions.props +++ b/build/DependencyVersions.props @@ -2,7 +2,7 @@ 2.0.0 - 15.5.0-preview-000170-1090113 + 15.5.0-preview-000172-1103937 2.6.0-beta2-62210-01 1.6.0-beta2-25304 4.2.0-rtm-171027-0 From ed916bb13e798a470855fb4f60acd3cabb2765fc Mon Sep 17 00:00:00 2001 From: Andy Gerlicher Date: Mon, 6 Nov 2017 19:23:10 -0800 Subject: [PATCH 35/45] MSBuild 15.5.178 --- build/DependencyVersions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props index f65609c02..89264b145 100644 --- a/build/DependencyVersions.props +++ b/build/DependencyVersions.props @@ -2,7 +2,7 @@ 2.0.0 - 15.5.0-preview-000172-1103937 + 15.5.0-preview-000178-1116824 2.6.0-beta2-62210-01 1.6.0-beta2-25304 4.2.0-rtm-171027-0 From 7dc7990d81af474e6159d962558fe17ed0f1c928 Mon Sep 17 00:00:00 2001 From: Sarabjot Singh Date: Tue, 7 Nov 2017 18:19:02 +0530 Subject: [PATCH 36/45] Updating the version for TestPlatform Includes branding changes --- build/DependencyVersions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props index f65609c02..0c4f4ac89 100644 --- a/build/DependencyVersions.props +++ b/build/DependencyVersions.props @@ -19,7 +19,7 @@ 4.5.0-preview2-4529 2.0.0-preview3-25514-04 2.0.0-rel-20171010-665 - 15.5.0-preview-20171031-01 + 15.5.0 $(CLI_SharedFrameworkVersion) $(CLI_SharedFrameworkVersion) $(CLI_SharedFrameworkVersion) From b6bfc84f51d0dfcdef45b1463f3953e1ef1d0a46 Mon Sep 17 00:00:00 2001 From: Livar Date: Tue, 7 Nov 2017 15:54:43 -0800 Subject: [PATCH 37/45] Update SDK to 15.5.0-preview-20171107-4 --- build/DependencyVersions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props index 89264b145..079fb4e42 100644 --- a/build/DependencyVersions.props +++ b/build/DependencyVersions.props @@ -13,7 +13,7 @@ - 15.5.0-preview-20171027-2 + 15.5.0-preview-20171107-4 $(CLI_NETSDK_Version) 4.5.0-preview2-4529 From 079edcd894b76dbf2db848ed34fa69cfa489d07f Mon Sep 17 00:00:00 2001 From: Jose Perez Rodriguez Date: Wed, 8 Nov 2017 15:31:51 -0800 Subject: [PATCH 38/45] Updating the SDK and Support package on the CLI --- build/DependencyVersions.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props index 079fb4e42..ae5d2844e 100644 --- a/build/DependencyVersions.props +++ b/build/DependencyVersions.props @@ -13,11 +13,11 @@ - 15.5.0-preview-20171107-4 + 15.5.0-preview-20171108-4 $(CLI_NETSDK_Version) 4.5.0-preview2-4529 - 2.0.0-preview3-25514-04 + 2.0.1-servicing-25908-02 2.0.0-rel-20171010-665 15.5.0-preview-20171031-01 $(CLI_SharedFrameworkVersion) From 5d85c8fde6c3efe08a44ab9ac99a031b6ffc2a4f Mon Sep 17 00:00:00 2001 From: Mike Lorbetske Date: Mon, 13 Nov 2017 12:02:34 -0800 Subject: [PATCH 39/45] Update non-web templates to version 1.0.0-beta3-20171110-312 --- build/DependencyVersions.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props index ae5d2844e..d91afddc8 100644 --- a/build/DependencyVersions.props +++ b/build/DependencyVersions.props @@ -24,8 +24,8 @@ $(CLI_SharedFrameworkVersion) $(CLI_SharedFrameworkVersion) 1.0.0-beta2-20171004-309 - 1.0.0-beta2-20171004-309 - 1.0.0-beta2-20171004-309 + 1.0.0-beta3-20171110-312 + 1.0.0-beta3-20171110-312 1.0.0-beta2-20170810-304 2.0.0 2.0.0 From 6fef644b70258d84f8eb9effeb2b108ca53df69c Mon Sep 17 00:00:00 2001 From: "Kevin Ransom (msft)" Date: Tue, 14 Nov 2017 14:54:03 -0800 Subject: [PATCH 40/45] Update F# compiler --- build/DependencyVersions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props index bcadb79ce..3eb203d16 100644 --- a/build/DependencyVersions.props +++ b/build/DependencyVersions.props @@ -5,7 +5,7 @@ 15.5.0-preview-000178-1116824 2.6.0-beta2-62210-01 1.6.0-beta2-25304 - 4.2.0-rtm-171027-0 + 4.2.0-rtm-171104-0 pre-20171012-1 2.6.0-$(CLI_Deps_Satellites_Build) 4.4.1-$(CLI_Deps_Satellites_Build) From 789eb0f416daccbe27a928d56da27ceb65cf1fe9 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Tue, 14 Nov 2017 18:50:58 -0800 Subject: [PATCH 41/45] Adding the ASP.NET feed where the ASP.NET templates are being published to. --- NuGet.Config | 1 + 1 file changed, 1 insertion(+) diff --git a/NuGet.Config b/NuGet.Config index 9c645c984..b3f9eafc1 100644 --- a/NuGet.Config +++ b/NuGet.Config @@ -19,5 +19,6 @@ + From fe690887034c5a666a198963bf4f44d2ce598289 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Wed, 15 Nov 2017 13:22:30 -0800 Subject: [PATCH 42/45] Updating Roslyn version. --- build/DependencyVersions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props index 106cfefd5..3f0ffc7b9 100644 --- a/build/DependencyVersions.props +++ b/build/DependencyVersions.props @@ -3,7 +3,7 @@ 2.0.3 15.5.0-preview-000178-1116824 - 2.6.0-beta2-62210-01 + 2.6.0-beta3-62309-01 1.6.0-beta2-25304 4.2.0-rtm-171104-0 pre-20171012-1 From b7f81a574e64d26b94d15e3383ce8350e191d9c8 Mon Sep 17 00:00:00 2001 From: Livar Date: Wed, 15 Nov 2017 17:14:17 -0800 Subject: [PATCH 43/45] Update SDK to 15.5.0-preview-20171116-1 --- build/DependencyVersions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props index 3f0ffc7b9..1c0717d31 100644 --- a/build/DependencyVersions.props +++ b/build/DependencyVersions.props @@ -13,7 +13,7 @@ - 15.5.0-preview-20171108-4 + 15.5.0-preview-20171116-1 $(CLI_NETSDK_Version) 4.5.0-preview2-4529 From a75115f4f738ece1a2a7aaa0c48e9a2e56b7ea48 Mon Sep 17 00:00:00 2001 From: Andy Gerlicher Date: Wed, 15 Nov 2017 18:05:25 -0800 Subject: [PATCH 44/45] MSBuild 15.5.179 --- build/DependencyVersions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props index 3f0ffc7b9..28c5cd007 100644 --- a/build/DependencyVersions.props +++ b/build/DependencyVersions.props @@ -2,7 +2,7 @@ 2.0.3 - 15.5.0-preview-000178-1116824 + 15.5.179 2.6.0-beta3-62309-01 1.6.0-beta2-25304 4.2.0-rtm-171104-0 From 0cd05674acbd347530d0529aa5f49c5e8e44eb53 Mon Sep 17 00:00:00 2001 From: NuGet Team Bot Date: Thu, 16 Nov 2017 16:43:21 -0800 Subject: [PATCH 45/45] Insert NuGet Build 4.5.0-rtm-4651 into cli --- build/DependencyVersions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/DependencyVersions.props b/build/DependencyVersions.props index bb7dab48b..438310c8e 100644 --- a/build/DependencyVersions.props +++ b/build/DependencyVersions.props @@ -16,7 +16,7 @@ 15.5.0-preview-20171116-1 $(CLI_NETSDK_Version) - 4.5.0-preview2-4529 + 4.5.0-rtm-4651 2.0.1-servicing-25908-02 2.0.0-rel-20171010-665 15.5.0