diff --git a/Directory.Packages.props b/Directory.Packages.props index df19d1c9e83..623795280be 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -36,8 +36,6 @@ - - diff --git a/Documentation/ArcadeSdk.md b/Documentation/ArcadeSdk.md index 5ff86313be4..1f03dca5516 100644 --- a/Documentation/ArcadeSdk.md +++ b/Documentation/ArcadeSdk.md @@ -986,11 +986,6 @@ When `UsingToolNuGetRepack` is true _shipping_ packages are repackaged as releas Set to `true` in projects that build Visual Studio Build (CoreXT) packages. These packages are non-shipping, but their content is shipping. They are inserted into and referenced from the internal DevDiv `VS` repository. -### `PublishWindowsPdb` (bool) - -`true` (default) if the PDBs produced by the project should be converted to Windows PDB and published to Microsoft symbol servers. -Set to `false` to override the default (uncommon). - ### `ApplyNgenOptimization` (`partial`, `full` or empty) Set to `partial` or `full` in a shipping project to require IBC optimization data to be available for the project and embed them into the binary during official build. The value of `partial` indicates partial NGEN, whereas `full` means full NGEN optimization. diff --git a/Documentation/RepoToolset/MigrationToArcade.md b/Documentation/RepoToolset/MigrationToArcade.md index 59ee1e29dc7..9033fc051eb 100644 --- a/Documentation/RepoToolset/MigrationToArcade.md +++ b/Documentation/RepoToolset/MigrationToArcade.md @@ -19,7 +19,6 @@ Below is a list of changes required to migrate to Arcade. searchPattern: `artifacts\$(BuildConfiguration)\packages\*Shipping\*.nupkg` 3. Remove PublishOutputToSymStore property from projects if your projects used it before. - By default Windows PDBs for all shipping projects are published to symbol server. - - PublishWindowsPdb property can be used to suppress publishing Windows PDB for the project. 4. Review usages of $(PackageOutputPath) Replace with `$(ArtifactsShippingPackagesDir)` or `$(ArtifactsNonShippingPackagesDir)`. diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index e97548a1c09..dbbf8f17eff 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -50,14 +50,6 @@ https://github.com/dotnet/roslyn e091728607ca0fc9efca55ccfb3e59259c6b5a0a - - https://github.com/dotnet/symreader-converter - c5ba7c88f92e2dde156c324a8c8edc04d9fa4fe0 - - - https://github.com/dotnet/symreader-converter - c5ba7c88f92e2dde156c324a8c8edc04d9fa4fe0 - https://github.com/dotnet/diagnostics 3007744d190d50dc586acdb761c4ce6c0d5bdc15 diff --git a/eng/Versions.props b/eng/Versions.props index b3959463347..4fdf0f675e1 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -89,9 +89,6 @@ 2.22.0 13.0.3 - - 1.1.0-beta2-19575-01 - 1.1.0-beta2-19575-01 8.0.0-preview.24461.2 diff --git a/src/Microsoft.DotNet.Arcade.Sdk/Microsoft.DotNet.Arcade.Sdk.csproj b/src/Microsoft.DotNet.Arcade.Sdk/Microsoft.DotNet.Arcade.Sdk.csproj index baebf769c53..69af7062a7a 100644 --- a/src/Microsoft.DotNet.Arcade.Sdk/Microsoft.DotNet.Arcade.Sdk.csproj +++ b/src/Microsoft.DotNet.Arcade.Sdk/Microsoft.DotNet.Arcade.Sdk.csproj @@ -66,7 +66,6 @@ $(PackageVersion) $(MicrosoftNetCompilersToolsetVersion) - $(MicrosoftDiaSymReaderPdb2PdbVersion) $(PackageVersion) $(MicrosoftSymbolUploaderBuildTaskVersion) $(MicrosoftTemplateEngineAuthoringTasksVersion) diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/Imports.targets b/src/Microsoft.DotNet.Arcade.Sdk/tools/Imports.targets index 2bbcc145865..4a1cefab30d 100644 --- a/src/Microsoft.DotNet.Arcade.Sdk/tools/Imports.targets +++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/Imports.targets @@ -17,6 +17,5 @@ - diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/Publish.proj b/src/Microsoft.DotNet.Arcade.Sdk/tools/Publish.proj index ad9f28f9abc..2e392427159 100644 --- a/src/Microsoft.DotNet.Arcade.Sdk/tools/Publish.proj +++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/Publish.proj @@ -148,11 +148,6 @@ - diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/PublishArtifactsInManifest.proj b/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/PublishArtifactsInManifest.proj index dbd512d4958..9e3c0cec80d 100644 --- a/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/PublishArtifactsInManifest.proj +++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/PublishArtifactsInManifest.proj @@ -71,8 +71,6 @@ - InternalInstallersTargetStaticFeedKey - InternalChecksumsTargetStaticFeed - InternalChecksumsTargetStaticFeedKey - - NOTE: For symbol publishing using V3, ConvertPortablePdbsToWindowsPdbs is always set to false, because this is an expensive task so this is done in the staging pipeline post signing. --> diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/PublishToSymbolServers.proj b/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/PublishToSymbolServers.proj index 75780421b97..afd9985e09f 100644 --- a/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/PublishToSymbolServers.proj +++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/PublishToSymbolServers.proj @@ -38,9 +38,6 @@ - 3650 true @@ -49,8 +46,6 @@ false true false - false - false + Condition="$(PublishToSymbolServer)" /> diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/SymStore.targets b/src/Microsoft.DotNet.Arcade.Sdk/tools/SymStore.targets deleted file mode 100644 index a32bf6dec13..00000000000 --- a/src/Microsoft.DotNet.Arcade.Sdk/tools/SymStore.targets +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - - - - - <_SymbolProducerTarget Condition="'$(Language)' == 'C++'">BuildLink - <_SymbolProducerTarget Condition="'$(Language)' != 'C++'">CoreBuild - - - - - - - - <_TargetPdbPath /> - <_TargetPdbPath Condition="'$(DebugType)' != 'embedded'">$([System.IO.Path]::ChangeExtension($(TargetPath), '.pdb')) - <_BuildsPortablePdb>false - <_BuildsPortablePdb Condition="'$(DebugType)' == 'portable' or '$(DebugType)' == 'embedded'">true - - <_SymStoreTargetFramework>$(TargetFramework) - <_SymStoreOutputDir>$(ArtifactsSymStoreDirectory)$(OutDirName)\$(_SymStoreTargetFramework)\ - <_SymStoreOutputDir Condition="'$(PlatformName)' != 'AnyCPU'">$(_SymStoreOutputDir)$(PlatformName)\ - - <_SymStorePdbPath>$(_SymStoreOutputDir)$(TargetName).pdb - - - true - - - - - - - - <_PdbConverterPath>$(NuGetPackageRoot)microsoft.diasymreader.pdb2pdb\$(MicrosoftDiaSymReaderPdb2PdbVersion)\tools\Pdb2Pdb.exe - <_PdbConverterCommandLineArgs>"$(TargetPath)" /out "$(_SymStorePdbPath)" /srcsvrvar SRC_INDEX=public - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/Microsoft.DotNet.Build.Tasks.Feed/Microsoft.DotNet.Build.Tasks.Feed.csproj b/src/Microsoft.DotNet.Build.Tasks.Feed/Microsoft.DotNet.Build.Tasks.Feed.csproj index bc70dea1458..52392e477da 100644 --- a/src/Microsoft.DotNet.Build.Tasks.Feed/Microsoft.DotNet.Build.Tasks.Feed.csproj +++ b/src/Microsoft.DotNet.Build.Tasks.Feed/Microsoft.DotNet.Build.Tasks.Feed.csproj @@ -33,9 +33,6 @@ the symbol publishing doesn't run on framework anyway (this project has a throwing stub for .NET framework in that path due to the reliance in maestro). Until we really need to multitarget, this is the better path. --> - - diff --git a/src/Microsoft.DotNet.Build.Tasks.Feed/src/PublishArtifactsInManifestBase.cs b/src/Microsoft.DotNet.Build.Tasks.Feed/src/PublishArtifactsInManifestBase.cs index 083a54dbc24..b93dec6f217 100644 --- a/src/Microsoft.DotNet.Build.Tasks.Feed/src/PublishArtifactsInManifestBase.cs +++ b/src/Microsoft.DotNet.Build.Tasks.Feed/src/PublishArtifactsInManifestBase.cs @@ -658,8 +658,6 @@ Task CreatePublishSymbolHelper(string symbolPublishingExclus TempSymbolsAzureDevOpsOrg, creds, packageFileExcludeList: exclusions, - convertPortablePdbs: false, - treatPdbConversionIssuesAsInfo: false, pdbConversionTreatAsWarning: null, dotnetInternalPublishSpecialClrFiles: publishSpecialClrFiles, verboseClient: true, diff --git a/src/Microsoft.DotNet.Internal.SymbolHelper/Microsoft.DotNet.Internal.SymbolHelper.csproj b/src/Microsoft.DotNet.Internal.SymbolHelper/Microsoft.DotNet.Internal.SymbolHelper.csproj index 9b2bc487369..288d3836643 100644 --- a/src/Microsoft.DotNet.Internal.SymbolHelper/Microsoft.DotNet.Internal.SymbolHelper.csproj +++ b/src/Microsoft.DotNet.Internal.SymbolHelper/Microsoft.DotNet.Internal.SymbolHelper.csproj @@ -7,18 +7,10 @@ - - - - + diff --git a/src/Microsoft.DotNet.Internal.SymbolHelper/SymbolPublisherOptions.cs b/src/Microsoft.DotNet.Internal.SymbolHelper/SymbolPublisherOptions.cs index 0d4dbb8dc62..d2cc68d215d 100644 --- a/src/Microsoft.DotNet.Internal.SymbolHelper/SymbolPublisherOptions.cs +++ b/src/Microsoft.DotNet.Internal.SymbolHelper/SymbolPublisherOptions.cs @@ -17,8 +17,6 @@ public sealed class SymbolPublisherOptions /// The Azure DevOps organization to publish to. /// The token credential with symbol write scope. /// The list of package files to exclude from package publishing. Doesn't contribute to loose file publishing. Empty by default. - /// A flag indicating whether to convert portable PDBs to windows PDBs. Defaults to false. - /// A flag indicating whether to treat PDB conversion issues as informational rather than warn/error. Defaults to false. /// The list of PDB conversion issue IDs to treat as warnings. Defaults to empty. /// Symbol client per-operation timeout in minutes. Defaults to 10 mins. /// A flag indicating whether to publish CLR files under their special diagnostic indexes. Defaults to false. @@ -28,8 +26,6 @@ public SymbolPublisherOptions( string azdoOrg, TokenCredential credential, IEnumerable? packageFileExcludeList = null, - bool convertPortablePdbs = false, - bool treatPdbConversionIssuesAsInfo = false, IEnumerable? pdbConversionTreatAsWarning = null, uint operationTimeoutInMins = 10, bool dotnetInternalPublishSpecialClrFiles = false, @@ -39,8 +35,6 @@ public SymbolPublisherOptions( AzdoOrg = azdoOrg is not null and not "" ? azdoOrg : throw new ArgumentException("Organization can't be null or empty", nameof(azdoOrg)); Credential = credential ?? throw new ArgumentNullException(nameof(credential)); PackageFileExcludeList = packageFileExcludeList is null ? FrozenSet.Empty : packageFileExcludeList.ToFrozenSet(); - ConvertPortablePdbs = convertPortablePdbs; - TreatPdbConversionIssuesAsInfo = treatPdbConversionIssuesAsInfo; PdbConversionTreatAsWarning = pdbConversionTreatAsWarning is null ? FrozenSet.Empty : pdbConversionTreatAsWarning.ToFrozenSet(); OperationTimeoutInMins = operationTimeoutInMins; DotnetInternalPublishSpecialClrFiles = dotnetInternalPublishSpecialClrFiles; @@ -63,16 +57,6 @@ public SymbolPublisherOptions( /// public FrozenSet PackageFileExcludeList { get; } - /// - /// A flag indicating whether the client should try to convert portable PDBs to classic on upload. - /// - public bool ConvertPortablePdbs { get; } - - /// - /// A flag indicating whether to treat PDB conversion issues as information. - /// - public bool TreatPdbConversionIssuesAsInfo { get; } - /// /// List of PDB conversion issue IDs to treat as warnings. /// diff --git a/src/Microsoft.DotNet.Internal.SymbolHelper/SymbolUploadHelper.cs b/src/Microsoft.DotNet.Internal.SymbolHelper/SymbolUploadHelper.cs index a918f0e0317..aaa13709871 100644 --- a/src/Microsoft.DotNet.Internal.SymbolHelper/SymbolUploadHelper.cs +++ b/src/Microsoft.DotNet.Internal.SymbolHelper/SymbolUploadHelper.cs @@ -13,7 +13,6 @@ using System.Threading; using System.Threading.Tasks; using Azure.Core; -using Microsoft.DiaSymReader.Tools; using Microsoft.SymbolStore; namespace Microsoft.DotNet.Internal.SymbolHelper; @@ -26,12 +25,10 @@ namespace Microsoft.DotNet.Internal.SymbolHelper; /// can be finalized with some TTL if all uploads. Otherwise, if assets fail to upload, the request can be /// deleted. /// There's a few options for the helper that can be controlled by the passed in, -/// notably the ability to convert portable PDBs to Windows PDBs and the ability to generate a special manifest -/// for the official runtime builds. +/// notably the ability to generate a special manifest for the official runtime builds. /// public sealed class SymbolUploadHelper { - public const string ConversionFolderName = "_convertedPdbs"; private const string AzureDevOpsResource = "499b84ac-1321-427f-aa17-267ca6975798"; private const string PathEnvVarName = "AzureDevOpsToken"; private static readonly FrozenSet s_validExtensions = FrozenSet.ToFrozenSet(["", ".exe", ".dll", ".pdb", ".so", ".dbg", ".dylib", ".dwarf", ".r2rmap"]); @@ -41,13 +38,10 @@ public sealed class SymbolUploadHelper private readonly TokenCredential _credential; private readonly string _commonArgs; private readonly string _symbolToolPath; - private readonly PdbConverter? _pdbConverter; private readonly uint _symbolToolTimeoutInMins; private readonly bool _shouldGenerateManifest; - private readonly bool _shouldConvertPdbs; private readonly bool _isDryRun; private readonly FrozenSet _packageFileExclusions; - private readonly bool _treatPdbConversionIssuesAsInfo; /// /// Initializes a new instance of the class. @@ -90,32 +84,8 @@ internal SymbolUploadHelper(ITracer logger, string symbolToolPath, SymbolPublish // All other builds should not set this flag in the interest of perf. _shouldGenerateManifest = options.DotnetInternalPublishSpecialClrFiles; - // This is an extremely slow operation and should be used sparingly. We usually only want to do this - // in the staging/release pipeline, not in the nightly build pipeline. - _shouldConvertPdbs = options.ConvertPortablePdbs; _isDryRun = options.IsDryRun; _packageFileExclusions = options.PackageFileExcludeList; - - if (_shouldConvertPdbs) - { - _treatPdbConversionIssuesAsInfo = options.TreatPdbConversionIssuesAsInfo; - _pdbConverter = new PdbConverter(diagnostic => - { - string message = diagnostic.ToString(); - if (_treatPdbConversionIssuesAsInfo) - { - _globalTracer.Information(message); - } - else if (options.PdbConversionTreatAsWarning.Contains((int)diagnostic.Id)) - { - _globalTracer.Warning(message); - } - else - { - _globalTracer.Error(message); - } - }); - } } public async Task GetClientDiagnosticInfo() @@ -142,8 +112,7 @@ public async Task CreateRequest(string? name) } /// - /// Adds directory to a symbol request. This will convert portable PDBs as long as the PE is next to the - /// PDB and the options specified conversion. + /// Adds directory to a symbol request. /// /// The name of the symbol request to append to. Must be non-finalized. /// The files to add. @@ -152,24 +121,8 @@ public async Task AddDirectory(string? name, string pathToAdd) { ScopedTracer logger = _tracerFactory.CreateTracer(nameof(AddDirectory)); SymbolRequestHelpers.ValidateRequestName(name, logger); - try - { - if (_shouldConvertPdbs) - { - ConvertPortablePdbsInDirectory(logger, pathToAdd); - } - return await AddDirectoryCore(name!, pathToAdd, manifestPath: null, logger).ConfigureAwait(false); - } - finally - { - string convertedFolder = GetConvertedPdbFolder(pathToAdd); - if (_shouldConvertPdbs && !Directory.Exists(convertedFolder)) - { - logger.Information("Cleaning up symbol conversion directory {0}", convertedFolder); - try { Directory.Delete(convertedFolder, recursive: true); } catch { } - } - } + return await AddDirectoryCore(name!, pathToAdd, manifestPath: null, logger).ConfigureAwait(false); } /// @@ -296,11 +249,6 @@ private async Task AddPackageToRequestCore(string name, string packagePath, await entryStream.CopyToAsync(entryFile).ConfigureAwait(false); } - if (_shouldConvertPdbs) - { - ConvertPortablePdbsInDirectory(logger, packageExtractDir); - } - string? manifest = null; if (_shouldGenerateManifest) { @@ -350,54 +298,6 @@ bool ShouldIndexPackageFile(string relativeFilePath) } } - private void ConvertPortablePdbsInDirectory(ScopedTracer logger, string filesDir) - { - Action logWarning = _treatPdbConversionIssuesAsInfo ? logger.Information : logger.Error; - string convertedPdbFolder = GetConvertedPdbFolder(filesDir); - _ = Directory.CreateDirectory(convertedPdbFolder); - foreach (string file in Directory.EnumerateFiles(filesDir, "*.pdb", SearchOption.AllDirectories)) - { - using Stream pdbStream = File.OpenRead(file); - if (!PdbConverter.IsPortable(pdbStream)) - { - continue; - } - - logger.Verbose("Converting {0} to classic PDB format", file); - - string pePath = Path.ChangeExtension(file, ".dll"); - // Try to fall back to the framework exe scenario. - if (!File.Exists(pePath)) - { - pePath = Path.ChangeExtension(file, ".exe"); - } - - if (!File.Exists(pePath)) - { - logWarning($"Conversion error: could not find matching PE file for {file}"); - continue; - } - - string convertedPdbPath = Path.Combine(convertedPdbFolder, Path.GetFileName(file)); - - try - { - using Stream peStream = File.OpenRead(pePath); - using Stream convertedPdbStream = File.Create(convertedPdbPath); - _pdbConverter!.ConvertPortableToWindows(peStream, pdbStream, convertedPdbStream); - } - catch (Exception ex) - { - logWarning($"Conversion error: {ex.Message}"); - continue; - } - - logger.Verbose("Converted successfully to {0}.", convertedPdbPath); - } - } - - private static string GetConvertedPdbFolder(string filesDir) => Path.Combine(filesDir, ConversionFolderName); - private DirectoryInfo CreateTempDirectory() { string tempDir = Path.Combine(_workingDir, Path.GetRandomFileName());