From 3e1121a9f45400881daf14401dcbcfc5f69d59aa Mon Sep 17 00:00:00 2001 From: Matt Kotsenas Date: Wed, 3 Jan 2024 15:29:12 -0800 Subject: [PATCH 01/14] WIP --- Directory.Packages.props | 1 + ...Microsoft.Build.Traversal.UnitTests.csproj | 5 ++ src/Traversal.UnitTests/TemplateTests.cs | 44 +++++++++++++++ src/Traversal/Templates/README.md | 54 +++++++++++++++++++ .../traversal/.template.config/template.json | 15 ++++++ src/Traversal/Templates/traversal/dirs.proj | 11 ++++ 6 files changed, 130 insertions(+) create mode 100644 src/Traversal.UnitTests/TemplateTests.cs create mode 100644 src/Traversal/Templates/README.md create mode 100644 src/Traversal/Templates/traversal/.template.config/template.json create mode 100644 src/Traversal/Templates/traversal/dirs.proj diff --git a/Directory.Packages.props b/Directory.Packages.props index 9d9dcb1b..df15e953 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -13,6 +13,7 @@ + diff --git a/src/Traversal.UnitTests/Microsoft.Build.Traversal.UnitTests.csproj b/src/Traversal.UnitTests/Microsoft.Build.Traversal.UnitTests.csproj index a4fe61fc..9fd82076 100644 --- a/src/Traversal.UnitTests/Microsoft.Build.Traversal.UnitTests.csproj +++ b/src/Traversal.UnitTests/Microsoft.Build.Traversal.UnitTests.csproj @@ -6,6 +6,8 @@ + @@ -21,5 +23,8 @@ + diff --git a/src/Traversal.UnitTests/TemplateTests.cs b/src/Traversal.UnitTests/TemplateTests.cs new file mode 100644 index 00000000..3b043691 --- /dev/null +++ b/src/Traversal.UnitTests/TemplateTests.cs @@ -0,0 +1,44 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the MIT license. + +#if NET8_0_OR_GREATER +using Microsoft.Extensions.Logging; +using Microsoft.TemplateEngine.Authoring.TemplateVerifier; +#endif + +using System.IO; +using System.Threading.Tasks; +using Xunit; + +namespace Microsoft.Build.Traversal.UnitTests +{ +#if NET8_0_OR_GREATER + public class TemplateTests + { + private static readonly string RootPath = Path.GetDirectoryName(typeof(TemplateTests).Assembly.Location); + private readonly ILoggerFactory _loggerFactory; + + public TemplateTests() + { + _loggerFactory = LoggerFactory.Create(config => + { + config.AddConsole(); + }); + } + + [Fact] + public async Task Foo() + { + TemplateVerifierOptions options = new (templateName: "traversal") + { + TemplatePath = Path.Combine(RootPath, "Templates", "traversal"), + }; + + VerificationEngine engine = new (_loggerFactory); + await engine.Execute(options); + } + } + +#endif +} \ No newline at end of file diff --git a/src/Traversal/Templates/README.md b/src/Traversal/Templates/README.md new file mode 100644 index 00000000..674b791c --- /dev/null +++ b/src/Traversal/Templates/README.md @@ -0,0 +1,54 @@ +# Microsoft.Build.Traversal.Templates + +## Installing the templates + +The templates are available on [NuGet](https://www.nuget.org/packages/Microsoft.Build.Traversal.Templates/). +To install the templates, run the following command: + +```bash +dotnet new -i Microsoft.Build.Traversal.Templates +``` + +## Using the templates + +// TODO: Update this + +Creating a new project "AdventureWorks" (`-n` or `--name`): + +```bash +dotnet new sqlproj -n "AdventureWorks" +``` + +Displaying help information for the SQL project template (`-h`): + +```bash +dotnet new sqlproj -h +``` + + +Creating a new project "AdventureWorksLT" for Azure SQL Database (`-tp` or `--target-platform`): + +```bash +dotnet new sqlproj -n "AdventureWorksLT" -tp "SqlAzureV12" +``` + + +## Building the templates + +// TODO: Update this + +If you want to customize or contribute to the templates, you will need to build and install the templates locally. The following instructions will help you get started. + +The templates automatically generate a nupkg on build. To build and install the nupkg locally, run the following command: + +```bash +dotnet build +dotnet new --install bin/Debug/Microsoft.Build.Sql.Templates.1.0.0.nupkg +``` + + +To uninstall the templates + +```bash +dotnet new --uninstall Microsoft.Build.Sql.Templates +``` \ No newline at end of file diff --git a/src/Traversal/Templates/traversal/.template.config/template.json b/src/Traversal/Templates/traversal/.template.config/template.json new file mode 100644 index 00000000..ddb193d3 --- /dev/null +++ b/src/Traversal/Templates/traversal/.template.config/template.json @@ -0,0 +1,15 @@ +{ + "$schema": "http://json.schemastore.org/template", + "author": "Microsoft", + "classifications": [ + "MSBuild" + ], + "identity": "Microsoft.Build.Traversal", + "name": "MSBuild Traversal Project", + "shortName": "traversal", + "tags": { + "type": "project" + }, + "sourceName": "dirs", + "defaultName": "dirs" + } \ No newline at end of file diff --git a/src/Traversal/Templates/traversal/dirs.proj b/src/Traversal/Templates/traversal/dirs.proj new file mode 100644 index 00000000..ef7fa033 --- /dev/null +++ b/src/Traversal/Templates/traversal/dirs.proj @@ -0,0 +1,11 @@ + + + + + + + \ No newline at end of file From 52f6525a9b747b11de78460fd0fd472f9ba053f9 Mon Sep 17 00:00:00 2001 From: Matt Kotsenas Date: Thu, 11 Jan 2024 10:25:30 -0800 Subject: [PATCH 02/14] Output template instantiation logs to xunit --- Directory.Packages.props | 1 + ...Microsoft.Build.Traversal.UnitTests.csproj | 4 ++- src/Traversal.UnitTests/Snapshots/README.md | 3 +++ .../traversal/asdf.proj | 11 ++++++++ .../traversal/dirs.proj | 11 ++++++++ src/Traversal.UnitTests/TemplateTests.cs | 27 +++++++++++++------ .../traversal/.template.config/template.json | 4 ++- 7 files changed, 51 insertions(+), 10 deletions(-) create mode 100644 src/Traversal.UnitTests/Snapshots/README.md create mode 100644 src/Traversal.UnitTests/Snapshots/RespectsExplicitName.traversal.--name#asdf.verified/traversal/asdf.proj create mode 100644 src/Traversal.UnitTests/Snapshots/UsesDirsAsDefaultName.traversal.--name#.verified/traversal/dirs.proj diff --git a/Directory.Packages.props b/Directory.Packages.props index df15e953..b450757f 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -40,6 +40,7 @@ + diff --git a/src/Traversal.UnitTests/Microsoft.Build.Traversal.UnitTests.csproj b/src/Traversal.UnitTests/Microsoft.Build.Traversal.UnitTests.csproj index 9fd82076..9a9864ab 100644 --- a/src/Traversal.UnitTests/Microsoft.Build.Traversal.UnitTests.csproj +++ b/src/Traversal.UnitTests/Microsoft.Build.Traversal.UnitTests.csproj @@ -7,13 +7,15 @@ + Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net8.0'))" /> + + + + + + + \ No newline at end of file diff --git a/src/Traversal.UnitTests/Snapshots/UsesDirsAsDefaultName.traversal.--name#.verified/traversal/dirs.proj b/src/Traversal.UnitTests/Snapshots/UsesDirsAsDefaultName.traversal.--name#.verified/traversal/dirs.proj new file mode 100644 index 00000000..ef7fa033 --- /dev/null +++ b/src/Traversal.UnitTests/Snapshots/UsesDirsAsDefaultName.traversal.--name#.verified/traversal/dirs.proj @@ -0,0 +1,11 @@ + + + + + + + \ No newline at end of file diff --git a/src/Traversal.UnitTests/TemplateTests.cs b/src/Traversal.UnitTests/TemplateTests.cs index 3b043691..2407f637 100644 --- a/src/Traversal.UnitTests/TemplateTests.cs +++ b/src/Traversal.UnitTests/TemplateTests.cs @@ -5,40 +5,51 @@ #if NET8_0_OR_GREATER using Microsoft.Extensions.Logging; using Microsoft.TemplateEngine.Authoring.TemplateVerifier; -#endif - using System.IO; using System.Threading.Tasks; using Xunit; +using Xunit.Abstractions; namespace Microsoft.Build.Traversal.UnitTests { -#if NET8_0_OR_GREATER public class TemplateTests { private static readonly string RootPath = Path.GetDirectoryName(typeof(TemplateTests).Assembly.Location); private readonly ILoggerFactory _loggerFactory; - public TemplateTests() + public TemplateTests(ITestOutputHelper xunitOutputHelper) { _loggerFactory = LoggerFactory.Create(config => { - config.AddConsole(); + config.AddXunit(xunitOutputHelper); }); } [Fact] - public async Task Foo() + public async Task UsesDirsAsDefaultName() { TemplateVerifierOptions options = new (templateName: "traversal") { + TemplateSpecificArgs = new[] { "--name", string.Empty }, // BUG: Workaround for https://github.com/dotnet/templating/issues/7394 TemplatePath = Path.Combine(RootPath, "Templates", "traversal"), }; VerificationEngine engine = new (_loggerFactory); await engine.Execute(options); } - } + [Fact] + public async Task RespectsExplicitName() + { + TemplateVerifierOptions options = new (templateName: "traversal") + { + TemplateSpecificArgs = new[] { "--name", "asdf" }, + TemplatePath = Path.Combine(RootPath, "Templates", "traversal"), + }; + + VerificationEngine engine = new (_loggerFactory); + await engine.Execute(options); + } + } +} #endif -} \ No newline at end of file diff --git a/src/Traversal/Templates/traversal/.template.config/template.json b/src/Traversal/Templates/traversal/.template.config/template.json index ddb193d3..6385c4f1 100644 --- a/src/Traversal/Templates/traversal/.template.config/template.json +++ b/src/Traversal/Templates/traversal/.template.config/template.json @@ -6,10 +6,12 @@ ], "identity": "Microsoft.Build.Traversal", "name": "MSBuild Traversal Project", + "description": "A starter dirs.proj file that can be used for MSBuild Traversal projects", "shortName": "traversal", "tags": { - "type": "project" + "type": "item" }, "sourceName": "dirs", + "preferDefaultName": true, "defaultName": "dirs" } \ No newline at end of file From 21c1ab674922e56e64f11a7e8ebf00b5e5b39777 Mon Sep 17 00:00:00 2001 From: Matt Kotsenas Date: Thu, 11 Jan 2024 12:04:35 -0800 Subject: [PATCH 03/14] Create traversal template package --- Directory.Packages.props | 3 +- ...Microsoft.Build.Traversal.Templates.csproj | 38 +++++++++++++++++++ src/Traversal/Templates/README.md | 38 ++----------------- 3 files changed, 44 insertions(+), 35 deletions(-) create mode 100644 src/Traversal/Templates/Microsoft.Build.Traversal.Templates.csproj diff --git a/Directory.Packages.props b/Directory.Packages.props index b450757f..91dc1915 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -13,7 +13,7 @@ - + @@ -35,6 +35,7 @@ + diff --git a/src/Traversal/Templates/Microsoft.Build.Traversal.Templates.csproj b/src/Traversal/Templates/Microsoft.Build.Traversal.Templates.csproj new file mode 100644 index 00000000..3b46d308 --- /dev/null +++ b/src/Traversal/Templates/Microsoft.Build.Traversal.Templates.csproj @@ -0,0 +1,38 @@ + + + + + + MSBuild Traversal templates + Templates for common MSBuild traversal projects + MSBuild traversal dirs template + $(BaseArtifactsPath)$(MSBuildProjectName)\ + true + Template + net8.0 + true + false + content + $(NoWarn);NU5128 + true + README.md + + + + false + + + + + + + + + + + + + + + + diff --git a/src/Traversal/Templates/README.md b/src/Traversal/Templates/README.md index 674b791c..227c625b 100644 --- a/src/Traversal/Templates/README.md +++ b/src/Traversal/Templates/README.md @@ -11,44 +11,14 @@ dotnet new -i Microsoft.Build.Traversal.Templates ## Using the templates -// TODO: Update this - -Creating a new project "AdventureWorks" (`-n` or `--name`): - -```bash -dotnet new sqlproj -n "AdventureWorks" -``` - -Displaying help information for the SQL project template (`-h`): - -```bash -dotnet new sqlproj -h -``` - - -Creating a new project "AdventureWorksLT" for Azure SQL Database (`-tp` or `--target-platform`): +Creating a new project with the default name "dirs.proj" ```bash -dotnet new sqlproj -n "AdventureWorksLT" -tp "SqlAzureV12" +dotnet new traversal ``` - -## Building the templates - -// TODO: Update this - -If you want to customize or contribute to the templates, you will need to build and install the templates locally. The following instructions will help you get started. - -The templates automatically generate a nupkg on build. To build and install the nupkg locally, run the following command: +Creating a new project "AdventureWorks" (`-n` or `--name`): ```bash -dotnet build -dotnet new --install bin/Debug/Microsoft.Build.Sql.Templates.1.0.0.nupkg +dotnet new travesal -n "AdventureWorks" ``` - - -To uninstall the templates - -```bash -dotnet new --uninstall Microsoft.Build.Sql.Templates -``` \ No newline at end of file From 026c328b6faa579bddc4a921bb8f02c9e22e439d Mon Sep 17 00:00:00 2001 From: Matt Kotsenas Date: Sun, 14 Jan 2024 15:10:43 -0500 Subject: [PATCH 04/14] Add NoTagets template --- ...Microsoft.Build.NoTargets.UnitTests.csproj | 7 +++ .../notargets/asdf.msbuildproj | 30 +++++++++++ .../notargets/notargets.msbuildproj | 30 +++++++++++ src/NoTargets.UnitTests/TemplateTests.cs | 54 +++++++++++++++++++ src/NoTargets/README.md | 5 +- ...Microsoft.Build.NoTargets.Templates.csproj | 36 +++++++++++++ src/NoTargets/Templates/README.md | 24 +++++++++ .../notargets/.template.config/template.json | 15 ++++++ .../notargets/NoTargets.Template.msbuildproj | 30 +++++++++++ ...Microsoft.Build.Traversal.Templates.csproj | 2 - .../traversal/.template.config/template.json | 32 +++++------ 11 files changed, 244 insertions(+), 21 deletions(-) create mode 100644 src/NoTargets.UnitTests/Snapshots/RespectsExplicitName.notargets.--name#asdf.verified/notargets/asdf.msbuildproj create mode 100644 src/NoTargets.UnitTests/Snapshots/UsesDirectoryAsDefaultName.notargets._.verified/notargets/notargets.msbuildproj create mode 100644 src/NoTargets.UnitTests/TemplateTests.cs create mode 100644 src/NoTargets/Templates/Microsoft.Build.NoTargets.Templates.csproj create mode 100644 src/NoTargets/Templates/README.md create mode 100644 src/NoTargets/Templates/notargets/.template.config/template.json create mode 100644 src/NoTargets/Templates/notargets/NoTargets.Template.msbuildproj diff --git a/src/NoTargets.UnitTests/Microsoft.Build.NoTargets.UnitTests.csproj b/src/NoTargets.UnitTests/Microsoft.Build.NoTargets.UnitTests.csproj index 6ff89f99..0839054e 100644 --- a/src/NoTargets.UnitTests/Microsoft.Build.NoTargets.UnitTests.csproj +++ b/src/NoTargets.UnitTests/Microsoft.Build.NoTargets.UnitTests.csproj @@ -6,12 +6,16 @@ + + + diff --git a/src/NoTargets.UnitTests/Snapshots/RespectsExplicitName.notargets.--name#asdf.verified/notargets/asdf.msbuildproj b/src/NoTargets.UnitTests/Snapshots/RespectsExplicitName.notargets.--name#asdf.verified/notargets/asdf.msbuildproj new file mode 100644 index 00000000..3f00fb9d --- /dev/null +++ b/src/NoTargets.UnitTests/Snapshots/RespectsExplicitName.notargets.--name#asdf.verified/notargets/asdf.msbuildproj @@ -0,0 +1,30 @@ + + + + + {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + + + netstandard2.0 + + + + + + + \ No newline at end of file diff --git a/src/NoTargets.UnitTests/Snapshots/UsesDirectoryAsDefaultName.notargets._.verified/notargets/notargets.msbuildproj b/src/NoTargets.UnitTests/Snapshots/UsesDirectoryAsDefaultName.notargets._.verified/notargets/notargets.msbuildproj new file mode 100644 index 00000000..3f00fb9d --- /dev/null +++ b/src/NoTargets.UnitTests/Snapshots/UsesDirectoryAsDefaultName.notargets._.verified/notargets/notargets.msbuildproj @@ -0,0 +1,30 @@ + + + + + {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + + + netstandard2.0 + + + + + + + \ No newline at end of file diff --git a/src/NoTargets.UnitTests/TemplateTests.cs b/src/NoTargets.UnitTests/TemplateTests.cs new file mode 100644 index 00000000..6b608b2b --- /dev/null +++ b/src/NoTargets.UnitTests/TemplateTests.cs @@ -0,0 +1,54 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the MIT license. + +#if NET8_0_OR_GREATER +using Microsoft.Extensions.Logging; +using Microsoft.TemplateEngine.Authoring.TemplateVerifier; +using System.IO; +using System.Threading.Tasks; +using Xunit; +using Xunit.Abstractions; + +namespace Microsoft.Build.NoTargets.UnitTests +{ + public class TemplateTests + { + private static readonly string RootPath = Path.GetDirectoryName(typeof(TemplateTests).Assembly.Location); + private readonly ILoggerFactory _loggerFactory; + + public TemplateTests(ITestOutputHelper xunitOutputHelper) + { + _loggerFactory = LoggerFactory.Create(config => + { + config.AddXunit(xunitOutputHelper); + }); + } + + [Fact] + public async Task UsesDirectoryAsDefaultName() + { + TemplateVerifierOptions options = new (templateName: "notargets") + { + TemplatePath = Path.Combine(RootPath, "Templates", "notargets"), + }; + + VerificationEngine engine = new (_loggerFactory); + await engine.Execute(options); + } + + [Fact] + public async Task RespectsExplicitName() + { + TemplateVerifierOptions options = new (templateName: "notargets") + { + TemplateSpecificArgs = new[] { "--name", "asdf" }, + TemplatePath = Path.Combine(RootPath, "Templates", "notargets"), + }; + + VerificationEngine engine = new (_loggerFactory); + await engine.Execute(options); + } + } +} +#endif diff --git a/src/NoTargets/README.md b/src/NoTargets/README.md index f772a68e..e49ad356 100644 --- a/src/NoTargets/README.md +++ b/src/NoTargets/README.md @@ -9,9 +9,8 @@ The `Microsoft.Build.NoTargets` MSBuild project SDK allows project tree owners t To have a project that just copies a file: ```xml - - net46 + netstandard2.0 @@ -40,7 +39,7 @@ Or a project that runs a tool: ```xml - net46 + netstandard2.0 mytool.exe diff --git a/src/NoTargets/Templates/Microsoft.Build.NoTargets.Templates.csproj b/src/NoTargets/Templates/Microsoft.Build.NoTargets.Templates.csproj new file mode 100644 index 00000000..4d1e99b1 --- /dev/null +++ b/src/NoTargets/Templates/Microsoft.Build.NoTargets.Templates.csproj @@ -0,0 +1,36 @@ + + + + MSBuild NoTargets templates + Templates for common MSBuild NoTargets projects + MSBuild NoTargets project template + $(BaseArtifactsPath)$(MSBuildProjectName)\ + true + Template + net8.0 + true + false + content + $(NoWarn);NU5128 + true + README.md + + + + false + + + + + + + + + + + + + + + + diff --git a/src/NoTargets/Templates/README.md b/src/NoTargets/Templates/README.md new file mode 100644 index 00000000..cf75930b --- /dev/null +++ b/src/NoTargets/Templates/README.md @@ -0,0 +1,24 @@ +# Microsoft.Build.Traversal.Templates + +## Installing the templates + +The templates are available on [NuGet](https://www.nuget.org/packages/Microsoft.Build.NoTargets.Templates/). +To install the templates, run the following command: + +```bash +dotnet new -i Microsoft.Build.NoTargets.Templates +``` + +## Using the templates + +Creating a new project with the default name + +```bash +dotnet new notargets +``` + +Creating a new project "AdventureWorks" (`-n` or `--name`): + +```bash +dotnet new notargets -n "AdventureWorks" +``` diff --git a/src/NoTargets/Templates/notargets/.template.config/template.json b/src/NoTargets/Templates/notargets/.template.config/template.json new file mode 100644 index 00000000..93b12978 --- /dev/null +++ b/src/NoTargets/Templates/notargets/.template.config/template.json @@ -0,0 +1,15 @@ +{ + "$schema": "http://json.schemastore.org/template", + "author": "Microsoft", + "classifications": [ + "MSBuild" + ], + "identity": "Microsoft.Build.NoTargets", + "name": "MSBuild NoTargets Project", + "description": "A starter project file for MSBuild NoTargets projects", + "shortName": "notargets", + "tags": { + "type": "project" + }, + "sourceName": "NoTargets.Template" +} \ No newline at end of file diff --git a/src/NoTargets/Templates/notargets/NoTargets.Template.msbuildproj b/src/NoTargets/Templates/notargets/NoTargets.Template.msbuildproj new file mode 100644 index 00000000..3f00fb9d --- /dev/null +++ b/src/NoTargets/Templates/notargets/NoTargets.Template.msbuildproj @@ -0,0 +1,30 @@ + + + + + {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + + + netstandard2.0 + + + + + + + \ No newline at end of file diff --git a/src/Traversal/Templates/Microsoft.Build.Traversal.Templates.csproj b/src/Traversal/Templates/Microsoft.Build.Traversal.Templates.csproj index 3b46d308..733698b1 100644 --- a/src/Traversal/Templates/Microsoft.Build.Traversal.Templates.csproj +++ b/src/Traversal/Templates/Microsoft.Build.Traversal.Templates.csproj @@ -1,8 +1,6 @@ - - MSBuild Traversal templates Templates for common MSBuild traversal projects MSBuild traversal dirs template diff --git a/src/Traversal/Templates/traversal/.template.config/template.json b/src/Traversal/Templates/traversal/.template.config/template.json index 6385c4f1..7b17f86a 100644 --- a/src/Traversal/Templates/traversal/.template.config/template.json +++ b/src/Traversal/Templates/traversal/.template.config/template.json @@ -1,17 +1,17 @@ { - "$schema": "http://json.schemastore.org/template", - "author": "Microsoft", - "classifications": [ - "MSBuild" - ], - "identity": "Microsoft.Build.Traversal", - "name": "MSBuild Traversal Project", - "description": "A starter dirs.proj file that can be used for MSBuild Traversal projects", - "shortName": "traversal", - "tags": { - "type": "item" - }, - "sourceName": "dirs", - "preferDefaultName": true, - "defaultName": "dirs" - } \ No newline at end of file + "$schema": "http://json.schemastore.org/template", + "author": "Microsoft", + "classifications": [ + "MSBuild" + ], + "identity": "Microsoft.Build.Traversal", + "name": "MSBuild Traversal Project", + "description": "A starter project file for MSBuild Traversal projects", + "shortName": "traversal", + "tags": { + "type": "item" + }, + "sourceName": "dirs", + "preferDefaultName": true, + "defaultName": "dirs" +} \ No newline at end of file From 385223a5054f37d594e99c33f5217618ec6dd72d Mon Sep 17 00:00:00 2001 From: Matt Kotsenas Date: Sun, 14 Jan 2024 15:23:11 -0500 Subject: [PATCH 05/14] Fix implicit reference and add to sln --- Directory.Packages.props | 1 - MSBuildSdks.sln | 11 +++++++++++ .../Microsoft.Build.NoTargets.Templates.csproj | 4 ---- .../Microsoft.Build.Traversal.Templates.csproj | 4 ---- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 91dc1915..94b518bb 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -13,7 +13,6 @@ - diff --git a/MSBuildSdks.sln b/MSBuildSdks.sln index edc0f6e7..25e27bae 100644 --- a/MSBuildSdks.sln +++ b/MSBuildSdks.sln @@ -90,6 +90,9 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build.Cargo", "sr EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build.Cargo.UnitTests", "src\Cargo.UnitTests\Microsoft.Build.Cargo.UnitTests.csproj", "{D6EF1644-D06C-4877-A8F7-3543E5D3175B}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Build.Traversal.Templates", "src\Traversal\Templates\Microsoft.Build.Traversal.Templates.csproj", "{1AEE3631-B92A-4A7F-974F-BAB420CE3913}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Build.NoTargets.Templates", "src\NoTargets\Templates\Microsoft.Build.NoTargets.Templates.csproj", "{03A56E49-A35E-4F9D-AEAE-B0257BF6F919}" Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -164,6 +167,14 @@ Global {D6EF1644-D06C-4877-A8F7-3543E5D3175B}.Debug|Any CPU.Build.0 = Debug|Any CPU {D6EF1644-D06C-4877-A8F7-3543E5D3175B}.Release|Any CPU.ActiveCfg = Release|Any CPU {D6EF1644-D06C-4877-A8F7-3543E5D3175B}.Release|Any CPU.Build.0 = Release|Any CPU + {1AEE3631-B92A-4A7F-974F-BAB420CE3913}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1AEE3631-B92A-4A7F-974F-BAB420CE3913}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1AEE3631-B92A-4A7F-974F-BAB420CE3913}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1AEE3631-B92A-4A7F-974F-BAB420CE3913}.Release|Any CPU.Build.0 = Release|Any CPU + {03A56E49-A35E-4F9D-AEAE-B0257BF6F919}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {03A56E49-A35E-4F9D-AEAE-B0257BF6F919}.Debug|Any CPU.Build.0 = Debug|Any CPU + {03A56E49-A35E-4F9D-AEAE-B0257BF6F919}.Release|Any CPU.ActiveCfg = Release|Any CPU + {03A56E49-A35E-4F9D-AEAE-B0257BF6F919}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/src/NoTargets/Templates/Microsoft.Build.NoTargets.Templates.csproj b/src/NoTargets/Templates/Microsoft.Build.NoTargets.Templates.csproj index 4d1e99b1..91d2537e 100644 --- a/src/NoTargets/Templates/Microsoft.Build.NoTargets.Templates.csproj +++ b/src/NoTargets/Templates/Microsoft.Build.NoTargets.Templates.csproj @@ -20,10 +20,6 @@ false - - - - diff --git a/src/Traversal/Templates/Microsoft.Build.Traversal.Templates.csproj b/src/Traversal/Templates/Microsoft.Build.Traversal.Templates.csproj index 733698b1..fdb9c2d9 100644 --- a/src/Traversal/Templates/Microsoft.Build.Traversal.Templates.csproj +++ b/src/Traversal/Templates/Microsoft.Build.Traversal.Templates.csproj @@ -20,10 +20,6 @@ false - - - - From bb2eec7cb2c01997023a4376a2096c74ba663aef Mon Sep 17 00:00:00 2001 From: Matt Kotsenas Date: Sun, 14 Jan 2024 15:41:07 -0500 Subject: [PATCH 06/14] Fix newlines --- .../notargets/asdf.msbuildproj | 2 +- .../notargets/notargets.msbuildproj | 2 +- .../Templates/notargets/NoTargets.Template.msbuildproj | 2 +- .../traversal/asdf.proj | 2 +- .../traversal/dirs.proj | 2 +- src/Traversal/Templates/traversal/dirs.proj | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/NoTargets.UnitTests/Snapshots/RespectsExplicitName.notargets.--name#asdf.verified/notargets/asdf.msbuildproj b/src/NoTargets.UnitTests/Snapshots/RespectsExplicitName.notargets.--name#asdf.verified/notargets/asdf.msbuildproj index 3f00fb9d..5bb47c7f 100644 --- a/src/NoTargets.UnitTests/Snapshots/RespectsExplicitName.notargets.--name#asdf.verified/notargets/asdf.msbuildproj +++ b/src/NoTargets.UnitTests/Snapshots/RespectsExplicitName.notargets.--name#asdf.verified/notargets/asdf.msbuildproj @@ -27,4 +27,4 @@ - \ No newline at end of file + diff --git a/src/NoTargets.UnitTests/Snapshots/UsesDirectoryAsDefaultName.notargets._.verified/notargets/notargets.msbuildproj b/src/NoTargets.UnitTests/Snapshots/UsesDirectoryAsDefaultName.notargets._.verified/notargets/notargets.msbuildproj index 3f00fb9d..5bb47c7f 100644 --- a/src/NoTargets.UnitTests/Snapshots/UsesDirectoryAsDefaultName.notargets._.verified/notargets/notargets.msbuildproj +++ b/src/NoTargets.UnitTests/Snapshots/UsesDirectoryAsDefaultName.notargets._.verified/notargets/notargets.msbuildproj @@ -27,4 +27,4 @@ - \ No newline at end of file + diff --git a/src/NoTargets/Templates/notargets/NoTargets.Template.msbuildproj b/src/NoTargets/Templates/notargets/NoTargets.Template.msbuildproj index 3f00fb9d..5bb47c7f 100644 --- a/src/NoTargets/Templates/notargets/NoTargets.Template.msbuildproj +++ b/src/NoTargets/Templates/notargets/NoTargets.Template.msbuildproj @@ -27,4 +27,4 @@ - \ No newline at end of file + diff --git a/src/Traversal.UnitTests/Snapshots/RespectsExplicitName.traversal.--name#asdf.verified/traversal/asdf.proj b/src/Traversal.UnitTests/Snapshots/RespectsExplicitName.traversal.--name#asdf.verified/traversal/asdf.proj index ef7fa033..c559303b 100644 --- a/src/Traversal.UnitTests/Snapshots/RespectsExplicitName.traversal.--name#asdf.verified/traversal/asdf.proj +++ b/src/Traversal.UnitTests/Snapshots/RespectsExplicitName.traversal.--name#asdf.verified/traversal/asdf.proj @@ -8,4 +8,4 @@ - \ No newline at end of file + diff --git a/src/Traversal.UnitTests/Snapshots/UsesDirsAsDefaultName.traversal.--name#.verified/traversal/dirs.proj b/src/Traversal.UnitTests/Snapshots/UsesDirsAsDefaultName.traversal.--name#.verified/traversal/dirs.proj index ef7fa033..c559303b 100644 --- a/src/Traversal.UnitTests/Snapshots/UsesDirsAsDefaultName.traversal.--name#.verified/traversal/dirs.proj +++ b/src/Traversal.UnitTests/Snapshots/UsesDirsAsDefaultName.traversal.--name#.verified/traversal/dirs.proj @@ -8,4 +8,4 @@ - \ No newline at end of file + diff --git a/src/Traversal/Templates/traversal/dirs.proj b/src/Traversal/Templates/traversal/dirs.proj index ef7fa033..c559303b 100644 --- a/src/Traversal/Templates/traversal/dirs.proj +++ b/src/Traversal/Templates/traversal/dirs.proj @@ -8,4 +8,4 @@ - \ No newline at end of file + From f95490c8c1ded311db5af9ff7de0c19589f51ced Mon Sep 17 00:00:00 2001 From: Matt Kotsenas Date: Sun, 14 Jan 2024 15:46:26 -0500 Subject: [PATCH 07/14] Add README for snapshots --- src/NoTargets.UnitTests/Snapshots/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 src/NoTargets.UnitTests/Snapshots/README.md diff --git a/src/NoTargets.UnitTests/Snapshots/README.md b/src/NoTargets.UnitTests/Snapshots/README.md new file mode 100644 index 00000000..e59fcf69 --- /dev/null +++ b/src/NoTargets.UnitTests/Snapshots/README.md @@ -0,0 +1,3 @@ +This folder contains snapshots of the templates. These snapshots are used by the unit tests to validate template +instantiations. See https://github.com/dotnet/templating/blob/main/docs/authoring-tools/Templates-Testing-Tooling.md +for more information. \ No newline at end of file From 3a05d3ce31a736457a0ea5e2f9b2cb870494b215 Mon Sep 17 00:00:00 2001 From: Matt Kotsenas Date: Sun, 14 Jan 2024 16:23:20 -0500 Subject: [PATCH 08/14] Fix trailing whitespace --- .../notargets/asdf.msbuildproj | 2 +- .../notargets/notargets.msbuildproj | 2 +- .../Templates/notargets/NoTargets.Template.msbuildproj | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/NoTargets.UnitTests/Snapshots/RespectsExplicitName.notargets.--name#asdf.verified/notargets/asdf.msbuildproj b/src/NoTargets.UnitTests/Snapshots/RespectsExplicitName.notargets.--name#asdf.verified/notargets/asdf.msbuildproj index 5bb47c7f..961cb559 100644 --- a/src/NoTargets.UnitTests/Snapshots/RespectsExplicitName.notargets.--name#asdf.verified/notargets/asdf.msbuildproj +++ b/src/NoTargets.UnitTests/Snapshots/RespectsExplicitName.notargets.--name#asdf.verified/notargets/asdf.msbuildproj @@ -13,7 +13,7 @@ netstandard2.0 diff --git a/src/NoTargets.UnitTests/Snapshots/UsesDirectoryAsDefaultName.notargets._.verified/notargets/notargets.msbuildproj b/src/NoTargets.UnitTests/Snapshots/UsesDirectoryAsDefaultName.notargets._.verified/notargets/notargets.msbuildproj index 5bb47c7f..961cb559 100644 --- a/src/NoTargets.UnitTests/Snapshots/UsesDirectoryAsDefaultName.notargets._.verified/notargets/notargets.msbuildproj +++ b/src/NoTargets.UnitTests/Snapshots/UsesDirectoryAsDefaultName.notargets._.verified/notargets/notargets.msbuildproj @@ -13,7 +13,7 @@ netstandard2.0 diff --git a/src/NoTargets/Templates/notargets/NoTargets.Template.msbuildproj b/src/NoTargets/Templates/notargets/NoTargets.Template.msbuildproj index 5bb47c7f..961cb559 100644 --- a/src/NoTargets/Templates/notargets/NoTargets.Template.msbuildproj +++ b/src/NoTargets/Templates/notargets/NoTargets.Template.msbuildproj @@ -13,7 +13,7 @@ netstandard2.0 From c02a29b8d3b7095b637465e9c3e210927df1f106 Mon Sep 17 00:00:00 2001 From: Matt Kotsenas Date: Sun, 14 Jan 2024 18:39:58 -0500 Subject: [PATCH 09/14] Swap XUnit logger dependency in tests for one with a strong name --- Directory.Packages.props | 2 +- .../Microsoft.Build.NoTargets.UnitTests.csproj | 4 ++-- src/NoTargets.UnitTests/TemplateTests.cs | 2 +- .../Microsoft.Build.Traversal.UnitTests.csproj | 4 ++-- src/Traversal.UnitTests/TemplateTests.cs | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 94b518bb..d6ba6d30 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -33,6 +33,7 @@ + @@ -40,7 +41,6 @@ - diff --git a/src/NoTargets.UnitTests/Microsoft.Build.NoTargets.UnitTests.csproj b/src/NoTargets.UnitTests/Microsoft.Build.NoTargets.UnitTests.csproj index 0839054e..4b47d164 100644 --- a/src/NoTargets.UnitTests/Microsoft.Build.NoTargets.UnitTests.csproj +++ b/src/NoTargets.UnitTests/Microsoft.Build.NoTargets.UnitTests.csproj @@ -4,6 +4,8 @@ + - { - config.AddXunit(xunitOutputHelper); + config.AddXUnit(xunitOutputHelper); }); } diff --git a/src/Traversal.UnitTests/Microsoft.Build.Traversal.UnitTests.csproj b/src/Traversal.UnitTests/Microsoft.Build.Traversal.UnitTests.csproj index 9a9864ab..6f2eee87 100644 --- a/src/Traversal.UnitTests/Microsoft.Build.Traversal.UnitTests.csproj +++ b/src/Traversal.UnitTests/Microsoft.Build.Traversal.UnitTests.csproj @@ -4,6 +4,8 @@ + - { - config.AddXunit(xunitOutputHelper); + config.AddXUnit(xunitOutputHelper); }); } From 3f364994923784db78e4c2787dd5f99c3355227f Mon Sep 17 00:00:00 2001 From: Matt Kotsenas Date: Sat, 20 Apr 2024 08:47:29 -0700 Subject: [PATCH 10/14] Add comment to Traversal project for SlnGen project properties --- .../traversal/asdf.proj | 10 ++++++++++ .../traversal/dirs.proj | 10 ++++++++++ src/Traversal/Templates/traversal/dirs.proj | 10 ++++++++++ 3 files changed, 30 insertions(+) diff --git a/src/Traversal.UnitTests/Snapshots/RespectsExplicitName.traversal.--name#asdf.verified/traversal/asdf.proj b/src/Traversal.UnitTests/Snapshots/RespectsExplicitName.traversal.--name#asdf.verified/traversal/asdf.proj index c559303b..1b5f1ce4 100644 --- a/src/Traversal.UnitTests/Snapshots/RespectsExplicitName.traversal.--name#asdf.verified/traversal/asdf.proj +++ b/src/Traversal.UnitTests/Snapshots/RespectsExplicitName.traversal.--name#asdf.verified/traversal/asdf.proj @@ -4,6 +4,16 @@ For docs on customizing a Traversal project, see https://github.com/microsoft/MSBuildSdks/blob/main/src/Traversal/README.md --> + + + diff --git a/src/Traversal.UnitTests/Snapshots/UsesDirsAsDefaultName.traversal.--name#.verified/traversal/dirs.proj b/src/Traversal.UnitTests/Snapshots/UsesDirsAsDefaultName.traversal.--name#.verified/traversal/dirs.proj index c559303b..1b5f1ce4 100644 --- a/src/Traversal.UnitTests/Snapshots/UsesDirsAsDefaultName.traversal.--name#.verified/traversal/dirs.proj +++ b/src/Traversal.UnitTests/Snapshots/UsesDirsAsDefaultName.traversal.--name#.verified/traversal/dirs.proj @@ -4,6 +4,16 @@ For docs on customizing a Traversal project, see https://github.com/microsoft/MSBuildSdks/blob/main/src/Traversal/README.md --> + + + diff --git a/src/Traversal/Templates/traversal/dirs.proj b/src/Traversal/Templates/traversal/dirs.proj index c559303b..1b5f1ce4 100644 --- a/src/Traversal/Templates/traversal/dirs.proj +++ b/src/Traversal/Templates/traversal/dirs.proj @@ -4,6 +4,16 @@ For docs on customizing a Traversal project, see https://github.com/microsoft/MSBuildSdks/blob/main/src/Traversal/README.md --> + + + From 98e9bcc3188eb4d4ff06805f992c63de2f72152a Mon Sep 17 00:00:00 2001 From: Matt Kotsenas Date: Wed, 12 Feb 2025 14:48:01 -0800 Subject: [PATCH 11/14] Move template tests forward to net9.0 --- Directory.Packages.props | 2 +- .../Microsoft.Build.NoTargets.UnitTests.csproj | 4 ++-- src/NoTargets.UnitTests/TemplateTests.cs | 2 +- .../Microsoft.Build.Traversal.UnitTests.csproj | 4 ++-- src/Traversal.UnitTests/TemplateTests.cs | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index d6ba6d30..4cb0f82e 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -35,7 +35,7 @@ - + diff --git a/src/NoTargets.UnitTests/Microsoft.Build.NoTargets.UnitTests.csproj b/src/NoTargets.UnitTests/Microsoft.Build.NoTargets.UnitTests.csproj index 4b47d164..3781fa44 100644 --- a/src/NoTargets.UnitTests/Microsoft.Build.NoTargets.UnitTests.csproj +++ b/src/NoTargets.UnitTests/Microsoft.Build.NoTargets.UnitTests.csproj @@ -5,11 +5,11 @@ + Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net9.0'))" /> + Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net9.0'))" /> diff --git a/src/NoTargets.UnitTests/TemplateTests.cs b/src/NoTargets.UnitTests/TemplateTests.cs index 10905d4f..df66f9cd 100644 --- a/src/NoTargets.UnitTests/TemplateTests.cs +++ b/src/NoTargets.UnitTests/TemplateTests.cs @@ -2,7 +2,7 @@ // // Licensed under the MIT license. -#if NET8_0_OR_GREATER +#if NET9_0_OR_GREATER using Microsoft.Extensions.Logging; using Microsoft.TemplateEngine.Authoring.TemplateVerifier; using System.IO; diff --git a/src/Traversal.UnitTests/Microsoft.Build.Traversal.UnitTests.csproj b/src/Traversal.UnitTests/Microsoft.Build.Traversal.UnitTests.csproj index 6f2eee87..66454c59 100644 --- a/src/Traversal.UnitTests/Microsoft.Build.Traversal.UnitTests.csproj +++ b/src/Traversal.UnitTests/Microsoft.Build.Traversal.UnitTests.csproj @@ -5,11 +5,11 @@ + Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net9.0'))" /> + Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net9.0'))" /> diff --git a/src/Traversal.UnitTests/TemplateTests.cs b/src/Traversal.UnitTests/TemplateTests.cs index fd6f37d1..aed78b69 100644 --- a/src/Traversal.UnitTests/TemplateTests.cs +++ b/src/Traversal.UnitTests/TemplateTests.cs @@ -2,7 +2,7 @@ // // Licensed under the MIT license. -#if NET8_0_OR_GREATER +#if NET9_0_OR_GREATER using Microsoft.Extensions.Logging; using Microsoft.TemplateEngine.Authoring.TemplateVerifier; using System.IO; From a278949357c47343f19344fe0278f969cf4126cd Mon Sep 17 00:00:00 2001 From: Matt Kotsenas Date: Wed, 12 Feb 2025 14:53:19 -0800 Subject: [PATCH 12/14] Update XUnit logger to latest version --- Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 4cb0f82e..7d8fcade 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -33,7 +33,7 @@ - + From 2ae449e1aab9ba9d0636674f12a2a45441f061dc Mon Sep 17 00:00:00 2001 From: Matt Kotsenas Date: Wed, 12 Feb 2025 16:32:44 -0800 Subject: [PATCH 13/14] Use NoTargets to build the template package --- ...Microsoft.Build.NoTargets.Templates.csproj | 19 +++++++++---------- ...Microsoft.Build.Traversal.Templates.csproj | 19 +++++++++---------- 2 files changed, 18 insertions(+), 20 deletions(-) diff --git a/src/NoTargets/Templates/Microsoft.Build.NoTargets.Templates.csproj b/src/NoTargets/Templates/Microsoft.Build.NoTargets.Templates.csproj index 91d2537e..c17309f9 100644 --- a/src/NoTargets/Templates/Microsoft.Build.NoTargets.Templates.csproj +++ b/src/NoTargets/Templates/Microsoft.Build.NoTargets.Templates.csproj @@ -1,28 +1,27 @@ - + - + MSBuild NoTargets templates Templates for common MSBuild NoTargets projects MSBuild NoTargets project template + README.md + false + Template + + $(BaseArtifactsPath)$(MSBuildProjectName)\ true - Template - net8.0 + netstandard2.0 true false content $(NoWarn);NU5128 true - README.md - - - - false + false - diff --git a/src/Traversal/Templates/Microsoft.Build.Traversal.Templates.csproj b/src/Traversal/Templates/Microsoft.Build.Traversal.Templates.csproj index fdb9c2d9..0cf1f929 100644 --- a/src/Traversal/Templates/Microsoft.Build.Traversal.Templates.csproj +++ b/src/Traversal/Templates/Microsoft.Build.Traversal.Templates.csproj @@ -1,28 +1,27 @@ - + - + MSBuild Traversal templates Templates for common MSBuild traversal projects MSBuild traversal dirs template + README.md + false + Template + + $(BaseArtifactsPath)$(MSBuildProjectName)\ true - Template - net8.0 + netstandard2.0 true false content $(NoWarn);NU5128 true - README.md - - - - false + false - From 2ef8c6544d43a95f0b4c70b0a6d4a41b12bc975d Mon Sep 17 00:00:00 2001 From: Matt Kotsenas Date: Wed, 12 Feb 2025 16:46:28 -0800 Subject: [PATCH 14/14] Switch from .msbuildproj to .csproj to simplify --- .../notargets/asdf.csproj} | 8 +------- .../notargets/notargets.csproj} | 8 +------- .../Templates/notargets/NoTargets.Template.csproj} | 6 ------ 3 files changed, 2 insertions(+), 20 deletions(-) rename src/NoTargets.UnitTests/Snapshots/{UsesDirectoryAsDefaultName.notargets._.verified/notargets/notargets.msbuildproj => RespectsExplicitName.notargets.--name#asdf.verified/notargets/asdf.csproj} (74%) rename src/{NoTargets/Templates/notargets/NoTargets.Template.msbuildproj => NoTargets.UnitTests/Snapshots/UsesDirectoryAsDefaultName.notargets._.verified/notargets/notargets.csproj} (74%) rename src/{NoTargets.UnitTests/Snapshots/RespectsExplicitName.notargets.--name#asdf.verified/notargets/asdf.msbuildproj => NoTargets/Templates/notargets/NoTargets.Template.csproj} (78%) diff --git a/src/NoTargets.UnitTests/Snapshots/UsesDirectoryAsDefaultName.notargets._.verified/notargets/notargets.msbuildproj b/src/NoTargets.UnitTests/Snapshots/RespectsExplicitName.notargets.--name#asdf.verified/notargets/asdf.csproj similarity index 74% rename from src/NoTargets.UnitTests/Snapshots/UsesDirectoryAsDefaultName.notargets._.verified/notargets/notargets.msbuildproj rename to src/NoTargets.UnitTests/Snapshots/RespectsExplicitName.notargets.--name#asdf.verified/notargets/asdf.csproj index 961cb559..76fc4a51 100644 --- a/src/NoTargets.UnitTests/Snapshots/UsesDirectoryAsDefaultName.notargets._.verified/notargets/notargets.msbuildproj +++ b/src/NoTargets.UnitTests/Snapshots/RespectsExplicitName.notargets.--name#asdf.verified/notargets/asdf.csproj @@ -1,16 +1,10 @@ - + - - {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - - - {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - - - {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} -