From c761c532f50987df66aab6162e32ab4faf2d315c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 10 Oct 2025 18:39:39 +0000 Subject: [PATCH 1/4] Initial plan From 61e31172c65baab86a13a79b618ba9e51ae5a1e2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 10 Oct 2025 18:44:19 +0000 Subject: [PATCH 2/4] Initial exploration and plan for updating package::version format to package@version Co-authored-by: marcpopMSFT <12663534+marcpopMSFT@users.noreply.github.com> --- global.json.bak | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 global.json.bak diff --git a/global.json.bak b/global.json.bak new file mode 100644 index 0000000000..7d699a3dfc --- /dev/null +++ b/global.json.bak @@ -0,0 +1,18 @@ +{ + "sdk": { + "version": "10.0.100-rc.1.25451.107", + "allowPrerelease": true, + "rollForward": "latestFeature", + "paths": [ + ".dotnet", + "$host$" + ], + "errorMessage": "The required .NET SDK wasn't found. Please run ./eng/common/dotnet.cmd/sh to install it." + }, + "tools": { + "dotnet": "10.0.100-rc.1.25451.107" + }, + "msbuild-sdks": { + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25509.106" + } +} From 33f96d2cdc25947181fa538da6988b72524b746a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 10 Oct 2025 18:50:15 +0000 Subject: [PATCH 3/4] Update package::version format to package@version throughout codebase Co-authored-by: marcpopMSFT <12663534+marcpopMSFT@users.noreply.github.com> --- global.json.bak | 18 -------------- .../Installer/InstallRequest.cs | 2 +- .../NuGet/Exceptions/DownloadException.cs | 6 ++--- .../Exceptions/PackageNotFoundException.cs | 2 +- .../NuGet/NuGetManagedTemplatePackage.cs | 2 +- .../NuGet/NugetApiPackageManager.cs | 10 ++++---- .../NuGetInstallerTests.cs | 8 +++---- .../PackageManager.cs | 6 ++--- .../AdditionalDataExtensions.cs | 2 +- .../PackChecking/PackSourceChecker.cs | 24 +++++++++---------- 10 files changed, 31 insertions(+), 49 deletions(-) delete mode 100644 global.json.bak diff --git a/global.json.bak b/global.json.bak deleted file mode 100644 index 7d699a3dfc..0000000000 --- a/global.json.bak +++ /dev/null @@ -1,18 +0,0 @@ -{ - "sdk": { - "version": "10.0.100-rc.1.25451.107", - "allowPrerelease": true, - "rollForward": "latestFeature", - "paths": [ - ".dotnet", - "$host$" - ], - "errorMessage": "The required .NET SDK wasn't found. Please run ./eng/common/dotnet.cmd/sh to install it." - }, - "tools": { - "dotnet": "10.0.100-rc.1.25451.107" - }, - "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25509.106" - } -} diff --git a/src/Microsoft.TemplateEngine.Abstractions/Installer/InstallRequest.cs b/src/Microsoft.TemplateEngine.Abstractions/Installer/InstallRequest.cs index 1cf1df17d6..7713a6f155 100644 --- a/src/Microsoft.TemplateEngine.Abstractions/Installer/InstallRequest.cs +++ b/src/Microsoft.TemplateEngine.Abstractions/Installer/InstallRequest.cs @@ -24,7 +24,7 @@ public InstallRequest(string identifier, string? version = null, string? install /// /// Name to be used when display the request. /// - public string DisplayName => string.IsNullOrWhiteSpace(Version) ? PackageIdentifier : $"{PackageIdentifier}::{Version}"; + public string DisplayName => string.IsNullOrWhiteSpace(Version) ? PackageIdentifier : $"{PackageIdentifier}@{Version}"; /// /// Installer to be used to install the request. diff --git a/src/Microsoft.TemplateEngine.Edge/Installers/NuGet/Exceptions/DownloadException.cs b/src/Microsoft.TemplateEngine.Edge/Installers/NuGet/Exceptions/DownloadException.cs index 8e812cd70e..f2375581de 100644 --- a/src/Microsoft.TemplateEngine.Edge/Installers/NuGet/Exceptions/DownloadException.cs +++ b/src/Microsoft.TemplateEngine.Edge/Installers/NuGet/Exceptions/DownloadException.cs @@ -5,21 +5,21 @@ namespace Microsoft.TemplateEngine.Edge.Installers.NuGet { internal class DownloadException : Exception { - public DownloadException(string packageIdentifier, string packageVersion, string filePath) : base($"Failed to download {packageIdentifier}::{packageVersion} from {filePath}") + public DownloadException(string packageIdentifier, string packageVersion, string filePath) : base($"Failed to download {packageIdentifier}@{packageVersion} from {filePath}") { PackageIdentifier = packageIdentifier; PackageVersion = packageVersion; PackageLocation = filePath; } - public DownloadException(string packageIdentifier, string packageVersion, IEnumerable attemptedSources) : base($"Failed to download {packageIdentifier}::{packageVersion} from NuGet feeds {string.Join(";", attemptedSources)}") + public DownloadException(string packageIdentifier, string packageVersion, IEnumerable attemptedSources) : base($"Failed to download {packageIdentifier}@{packageVersion} from NuGet feeds {string.Join(";", attemptedSources)}") { PackageIdentifier = packageIdentifier; PackageVersion = packageVersion; SourcesList = attemptedSources; } - public DownloadException(string packageIdentifier, string packageVersion, IEnumerable attemptedSources, Exception inner) : base($"Failed to download {packageIdentifier}::{packageVersion} from NuGet feeds {string.Join(";", attemptedSources)}", inner) + public DownloadException(string packageIdentifier, string packageVersion, IEnumerable attemptedSources, Exception inner) : base($"Failed to download {packageIdentifier}@{packageVersion} from NuGet feeds {string.Join(";", attemptedSources)}", inner) { PackageIdentifier = packageIdentifier; PackageVersion = packageVersion; diff --git a/src/Microsoft.TemplateEngine.Edge/Installers/NuGet/Exceptions/PackageNotFoundException.cs b/src/Microsoft.TemplateEngine.Edge/Installers/NuGet/Exceptions/PackageNotFoundException.cs index 7650842598..263469b891 100644 --- a/src/Microsoft.TemplateEngine.Edge/Installers/NuGet/Exceptions/PackageNotFoundException.cs +++ b/src/Microsoft.TemplateEngine.Edge/Installers/NuGet/Exceptions/PackageNotFoundException.cs @@ -13,7 +13,7 @@ internal class PackageNotFoundException : Exception SourcesList = attemptedSources; } - public PackageNotFoundException(string packageIdentifier, NuGetVersion packageVersion, IEnumerable attemptedSources) : base($"{packageIdentifier}::{packageVersion} was not found in NuGet feeds {string.Join(";", attemptedSources)}") + public PackageNotFoundException(string packageIdentifier, NuGetVersion packageVersion, IEnumerable attemptedSources) : base($"{packageIdentifier}@{packageVersion} was not found in NuGet feeds {string.Join(";", attemptedSources)}") { PackageIdentifier = packageIdentifier; PackageVersion = packageVersion; diff --git a/src/Microsoft.TemplateEngine.Edge/Installers/NuGet/NuGetManagedTemplatePackage.cs b/src/Microsoft.TemplateEngine.Edge/Installers/NuGet/NuGetManagedTemplatePackage.cs index 888b38e904..9256e9e53e 100644 --- a/src/Microsoft.TemplateEngine.Edge/Installers/NuGet/NuGetManagedTemplatePackage.cs +++ b/src/Microsoft.TemplateEngine.Edge/Installers/NuGet/NuGetManagedTemplatePackage.cs @@ -86,7 +86,7 @@ private NuGetManagedTemplatePackage( public IManagedTemplatePackageProvider ManagedProvider { get; } - public string DisplayName => string.IsNullOrWhiteSpace(Version) ? Identifier : $"{Identifier}::{Version}"; + public string DisplayName => string.IsNullOrWhiteSpace(Version) ? Identifier : $"{Identifier}@{Version}"; public string Identifier => Details[PackageIdKey]; diff --git a/src/Microsoft.TemplateEngine.Edge/Installers/NuGet/NugetApiPackageManager.cs b/src/Microsoft.TemplateEngine.Edge/Installers/NuGet/NugetApiPackageManager.cs index 5b267cfd18..3accc85a2f 100644 --- a/src/Microsoft.TemplateEngine.Edge/Installers/NuGet/NugetApiPackageManager.cs +++ b/src/Microsoft.TemplateEngine.Edge/Installers/NuGet/NugetApiPackageManager.cs @@ -137,7 +137,7 @@ await GetLatestVersionInternalAsync( _nugetLogger.LogWarning( string.Format( LocalizableStrings.NuGetApiPackageManager_Warning_FailedToDownload, - $"{packageMetadata.Identity.Id}::{packageMetadata.Identity.Version}", + $"{packageMetadata.Identity.Id}@{packageMetadata.Identity.Version}", source.Source)); try { @@ -159,7 +159,7 @@ await GetLatestVersionInternalAsync( _nugetLogger.LogWarning( string.Format( LocalizableStrings.NuGetApiPackageManager_Warning_FailedToDownload, - $"{packageMetadata.Identity.Id}::{packageMetadata.Identity.Version}", + $"{packageMetadata.Identity.Id}@{packageMetadata.Identity.Version}", source.Source)); _nugetLogger.LogDebug($"Details: {e}."); try @@ -335,13 +335,13 @@ await Task.WhenAll( NugetPackageMetadata? matchedVersion = foundPackages.FirstOrDefault(package => package.Identity.Version == packageVersion); if (matchedVersion != null) { - _nugetLogger.LogDebug($"{packageIdentifier}::{packageVersion} was found in {foundSource.Source}."); + _nugetLogger.LogDebug($"{packageIdentifier}@{packageVersion} was found in {foundSource.Source}."); linkedCts.Cancel(); return (foundSource, matchedVersion); } else { - _nugetLogger.LogDebug($"{packageIdentifier}::{packageVersion} is not found in NuGet feed {foundSource.Source}."); + _nugetLogger.LogDebug($"{packageIdentifier}@{packageVersion} is not found in NuGet feed {foundSource.Source}."); } } if (!atLeastOneSourceValid) @@ -351,7 +351,7 @@ await Task.WhenAll( _nugetLogger.LogWarning( string.Format( LocalizableStrings.NuGetApiPackageManager_Warning_PackageNotFound, - $"{packageIdentifier}::{packageVersion}", + $"{packageIdentifier}@{packageVersion}", string.Join(", ", sources.Select(source => source.Source)))); throw new PackageNotFoundException(packageIdentifier, packageVersion, sources.Select(source => source.Source)); } diff --git a/test/Microsoft.TemplateEngine.Edge.UnitTests/NuGetInstallerTests.cs b/test/Microsoft.TemplateEngine.Edge.UnitTests/NuGetInstallerTests.cs index b64ea18749..b51855d2b7 100644 --- a/test/Microsoft.TemplateEngine.Edge.UnitTests/NuGetInstallerTests.cs +++ b/test/Microsoft.TemplateEngine.Edge.UnitTests/NuGetInstallerTests.cs @@ -156,7 +156,7 @@ public async Task Install_LocalPackage() source.Owners.Should().BeNull(); source.Reserved.Should().Be("False"); source.Version.Should().NotBeNullOrEmpty(); - source.DisplayName.Should().StartWith("Microsoft.TemplateEngine.TestTemplates::"); + source.DisplayName.Should().StartWith("Microsoft.TemplateEngine.TestTemplates@"); source.Identifier.Should().Be("Microsoft.TemplateEngine.TestTemplates"); source.Installer.Should().Be(installer); source.IsLocalPackage.Should().Be(true); @@ -239,7 +239,7 @@ public async Task Install_RemotePackage() source.Owners.Should().Be("Microsoft"); source.Reserved.Should().Be("True"); source.Version.Should().Be("1.0.0"); - source.DisplayName.Should().Be("Microsoft.TemplateEngine.TestTemplates::1.0.0"); + source.DisplayName.Should().Be("Microsoft.TemplateEngine.TestTemplates@1.0.0"); source.Identifier.Should().Be("Microsoft.TemplateEngine.TestTemplates"); source.Installer.Should().Be(installer); source.IsLocalPackage.Should().Be(false); @@ -447,7 +447,7 @@ public async Task Update_RemotePackage() updatedSource!.MountPointUri.Should().ContainAll(new[] { installPath, "Microsoft.TemplateEngine.TestTemplates" }); updatedSource.Author.Should().Be("Microsoft"); updatedSource.Version.Should().Be("1.0.1"); - updatedSource.DisplayName.Should().Be("Microsoft.TemplateEngine.TestTemplates::1.0.1"); + updatedSource.DisplayName.Should().Be("Microsoft.TemplateEngine.TestTemplates@1.0.1"); updatedSource.Identifier.Should().Be("Microsoft.TemplateEngine.TestTemplates"); updatedSource.Installer.Should().Be(installer); updatedSource.IsLocalPackage.Should().Be(false); @@ -514,7 +514,7 @@ public void Deserialize( source.Reserved.Should().Be(reserved); source.Owners.Should().Be(owners); source.Version.Should().Be(version); - source.DisplayName.Should().Be($"{identifier}::{version}"); + source.DisplayName.Should().Be($"{identifier}@{version}"); source.Identifier.Should().Be(identifier); source.Installer.Should().Be(installer); source.IsLocalPackage.Should().Be(local); diff --git a/test/Microsoft.TemplateEngine.TestHelper/PackageManager.cs b/test/Microsoft.TemplateEngine.TestHelper/PackageManager.cs index 62c6f29261..d82ba88048 100644 --- a/test/Microsoft.TemplateEngine.TestHelper/PackageManager.cs +++ b/test/Microsoft.TemplateEngine.TestHelper/PackageManager.cs @@ -185,7 +185,7 @@ internal async Task DownloadPackageAsync( } else { - _nugetLogger.LogDebug($"[NuGet Package Manager] Getting package metadata {identifier}::{version}."); + _nugetLogger.LogDebug($"[NuGet Package Manager] Getting package metadata {identifier}@{version}."); packageVersion = new NuGetVersion(version!); (source, packageMetadata) = await GetPackageMetadataAsync(identifier, packageVersion, packagesSources, cancellationToken); } @@ -284,7 +284,7 @@ await Task.WhenAll( return current.package.Identity.Version > max.package.Identity.Version ? current : max; }); - _nugetLogger.LogDebug($"[NuGet Package Manager] Latest version is {latestVersion.Item2.Identity.Id}::{latestVersion.Item2.Identity.Version}, source: {latestVersion.Item1.Source}."); + _nugetLogger.LogDebug($"[NuGet Package Manager] Latest version is {latestVersion.Item2.Identity.Id}@{latestVersion.Item2.Identity.Version}, source: {latestVersion.Item1.Source}."); return latestVersion; } @@ -321,7 +321,7 @@ await Task.WhenAll( IPackageSearchMetadata? matchedVersion = foundPackages!.FirstOrDefault(package => package.Identity.Version == packageVersion); if (matchedVersion != null) { - _nugetLogger.LogDebug($"[NuGet Package Manager] Processed source {foundSource.Source}, found {matchedVersion.Identity.Id}:: {matchedVersion.Identity.Version} package, cancelling other tasks."); + _nugetLogger.LogDebug($"[NuGet Package Manager] Processed source {foundSource.Source}, found {matchedVersion.Identity.Id}@{matchedVersion.Identity.Version} package, cancelling other tasks."); linkedCts.Cancel(); return (foundSource, matchedVersion); } diff --git a/tools/Microsoft.TemplateSearch.TemplateDiscovery/AdditionalData/AdditionalDataExtensions.cs b/tools/Microsoft.TemplateSearch.TemplateDiscovery/AdditionalData/AdditionalDataExtensions.cs index 73ce10a93d..caca7b5f98 100644 --- a/tools/Microsoft.TemplateSearch.TemplateDiscovery/AdditionalData/AdditionalDataExtensions.cs +++ b/tools/Microsoft.TemplateSearch.TemplateDiscovery/AdditionalData/AdditionalDataExtensions.cs @@ -27,7 +27,7 @@ internal static class AdditionalDataExtensions } catch (Exception ex) { - Verbose.WriteLine($"Failed to produce additional data for {package.Name}::{package.Version} with producer {producer.DataUniqueName}, details: {ex}"); + Verbose.WriteLine($"Failed to produce additional data for {package.Name}@{package.Version} with producer {producer.DataUniqueName}, details: {ex}"); } } if (additionalData.Any()) diff --git a/tools/Microsoft.TemplateSearch.TemplateDiscovery/PackChecking/PackSourceChecker.cs b/tools/Microsoft.TemplateSearch.TemplateDiscovery/PackChecking/PackSourceChecker.cs index aa628eceb9..f1e6e8d5cb 100644 --- a/tools/Microsoft.TemplateSearch.TemplateDiscovery/PackChecking/PackSourceChecker.cs +++ b/tools/Microsoft.TemplateSearch.TemplateDiscovery/PackChecking/PackSourceChecker.cs @@ -97,7 +97,7 @@ private async Task ProcessTemplatePackagesUsingSearchAsync( count = ProcessCount(count); if (newCache.ContainsKey(sourceInfo.Name) || filteredPackages.ContainsKey(sourceInfo.Name)) { - Verbose.WriteLine($"Package {sourceInfo.Name}::{sourceInfo.Version} is already processed."); + Verbose.WriteLine($"Package {sourceInfo.Name}@{sourceInfo.Version} is already processed."); continue; } string? oldTemplateVersion = null; @@ -209,7 +209,7 @@ private async Task CheckRemovedPackagesAsync( IDownloadedPackInfo? packInfo = await provider.DownloadPackageAsync(package, cancellationToken).ConfigureAwait(false); if (packInfo == null) { - Console.WriteLine($"[Error] Package {package.Name}::{package.Version} is not processed."); + Console.WriteLine($"[Error] Package {package.Name}@{package.Version} is not processed."); continue; } if (CheckIfPackageIsFiltered(packInfo, filteredPackages, scanningStats, null, oldNonTemplateVersion)) @@ -233,7 +233,7 @@ private bool CheckIfVersionIsKnownTemplatePackage( { if (sourceInfo.Version == existingInfo.Version) { - Verbose.WriteLine($"Package {sourceInfo.Name}::{sourceInfo.Version} has not changed since last scan, updating metadata only."); + Verbose.WriteLine($"Package {sourceInfo.Name}@{sourceInfo.Version} has not changed since last scan, updating metadata only."); newCache[sourceInfo.Name] = new TemplatePackageSearchData(sourceInfo, existingInfo.Templates, sourceInfo.ProduceAdditionalData(_additionalDataProducers)); scanningStats.SameTemplatePacksCount++; @@ -258,7 +258,7 @@ private bool CheckIfVersionIsKnownNonTemplatePackage( { if (sourceInfo.Version == info.Version) { - Verbose.WriteLine($"Package {sourceInfo.Name}::{sourceInfo.Version} has not changed since last scan, skipping as it was filtered last time."); + Verbose.WriteLine($"Package {sourceInfo.Name}@{sourceInfo.Version} has not changed since last scan, skipping as it was filtered last time."); filteredPackages[sourceInfo.Name] = info; scanningStats.SameNonTemplatePacksCount++; return true; @@ -296,7 +296,7 @@ private async Task ProcessTemplatePackageAsync( CancellationToken cancellationToken) { IEnumerable foundTemplates = await TryGetTemplatesInPackAsync(sourceInfo, _additionalDataProducers, cancellationToken).ConfigureAwait(false); - Verbose.WriteLine($"{sourceInfo.Name}::{sourceInfo.Version} is processed"); + Verbose.WriteLine($"{sourceInfo.Name}@{sourceInfo.Version} is processed"); if (foundTemplates.Any()) { Verbose.WriteLine("Found templates:"); @@ -346,7 +346,7 @@ private void ProcessNonTemplatePackage( string? oldTemplatePackageVersion, string? oldNonTemplatePackageVersion) { - Verbose.WriteLine($"{sourceInfo.Name}::{sourceInfo.Version} is skipped, {filterReason}"); + Verbose.WriteLine($"{sourceInfo.Name}@{sourceInfo.Version} is skipped, {filterReason}"); filteredPackages[sourceInfo.Name] = new FilteredPackageInfo(sourceInfo, filterReason); if (string.IsNullOrWhiteSpace(oldNonTemplatePackageVersion)) { @@ -396,7 +396,7 @@ private async Task> TryGetTemplatesInPackAsync(I } catch (Exception ex) { - Console.WriteLine("Failed to read package {0}::{1}, details: {2}. The package will be skipped.", packInfo.Name, packInfo.Version, ex); + Console.WriteLine("Failed to read package {0}@{1}, details: {2}. The package will be skipped.", packInfo.Name, packInfo.Version, ex); return []; } } @@ -428,7 +428,7 @@ private async Task> TryGetTemplatesInPackAsync(I Console.WriteLine($"[Error]: the following {removedTemplatePacks.Count} packages were removed"); foreach (var package in removedTemplatePacks) { - Console.WriteLine($" {package.Name}::{package.Version}"); + Console.WriteLine($" {package.Name}@{package.Version}"); } } if (removedNonTemplatePacks.Any()) @@ -436,7 +436,7 @@ private async Task> TryGetTemplatesInPackAsync(I Console.WriteLine($"[Error]: the following {removedNonTemplatePacks.Count} non template packages were removed"); foreach (var package in removedNonTemplatePacks) { - Console.WriteLine($" {package.Name}::{package.Version}"); + Console.WriteLine($" {package.Name}@{package.Version}"); } } return (removedTemplatePacks, removedNonTemplatePacks); @@ -449,7 +449,7 @@ private void DisplayScanningStats(ScanningStats scanningStats) Console.WriteLine($" new: {scanningStats.NewTemplatePacks.Count}"); foreach (var package in scanningStats.NewTemplatePacks) { - Console.WriteLine($" {package.Name}::{package.Version}"); + Console.WriteLine($" {package.Name}@{package.Version}"); } Console.WriteLine($" updated: {scanningStats.UpdatedTemplatePacks.Count}"); @@ -461,14 +461,14 @@ private void DisplayScanningStats(ScanningStats scanningStats) Console.WriteLine($" removed: {scanningStats.RemovedTemplatePacks.Count}"); foreach (var package in scanningStats.RemovedTemplatePacks) { - Console.WriteLine($" {package.Name}::{package.Version}"); + Console.WriteLine($" {package.Name}@{package.Version}"); } if (scanningStats.BecameTemplatePacks.Any()) { Console.WriteLine($" became template packages: {scanningStats.BecameTemplatePacks.Count}"); foreach (var package in scanningStats.BecameTemplatePacks) { - Console.WriteLine($" {package.Name}::{package.Version}"); + Console.WriteLine($" {package.Name}@{package.Version}"); } } Console.WriteLine($" not changed: {scanningStats.SameTemplatePacksCount}"); From 630f69bc6c5a69794bfebc8ac7960f63e4077a07 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 10 Oct 2025 23:26:42 +0000 Subject: [PATCH 4/4] Fix test expectations for package@version format in TemplateDiscoveryTests Co-authored-by: marcpopMSFT <12663534+marcpopMSFT@users.noreply.github.com> --- .../TemplateDiscoveryTests.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test/Microsoft.TemplateSearch.TemplateDiscovery.IntegrationTests/TemplateDiscoveryTests.cs b/test/Microsoft.TemplateSearch.TemplateDiscovery.IntegrationTests/TemplateDiscoveryTests.cs index 68cc4ed7ae..6d92a05aff 100644 --- a/test/Microsoft.TemplateSearch.TemplateDiscovery.IntegrationTests/TemplateDiscoveryTests.cs +++ b/test/Microsoft.TemplateSearch.TemplateDiscovery.IntegrationTests/TemplateDiscoveryTests.cs @@ -190,7 +190,7 @@ public async Task CanDetectNewPackagesInDiffMode() .And.HaveStdOutContaining( @"Template packages: new: 1 - Test.Templates::1.0.0 + Test.Templates@1.0.0 updated: 0 removed: 0 not changed: 0") @@ -231,7 +231,7 @@ public async Task CanDetectNewPackagesInDiffMode() .And.HaveStdOutContaining( @"Template packages: new: 1 - Microsoft.Azure.WebJobs.ProjectTemplates::1.0.0 + Microsoft.Azure.WebJobs.ProjectTemplates@1.0.0 updated: 0 removed: 0 not changed: 1") @@ -278,7 +278,7 @@ public void CanDetectUpdatedPackagesInDiffMode() .And.HaveStdOutContaining( @"Template packages: new: 1 - Test.Templates::1.0.0 + Test.Templates@1.0.0 updated: 0 removed: 0 not changed: 0") @@ -365,7 +365,7 @@ public void CanDetectRemovedPackagesInDiffMode() .And.HaveStdOutContaining( @"Template packages: new: 1 - Test.Templates::1.0.0 + Test.Templates@1.0.0 updated: 0 removed: 0 not changed: 0") @@ -406,7 +406,7 @@ public void CanDetectRemovedPackagesInDiffMode() new: 0 updated: 0 removed: 1 - Test.Templates::1.0.0 + Test.Templates@1.0.0 not changed: 0") .And.HaveStdOutContaining( @"Non template packages: @@ -416,7 +416,7 @@ public void CanDetectRemovedPackagesInDiffMode() not changed: 0") .And.HaveStdOutContaining( @"[Error]: the following 1 packages were removed - Test.Templates::1.0.0 + Test.Templates@1.0.0 Checking template packages via API: Package Test.Templates was unlisted.");