Enable injecting srcsvr variables (#97)
* Enable injecting srcsvr variables * Rename package to Microsoft.DiaSymReader.Pdb2Pdb
This commit is contained in:
Родитель
c720dd9294
Коммит
8c5fe1933e
|
@ -0,0 +1,27 @@
|
|||
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using Xunit;
|
||||
using System;
|
||||
|
||||
namespace Microsoft.DiaSymReader.Tools.UnitTests
|
||||
{
|
||||
public class PdbConverterPortableToWindowsTests
|
||||
{
|
||||
[Fact]
|
||||
public void ValidateSrcSvrVariables()
|
||||
{
|
||||
PdbConverterPortableToWindows.ValidateSrcSvrVariable("A", "", "");
|
||||
PdbConverterPortableToWindows.ValidateSrcSvrVariable("AZaz09_", "", "");
|
||||
PdbConverterPortableToWindows.ValidateSrcSvrVariable("ABC", "", "");
|
||||
|
||||
Assert.Throws<ArgumentException>(() => PdbConverterPortableToWindows.ValidateSrcSvrVariable(null, "", ""));
|
||||
Assert.Throws<ArgumentException>(() => PdbConverterPortableToWindows.ValidateSrcSvrVariable("", "", ""));
|
||||
Assert.Throws<ArgumentException>(() => PdbConverterPortableToWindows.ValidateSrcSvrVariable("-", "", ""));
|
||||
Assert.Throws<ArgumentException>(() => PdbConverterPortableToWindows.ValidateSrcSvrVariable("ABC_[", "", ""));
|
||||
Assert.Throws<ArgumentException>(() => PdbConverterPortableToWindows.ValidateSrcSvrVariable("0ABC", "", ""));
|
||||
Assert.Throws<ArgumentException>(() => PdbConverterPortableToWindows.ValidateSrcSvrVariable("A", "a\r", ""));
|
||||
Assert.Throws<ArgumentException>(() => PdbConverterPortableToWindows.ValidateSrcSvrVariable("A", "a\n", ""));
|
||||
Assert.Throws<ArgumentException>(() => PdbConverterPortableToWindows.ValidateSrcSvrVariable("A", "a\0", ""));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using Xunit;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Microsoft.DiaSymReader.Tools.UnitTests
|
||||
{
|
||||
|
@ -1143,6 +1144,93 @@ SRCSRV: end ------------------------------------------------]]></srcsvr>
|
|||
});
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Convert_SourceLinkToSourceDataSrcSvrVars()
|
||||
{
|
||||
VerifyWindowsConvertedFromPortableMatchesExpected(
|
||||
TestResources.SourceLink.DllAndPdb(portable: true),
|
||||
@"<?xml version=""1.0"" encoding=""utf-16""?>
|
||||
<symbols>
|
||||
<files>
|
||||
<file id=""1"" name=""C:\Documents.cs"" language=""3f5162f8-07c6-11d3-9053-00c04fa302a1"" languageVendor=""994b45c4-e6e9-11d2-903f-00c04fa302a1"" documentType=""5a869d0b-6611-11d3-bd2a-0000f80849bd"" checkSumAlgorithmId=""ff1816ec-aa5e-4d10-87f7-6f4963833460"" checkSum=""DB, EB, 2A, 6, 7B, 2F, E, D, 67, 8A, 0, 2C, 58, 7A, 28, 6, 5, 6C, 3D, CE, "" />
|
||||
<file id=""2"" name=""C:\a\b\c\d\1.cs"" language=""3f5162f8-07c6-11d3-9053-00c04fa302a1"" languageVendor=""994b45c4-e6e9-11d2-903f-00c04fa302a1"" documentType=""5a869d0b-6611-11d3-bd2a-0000f80849bd"" />
|
||||
<file id=""3"" name=""C:\a\b\c\D\2.cs"" language=""3f5162f8-07c6-11d3-9053-00c04fa302a1"" languageVendor=""994b45c4-e6e9-11d2-903f-00c04fa302a1"" documentType=""5a869d0b-6611-11d3-bd2a-0000f80849bd"" />
|
||||
<file id=""4"" name=""C:\a\b\C\d\3.cs"" language=""3f5162f8-07c6-11d3-9053-00c04fa302a1"" languageVendor=""994b45c4-e6e9-11d2-903f-00c04fa302a1"" documentType=""5a869d0b-6611-11d3-bd2a-0000f80849bd"" />
|
||||
<file id=""5"" name=""C:\a\b\c\d\x.cs"" language=""3f5162f8-07c6-11d3-9053-00c04fa302a1"" languageVendor=""994b45c4-e6e9-11d2-903f-00c04fa302a1"" documentType=""5a869d0b-6611-11d3-bd2a-0000f80849bd"" />
|
||||
<file id=""6"" name=""C:\A\b\c\x.cs"" language=""3f5162f8-07c6-11d3-9053-00c04fa302a1"" languageVendor=""994b45c4-e6e9-11d2-903f-00c04fa302a1"" documentType=""5a869d0b-6611-11d3-bd2a-0000f80849bd"" />
|
||||
<file id=""7"" name=""C:\a\b\x.cs"" language=""3f5162f8-07c6-11d3-9053-00c04fa302a1"" languageVendor=""994b45c4-e6e9-11d2-903f-00c04fa302a1"" documentType=""5a869d0b-6611-11d3-bd2a-0000f80849bd"" />
|
||||
<file id=""8"" name=""C:\a\B\3.cs"" language=""3f5162f8-07c6-11d3-9053-00c04fa302a1"" languageVendor=""994b45c4-e6e9-11d2-903f-00c04fa302a1"" documentType=""5a869d0b-6611-11d3-bd2a-0000f80849bd"" />
|
||||
<file id=""9"" name=""C:\a\B\c\4.cs"" language=""3f5162f8-07c6-11d3-9053-00c04fa302a1"" languageVendor=""994b45c4-e6e9-11d2-903f-00c04fa302a1"" documentType=""5a869d0b-6611-11d3-bd2a-0000f80849bd"" />
|
||||
<file id=""10"" name=""C:\*\5.cs"" language=""3f5162f8-07c6-11d3-9053-00c04fa302a1"" languageVendor=""994b45c4-e6e9-11d2-903f-00c04fa302a1"" documentType=""5a869d0b-6611-11d3-bd2a-0000f80849bd"" />
|
||||
<file id=""11"" name="":6.cs"" language=""3f5162f8-07c6-11d3-9053-00c04fa302a1"" languageVendor=""994b45c4-e6e9-11d2-903f-00c04fa302a1"" documentType=""5a869d0b-6611-11d3-bd2a-0000f80849bd"" />
|
||||
<file id=""12"" name=""C:\a\b\X.cs"" language=""3f5162f8-07c6-11d3-9053-00c04fa302a1"" languageVendor=""994b45c4-e6e9-11d2-903f-00c04fa302a1"" documentType=""5a869d0b-6611-11d3-bd2a-0000f80849bd"" />
|
||||
<file id=""13"" name=""C:\a\B\x.cs"" language=""3f5162f8-07c6-11d3-9053-00c04fa302a1"" languageVendor=""994b45c4-e6e9-11d2-903f-00c04fa302a1"" documentType=""5a869d0b-6611-11d3-bd2a-0000f80849bd"" />
|
||||
</files>
|
||||
<methods>
|
||||
<method containingType=""C"" name=""M"">
|
||||
<customDebugInfo>
|
||||
<using>
|
||||
<namespace usingCount=""1"" />
|
||||
</using>
|
||||
</customDebugInfo>
|
||||
<sequencePoints>
|
||||
<entry offset=""0x0"" startLine=""7"" startColumn=""5"" endLine=""7"" endColumn=""6"" document=""1"" />
|
||||
<entry offset=""0x1"" startLine=""10"" startColumn=""9"" endLine=""10"" endColumn=""30"" document=""2"" />
|
||||
<entry offset=""0x8"" startLine=""20"" startColumn=""9"" endLine=""20"" endColumn=""30"" document=""3"" />
|
||||
<entry offset=""0xf"" startLine=""30"" startColumn=""9"" endLine=""30"" endColumn=""30"" document=""4"" />
|
||||
<entry offset=""0x16"" startLine=""40"" startColumn=""9"" endLine=""40"" endColumn=""30"" document=""4"" />
|
||||
<entry offset=""0x1d"" hidden=""true"" document=""4"" />
|
||||
<entry offset=""0x23"" startLine=""50"" startColumn=""9"" endLine=""50"" endColumn=""30"" document=""5"" />
|
||||
<entry offset=""0x2a"" startLine=""60"" startColumn=""9"" endLine=""60"" endColumn=""30"" document=""6"" />
|
||||
<entry offset=""0x31"" startLine=""70"" startColumn=""9"" endLine=""70"" endColumn=""30"" document=""7"" />
|
||||
<entry offset=""0x38"" startLine=""80"" startColumn=""9"" endLine=""80"" endColumn=""30"" document=""8"" />
|
||||
<entry offset=""0x3f"" startLine=""90"" startColumn=""9"" endLine=""90"" endColumn=""30"" document=""9"" />
|
||||
<entry offset=""0x46"" startLine=""100"" startColumn=""9"" endLine=""100"" endColumn=""30"" document=""10"" />
|
||||
<entry offset=""0x4d"" startLine=""110"" startColumn=""9"" endLine=""110"" endColumn=""30"" document=""11"" />
|
||||
<entry offset=""0x54"" startLine=""120"" startColumn=""9"" endLine=""120"" endColumn=""30"" document=""12"" />
|
||||
<entry offset=""0x5b"" startLine=""130"" startColumn=""9"" endLine=""130"" endColumn=""30"" document=""13"" />
|
||||
<entry offset=""0x62"" startLine=""131"" startColumn=""5"" endLine=""131"" endColumn=""6"" document=""13"" />
|
||||
</sequencePoints>
|
||||
<scope startOffset=""0x0"" endOffset=""0x63"">
|
||||
<namespace name=""System"" />
|
||||
</scope>
|
||||
</method>
|
||||
</methods>
|
||||
<srcsvr><![CDATA[SRCSRV: ini ------------------------------------------------
|
||||
VERSION=2
|
||||
SRCSRV: variables ------------------------------------------
|
||||
RAWURL=http://server/%var2%
|
||||
SRCSRVVERCTRL=http
|
||||
SRCSRVTRG=%RAWURL%
|
||||
ABC=*
|
||||
XYZ=123
|
||||
SRCSRV: source files ---------------------------------------
|
||||
C:\Documents.cs*3/Documents.cs.g
|
||||
C:\a\b\c\d\1.cs*1/a/b/c/d/1.cs
|
||||
C:\a\b\c\D\2.cs*1/a/b/c/D/2.cs
|
||||
C:\a\b\C\d\3.cs*1/a/b/C/d/3.cs
|
||||
C:\a\b\c\d\x.cs*1/a/b/c/d/x.cs
|
||||
C:\A\b\c\x.cs*1/a/b/c/x.cs
|
||||
C:\a\b\x.cs*1/a/b/x.cs
|
||||
C:\a\B\3.cs*1/a/B/3.cs
|
||||
C:\a\B\c\4.cs*1/a/B/c/4.cs
|
||||
:6.cs*4/:6.cs
|
||||
C:\a\b\X.cs*1/a/b/X.cs
|
||||
C:\a\B\x.cs*1/a/B/x.cs
|
||||
SRCSRV: end ------------------------------------------------]]></srcsvr>
|
||||
</symbols>
|
||||
",
|
||||
new[]
|
||||
{
|
||||
new PdbDiagnostic(PdbDiagnosticId.UnmappedDocumentName, 0, new[] { @"C:\*\5.cs" })
|
||||
},
|
||||
new PortablePdbConversionOptions(srcSvrVariables: new[]
|
||||
{
|
||||
new KeyValuePair<string, string>("ABC", "*"),
|
||||
new KeyValuePair<string, string>("XYZ", "123")
|
||||
}));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Convert_EmbeddedSource()
|
||||
{
|
||||
|
|
|
@ -16,10 +16,10 @@ namespace Microsoft.DiaSymReader.Tools.UnitTests
|
|||
{
|
||||
private const PdbToXmlOptions Options = PdbToXmlOptions.IncludeSourceServerInformation | PdbToXmlOptions.IncludeEmbeddedSources | PdbToXmlOptions.ResolveTokens;
|
||||
|
||||
public static void VerifyWindowsPdb(TestResource portable, TestResource windows, string expectedXml, PdbDiagnostic[] expectedDiagnostics = null)
|
||||
public static void VerifyWindowsPdb(TestResource portable, TestResource windows, string expectedXml, PdbDiagnostic[] expectedDiagnostics = null, PortablePdbConversionOptions options = null)
|
||||
{
|
||||
VerifyWindowsMatchesExpected(windows, expectedXml);
|
||||
VerifyWindowsConvertedFromPortableMatchesExpected(portable, expectedXml, expectedDiagnostics);
|
||||
VerifyWindowsConvertedFromPortableMatchesExpected(portable, expectedXml, expectedDiagnostics, options);
|
||||
}
|
||||
|
||||
private static void VerifyWindowsMatchesExpected(TestResource windows, string expectedXml)
|
||||
|
@ -34,7 +34,7 @@ namespace Microsoft.DiaSymReader.Tools.UnitTests
|
|||
AssertEx.AssertLinesEqual(adjustedExpectedXml, adjustedActualXml, "Comparing Windows PDB with expected XML");
|
||||
}
|
||||
|
||||
private static void VerifyWindowsConvertedFromPortableMatchesExpected(TestResource portable, string expectedXml, PdbDiagnostic[] expectedDiagnostics)
|
||||
public static void VerifyWindowsConvertedFromPortableMatchesExpected(TestResource portable, string expectedXml, PdbDiagnostic[] expectedDiagnostics, PortablePdbConversionOptions options)
|
||||
{
|
||||
var portablePEStream = new MemoryStream(portable.PE);
|
||||
var portablePdbStream = new MemoryStream(portable.Pdb);
|
||||
|
@ -42,7 +42,7 @@ namespace Microsoft.DiaSymReader.Tools.UnitTests
|
|||
var actualDiagnostics = new List<PdbDiagnostic>();
|
||||
|
||||
var converter = new PdbConverter(actualDiagnostics.Add);
|
||||
converter.ConvertPortableToWindows(portablePEStream, portablePdbStream, convertedWindowsPdbStream);
|
||||
converter.ConvertPortableToWindows(portablePEStream, portablePdbStream, convertedWindowsPdbStream, options);
|
||||
|
||||
AssertEx.Equal(expectedDiagnostics ?? Array.Empty<PdbDiagnostic>(), actualDiagnostics, itemInspector: InspectDiagnostic);
|
||||
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using Xunit;
|
||||
using Roslyn.Test.Utilities;
|
||||
|
||||
namespace Microsoft.DiaSymReader.Tools.UnitTests
|
||||
{
|
||||
using Roslyn.Test.Utilities;
|
||||
using static PdbValidationMetadata;
|
||||
|
||||
public class WindowsToPortableTests
|
||||
|
|
|
@ -252,4 +252,13 @@
|
|||
<data name="InvalidJsonDataFormat" xml:space="preserve">
|
||||
<value>The JSON format is invalid</value>
|
||||
</data>
|
||||
<data name="InvalidSrcSvrVariableName" xml:space="preserve">
|
||||
<value>Invalid srcsvr variable name: '{0}'</value>
|
||||
</data>
|
||||
<data name="ReservedSrcSvrVariableName" xml:space="preserve">
|
||||
<value>Variable '{0}' can't be set explicitly</value>
|
||||
</data>
|
||||
<data name="InvalidSrcSvrVariableValue" xml:space="preserve">
|
||||
<value>Value of srcsvr variable '{0}' contains invalid characters</value>
|
||||
</data>
|
||||
</root>
|
|
@ -1,15 +0,0 @@
|
|||
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
namespace Microsoft.DiaSymReader.Tools
|
||||
{
|
||||
public enum PdbConversionOptions
|
||||
{
|
||||
Default = 0,
|
||||
|
||||
/// <summary>
|
||||
/// When converting to Windows PDB include Source Link data as is,
|
||||
/// without converting to srcsrv.
|
||||
/// </summary>
|
||||
SuppressSourceLinkConversion = 1,
|
||||
}
|
||||
}
|
|
@ -105,7 +105,7 @@ namespace Microsoft.DiaSymReader.Tools
|
|||
/// <exception cref="InvalidDataException">The PDB doesn't match the CodeView Debug Directory record in the PE image.</exception>
|
||||
/// <exception cref="IOException">IO error while reading from or writing to a stream.</exception>
|
||||
/// <exception cref="ObjectDisposedException">Stream has been disposed while reading/writing.</exception>
|
||||
public void ConvertPortableToWindows(Stream peStream, Stream sourcePdbStream, Stream targetPdbStream, PdbConversionOptions options = default)
|
||||
public void ConvertPortableToWindows(Stream peStream, Stream sourcePdbStream, Stream targetPdbStream, PortablePdbConversionOptions options = null)
|
||||
{
|
||||
StreamUtilities.ValidateStream(peStream, nameof(peStream), readRequired: true, seekRequired: true);
|
||||
using (var peReader = new PEReader(peStream, PEStreamOptions.LeaveOpen))
|
||||
|
@ -128,7 +128,7 @@ namespace Microsoft.DiaSymReader.Tools
|
|||
/// <exception cref="InvalidDataException">The PDB doesn't match the CodeView Debug Directory record in the PE image.</exception>
|
||||
/// <exception cref="IOException">IO error while reading from or writing to a stream.</exception>
|
||||
/// <exception cref="ObjectDisposedException">Stream has been disposed while reading/writing.</exception>
|
||||
public void ConvertPortableToWindows(PEReader peReader, Stream sourcePdbStream, Stream targetPdbStream, PdbConversionOptions options = default)
|
||||
public void ConvertPortableToWindows(PEReader peReader, Stream sourcePdbStream, Stream targetPdbStream, PortablePdbConversionOptions options = null)
|
||||
{
|
||||
StreamUtilities.ValidateStream(sourcePdbStream, nameof(sourcePdbStream), readRequired: true);
|
||||
|
||||
|
@ -151,7 +151,7 @@ namespace Microsoft.DiaSymReader.Tools
|
|||
/// <exception cref="InvalidDataException">The PDB doesn't match the CodeView Debug Directory record in the PE image.</exception>
|
||||
/// <exception cref="IOException">IO error while reading from or writing to a stream.</exception>
|
||||
/// <exception cref="ObjectDisposedException">Stream has been disposed while reading/writing.</exception>
|
||||
public void ConvertPortableToWindows(PEReader peReader, MetadataReader pdbReader, Stream targetPdbStream, PdbConversionOptions options = default)
|
||||
public void ConvertPortableToWindows(PEReader peReader, MetadataReader pdbReader, Stream targetPdbStream, PortablePdbConversionOptions options = null)
|
||||
{
|
||||
if (pdbReader == null)
|
||||
{
|
||||
|
@ -178,13 +178,13 @@ namespace Microsoft.DiaSymReader.Tools
|
|||
/// <exception cref="BadImageFormatException">The format of the PE image or the source PDB image is invalid.</exception>
|
||||
/// <exception cref="InvalidDataException">The PDB doesn't match the CodeView Debug Directory record in the PE image.</exception>
|
||||
/// <exception cref="IOException">IO error while reading from or writing to a stream.</exception>
|
||||
public void ConvertPortableToWindows(PEReader peReader, MetadataReader pdbReader, SymUnmanagedWriter pdbWriter, PdbConversionOptions options)
|
||||
public void ConvertPortableToWindows(PEReader peReader, MetadataReader pdbReader, SymUnmanagedWriter pdbWriter, PortablePdbConversionOptions options = null)
|
||||
{
|
||||
new PdbConverterPortableToWindows(_diagnosticReporterOpt).Convert(
|
||||
peReader ?? throw new ArgumentNullException(nameof(peReader)),
|
||||
peReader ?? throw new ArgumentNullException(nameof(peReader)),
|
||||
pdbReader ?? throw new ArgumentNullException(nameof(pdbReader)),
|
||||
pdbWriter ?? throw new ArgumentNullException(nameof(pdbWriter)),
|
||||
options);
|
||||
pdbWriter ?? throw new ArgumentNullException(nameof(pdbWriter)),
|
||||
options ?? PortablePdbConversionOptions.Default);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -77,8 +77,13 @@ namespace Microsoft.DiaSymReader.Tools
|
|||
public bool IsHoistedScope => HoistedVariableStartIndex < HoistedVariableEndIndex;
|
||||
}
|
||||
|
||||
internal void Convert(PEReader peReader, MetadataReader pdbReader, SymUnmanagedWriter pdbWriter, PdbConversionOptions options)
|
||||
internal void Convert(PEReader peReader, MetadataReader pdbReader, SymUnmanagedWriter pdbWriter, PortablePdbConversionOptions options)
|
||||
{
|
||||
Debug.Assert(peReader != null);
|
||||
Debug.Assert(pdbReader != null);
|
||||
Debug.Assert(pdbWriter != null);
|
||||
Debug.Assert(options != null);
|
||||
|
||||
if (!SymReaderHelpers.TryReadPdbId(peReader, out var pePdbId, out int peAge))
|
||||
{
|
||||
throw new InvalidDataException(ConverterResources.SpecifiedPEFileHasNoAssociatedPdb);
|
||||
|
@ -572,13 +577,13 @@ namespace Microsoft.DiaSymReader.Tools
|
|||
var sourceLinkHandle = pdbReader.GetCustomDebugInformation(EntityHandle.ModuleDefinition, PortableCustomDebugInfoKinds.SourceLink);
|
||||
if (!sourceLinkHandle.IsNil)
|
||||
{
|
||||
if ((options & PdbConversionOptions.SuppressSourceLinkConversion) == 0)
|
||||
if (options.SuppressSourceLinkConversion)
|
||||
{
|
||||
ConvertSourceServerData(pdbReader.GetStringUTF8(sourceLinkHandle), pdbWriter, documentNames);
|
||||
pdbWriter.SetSourceLinkData(pdbReader.GetBlobBytes(sourceLinkHandle));
|
||||
}
|
||||
else
|
||||
{
|
||||
pdbWriter.SetSourceLinkData(pdbReader.GetBlobBytes(sourceLinkHandle));
|
||||
ConvertSourceServerData(pdbReader.GetStringUTF8(sourceLinkHandle), pdbWriter, documentNames, options);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -960,9 +965,13 @@ namespace Microsoft.DiaSymReader.Tools
|
|||
symSequencePointsWriter.Flush();
|
||||
}
|
||||
|
||||
private const string SrcSvr_RAWURL = "RAWURL";
|
||||
private const string SrcSvr_SRCSRVVERCTRL = "SRCSRVVERCTRL";
|
||||
private const string SrcSvr_SRCSRVTRG = "SRCSRVTRG";
|
||||
|
||||
// Avoid loading JSON dependency if not needed.
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
private void ConvertSourceServerData(string sourceLink, SymUnmanagedWriter pdbWriter, IReadOnlyCollection<string> documentNames)
|
||||
private void ConvertSourceServerData(string sourceLink, SymUnmanagedWriter pdbWriter, IReadOnlyCollection<string> documentNames, PortablePdbConversionOptions options)
|
||||
{
|
||||
if (documentNames.Count == 0)
|
||||
{
|
||||
|
@ -1029,13 +1038,22 @@ namespace Microsoft.DiaSymReader.Tools
|
|||
builder.Append("SRCSRV: ini ------------------------------------------------\r\n");
|
||||
builder.Append("VERSION=2\r\n");
|
||||
builder.Append("SRCSRV: variables ------------------------------------------\r\n");
|
||||
builder.Append("RAWURL=");
|
||||
builder.Append(SrcSvr_RAWURL + "=");
|
||||
builder.Append(commonPrefix);
|
||||
builder.Append("%var2%\r\n");
|
||||
builder.Append("SRCSRVVERCTRL=");
|
||||
builder.Append(SrcSvr_SRCSRVVERCTRL + "=");
|
||||
builder.Append(commonScheme);
|
||||
builder.Append("\r\n");
|
||||
builder.Append("SRCSRVTRG=%RAWURL%\r\n");
|
||||
builder.Append(SrcSvr_SRCSRVTRG + "=%RAWURL%\r\n");
|
||||
|
||||
foreach (var variable in options.SrcSvrVariables)
|
||||
{
|
||||
builder.Append(variable.Key);
|
||||
builder.Append('=');
|
||||
builder.Append(variable.Value);
|
||||
builder.Append("\r\n");
|
||||
}
|
||||
|
||||
builder.Append("SRCSRV: source files ---------------------------------------\r\n");
|
||||
|
||||
foreach (var (name, uri) in mapping)
|
||||
|
@ -1050,5 +1068,39 @@ namespace Microsoft.DiaSymReader.Tools
|
|||
|
||||
pdbWriter.SetSourceServerData(Encoding.UTF8.GetBytes(builder.ToString()));
|
||||
}
|
||||
|
||||
private static bool IsIdentifierStartChar(char c)
|
||||
=> c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z' || c == '_';
|
||||
|
||||
private static bool IsIdentifierChar(char c)
|
||||
=> IsIdentifierStartChar(c) || c >= '0' && c <= '9';
|
||||
|
||||
internal static void ValidateSrcSvrVariables(ImmutableArray<KeyValuePair<string, string>> variables, string parameterName)
|
||||
{
|
||||
foreach (var variable in variables)
|
||||
{
|
||||
ValidateSrcSvrVariable(variable.Key, variable.Value, parameterName);
|
||||
}
|
||||
}
|
||||
|
||||
internal static void ValidateSrcSvrVariable(string name, string value, string parameterName)
|
||||
{
|
||||
if (string.IsNullOrEmpty(name) || !IsIdentifierStartChar(name[0]) || !name.All(IsIdentifierChar))
|
||||
{
|
||||
throw new ArgumentException(parameterName, string.Format(ConverterResources.InvalidSrcSvrVariableName, name));
|
||||
}
|
||||
|
||||
if (value == null || value.Any(c => c == '\0' || c == '\r' || c == '\n'))
|
||||
{
|
||||
throw new ArgumentException(parameterName, string.Format(ConverterResources.InvalidSrcSvrVariableValue, name));
|
||||
}
|
||||
|
||||
if (name.Equals(SrcSvr_RAWURL, StringComparison.OrdinalIgnoreCase) ||
|
||||
name.Equals(SrcSvr_SRCSRVTRG, StringComparison.OrdinalIgnoreCase) ||
|
||||
name.Equals(SrcSvr_SRCSRVVERCTRL, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
throw new ArgumentException(parameterName, string.Format(ConverterResources.ReservedSrcSvrVariableName, name));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Immutable;
|
||||
|
||||
namespace Microsoft.DiaSymReader.Tools
|
||||
{
|
||||
/// <summary>
|
||||
/// Portable to Windows PDB conversion options.
|
||||
/// </summary>
|
||||
public sealed class PortablePdbConversionOptions
|
||||
{
|
||||
public static readonly PortablePdbConversionOptions Default = new PortablePdbConversionOptions();
|
||||
|
||||
/// <summary>
|
||||
/// When converting to Windows PDB include Source Link data as is,
|
||||
/// without converting to srcsrv.
|
||||
/// </summary>
|
||||
public bool SuppressSourceLinkConversion { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Additional variable definitions to add to variable section of the srcsvr stream.
|
||||
/// </summary>
|
||||
public ImmutableArray<KeyValuePair<string, string>> SrcSvrVariables { get; }
|
||||
|
||||
public PortablePdbConversionOptions(
|
||||
bool suppressSourceLinkConversion = false,
|
||||
IEnumerable<KeyValuePair<string, string>> srcSvrVariables = null)
|
||||
{
|
||||
var variables = srcSvrVariables?.ToImmutableArray() ?? ImmutableArray<KeyValuePair<string, string>>.Empty;
|
||||
PdbConverterPortableToWindows.ValidateSrcSvrVariables(variables, nameof(srcSvrVariables));
|
||||
|
||||
SuppressSourceLinkConversion = suppressSourceLinkConversion;
|
||||
SrcSvrVariables = variables;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -227,6 +227,21 @@
|
|||
<target state="new">Invalid Source Link: {0}</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="InvalidSrcSvrVariableName">
|
||||
<source>Invalid srcsvr variable name: '{0}'</source>
|
||||
<target state="new">Invalid srcsvr variable name: '{0}'</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="ReservedSrcSvrVariableName">
|
||||
<source>Variable '{0}' can't be set explicitly</source>
|
||||
<target state="new">Variable '{0}' can't be set explicitly</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="InvalidSrcSvrVariableValue">
|
||||
<source>Value of srcsvr variable '{0}' contains invalid characters</source>
|
||||
<target state="new">Value of srcsvr variable '{0}' contains invalid characters</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
|
@ -227,6 +227,21 @@
|
|||
<target state="new">Invalid Source Link: {0}</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="InvalidSrcSvrVariableName">
|
||||
<source>Invalid srcsvr variable name: '{0}'</source>
|
||||
<target state="new">Invalid srcsvr variable name: '{0}'</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="ReservedSrcSvrVariableName">
|
||||
<source>Variable '{0}' can't be set explicitly</source>
|
||||
<target state="new">Variable '{0}' can't be set explicitly</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="InvalidSrcSvrVariableValue">
|
||||
<source>Value of srcsvr variable '{0}' contains invalid characters</source>
|
||||
<target state="new">Value of srcsvr variable '{0}' contains invalid characters</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
|
@ -227,6 +227,21 @@
|
|||
<target state="new">Invalid Source Link: {0}</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="InvalidSrcSvrVariableName">
|
||||
<source>Invalid srcsvr variable name: '{0}'</source>
|
||||
<target state="new">Invalid srcsvr variable name: '{0}'</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="ReservedSrcSvrVariableName">
|
||||
<source>Variable '{0}' can't be set explicitly</source>
|
||||
<target state="new">Variable '{0}' can't be set explicitly</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="InvalidSrcSvrVariableValue">
|
||||
<source>Value of srcsvr variable '{0}' contains invalid characters</source>
|
||||
<target state="new">Value of srcsvr variable '{0}' contains invalid characters</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
|
@ -227,6 +227,21 @@
|
|||
<target state="new">Invalid Source Link: {0}</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="InvalidSrcSvrVariableName">
|
||||
<source>Invalid srcsvr variable name: '{0}'</source>
|
||||
<target state="new">Invalid srcsvr variable name: '{0}'</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="ReservedSrcSvrVariableName">
|
||||
<source>Variable '{0}' can't be set explicitly</source>
|
||||
<target state="new">Variable '{0}' can't be set explicitly</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="InvalidSrcSvrVariableValue">
|
||||
<source>Value of srcsvr variable '{0}' contains invalid characters</source>
|
||||
<target state="new">Value of srcsvr variable '{0}' contains invalid characters</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
|
@ -227,6 +227,21 @@
|
|||
<target state="new">Invalid Source Link: {0}</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="InvalidSrcSvrVariableName">
|
||||
<source>Invalid srcsvr variable name: '{0}'</source>
|
||||
<target state="new">Invalid srcsvr variable name: '{0}'</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="ReservedSrcSvrVariableName">
|
||||
<source>Variable '{0}' can't be set explicitly</source>
|
||||
<target state="new">Variable '{0}' can't be set explicitly</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="InvalidSrcSvrVariableValue">
|
||||
<source>Value of srcsvr variable '{0}' contains invalid characters</source>
|
||||
<target state="new">Value of srcsvr variable '{0}' contains invalid characters</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
|
@ -227,6 +227,21 @@
|
|||
<target state="new">Invalid Source Link: {0}</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="InvalidSrcSvrVariableName">
|
||||
<source>Invalid srcsvr variable name: '{0}'</source>
|
||||
<target state="new">Invalid srcsvr variable name: '{0}'</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="ReservedSrcSvrVariableName">
|
||||
<source>Variable '{0}' can't be set explicitly</source>
|
||||
<target state="new">Variable '{0}' can't be set explicitly</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="InvalidSrcSvrVariableValue">
|
||||
<source>Value of srcsvr variable '{0}' contains invalid characters</source>
|
||||
<target state="new">Value of srcsvr variable '{0}' contains invalid characters</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
|
@ -227,6 +227,21 @@
|
|||
<target state="new">Invalid Source Link: {0}</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="InvalidSrcSvrVariableName">
|
||||
<source>Invalid srcsvr variable name: '{0}'</source>
|
||||
<target state="new">Invalid srcsvr variable name: '{0}'</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="ReservedSrcSvrVariableName">
|
||||
<source>Variable '{0}' can't be set explicitly</source>
|
||||
<target state="new">Variable '{0}' can't be set explicitly</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="InvalidSrcSvrVariableValue">
|
||||
<source>Value of srcsvr variable '{0}' contains invalid characters</source>
|
||||
<target state="new">Value of srcsvr variable '{0}' contains invalid characters</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
|
@ -227,6 +227,21 @@
|
|||
<target state="new">Invalid Source Link: {0}</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="InvalidSrcSvrVariableName">
|
||||
<source>Invalid srcsvr variable name: '{0}'</source>
|
||||
<target state="new">Invalid srcsvr variable name: '{0}'</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="ReservedSrcSvrVariableName">
|
||||
<source>Variable '{0}' can't be set explicitly</source>
|
||||
<target state="new">Variable '{0}' can't be set explicitly</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="InvalidSrcSvrVariableValue">
|
||||
<source>Value of srcsvr variable '{0}' contains invalid characters</source>
|
||||
<target state="new">Value of srcsvr variable '{0}' contains invalid characters</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
|
@ -227,6 +227,21 @@
|
|||
<target state="new">Invalid Source Link: {0}</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="InvalidSrcSvrVariableName">
|
||||
<source>Invalid srcsvr variable name: '{0}'</source>
|
||||
<target state="new">Invalid srcsvr variable name: '{0}'</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="ReservedSrcSvrVariableName">
|
||||
<source>Variable '{0}' can't be set explicitly</source>
|
||||
<target state="new">Variable '{0}' can't be set explicitly</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="InvalidSrcSvrVariableValue">
|
||||
<source>Value of srcsvr variable '{0}' contains invalid characters</source>
|
||||
<target state="new">Value of srcsvr variable '{0}' contains invalid characters</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
|
@ -227,6 +227,21 @@
|
|||
<target state="new">Invalid Source Link: {0}</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="InvalidSrcSvrVariableName">
|
||||
<source>Invalid srcsvr variable name: '{0}'</source>
|
||||
<target state="new">Invalid srcsvr variable name: '{0}'</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="ReservedSrcSvrVariableName">
|
||||
<source>Variable '{0}' can't be set explicitly</source>
|
||||
<target state="new">Variable '{0}' can't be set explicitly</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="InvalidSrcSvrVariableValue">
|
||||
<source>Value of srcsvr variable '{0}' contains invalid characters</source>
|
||||
<target state="new">Value of srcsvr variable '{0}' contains invalid characters</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
|
@ -227,6 +227,21 @@
|
|||
<target state="new">Invalid Source Link: {0}</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="InvalidSrcSvrVariableName">
|
||||
<source>Invalid srcsvr variable name: '{0}'</source>
|
||||
<target state="new">Invalid srcsvr variable name: '{0}'</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="ReservedSrcSvrVariableName">
|
||||
<source>Variable '{0}' can't be set explicitly</source>
|
||||
<target state="new">Variable '{0}' can't be set explicitly</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="InvalidSrcSvrVariableValue">
|
||||
<source>Value of srcsvr variable '{0}' contains invalid characters</source>
|
||||
<target state="new">Value of srcsvr variable '{0}' contains invalid characters</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
|
@ -227,6 +227,21 @@
|
|||
<target state="new">Invalid Source Link: {0}</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="InvalidSrcSvrVariableName">
|
||||
<source>Invalid srcsvr variable name: '{0}'</source>
|
||||
<target state="new">Invalid srcsvr variable name: '{0}'</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="ReservedSrcSvrVariableName">
|
||||
<source>Variable '{0}' can't be set explicitly</source>
|
||||
<target state="new">Variable '{0}' can't be set explicitly</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="InvalidSrcSvrVariableValue">
|
||||
<source>Value of srcsvr variable '{0}' contains invalid characters</source>
|
||||
<target state="new">Value of srcsvr variable '{0}' contains invalid characters</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
|
@ -227,6 +227,21 @@
|
|||
<target state="new">Invalid Source Link: {0}</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="InvalidSrcSvrVariableName">
|
||||
<source>Invalid srcsvr variable name: '{0}'</source>
|
||||
<target state="new">Invalid srcsvr variable name: '{0}'</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="ReservedSrcSvrVariableName">
|
||||
<source>Variable '{0}' can't be set explicitly</source>
|
||||
<target state="new">Variable '{0}' can't be set explicitly</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="InvalidSrcSvrVariableValue">
|
||||
<source>Value of srcsvr variable '{0}' contains invalid characters</source>
|
||||
<target state="new">Value of srcsvr variable '{0}' contains invalid characters</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
|
@ -1,6 +1,7 @@
|
|||
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection.Metadata;
|
||||
|
@ -27,6 +28,9 @@ namespace Microsoft.DiaSymReader.Tools.UnitTests
|
|||
Assert.Throws<InvalidDataException>(() => Pdb2Pdb.ParseArgs(new[] { "a.dll", "/extract", "/sourcelink" }));
|
||||
Assert.Throws<InvalidDataException>(() => Pdb2Pdb.ParseArgs(new[] { "a.dll", "/extract", "/pdb", "a.pdb" }));
|
||||
Assert.Throws<InvalidDataException>(() => Pdb2Pdb.ParseArgs(new[] { ">:<.dll" }));
|
||||
Assert.Throws<InvalidDataException>(() => Pdb2Pdb.ParseArgs(new[] { "a.dll", "/sorucelink", "/srcsvrvar", "x=y" }));
|
||||
Assert.Throws<InvalidDataException>(() => Pdb2Pdb.ParseArgs(new[] { "a.dll", "/srcsvrvar" }));
|
||||
Assert.Throws<InvalidDataException>(() => Pdb2Pdb.ParseArgs(new[] { "a.dll", "/srcsvrvar", "0=y" }));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
@ -38,7 +42,8 @@ namespace Microsoft.DiaSymReader.Tools.UnitTests
|
|||
Assert.Equal("a.pdb2", args.OutPdbFilePathOpt);
|
||||
Assert.False(args.Extract);
|
||||
Assert.False(args.Verbose);
|
||||
Assert.Equal(PdbConversionOptions.Default, args.Options);
|
||||
Assert.False(args.Options.SuppressSourceLinkConversion);
|
||||
Assert.Empty(args.Options.SrcSvrVariables);
|
||||
|
||||
args = Pdb2Pdb.ParseArgs(new[] { "a.dll", "/extract" });
|
||||
Assert.Equal("a.dll", args.PEFilePath);
|
||||
|
@ -46,7 +51,8 @@ namespace Microsoft.DiaSymReader.Tools.UnitTests
|
|||
Assert.Null(args.OutPdbFilePathOpt);
|
||||
Assert.True(args.Extract);
|
||||
Assert.False(args.Verbose);
|
||||
Assert.Equal(PdbConversionOptions.Default, args.Options);
|
||||
Assert.False(args.Options.SuppressSourceLinkConversion);
|
||||
Assert.Empty(args.Options.SrcSvrVariables);
|
||||
|
||||
args = Pdb2Pdb.ParseArgs(new[] { "a.dll", "/extract", "/out", "b.pdb" });
|
||||
Assert.Equal("a.dll", args.PEFilePath);
|
||||
|
@ -54,7 +60,8 @@ namespace Microsoft.DiaSymReader.Tools.UnitTests
|
|||
Assert.Equal("b.pdb", args.OutPdbFilePathOpt);
|
||||
Assert.True(args.Extract);
|
||||
Assert.False(args.Verbose);
|
||||
Assert.Equal(PdbConversionOptions.Default, args.Options);
|
||||
Assert.False(args.Options.SuppressSourceLinkConversion);
|
||||
Assert.Empty(args.Options.SrcSvrVariables);
|
||||
|
||||
args = Pdb2Pdb.ParseArgs(new[] { "a.dll", "/sourcelink", "/pdb", "b.pdb", "/out", "c.pdb" });
|
||||
Assert.Equal("a.dll", args.PEFilePath);
|
||||
|
@ -62,7 +69,8 @@ namespace Microsoft.DiaSymReader.Tools.UnitTests
|
|||
Assert.Equal("c.pdb", args.OutPdbFilePathOpt);
|
||||
Assert.False(args.Extract);
|
||||
Assert.False(args.Verbose);
|
||||
Assert.Equal(PdbConversionOptions.SuppressSourceLinkConversion, args.Options);
|
||||
Assert.True(args.Options.SuppressSourceLinkConversion);
|
||||
Assert.Empty(args.Options.SrcSvrVariables);
|
||||
|
||||
args = Pdb2Pdb.ParseArgs(new[] { "a.dll", "/out", "c.pdb", "/verbose" });
|
||||
Assert.Equal("a.dll", args.PEFilePath);
|
||||
|
@ -70,7 +78,17 @@ namespace Microsoft.DiaSymReader.Tools.UnitTests
|
|||
Assert.Equal("c.pdb", args.OutPdbFilePathOpt);
|
||||
Assert.False(args.Extract);
|
||||
Assert.True(args.Verbose);
|
||||
Assert.Equal(PdbConversionOptions.Default, args.Options);
|
||||
Assert.False(args.Options.SuppressSourceLinkConversion);
|
||||
Assert.Empty(args.Options.SrcSvrVariables);
|
||||
|
||||
args = Pdb2Pdb.ParseArgs(new[] { "a.dll", "/out", "c.pdb", "/verbose", "/srcsvrvar", "a=b", "/srcsvrvar", "c=d" });
|
||||
Assert.Equal("a.dll", args.PEFilePath);
|
||||
Assert.Null(args.PdbFilePathOpt);
|
||||
Assert.Equal("c.pdb", args.OutPdbFilePathOpt);
|
||||
Assert.False(args.Extract);
|
||||
Assert.True(args.Verbose);
|
||||
Assert.False(args.Options.SuppressSourceLinkConversion);
|
||||
Assert.Equal(new[] { new KeyValuePair<string, string>("a", "b"), new KeyValuePair<string, string>("c", "d") }, args.Options.SrcSvrVariables);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
@ -85,7 +103,7 @@ namespace Microsoft.DiaSymReader.Tools.UnitTests
|
|||
peFilePath: pe.Path,
|
||||
pdbFilePathOpt: pdb.Path,
|
||||
outPdbFilePathOpt: outPdbPath,
|
||||
options: PdbConversionOptions.Default,
|
||||
options: PortablePdbConversionOptions.Default,
|
||||
extract: false,
|
||||
verbose: false)));
|
||||
|
||||
|
@ -132,7 +150,7 @@ SRCSRV: end ------------------------------------------------", actual);
|
|||
peFilePath: pe.Path,
|
||||
pdbFilePathOpt: null,
|
||||
outPdbFilePathOpt: outPdb.Path,
|
||||
options: PdbConversionOptions.SuppressSourceLinkConversion,
|
||||
options: new PortablePdbConversionOptions(suppressSourceLinkConversion: true),
|
||||
extract: false,
|
||||
verbose: false)));
|
||||
|
||||
|
@ -156,7 +174,7 @@ SRCSRV: end ------------------------------------------------", actual);
|
|||
peFilePath: pe.Path,
|
||||
pdbFilePathOpt: null,
|
||||
outPdbFilePathOpt: outPdb.Path,
|
||||
options: PdbConversionOptions.SuppressSourceLinkConversion,
|
||||
options: new PortablePdbConversionOptions(suppressSourceLinkConversion: true),
|
||||
extract: false,
|
||||
verbose: false)));
|
||||
|
||||
|
@ -180,7 +198,7 @@ SRCSRV: end ------------------------------------------------", actual);
|
|||
peFilePath: pe.Path,
|
||||
pdbFilePathOpt: null,
|
||||
outPdbFilePathOpt: null,
|
||||
options: PdbConversionOptions.Default,
|
||||
options: PortablePdbConversionOptions.Default,
|
||||
extract: true,
|
||||
verbose: false)));
|
||||
|
||||
|
@ -198,7 +216,7 @@ SRCSRV: end ------------------------------------------------", actual);
|
|||
peFilePath: pe.Path,
|
||||
pdbFilePathOpt: null,
|
||||
outPdbFilePathOpt: outPdb.Path,
|
||||
options: PdbConversionOptions.Default,
|
||||
options: PortablePdbConversionOptions.Default,
|
||||
extract: true,
|
||||
verbose: false)));
|
||||
|
||||
|
@ -218,7 +236,7 @@ SRCSRV: end ------------------------------------------------", actual);
|
|||
peFilePath: pe.Path,
|
||||
pdbFilePathOpt: null,
|
||||
outPdbFilePathOpt: outPdb.Path,
|
||||
options: PdbConversionOptions.Default,
|
||||
options: PortablePdbConversionOptions.Default,
|
||||
extract: true,
|
||||
verbose: false)));
|
||||
|
||||
|
@ -237,7 +255,7 @@ SRCSRV: end ------------------------------------------------", actual);
|
|||
peFilePath: pe.Path,
|
||||
pdbFilePathOpt: null,
|
||||
outPdbFilePathOpt: outPdb.Path,
|
||||
options: PdbConversionOptions.Default,
|
||||
options: PortablePdbConversionOptions.Default,
|
||||
extract: false,
|
||||
verbose: false)));
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
|
@ -18,12 +19,14 @@ namespace Microsoft.DiaSymReader.Tools
|
|||
public readonly string PEFilePath;
|
||||
public readonly string PdbFilePathOpt;
|
||||
public readonly string OutPdbFilePathOpt;
|
||||
public readonly PdbConversionOptions Options;
|
||||
public readonly PortablePdbConversionOptions Options;
|
||||
public readonly bool Extract;
|
||||
public readonly bool Verbose;
|
||||
|
||||
public Args(string peFilePath, string pdbFilePathOpt, string outPdbFilePathOpt, PdbConversionOptions options, bool extract, bool verbose)
|
||||
public Args(string peFilePath, string pdbFilePathOpt, string outPdbFilePathOpt, PortablePdbConversionOptions options, bool extract, bool verbose)
|
||||
{
|
||||
Debug.Assert(options != null);
|
||||
|
||||
PEFilePath = peFilePath;
|
||||
PdbFilePathOpt = pdbFilePathOpt;
|
||||
OutPdbFilePathOpt = outPdbFilePathOpt;
|
||||
|
@ -68,6 +71,7 @@ namespace Microsoft.DiaSymReader.Tools
|
|||
bool verbose = false;
|
||||
string inPdb = null;
|
||||
string outPdb = null;
|
||||
var srcSvrVariables = new List<KeyValuePair<string, string>>();
|
||||
|
||||
int i = 0;
|
||||
while (i < args.Length)
|
||||
|
@ -98,6 +102,11 @@ namespace Microsoft.DiaSymReader.Tools
|
|||
outPdb = ReadValue();
|
||||
break;
|
||||
|
||||
case "/srcsvrvar":
|
||||
case "/srcsvrvariable":
|
||||
srcSvrVariables.Add(ParseSrcSvrVariable(ReadValue()));
|
||||
break;
|
||||
|
||||
default:
|
||||
if (peFile == null)
|
||||
{
|
||||
|
@ -140,15 +149,37 @@ namespace Microsoft.DiaSymReader.Tools
|
|||
throw new InvalidDataException(Resources.CantSpecifyBothExtractAndPdbOptions);
|
||||
}
|
||||
|
||||
var options = default(PdbConversionOptions);
|
||||
if (sourceLink)
|
||||
if (sourceLink && srcSvrVariables.Count > 0)
|
||||
{
|
||||
options |= PdbConversionOptions.SuppressSourceLinkConversion;
|
||||
throw new InvalidDataException(Resources.CantSpecifyBothSrcSvrVariableAndSourcelinkOptions);
|
||||
}
|
||||
|
||||
PortablePdbConversionOptions options;
|
||||
try
|
||||
{
|
||||
options = new PortablePdbConversionOptions(
|
||||
suppressSourceLinkConversion: sourceLink,
|
||||
srcSvrVariables: srcSvrVariables);
|
||||
}
|
||||
catch (ArgumentException e)
|
||||
{
|
||||
throw new InvalidDataException(e.Message);
|
||||
}
|
||||
|
||||
return new Args(peFile, inPdb, outPdb, options, extract, verbose);
|
||||
}
|
||||
|
||||
private static KeyValuePair<string, string> ParseSrcSvrVariable(string value)
|
||||
{
|
||||
int eq = value.IndexOf('=');
|
||||
if (eq < 0)
|
||||
{
|
||||
return default;
|
||||
}
|
||||
|
||||
return new KeyValuePair<string, string>(value.Substring(0, eq), value.Substring(eq + 1));
|
||||
}
|
||||
|
||||
// internal for testing
|
||||
internal static bool Convert(Args args)
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0"?>
|
||||
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
|
||||
<metadata>
|
||||
<id>Pdb2Pdb</id>
|
||||
<id>Microsoft.DiaSymReader.Pdb2Pdb</id>
|
||||
<version>$version$</version>
|
||||
<authors>Microsoft</authors>
|
||||
<owners>Microsoft</owners>
|
||||
|
|
|
@ -123,6 +123,9 @@
|
|||
<data name="CantSpecifyBothExtractAndSourcelinkOptions" xml:space="preserve">
|
||||
<value>Can't specify both /extract and /sourcelink options.</value>
|
||||
</data>
|
||||
<data name="CantSpecifyBothSrcSvrVariableAndSourcelinkOptions" xml:space="preserve">
|
||||
<value>Can't specify both /srcsvrvar and /sourcelink options.</value>
|
||||
</data>
|
||||
<data name="FileDoesntContainEmbeddedPdb" xml:space="preserve">
|
||||
<value>File '{0}' doesn't contain an embedded PDB.</value>
|
||||
</data>
|
||||
|
@ -153,11 +156,16 @@
|
|||
<data name="Pdb2PdbUsage" xml:space="preserve">
|
||||
<value><![CDATA[Usage: Pdb2Pdb <dll/exe path> [/pdb <path>] [/out <path>] [/extract]
|
||||
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly, the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly,
|
||||
the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to
|
||||
Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/srcsvrvar <name>=<value> Add specified variable to srcsvr stream. Only applicable
|
||||
when converting to Windows PDB and /sourcelink is not
|
||||
specified.
|
||||
|
||||
/extract and /pdb are mutually exclusive.
|
||||
]]></value>
|
||||
|
|
|
@ -55,21 +55,31 @@
|
|||
<trans-unit id="Pdb2PdbUsage">
|
||||
<source>Usage: Pdb2Pdb <dll/exe path> [/pdb <path>] [/out <path>] [/extract]
|
||||
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly, the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly,
|
||||
the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to
|
||||
Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/srcsvrvar <name>=<value> Add specified variable to srcsvr stream. Only applicable
|
||||
when converting to Windows PDB and /sourcelink is not
|
||||
specified.
|
||||
|
||||
/extract and /pdb are mutually exclusive.
|
||||
</source>
|
||||
<target state="new">Usage: Pdb2Pdb <dll/exe path> [/pdb <path>] [/out <path>] [/extract]
|
||||
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly, the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly,
|
||||
the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to
|
||||
Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/srcsvrvar <name>=<value> Add specified variable to srcsvr stream. Only applicable
|
||||
when converting to Windows PDB and /sourcelink is not
|
||||
specified.
|
||||
|
||||
/extract and /pdb are mutually exclusive.
|
||||
</target>
|
||||
|
@ -80,6 +90,11 @@
|
|||
<target state="new">Invalid PDB path in Debug Directory (file '{0}').</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="CantSpecifyBothSrcSvrVariableAndSourcelinkOptions">
|
||||
<source>Can't specify both /srcsvrvar and /sourcelink options.</source>
|
||||
<target state="new">Can't specify both /srcsvrvar and /sourcelink options.</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
|
@ -55,21 +55,31 @@
|
|||
<trans-unit id="Pdb2PdbUsage">
|
||||
<source>Usage: Pdb2Pdb <dll/exe path> [/pdb <path>] [/out <path>] [/extract]
|
||||
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly, the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly,
|
||||
the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to
|
||||
Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/srcsvrvar <name>=<value> Add specified variable to srcsvr stream. Only applicable
|
||||
when converting to Windows PDB and /sourcelink is not
|
||||
specified.
|
||||
|
||||
/extract and /pdb are mutually exclusive.
|
||||
</source>
|
||||
<target state="new">Usage: Pdb2Pdb <dll/exe path> [/pdb <path>] [/out <path>] [/extract]
|
||||
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly, the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly,
|
||||
the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to
|
||||
Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/srcsvrvar <name>=<value> Add specified variable to srcsvr stream. Only applicable
|
||||
when converting to Windows PDB and /sourcelink is not
|
||||
specified.
|
||||
|
||||
/extract and /pdb are mutually exclusive.
|
||||
</target>
|
||||
|
@ -80,6 +90,11 @@
|
|||
<target state="new">Invalid PDB path in Debug Directory (file '{0}').</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="CantSpecifyBothSrcSvrVariableAndSourcelinkOptions">
|
||||
<source>Can't specify both /srcsvrvar and /sourcelink options.</source>
|
||||
<target state="new">Can't specify both /srcsvrvar and /sourcelink options.</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
|
@ -55,21 +55,31 @@
|
|||
<trans-unit id="Pdb2PdbUsage">
|
||||
<source>Usage: Pdb2Pdb <dll/exe path> [/pdb <path>] [/out <path>] [/extract]
|
||||
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly, the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly,
|
||||
the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to
|
||||
Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/srcsvrvar <name>=<value> Add specified variable to srcsvr stream. Only applicable
|
||||
when converting to Windows PDB and /sourcelink is not
|
||||
specified.
|
||||
|
||||
/extract and /pdb are mutually exclusive.
|
||||
</source>
|
||||
<target state="new">Usage: Pdb2Pdb <dll/exe path> [/pdb <path>] [/out <path>] [/extract]
|
||||
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly, the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly,
|
||||
the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to
|
||||
Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/srcsvrvar <name>=<value> Add specified variable to srcsvr stream. Only applicable
|
||||
when converting to Windows PDB and /sourcelink is not
|
||||
specified.
|
||||
|
||||
/extract and /pdb are mutually exclusive.
|
||||
</target>
|
||||
|
@ -80,6 +90,11 @@
|
|||
<target state="new">Invalid PDB path in Debug Directory (file '{0}').</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="CantSpecifyBothSrcSvrVariableAndSourcelinkOptions">
|
||||
<source>Can't specify both /srcsvrvar and /sourcelink options.</source>
|
||||
<target state="new">Can't specify both /srcsvrvar and /sourcelink options.</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
|
@ -55,21 +55,31 @@
|
|||
<trans-unit id="Pdb2PdbUsage">
|
||||
<source>Usage: Pdb2Pdb <dll/exe path> [/pdb <path>] [/out <path>] [/extract]
|
||||
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly, the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly,
|
||||
the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to
|
||||
Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/srcsvrvar <name>=<value> Add specified variable to srcsvr stream. Only applicable
|
||||
when converting to Windows PDB and /sourcelink is not
|
||||
specified.
|
||||
|
||||
/extract and /pdb are mutually exclusive.
|
||||
</source>
|
||||
<target state="new">Usage: Pdb2Pdb <dll/exe path> [/pdb <path>] [/out <path>] [/extract]
|
||||
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly, the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly,
|
||||
the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to
|
||||
Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/srcsvrvar <name>=<value> Add specified variable to srcsvr stream. Only applicable
|
||||
when converting to Windows PDB and /sourcelink is not
|
||||
specified.
|
||||
|
||||
/extract and /pdb are mutually exclusive.
|
||||
</target>
|
||||
|
@ -80,6 +90,11 @@
|
|||
<target state="new">Invalid PDB path in Debug Directory (file '{0}').</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="CantSpecifyBothSrcSvrVariableAndSourcelinkOptions">
|
||||
<source>Can't specify both /srcsvrvar and /sourcelink options.</source>
|
||||
<target state="new">Can't specify both /srcsvrvar and /sourcelink options.</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
|
@ -55,21 +55,31 @@
|
|||
<trans-unit id="Pdb2PdbUsage">
|
||||
<source>Usage: Pdb2Pdb <dll/exe path> [/pdb <path>] [/out <path>] [/extract]
|
||||
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly, the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly,
|
||||
the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to
|
||||
Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/srcsvrvar <name>=<value> Add specified variable to srcsvr stream. Only applicable
|
||||
when converting to Windows PDB and /sourcelink is not
|
||||
specified.
|
||||
|
||||
/extract and /pdb are mutually exclusive.
|
||||
</source>
|
||||
<target state="new">Usage: Pdb2Pdb <dll/exe path> [/pdb <path>] [/out <path>] [/extract]
|
||||
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly, the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly,
|
||||
the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to
|
||||
Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/srcsvrvar <name>=<value> Add specified variable to srcsvr stream. Only applicable
|
||||
when converting to Windows PDB and /sourcelink is not
|
||||
specified.
|
||||
|
||||
/extract and /pdb are mutually exclusive.
|
||||
</target>
|
||||
|
@ -80,6 +90,11 @@
|
|||
<target state="new">Invalid PDB path in Debug Directory (file '{0}').</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="CantSpecifyBothSrcSvrVariableAndSourcelinkOptions">
|
||||
<source>Can't specify both /srcsvrvar and /sourcelink options.</source>
|
||||
<target state="new">Can't specify both /srcsvrvar and /sourcelink options.</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
|
@ -55,21 +55,31 @@
|
|||
<trans-unit id="Pdb2PdbUsage">
|
||||
<source>Usage: Pdb2Pdb <dll/exe path> [/pdb <path>] [/out <path>] [/extract]
|
||||
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly, the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly,
|
||||
the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to
|
||||
Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/srcsvrvar <name>=<value> Add specified variable to srcsvr stream. Only applicable
|
||||
when converting to Windows PDB and /sourcelink is not
|
||||
specified.
|
||||
|
||||
/extract and /pdb are mutually exclusive.
|
||||
</source>
|
||||
<target state="new">Usage: Pdb2Pdb <dll/exe path> [/pdb <path>] [/out <path>] [/extract]
|
||||
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly, the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly,
|
||||
the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to
|
||||
Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/srcsvrvar <name>=<value> Add specified variable to srcsvr stream. Only applicable
|
||||
when converting to Windows PDB and /sourcelink is not
|
||||
specified.
|
||||
|
||||
/extract and /pdb are mutually exclusive.
|
||||
</target>
|
||||
|
@ -80,6 +90,11 @@
|
|||
<target state="new">Invalid PDB path in Debug Directory (file '{0}').</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="CantSpecifyBothSrcSvrVariableAndSourcelinkOptions">
|
||||
<source>Can't specify both /srcsvrvar and /sourcelink options.</source>
|
||||
<target state="new">Can't specify both /srcsvrvar and /sourcelink options.</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
|
@ -55,21 +55,31 @@
|
|||
<trans-unit id="Pdb2PdbUsage">
|
||||
<source>Usage: Pdb2Pdb <dll/exe path> [/pdb <path>] [/out <path>] [/extract]
|
||||
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly, the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly,
|
||||
the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to
|
||||
Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/srcsvrvar <name>=<value> Add specified variable to srcsvr stream. Only applicable
|
||||
when converting to Windows PDB and /sourcelink is not
|
||||
specified.
|
||||
|
||||
/extract and /pdb are mutually exclusive.
|
||||
</source>
|
||||
<target state="new">Usage: Pdb2Pdb <dll/exe path> [/pdb <path>] [/out <path>] [/extract]
|
||||
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly, the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly,
|
||||
the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to
|
||||
Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/srcsvrvar <name>=<value> Add specified variable to srcsvr stream. Only applicable
|
||||
when converting to Windows PDB and /sourcelink is not
|
||||
specified.
|
||||
|
||||
/extract and /pdb are mutually exclusive.
|
||||
</target>
|
||||
|
@ -80,6 +90,11 @@
|
|||
<target state="new">Invalid PDB path in Debug Directory (file '{0}').</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="CantSpecifyBothSrcSvrVariableAndSourcelinkOptions">
|
||||
<source>Can't specify both /srcsvrvar and /sourcelink options.</source>
|
||||
<target state="new">Can't specify both /srcsvrvar and /sourcelink options.</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
|
@ -55,21 +55,31 @@
|
|||
<trans-unit id="Pdb2PdbUsage">
|
||||
<source>Usage: Pdb2Pdb <dll/exe path> [/pdb <path>] [/out <path>] [/extract]
|
||||
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly, the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly,
|
||||
the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to
|
||||
Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/srcsvrvar <name>=<value> Add specified variable to srcsvr stream. Only applicable
|
||||
when converting to Windows PDB and /sourcelink is not
|
||||
specified.
|
||||
|
||||
/extract and /pdb are mutually exclusive.
|
||||
</source>
|
||||
<target state="new">Usage: Pdb2Pdb <dll/exe path> [/pdb <path>] [/out <path>] [/extract]
|
||||
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly, the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly,
|
||||
the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to
|
||||
Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/srcsvrvar <name>=<value> Add specified variable to srcsvr stream. Only applicable
|
||||
when converting to Windows PDB and /sourcelink is not
|
||||
specified.
|
||||
|
||||
/extract and /pdb are mutually exclusive.
|
||||
</target>
|
||||
|
@ -80,6 +90,11 @@
|
|||
<target state="new">Invalid PDB path in Debug Directory (file '{0}').</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="CantSpecifyBothSrcSvrVariableAndSourcelinkOptions">
|
||||
<source>Can't specify both /srcsvrvar and /sourcelink options.</source>
|
||||
<target state="new">Can't specify both /srcsvrvar and /sourcelink options.</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
|
@ -55,21 +55,31 @@
|
|||
<trans-unit id="Pdb2PdbUsage">
|
||||
<source>Usage: Pdb2Pdb <dll/exe path> [/pdb <path>] [/out <path>] [/extract]
|
||||
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly, the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly,
|
||||
the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to
|
||||
Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/srcsvrvar <name>=<value> Add specified variable to srcsvr stream. Only applicable
|
||||
when converting to Windows PDB and /sourcelink is not
|
||||
specified.
|
||||
|
||||
/extract and /pdb are mutually exclusive.
|
||||
</source>
|
||||
<target state="new">Usage: Pdb2Pdb <dll/exe path> [/pdb <path>] [/out <path>] [/extract]
|
||||
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly, the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly,
|
||||
the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to
|
||||
Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/srcsvrvar <name>=<value> Add specified variable to srcsvr stream. Only applicable
|
||||
when converting to Windows PDB and /sourcelink is not
|
||||
specified.
|
||||
|
||||
/extract and /pdb are mutually exclusive.
|
||||
</target>
|
||||
|
@ -80,6 +90,11 @@
|
|||
<target state="new">Invalid PDB path in Debug Directory (file '{0}').</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="CantSpecifyBothSrcSvrVariableAndSourcelinkOptions">
|
||||
<source>Can't specify both /srcsvrvar and /sourcelink options.</source>
|
||||
<target state="new">Can't specify both /srcsvrvar and /sourcelink options.</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
|
@ -55,21 +55,31 @@
|
|||
<trans-unit id="Pdb2PdbUsage">
|
||||
<source>Usage: Pdb2Pdb <dll/exe path> [/pdb <path>] [/out <path>] [/extract]
|
||||
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly, the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly,
|
||||
the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to
|
||||
Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/srcsvrvar <name>=<value> Add specified variable to srcsvr stream. Only applicable
|
||||
when converting to Windows PDB and /sourcelink is not
|
||||
specified.
|
||||
|
||||
/extract and /pdb are mutually exclusive.
|
||||
</source>
|
||||
<target state="new">Usage: Pdb2Pdb <dll/exe path> [/pdb <path>] [/out <path>] [/extract]
|
||||
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly, the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly,
|
||||
the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to
|
||||
Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/srcsvrvar <name>=<value> Add specified variable to srcsvr stream. Only applicable
|
||||
when converting to Windows PDB and /sourcelink is not
|
||||
specified.
|
||||
|
||||
/extract and /pdb are mutually exclusive.
|
||||
</target>
|
||||
|
@ -80,6 +90,11 @@
|
|||
<target state="new">Invalid PDB path in Debug Directory (file '{0}').</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="CantSpecifyBothSrcSvrVariableAndSourcelinkOptions">
|
||||
<source>Can't specify both /srcsvrvar and /sourcelink options.</source>
|
||||
<target state="new">Can't specify both /srcsvrvar and /sourcelink options.</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
|
@ -55,21 +55,31 @@
|
|||
<trans-unit id="Pdb2PdbUsage">
|
||||
<source>Usage: Pdb2Pdb <dll/exe path> [/pdb <path>] [/out <path>] [/extract]
|
||||
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly, the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly,
|
||||
the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to
|
||||
Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/srcsvrvar <name>=<value> Add specified variable to srcsvr stream. Only applicable
|
||||
when converting to Windows PDB and /sourcelink is not
|
||||
specified.
|
||||
|
||||
/extract and /pdb are mutually exclusive.
|
||||
</source>
|
||||
<target state="new">Usage: Pdb2Pdb <dll/exe path> [/pdb <path>] [/out <path>] [/extract]
|
||||
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly, the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly,
|
||||
the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to
|
||||
Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/srcsvrvar <name>=<value> Add specified variable to srcsvr stream. Only applicable
|
||||
when converting to Windows PDB and /sourcelink is not
|
||||
specified.
|
||||
|
||||
/extract and /pdb are mutually exclusive.
|
||||
</target>
|
||||
|
@ -80,6 +90,11 @@
|
|||
<target state="new">Invalid PDB path in Debug Directory (file '{0}').</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="CantSpecifyBothSrcSvrVariableAndSourcelinkOptions">
|
||||
<source>Can't specify both /srcsvrvar and /sourcelink options.</source>
|
||||
<target state="new">Can't specify both /srcsvrvar and /sourcelink options.</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
|
@ -55,21 +55,31 @@
|
|||
<trans-unit id="Pdb2PdbUsage">
|
||||
<source>Usage: Pdb2Pdb <dll/exe path> [/pdb <path>] [/out <path>] [/extract]
|
||||
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly, the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly,
|
||||
the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to
|
||||
Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/srcsvrvar <name>=<value> Add specified variable to srcsvr stream. Only applicable
|
||||
when converting to Windows PDB and /sourcelink is not
|
||||
specified.
|
||||
|
||||
/extract and /pdb are mutually exclusive.
|
||||
</source>
|
||||
<target state="new">Usage: Pdb2Pdb <dll/exe path> [/pdb <path>] [/out <path>] [/extract]
|
||||
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly, the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly,
|
||||
the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to
|
||||
Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/srcsvrvar <name>=<value> Add specified variable to srcsvr stream. Only applicable
|
||||
when converting to Windows PDB and /sourcelink is not
|
||||
specified.
|
||||
|
||||
/extract and /pdb are mutually exclusive.
|
||||
</target>
|
||||
|
@ -80,6 +90,11 @@
|
|||
<target state="new">Invalid PDB path in Debug Directory (file '{0}').</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="CantSpecifyBothSrcSvrVariableAndSourcelinkOptions">
|
||||
<source>Can't specify both /srcsvrvar and /sourcelink options.</source>
|
||||
<target state="new">Can't specify both /srcsvrvar and /sourcelink options.</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
|
@ -55,21 +55,31 @@
|
|||
<trans-unit id="Pdb2PdbUsage">
|
||||
<source>Usage: Pdb2Pdb <dll/exe path> [/pdb <path>] [/out <path>] [/extract]
|
||||
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly, the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly,
|
||||
the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to
|
||||
Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/srcsvrvar <name>=<value> Add specified variable to srcsvr stream. Only applicable
|
||||
when converting to Windows PDB and /sourcelink is not
|
||||
specified.
|
||||
|
||||
/extract and /pdb are mutually exclusive.
|
||||
</source>
|
||||
<target state="new">Usage: Pdb2Pdb <dll/exe path> [/pdb <path>] [/out <path>] [/extract]
|
||||
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly, the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/pdb <path> Path to the PDB to convert. If not specified explicitly,
|
||||
the PDB referenced by or embedded in the DLL/EXE is used.
|
||||
/out <path> Output PDB path.
|
||||
/extract Extract PDB embedded in the DLL/EXE.
|
||||
/sourcelink Preserve Source Link when converting from Portable PDB to
|
||||
Windows PDB, instead of converting to srcsrv format.
|
||||
/verbose Print detailed diagnostics.
|
||||
/srcsvrvar <name>=<value> Add specified variable to srcsvr stream. Only applicable
|
||||
when converting to Windows PDB and /sourcelink is not
|
||||
specified.
|
||||
|
||||
/extract and /pdb are mutually exclusive.
|
||||
</target>
|
||||
|
@ -80,6 +90,11 @@
|
|||
<target state="new">Invalid PDB path in Debug Directory (file '{0}').</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
<trans-unit id="CantSpecifyBothSrcSvrVariableAndSourcelinkOptions">
|
||||
<source>Can't specify both /srcsvrvar and /sourcelink options.</source>
|
||||
<target state="new">Can't specify both /srcsvrvar and /sourcelink options.</target>
|
||||
<note />
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
Загрузка…
Ссылка в новой задаче