提交 ecf8f5dc 编写于 作者: T Tomáš Matoušek 提交者: GitHub

Merge pull request #12367 from tmat/PPDB

Move Microsoft.DiaSymReader.PortablePdb out of Roslyn repo

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.25123.0
VisualStudioVersion = 14.0.25420.1
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeAnalysisTest", "src\Compilers\Core\CodeAnalysisTest\CodeAnalysisTest.csproj", "{A4C99B85-765C-4C65-9C2A-BB609AAB09E6}"
EndProject
......@@ -75,12 +75,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpWinRTTest", "src\Comp
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "vbc", "src\Compilers\VisualBasic\vbc\vbc.csproj", "{E58EE9D7-1239-4961-A0C1-F9EC3952C4C1}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debugging", "Debugging", "{07ED9FF4-8027-42B7-A178-0114F26437C2}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.DiaSymReader.PortablePdb", "src\Debugging\Microsoft.DiaSymReader.PortablePdb\Microsoft.DiaSymReader.PortablePdb.csproj", "{F83343BA-B4EA-451C-B6DB-5D645E6171BC}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.DiaSymReader.PortablePdb.UnitTests", "src\Debugging\Microsoft.DiaSymReader.PortablePdb.Tests\Microsoft.DiaSymReader.PortablePdb.UnitTests.csproj", "{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CscCore", "src\Compilers\CSharp\CscCore\CscCore.csproj", "{E3CD2895-76A8-4D11-A316-EA67CB5EA42C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VbcCore", "src\Compilers\VisualBasic\VbcCore\VbcCore.csproj", "{8CE3A581-2969-4864-A803-013E9D977C3A}"
......@@ -133,31 +127,31 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "xUnit.net", "src\Dependenci
EndProject
Global
GlobalSection(SharedMSBuildProjectFiles) = preSolution
src\Test\Utilities\Shared\TestUtilities.projitems*{76c6f005-c89d-4348-bb4a-391898dbeb52}*SharedItemsImports = 4
src\Compilers\Server\ServerShared\ServerShared.projitems*{32691768-af9c-4cae-9d0f-10721091b9aa}*SharedItemsImports = 13
src\Compilers\Core\MSBuildTask\Shared\MSBuildTask.Shared.projitems*{d87f0e46-dd1b-46ea-8425-9e185d9b602e}*SharedItemsImports = 13
src\Test\Utilities\Shared\TestUtilities.projitems*{ccbd3438-3e84-40a9-83ad-533f23bcfca5}*SharedItemsImports = 4
src\Compilers\Core\CommandLine\CommandLine.projitems*{8ce3a581-2969-4864-a803-013e9d977c3a}*SharedItemsImports = 4
src\Test\Utilities\Shared\TestUtilities.projitems*{6ff42825-5464-4151-ac55-ed828168c192}*SharedItemsImports = 13
src\Compilers\Core\CommandLine\CommandLine.projitems*{ad6f474e-e6d4-4217-91f3-b7af1be31ccc}*SharedItemsImports = 13
src\Compilers\Core\AnalyzerDriver\AnalyzerDriver.projitems*{d0bc9be7-24f6-40ca-8dc6-fcb93bd44b34}*SharedItemsImports = 13
src\Compilers\Server\ServerShared\ServerShared.projitems*{06b26dcb-7a12-48ef-ae50-708593abd05f}*SharedItemsImports = 4
src\Compilers\Core\CommandLine\CommandLine.projitems*{06b26dcb-7a12-48ef-ae50-708593abd05f}*SharedItemsImports = 4
src\Compilers\Core\CommandLine\CommandLine.projitems*{e58ee9d7-1239-4961-a0c1-f9ec3952c4c1}*SharedItemsImports = 4
src\Compilers\Server\ServerShared\ServerShared.projitems*{9508f118-f62e-4c16-a6f4-7c3b56e166ad}*SharedItemsImports = 4
src\Compilers\Core\CommandLine\CommandLine.projitems*{9508f118-f62e-4c16-a6f4-7c3b56e166ad}*SharedItemsImports = 4
src\Compilers\Core\SharedCollections\SharedCollections.projitems*{afde6bea-5038-4a4a-a88e-dbd2e4088eed}*SharedItemsImports = 4
src\Compilers\Server\ServerShared\ServerShared.projitems*{06b26dcb-7a12-48ef-ae50-708593abd05f}*SharedItemsImports = 4
src\Compilers\Core\AnalyzerDriver\AnalyzerDriver.projitems*{1ee8cad3-55f9-4d91-96b2-084641da9a6c}*SharedItemsImports = 4
src\Compilers\Core\SharedCollections\SharedCollections.projitems*{1ee8cad3-55f9-4d91-96b2-084641da9a6c}*SharedItemsImports = 4
src\Compilers\VisualBasic\BasicAnalyzerDriver\BasicAnalyzerDriver.projitems*{2523d0e6-df32-4a3e-8ae0-a19bffae2ef6}*SharedItemsImports = 4
src\Compilers\Server\ServerShared\ServerShared.projitems*{32691768-af9c-4cae-9d0f-10721091b9aa}*SharedItemsImports = 13
src\Compilers\Core\CommandLine\CommandLine.projitems*{4b45ca0c-03a0-400f-b454-3d4bcb16af38}*SharedItemsImports = 4
src\Test\Utilities\Shared\TestUtilities.projitems*{6ff42825-5464-4151-ac55-ed828168c192}*SharedItemsImports = 13
src\Test\Utilities\Shared\TestUtilities.projitems*{76c6f005-c89d-4348-bb4a-391898dbeb52}*SharedItemsImports = 4
src\Compilers\Core\CommandLine\CommandLine.projitems*{7ad4fe65-9a30-41a6-8004-aa8f89bcb7f3}*SharedItemsImports = 4
src\Compilers\Core\MSBuildTask\Shared\MSBuildTask.Shared.projitems*{7ad4fe65-9a30-41a6-8004-aa8f89bcb7f3}*SharedItemsImports = 4
src\Compilers\Core\CommandLine\CommandLine.projitems*{8ce3a581-2969-4864-a803-013e9d977c3a}*SharedItemsImports = 4
src\Compilers\Core\CommandLine\CommandLine.projitems*{9508f118-f62e-4c16-a6f4-7c3b56e166ad}*SharedItemsImports = 4
src\Compilers\Server\ServerShared\ServerShared.projitems*{9508f118-f62e-4c16-a6f4-7c3b56e166ad}*SharedItemsImports = 4
src\Compilers\Core\CommandLine\CommandLine.projitems*{ad6f474e-e6d4-4217-91f3-b7af1be31ccc}*SharedItemsImports = 13
src\Compilers\Core\SharedCollections\SharedCollections.projitems*{afde6bea-5038-4a4a-a88e-dbd2e4088eed}*SharedItemsImports = 4
src\Compilers\CSharp\CSharpAnalyzerDriver\CSharpAnalyzerDriver.projitems*{b501a547-c911-4a05-ac6e-274a50dff30e}*SharedItemsImports = 4
src\Compilers\VisualBasic\BasicAnalyzerDriver\BasicAnalyzerDriver.projitems*{2523d0e6-df32-4a3e-8ae0-a19bffae2ef6}*SharedItemsImports = 4
src\Compilers\Core\CommandLine\CommandLine.projitems*{4b45ca0c-03a0-400f-b454-3d4bcb16af38}*SharedItemsImports = 4
src\Compilers\Core\SharedCollections\SharedCollections.projitems*{c1930979-c824-496b-a630-70f5369a636f}*SharedItemsImports = 13
src\Test\Utilities\Shared\TestUtilities.projitems*{ccbd3438-3e84-40a9-83ad-533f23bcfca5}*SharedItemsImports = 4
src\Compilers\Core\AnalyzerDriver\AnalyzerDriver.projitems*{d0bc9be7-24f6-40ca-8dc6-fcb93bd44b34}*SharedItemsImports = 13
src\Compilers\Core\CommandLine\CommandLine.projitems*{d874349c-8bb3-4bdc-8535-2d52ccca1198}*SharedItemsImports = 4
src\Compilers\Core\MSBuildTask\Shared\MSBuildTask.Shared.projitems*{d874349c-8bb3-4bdc-8535-2d52ccca1198}*SharedItemsImports = 4
src\Compilers\Core\MSBuildTask\Shared\MSBuildTask.Shared.projitems*{d87f0e46-dd1b-46ea-8425-9e185d9b602e}*SharedItemsImports = 13
src\Compilers\Core\CommandLine\CommandLine.projitems*{e3cd2895-76a8-4d11-a316-ea67cb5ea42c}*SharedItemsImports = 4
src\Compilers\Core\CommandLine\CommandLine.projitems*{e58ee9d7-1239-4961-a0c1-f9ec3952c4c1}*SharedItemsImports = 4
EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
......@@ -768,45 +762,6 @@ Global
{E58EE9D7-1239-4961-A0C1-F9EC3952C4C1}.Release|x64.Build.0 = Release|Any CPU
{E58EE9D7-1239-4961-A0C1-F9EC3952C4C1}.Release|x86.ActiveCfg = Release|Any CPU
{E58EE9D7-1239-4961-A0C1-F9EC3952C4C1}.Release|x86.Build.0 = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|ARM.ActiveCfg = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|ARM.Build.0 = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|x64.ActiveCfg = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|x64.Build.0 = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|x86.ActiveCfg = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|x86.Build.0 = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|Any CPU.Build.0 = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|ARM.ActiveCfg = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|ARM.Build.0 = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|x64.ActiveCfg = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|x64.Build.0 = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|x86.ActiveCfg = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|x86.Build.0 = Release|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Debug|ARM.ActiveCfg = Debug|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Debug|ARM.Build.0 = Debug|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Debug|x64.ActiveCfg = Debug|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Debug|x64.Build.0 = Debug|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Debug|x86.ActiveCfg = Debug|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Release|Any CPU.Build.0 = Release|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Release|ARM.ActiveCfg = Release|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Release|ARM.Build.0 = Release|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Release|x64.ActiveCfg = Release|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Release|x64.Build.0 = Release|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Release|x86.ActiveCfg = Release|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Release|x86.Build.0 = Release|Any CPU
{E3CD2895-76A8-4D11-A316-EA67CB5EA42C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E3CD2895-76A8-4D11-A316-EA67CB5EA42C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E3CD2895-76A8-4D11-A316-EA67CB5EA42C}.Debug|ARM.ActiveCfg = Debug|Any CPU
......@@ -1180,8 +1135,6 @@ Global
{C1930979-C824-496B-A630-70F5369A636F} = {A41D1B99-F489-4C43-BBDF-96D61B19A6B9}
{FCFA8808-A1B6-48CC-A1EA-0B8CA8AEDA8E} = {32A48625-F0AD-419D-828B-A50BDABA38EA}
{E58EE9D7-1239-4961-A0C1-F9EC3952C4C1} = {C65C6143-BED3-46E6-869E-9F0BE6E84C37}
{F83343BA-B4EA-451C-B6DB-5D645E6171BC} = {07ED9FF4-8027-42B7-A178-0114F26437C2}
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0} = {07ED9FF4-8027-42B7-A178-0114F26437C2}
{E3CD2895-76A8-4D11-A316-EA67CB5EA42C} = {32A48625-F0AD-419D-828B-A50BDABA38EA}
{8CE3A581-2969-4864-A803-013E9D977C3A} = {C65C6143-BED3-46E6-869E-9F0BE6E84C37}
{6FF42825-5464-4151-AC55-ED828168C192} = {6F016299-BA96-45BA-9BFF-6C0793979177}
......

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.25123.0
VisualStudioVersion = 14.0.25420.1
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeAnalysis", "src\Compilers\Core\Portable\CodeAnalysis.csproj", "{1EE8CAD3-55F9-4D91-96B2-084641DA9A6C}"
EndProject
......@@ -49,10 +49,6 @@ Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "AnalyzerDriver", "src\Compi
EndProject
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "SharedCollections", "src\Compilers\Core\SharedCollections\SharedCollections.shproj", "{C1930979-C824-496B-A630-70F5369A636F}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debugging", "Debugging", "{5EFE4D73-9608-4E19-83A5-963B02413164}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.DiaSymReader.PortablePdb", "src\Debugging\Microsoft.DiaSymReader.PortablePdb\Microsoft.DiaSymReader.PortablePdb.csproj", "{F83343BA-B4EA-451C-B6DB-5D645E6171BC}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CscCore", "src\Compilers\CSharp\CscCore\CscCore.csproj", "{E3CD2895-76A8-4D11-A316-EA67CB5EA42C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VbcCore", "src\Compilers\VisualBasic\VbcCore\VbcCore.csproj", "{8CE3A581-2969-4864-A803-013E9D977C3A}"
......@@ -97,22 +93,22 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Metadata", "src\Dependencie
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiaSymReader", "src\Dependencies\DiaSymReader\DiaSymReader.csproj", "{D2B8B03E-A85D-48A2-818F-9177D89586A9}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Composition", "src\Dependencies\Composition\Composition.csproj", "{02ABB346-3CC8-4CC2-B6E4-72A60A3E1491}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Composition", "src\Dependencies\Composition\Composition.csproj", "{A57DDFE5-AB0E-4371-98E5-11B9218DF11C}"
EndProject
Global
GlobalSection(SharedMSBuildProjectFiles) = preSolution
src\Test\Utilities\Shared\TestUtilities.projitems*{ccbd3438-3e84-40a9-83ad-533f23bcfca5}*SharedItemsImports = 4
src\Compilers\Core\CommandLine\CommandLine.projitems*{8ce3a581-2969-4864-a803-013e9d977c3a}*SharedItemsImports = 4
src\Test\Utilities\Shared\TestUtilities.projitems*{6ff42825-5464-4151-ac55-ed828168c192}*SharedItemsImports = 13
src\Compilers\Core\AnalyzerDriver\AnalyzerDriver.projitems*{1ee8cad3-55f9-4d91-96b2-084641da9a6c}*SharedItemsImports = 4
src\Compilers\Core\SharedCollections\SharedCollections.projitems*{1ee8cad3-55f9-4d91-96b2-084641da9a6c}*SharedItemsImports = 4
src\Compilers\VisualBasic\BasicAnalyzerDriver\BasicAnalyzerDriver.projitems*{2523d0e6-df32-4a3e-8ae0-a19bffae2ef6}*SharedItemsImports = 4
src\Compilers\Core\SharedCollections\SharedCollections.projitems*{5f8d2414-064a-4b3a-9b42-8e2a04246be5}*SharedItemsImports = 4
src\Test\Utilities\Shared\TestUtilities.projitems*{6ff42825-5464-4151-ac55-ed828168c192}*SharedItemsImports = 13
src\Compilers\Core\CommandLine\CommandLine.projitems*{8ce3a581-2969-4864-a803-013e9d977c3a}*SharedItemsImports = 4
src\Compilers\Core\CommandLine\CommandLine.projitems*{ad6f474e-e6d4-4217-91f3-b7af1be31ccc}*SharedItemsImports = 13
src\Compilers\Core\AnalyzerDriver\AnalyzerDriver.projitems*{d0bc9be7-24f6-40ca-8dc6-fcb93bd44b34}*SharedItemsImports = 13
src\Compilers\Core\SharedCollections\SharedCollections.projitems*{afde6bea-5038-4a4a-a88e-dbd2e4088eed}*SharedItemsImports = 4
src\Compilers\Core\SharedCollections\SharedCollections.projitems*{1ee8cad3-55f9-4d91-96b2-084641da9a6c}*SharedItemsImports = 4
src\Compilers\Core\AnalyzerDriver\AnalyzerDriver.projitems*{1ee8cad3-55f9-4d91-96b2-084641da9a6c}*SharedItemsImports = 4
src\Compilers\CSharp\CSharpAnalyzerDriver\CSharpAnalyzerDriver.projitems*{b501a547-c911-4a05-ac6e-274a50dff30e}*SharedItemsImports = 4
src\Compilers\VisualBasic\BasicAnalyzerDriver\BasicAnalyzerDriver.projitems*{2523d0e6-df32-4a3e-8ae0-a19bffae2ef6}*SharedItemsImports = 4
src\Compilers\Core\SharedCollections\SharedCollections.projitems*{c1930979-c824-496b-a630-70f5369a636f}*SharedItemsImports = 13
src\Test\Utilities\Shared\TestUtilities.projitems*{ccbd3438-3e84-40a9-83ad-533f23bcfca5}*SharedItemsImports = 4
src\Compilers\Core\AnalyzerDriver\AnalyzerDriver.projitems*{d0bc9be7-24f6-40ca-8dc6-fcb93bd44b34}*SharedItemsImports = 13
src\Compilers\Core\CommandLine\CommandLine.projitems*{e3cd2895-76a8-4d11-a316-ea67cb5ea42c}*SharedItemsImports = 4
EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
......@@ -428,26 +424,6 @@ Global
{57CA988D-F010-4BF2-9A2E-07D6DCD2FF2C}.Release|x64.Build.0 = Release|Any CPU
{57CA988D-F010-4BF2-9A2E-07D6DCD2FF2C}.Release|x86.ActiveCfg = Release|Any CPU
{57CA988D-F010-4BF2-9A2E-07D6DCD2FF2C}.Release|x86.Build.0 = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|ARM.ActiveCfg = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|ARM.Build.0 = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|x64.ActiveCfg = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|x64.Build.0 = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|x86.ActiveCfg = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|x86.Build.0 = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|Any CPU.Build.0 = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|ARM.ActiveCfg = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|ARM.Build.0 = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|x64.ActiveCfg = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|x64.Build.0 = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|x86.ActiveCfg = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|x86.Build.0 = Release|Any CPU
{E3CD2895-76A8-4D11-A316-EA67CB5EA42C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E3CD2895-76A8-4D11-A316-EA67CB5EA42C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E3CD2895-76A8-4D11-A316-EA67CB5EA42C}.Debug|ARM.ActiveCfg = Debug|Any CPU
......@@ -770,26 +746,26 @@ Global
{D2B8B03E-A85D-48A2-818F-9177D89586A9}.Release|x64.Build.0 = Debug|Any CPU
{D2B8B03E-A85D-48A2-818F-9177D89586A9}.Release|x86.ActiveCfg = Debug|Any CPU
{D2B8B03E-A85D-48A2-818F-9177D89586A9}.Release|x86.Build.0 = Debug|Any CPU
{02ABB346-3CC8-4CC2-B6E4-72A60A3E1491}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{02ABB346-3CC8-4CC2-B6E4-72A60A3E1491}.Debug|Any CPU.Build.0 = Debug|Any CPU
{02ABB346-3CC8-4CC2-B6E4-72A60A3E1491}.Debug|ARM.ActiveCfg = Debug|Any CPU
{02ABB346-3CC8-4CC2-B6E4-72A60A3E1491}.Debug|ARM.Build.0 = Debug|Any CPU
{02ABB346-3CC8-4CC2-B6E4-72A60A3E1491}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{02ABB346-3CC8-4CC2-B6E4-72A60A3E1491}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{02ABB346-3CC8-4CC2-B6E4-72A60A3E1491}.Debug|x64.ActiveCfg = Debug|Any CPU
{02ABB346-3CC8-4CC2-B6E4-72A60A3E1491}.Debug|x64.Build.0 = Debug|Any CPU
{02ABB346-3CC8-4CC2-B6E4-72A60A3E1491}.Debug|x86.ActiveCfg = Debug|Any CPU
{02ABB346-3CC8-4CC2-B6E4-72A60A3E1491}.Debug|x86.Build.0 = Debug|Any CPU
{02ABB346-3CC8-4CC2-B6E4-72A60A3E1491}.Release|Any CPU.ActiveCfg = Debug|Any CPU
{02ABB346-3CC8-4CC2-B6E4-72A60A3E1491}.Release|Any CPU.Build.0 = Debug|Any CPU
{02ABB346-3CC8-4CC2-B6E4-72A60A3E1491}.Release|ARM.ActiveCfg = Debug|Any CPU
{02ABB346-3CC8-4CC2-B6E4-72A60A3E1491}.Release|ARM.Build.0 = Debug|Any CPU
{02ABB346-3CC8-4CC2-B6E4-72A60A3E1491}.Release|Mixed Platforms.ActiveCfg = Debug|Any CPU
{02ABB346-3CC8-4CC2-B6E4-72A60A3E1491}.Release|Mixed Platforms.Build.0 = Debug|Any CPU
{02ABB346-3CC8-4CC2-B6E4-72A60A3E1491}.Release|x64.ActiveCfg = Debug|Any CPU
{02ABB346-3CC8-4CC2-B6E4-72A60A3E1491}.Release|x64.Build.0 = Debug|Any CPU
{02ABB346-3CC8-4CC2-B6E4-72A60A3E1491}.Release|x86.ActiveCfg = Debug|Any CPU
{02ABB346-3CC8-4CC2-B6E4-72A60A3E1491}.Release|x86.Build.0 = Debug|Any CPU
{A57DDFE5-AB0E-4371-98E5-11B9218DF11C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A57DDFE5-AB0E-4371-98E5-11B9218DF11C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A57DDFE5-AB0E-4371-98E5-11B9218DF11C}.Debug|ARM.ActiveCfg = Debug|Any CPU
{A57DDFE5-AB0E-4371-98E5-11B9218DF11C}.Debug|ARM.Build.0 = Debug|Any CPU
{A57DDFE5-AB0E-4371-98E5-11B9218DF11C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{A57DDFE5-AB0E-4371-98E5-11B9218DF11C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{A57DDFE5-AB0E-4371-98E5-11B9218DF11C}.Debug|x64.ActiveCfg = Debug|Any CPU
{A57DDFE5-AB0E-4371-98E5-11B9218DF11C}.Debug|x64.Build.0 = Debug|Any CPU
{A57DDFE5-AB0E-4371-98E5-11B9218DF11C}.Debug|x86.ActiveCfg = Debug|Any CPU
{A57DDFE5-AB0E-4371-98E5-11B9218DF11C}.Debug|x86.Build.0 = Debug|Any CPU
{A57DDFE5-AB0E-4371-98E5-11B9218DF11C}.Release|Any CPU.ActiveCfg = Debug|Any CPU
{A57DDFE5-AB0E-4371-98E5-11B9218DF11C}.Release|Any CPU.Build.0 = Debug|Any CPU
{A57DDFE5-AB0E-4371-98E5-11B9218DF11C}.Release|ARM.ActiveCfg = Debug|Any CPU
{A57DDFE5-AB0E-4371-98E5-11B9218DF11C}.Release|ARM.Build.0 = Debug|Any CPU
{A57DDFE5-AB0E-4371-98E5-11B9218DF11C}.Release|Mixed Platforms.ActiveCfg = Debug|Any CPU
{A57DDFE5-AB0E-4371-98E5-11B9218DF11C}.Release|Mixed Platforms.Build.0 = Debug|Any CPU
{A57DDFE5-AB0E-4371-98E5-11B9218DF11C}.Release|x64.ActiveCfg = Debug|Any CPU
{A57DDFE5-AB0E-4371-98E5-11B9218DF11C}.Release|x64.Build.0 = Debug|Any CPU
{A57DDFE5-AB0E-4371-98E5-11B9218DF11C}.Release|x86.ActiveCfg = Debug|Any CPU
{A57DDFE5-AB0E-4371-98E5-11B9218DF11C}.Release|x86.Build.0 = Debug|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
......@@ -815,7 +791,6 @@ Global
{57CA988D-F010-4BF2-9A2E-07D6DCD2FF2C} = {55A62CFA-1155-46F1-ADF3-BEEE51B58AB5}
{D0BC9BE7-24F6-40CA-8DC6-FCB93BD44B34} = {A41D1B99-F489-4C43-BBDF-96D61B19A6B9}
{C1930979-C824-496B-A630-70F5369A636F} = {A41D1B99-F489-4C43-BBDF-96D61B19A6B9}
{F83343BA-B4EA-451C-B6DB-5D645E6171BC} = {5EFE4D73-9608-4E19-83A5-963B02413164}
{E3CD2895-76A8-4D11-A316-EA67CB5EA42C} = {32A48625-F0AD-419D-828B-A50BDABA38EA}
{8CE3A581-2969-4864-A803-013E9D977C3A} = {C65C6143-BED3-46E6-869E-9F0BE6E84C37}
{6FF42825-5464-4151-AC55-ED828168C192} = {50509463-6012-4061-99BF-6C5C8262E643}
......@@ -835,6 +810,6 @@ Global
{8635CB8F-D210-41ED-B4FF-71502CDB475C} = {A18BACE1-BB66-4156-8E89-81429A5814C6}
{E6796B97-D5C6-45B2-AE46-351D15DCFC71} = {A18BACE1-BB66-4156-8E89-81429A5814C6}
{D2B8B03E-A85D-48A2-818F-9177D89586A9} = {A18BACE1-BB66-4156-8E89-81429A5814C6}
{02ABB346-3CC8-4CC2-B6E4-72A60A3E1491} = {A18BACE1-BB66-4156-8E89-81429A5814C6}
{A57DDFE5-AB0E-4371-98E5-11B9218DF11C} = {A18BACE1-BB66-4156-8E89-81429A5814C6}
EndGlobalSection
EndGlobal
......@@ -17,10 +17,12 @@
</config>
<packageSources>
<clear />
<add key="myget.org dotnet-coreclr" value="https://www.myget.org/F/dotnet-coreclr/api/v3/index.json" />
<add key="myget.org dotnet-core" value="https://www.myget.org/F/dotnet-core/api/v3/index.json" />
<add key="myget.org dotnet-corefxtestdata" value="https://www.myget.org/F/dotnet-corefxtestdata/api/v3/index.json" />
<add key="myget.org dotnet-buildtools" value="https://www.myget.org/F/dotnet-buildtools/api/v3/index.json" />
<add key="myget.org dotnet-coreclr" value="https://dotnet.myget.org/F/dotnet-coreclr/api/v3/index.json" />
<add key="myget.org dotnet-core" value="https://dotnet.myget.org/F/dotnet-core/api/v3/index.json" />
<add key="myget.org dotnet-corefxtestdata" value="https://dotnet.myget.org/F/dotnet-corefxtestdata/api/v3/index.json" />
<add key="myget.org dotnet-buildtools" value="https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json" />
<add key="myget.org symreader" value="https://dotnet.myget.org/F/symreader/api/v3/index.json" />
<add key="myget.org symreader-portable" value="https://dotnet.myget.org/F/symreader-portable/api/v3/index.json" />
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
</packageSources>
......

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.24720.0
VisualStudioVersion = 14.0.25420.1
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeAnalysisTest", "src\Compilers\Core\CodeAnalysisTest\CodeAnalysisTest.csproj", "{A4C99B85-765C-4C65-9C2A-BB609AAB09E6}"
EndProject
......@@ -266,12 +266,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Hosts", "Hosts", "{5CA5F70E
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Repl", "Repl", "{81F048A1-B30A-4E74-9BD3-2655DA1DBEA6}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debugging", "Debugging", "{62F787B2-1E8B-4A3C-BCC0-0EBAE50B42B7}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.DiaSymReader.PortablePdb", "src\Debugging\Microsoft.DiaSymReader.PortablePdb\Microsoft.DiaSymReader.PortablePdb.csproj", "{F83343BA-B4EA-451C-B6DB-5D645E6171BC}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.DiaSymReader.PortablePdb.UnitTests", "src\Debugging\Microsoft.DiaSymReader.PortablePdb.Tests\Microsoft.DiaSymReader.PortablePdb.UnitTests.csproj", "{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CscCore", "src\Compilers\CSharp\CscCore\CscCore.csproj", "{E3CD2895-76A8-4D11-A316-EA67CB5EA42C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VbcCore", "src\Compilers\VisualBasic\VbcCore\VbcCore.csproj", "{8CE3A581-2969-4864-A803-013E9D977C3A}"
......@@ -378,51 +372,53 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Perf.Runner", "src\Test\Per
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VisualStudioTelemetry", "src\VisualStudio\Telemetry\VisualStudioTelemetry.csproj", "{63FB8976-170E-4FB0-ABB8-6A7070C55DC7}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiaSymReader.PortablePdb", "src\Dependencies\DiaSymReader.PortablePdb\DiaSymReader.PortablePdb.csproj", "{D06F8190-AC11-48E6-B0BF-5F17B7EB7B62}"
EndProject
Global
GlobalSection(SharedMSBuildProjectFiles) = preSolution
src\Test\Utilities\Shared\TestUtilities.projitems*{76c6f005-c89d-4348-bb4a-391898dbeb52}*SharedItemsImports = 4
src\Compilers\Core\CommandLine\CommandLine.projitems*{06b26dcb-7a12-48ef-ae50-708593abd05f}*SharedItemsImports = 4
src\Compilers\Server\ServerShared\ServerShared.projitems*{06b26dcb-7a12-48ef-ae50-708593abd05f}*SharedItemsImports = 4
src\Compilers\Core\AnalyzerDriver\AnalyzerDriver.projitems*{1ee8cad3-55f9-4d91-96b2-084641da9a6c}*SharedItemsImports = 4
src\Compilers\Core\SharedCollections\SharedCollections.projitems*{1ee8cad3-55f9-4d91-96b2-084641da9a6c}*SharedItemsImports = 4
src\Compilers\VisualBasic\BasicAnalyzerDriver\BasicAnalyzerDriver.projitems*{2523d0e6-df32-4a3e-8ae0-a19bffae2ef6}*SharedItemsImports = 4
src\ExpressionEvaluator\VisualBasic\Source\ResultProvider\BasicResultProvider.projitems*{3140fe61-0856-4367-9aa3-8081b9a80e35}*SharedItemsImports = 13
src\ExpressionEvaluator\CSharp\Source\ResultProvider\CSharpResultProvider.projitems*{3140fe61-0856-4367-9aa3-8081b9a80e36}*SharedItemsImports = 13
src\Compilers\Server\ServerShared\ServerShared.projitems*{32691768-af9c-4cae-9d0f-10721091b9aa}*SharedItemsImports = 13
src\Compilers\Core\AnalyzerDriver\AnalyzerDriver.projitems*{edc68a0e-c68d-4a74-91b7-bf38ec909888}*SharedItemsImports = 4
src\Compilers\Core\MSBuildTask\Shared\MSBuildTask.Shared.projitems*{d87f0e46-dd1b-46ea-8425-9e185d9b602e}*SharedItemsImports = 13
src\Test\Utilities\Shared\TestUtilities.projitems*{ccbd3438-3e84-40a9-83ad-533f23bcfca5}*SharedItemsImports = 4
src\Compilers\Core\CommandLine\CommandLine.projitems*{8ce3a581-2969-4864-a803-013e9d977c3a}*SharedItemsImports = 4
src\ExpressionEvaluator\VisualBasic\Source\ResultProvider\BasicResultProvider.projitems*{ace53515-482c-4c6a-e2d2-4242a687dfee}*SharedItemsImports = 4
src\Compilers\CSharp\CSharpAnalyzerDriver\CSharpAnalyzerDriver.projitems*{3973b09a-4fbf-44a5-8359-3d22ceb71f71}*SharedItemsImports = 4
src\Compilers\Core\CommandLine\CommandLine.projitems*{4b45ca0c-03a0-400f-b454-3d4bcb16af38}*SharedItemsImports = 4
src\Compilers\CSharp\CSharpAnalyzerDriver\CSharpAnalyzerDriver.projitems*{54e08bf5-f819-404f-a18d-0ab9ea81ea04}*SharedItemsImports = 13
src\ExpressionEvaluator\Core\Source\ResultProvider\ResultProvider.projitems*{abdbac1e-350e-4dc3-bb45-3504404545ee}*SharedItemsImports = 4
src\ExpressionEvaluator\VisualBasic\Source\ResultProvider\BasicResultProvider.projitems*{76242a2d-2600-49dd-8c15-fea07ecb1842}*SharedItemsImports = 4
src\ExpressionEvaluator\VisualBasic\Source\ResultProvider\BasicResultProvider.projitems*{76242a2d-2600-49dd-8c15-fea07ecb1843}*SharedItemsImports = 4
src\ExpressionEvaluator\CSharp\Source\ResultProvider\CSharpResultProvider.projitems*{3140fe61-0856-4367-9aa3-8081b9a80e36}*SharedItemsImports = 13
src\ExpressionEvaluator\VisualBasic\Source\ResultProvider\BasicResultProvider.projitems*{3140fe61-0856-4367-9aa3-8081b9a80e35}*SharedItemsImports = 13
src\Compilers\Core\SharedCollections\SharedCollections.projitems*{5f8d2414-064a-4b3a-9b42-8e2a04246be5}*SharedItemsImports = 4
src\ExpressionEvaluator\CSharp\Source\ResultProvider\CSharpResultProvider.projitems*{60db272a-21c9-4e8d-9803-ff4e132392c8}*SharedItemsImports = 4
src\ExpressionEvaluator\Core\Source\ResultProvider\ResultProvider.projitems*{bb3ca047-5d00-48d4-b7d3-233c1265c065}*SharedItemsImports = 13
src\Test\Utilities\Shared\TestUtilities.projitems*{6ff42825-5464-4151-ac55-ed828168c192}*SharedItemsImports = 13
src\Compilers\Core\SharedCollections\SharedCollections.projitems*{5f8d2414-064a-4b3a-9b42-8e2a04246be5}*SharedItemsImports = 4
src\Compilers\Core\CommandLine\CommandLine.projitems*{ad6f474e-e6d4-4217-91f3-b7af1be31ccc}*SharedItemsImports = 13
src\Compilers\VisualBasic\BasicAnalyzerDriver\BasicAnalyzerDriver.projitems*{e8f0baa5-7327-43d1-9a51-644e81ae55f1}*SharedItemsImports = 13
src\Compilers\Core\AnalyzerDriver\AnalyzerDriver.projitems*{d0bc9be7-24f6-40ca-8dc6-fcb93bd44b34}*SharedItemsImports = 13
src\Compilers\Server\ServerShared\ServerShared.projitems*{06b26dcb-7a12-48ef-ae50-708593abd05f}*SharedItemsImports = 4
src\Compilers\Core\CommandLine\CommandLine.projitems*{06b26dcb-7a12-48ef-ae50-708593abd05f}*SharedItemsImports = 4
src\Compilers\Core\CommandLine\CommandLine.projitems*{e58ee9d7-1239-4961-a0c1-f9ec3952c4c1}*SharedItemsImports = 4
src\Compilers\VisualBasic\BasicAnalyzerDriver\BasicAnalyzerDriver.projitems*{a1bcd0ce-6c2f-4f8c-9a48-d9d93928e26d}*SharedItemsImports = 4
src\Compilers\Server\ServerShared\ServerShared.projitems*{9508f118-f62e-4c16-a6f4-7c3b56e166ad}*SharedItemsImports = 4
src\ExpressionEvaluator\VisualBasic\Source\ResultProvider\BasicResultProvider.projitems*{76242a2d-2600-49dd-8c15-fea07ecb1842}*SharedItemsImports = 4
src\ExpressionEvaluator\VisualBasic\Source\ResultProvider\BasicResultProvider.projitems*{76242a2d-2600-49dd-8c15-fea07ecb1843}*SharedItemsImports = 4
src\Test\Utilities\Shared\TestUtilities.projitems*{76c6f005-c89d-4348-bb4a-391898dbeb52}*SharedItemsImports = 4
src\Compilers\Core\CommandLine\CommandLine.projitems*{7ad4fe65-9a30-41a6-8004-aa8f89bcb7f3}*SharedItemsImports = 4
src\Compilers\Core\MSBuildTask\Shared\MSBuildTask.Shared.projitems*{7ad4fe65-9a30-41a6-8004-aa8f89bcb7f3}*SharedItemsImports = 4
src\Compilers\Core\CommandLine\CommandLine.projitems*{8ce3a581-2969-4864-a803-013e9d977c3a}*SharedItemsImports = 4
src\Compilers\Core\CommandLine\CommandLine.projitems*{9508f118-f62e-4c16-a6f4-7c3b56e166ad}*SharedItemsImports = 4
src\ExpressionEvaluator\CSharp\Source\ResultProvider\CSharpResultProvider.projitems*{bf9dac1e-3a5e-4dc3-bb44-9a64e0d4e9d4}*SharedItemsImports = 4
src\ExpressionEvaluator\CSharp\Source\ResultProvider\CSharpResultProvider.projitems*{bf9dac1e-3a5e-4dc3-bb44-9a64e0d4e9d3}*SharedItemsImports = 4
src\Compilers\Server\ServerShared\ServerShared.projitems*{9508f118-f62e-4c16-a6f4-7c3b56e166ad}*SharedItemsImports = 4
src\Compilers\VisualBasic\BasicAnalyzerDriver\BasicAnalyzerDriver.projitems*{a1bcd0ce-6c2f-4f8c-9a48-d9d93928e26d}*SharedItemsImports = 4
src\ExpressionEvaluator\Core\Source\ResultProvider\ResultProvider.projitems*{abdbac1e-350e-4dc3-bb45-3504404545ee}*SharedItemsImports = 4
src\ExpressionEvaluator\VisualBasic\Source\ResultProvider\BasicResultProvider.projitems*{ace53515-482c-4c6a-e2d2-4242a687dfee}*SharedItemsImports = 4
src\Compilers\Core\CommandLine\CommandLine.projitems*{ad6f474e-e6d4-4217-91f3-b7af1be31ccc}*SharedItemsImports = 13
src\Compilers\Core\SharedCollections\SharedCollections.projitems*{afde6bea-5038-4a4a-a88e-dbd2e4088eed}*SharedItemsImports = 4
src\ExpressionEvaluator\Core\Source\ResultProvider\ResultProvider.projitems*{fa0e905d-ec46-466d-b7b2-3b5557f9428c}*SharedItemsImports = 4
src\Compilers\Core\SharedCollections\SharedCollections.projitems*{1ee8cad3-55f9-4d91-96b2-084641da9a6c}*SharedItemsImports = 4
src\Compilers\Core\AnalyzerDriver\AnalyzerDriver.projitems*{1ee8cad3-55f9-4d91-96b2-084641da9a6c}*SharedItemsImports = 4
src\Compilers\Core\MSBuildTask\Shared\MSBuildTask.Shared.projitems*{7ad4fe65-9a30-41a6-8004-aa8f89bcb7f3}*SharedItemsImports = 4
src\Compilers\Core\CommandLine\CommandLine.projitems*{7ad4fe65-9a30-41a6-8004-aa8f89bcb7f3}*SharedItemsImports = 4
src\Compilers\CSharp\CSharpAnalyzerDriver\CSharpAnalyzerDriver.projitems*{3973b09a-4fbf-44a5-8359-3d22ceb71f71}*SharedItemsImports = 4
src\ExpressionEvaluator\Core\Source\ResultProvider\ResultProvider.projitems*{bedc5a4a-809e-4017-9cfd-6c8d4e1847f0}*SharedItemsImports = 4
src\Compilers\CSharp\CSharpAnalyzerDriver\CSharpAnalyzerDriver.projitems*{b501a547-c911-4a05-ac6e-274a50dff30e}*SharedItemsImports = 4
src\Compilers\VisualBasic\BasicAnalyzerDriver\BasicAnalyzerDriver.projitems*{2523d0e6-df32-4a3e-8ae0-a19bffae2ef6}*SharedItemsImports = 4
src\Compilers\Core\CommandLine\CommandLine.projitems*{4b45ca0c-03a0-400f-b454-3d4bcb16af38}*SharedItemsImports = 4
src\ExpressionEvaluator\Core\Source\ResultProvider\ResultProvider.projitems*{bb3ca047-5d00-48d4-b7d3-233c1265c065}*SharedItemsImports = 13
src\ExpressionEvaluator\Core\Source\ResultProvider\ResultProvider.projitems*{bedc5a4a-809e-4017-9cfd-6c8d4e1847f0}*SharedItemsImports = 4
src\ExpressionEvaluator\CSharp\Source\ResultProvider\CSharpResultProvider.projitems*{bf9dac1e-3a5e-4dc3-bb44-9a64e0d4e9d3}*SharedItemsImports = 4
src\ExpressionEvaluator\CSharp\Source\ResultProvider\CSharpResultProvider.projitems*{bf9dac1e-3a5e-4dc3-bb44-9a64e0d4e9d4}*SharedItemsImports = 4
src\Compilers\Core\SharedCollections\SharedCollections.projitems*{c1930979-c824-496b-a630-70f5369a636f}*SharedItemsImports = 13
src\Compilers\Core\MSBuildTask\Shared\MSBuildTask.Shared.projitems*{d874349c-8bb3-4bdc-8535-2d52ccca1198}*SharedItemsImports = 4
src\Test\Utilities\Shared\TestUtilities.projitems*{ccbd3438-3e84-40a9-83ad-533f23bcfca5}*SharedItemsImports = 4
src\Compilers\Core\AnalyzerDriver\AnalyzerDriver.projitems*{d0bc9be7-24f6-40ca-8dc6-fcb93bd44b34}*SharedItemsImports = 13
src\Compilers\Core\CommandLine\CommandLine.projitems*{d874349c-8bb3-4bdc-8535-2d52ccca1198}*SharedItemsImports = 4
src\Compilers\Core\MSBuildTask\Shared\MSBuildTask.Shared.projitems*{d874349c-8bb3-4bdc-8535-2d52ccca1198}*SharedItemsImports = 4
src\Compilers\Core\MSBuildTask\Shared\MSBuildTask.Shared.projitems*{d87f0e46-dd1b-46ea-8425-9e185d9b602e}*SharedItemsImports = 13
src\Compilers\Core\CommandLine\CommandLine.projitems*{e3cd2895-76a8-4d11-a316-ea67cb5ea42c}*SharedItemsImports = 4
src\Compilers\Core\CommandLine\CommandLine.projitems*{e58ee9d7-1239-4961-a0c1-f9ec3952c4c1}*SharedItemsImports = 4
src\Compilers\VisualBasic\BasicAnalyzerDriver\BasicAnalyzerDriver.projitems*{e8f0baa5-7327-43d1-9a51-644e81ae55f1}*SharedItemsImports = 13
src\Compilers\Core\AnalyzerDriver\AnalyzerDriver.projitems*{edc68a0e-c68d-4a74-91b7-bf38ec909888}*SharedItemsImports = 4
src\ExpressionEvaluator\Core\Source\ResultProvider\ResultProvider.projitems*{fa0e905d-ec46-466d-b7b2-3b5557f9428c}*SharedItemsImports = 4
EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
......@@ -2429,46 +2425,6 @@ Global
{CF450DCE-D12B-4A11-8D2D-A7A125372C48}.Release|x64.Build.0 = Release|Any CPU
{CF450DCE-D12B-4A11-8D2D-A7A125372C48}.Release|x86.ActiveCfg = Release|Any CPU
{CF450DCE-D12B-4A11-8D2D-A7A125372C48}.Release|x86.Build.0 = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|ARM.ActiveCfg = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|ARM.Build.0 = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|x64.ActiveCfg = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|x64.Build.0 = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|x86.ActiveCfg = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|x86.Build.0 = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|Any CPU.Build.0 = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|ARM.ActiveCfg = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|ARM.Build.0 = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|x64.ActiveCfg = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|x64.Build.0 = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|x86.ActiveCfg = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|x86.Build.0 = Release|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Debug|ARM.ActiveCfg = Debug|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Debug|ARM.Build.0 = Debug|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Debug|x64.ActiveCfg = Debug|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Debug|x64.Build.0 = Debug|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Debug|x86.ActiveCfg = Debug|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Debug|x86.Build.0 = Debug|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Release|Any CPU.Build.0 = Release|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Release|ARM.ActiveCfg = Release|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Release|ARM.Build.0 = Release|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Release|x64.ActiveCfg = Release|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Release|x64.Build.0 = Release|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Release|x86.ActiveCfg = Release|Any CPU
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}.Release|x86.Build.0 = Release|Any CPU
{E3CD2895-76A8-4D11-A316-EA67CB5EA42C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E3CD2895-76A8-4D11-A316-EA67CB5EA42C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E3CD2895-76A8-4D11-A316-EA67CB5EA42C}.Debug|ARM.ActiveCfg = Debug|Any CPU
......@@ -3239,6 +3195,26 @@ Global
{63FB8976-170E-4FB0-ABB8-6A7070C55DC7}.Release|x64.ActiveCfg = Release|x86
{63FB8976-170E-4FB0-ABB8-6A7070C55DC7}.Release|x86.ActiveCfg = Release|x86
{63FB8976-170E-4FB0-ABB8-6A7070C55DC7}.Release|x86.Build.0 = Release|x86
{D06F8190-AC11-48E6-B0BF-5F17B7EB7B62}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D06F8190-AC11-48E6-B0BF-5F17B7EB7B62}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D06F8190-AC11-48E6-B0BF-5F17B7EB7B62}.Debug|ARM.ActiveCfg = Debug|Any CPU
{D06F8190-AC11-48E6-B0BF-5F17B7EB7B62}.Debug|ARM.Build.0 = Debug|Any CPU
{D06F8190-AC11-48E6-B0BF-5F17B7EB7B62}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{D06F8190-AC11-48E6-B0BF-5F17B7EB7B62}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{D06F8190-AC11-48E6-B0BF-5F17B7EB7B62}.Debug|x64.ActiveCfg = Debug|Any CPU
{D06F8190-AC11-48E6-B0BF-5F17B7EB7B62}.Debug|x64.Build.0 = Debug|Any CPU
{D06F8190-AC11-48E6-B0BF-5F17B7EB7B62}.Debug|x86.ActiveCfg = Debug|Any CPU
{D06F8190-AC11-48E6-B0BF-5F17B7EB7B62}.Debug|x86.Build.0 = Debug|Any CPU
{D06F8190-AC11-48E6-B0BF-5F17B7EB7B62}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D06F8190-AC11-48E6-B0BF-5F17B7EB7B62}.Release|Any CPU.Build.0 = Release|Any CPU
{D06F8190-AC11-48E6-B0BF-5F17B7EB7B62}.Release|ARM.ActiveCfg = Release|Any CPU
{D06F8190-AC11-48E6-B0BF-5F17B7EB7B62}.Release|ARM.Build.0 = Release|Any CPU
{D06F8190-AC11-48E6-B0BF-5F17B7EB7B62}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{D06F8190-AC11-48E6-B0BF-5F17B7EB7B62}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{D06F8190-AC11-48E6-B0BF-5F17B7EB7B62}.Release|x64.ActiveCfg = Release|Any CPU
{D06F8190-AC11-48E6-B0BF-5F17B7EB7B62}.Release|x64.Build.0 = Release|Any CPU
{D06F8190-AC11-48E6-B0BF-5F17B7EB7B62}.Release|x86.ActiveCfg = Release|Any CPU
{D06F8190-AC11-48E6-B0BF-5F17B7EB7B62}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
......@@ -3362,8 +3338,6 @@ Global
{2491A9B9-C0A8-49EE-9077-A32DE76E1E94} = {999FBDA2-33DA-4F74-B957-03AC72CCE5EC}
{5CA5F70E-0FDB-467B-B22C-3CD5994F0087} = {999FBDA2-33DA-4F74-B957-03AC72CCE5EC}
{81F048A1-B30A-4E74-9BD3-2655DA1DBEA6} = {999FBDA2-33DA-4F74-B957-03AC72CCE5EC}
{F83343BA-B4EA-451C-B6DB-5D645E6171BC} = {62F787B2-1E8B-4A3C-BCC0-0EBAE50B42B7}
{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0} = {62F787B2-1E8B-4A3C-BCC0-0EBAE50B42B7}
{E3CD2895-76A8-4D11-A316-EA67CB5EA42C} = {32A48625-F0AD-419D-828B-A50BDABA38EA}
{8CE3A581-2969-4864-A803-013E9D977C3A} = {C65C6143-BED3-46E6-869E-9F0BE6E84C37}
{6FF42825-5464-4151-AC55-ED828168C192} = {CAD2965A-19AB-489F-BE2E-7649957F914A}
......@@ -3411,5 +3385,6 @@ Global
{59AD474E-2A35-4E8A-A74D-E33479977FBF} = {DD13507E-D5AF-4B61-B11A-D55D6F4A73A5}
{1AA6D2F0-2C40-4AF6-BB79-50AFDCC62720} = {DD13507E-D5AF-4B61-B11A-D55D6F4A73A5}
{63FB8976-170E-4FB0-ABB8-6A7070C55DC7} = {8DBA5174-B0AA-4561-82B1-A46607697753}
{D06F8190-AC11-48E6-B0BF-5F17B7EB7B62} = {C2D1346B-9665-4150-B644-075CF1636BAA}
EndGlobalSection
EndGlobal
......@@ -17,6 +17,7 @@
<SystemCollectionsImmutableVersion>1.2.0</SystemCollectionsImmutableVersion>
<MicrosoftDiaSymReaderVersion>1.1.0-beta1-60625-03</MicrosoftDiaSymReaderVersion>
<MicrosoftDiaSymReaderNativeVersion>1.4.0-rc2</MicrosoftDiaSymReaderNativeVersion>
<MicrosoftDiaSymReaderPortablePdbVersion>1.2.0-beta1-60706-02</MicrosoftDiaSymReaderPortablePdbVersion>
<MicrosoftCodeAnalysisElfieVersion>0.10.6-rc2</MicrosoftCodeAnalysisElfieVersion>
<ManagedEsentVersion>1.9.2</ManagedEsentVersion>
<CodeAnalysisAnalyzersVersion>1.1.0</CodeAnalysisAnalyzersVersion>
......@@ -87,10 +88,6 @@
<PropertyGroup>
<NuGetReleaseVersion>$(RoslynFileVersionBase)</NuGetReleaseVersion>
<NuGetPerBuildPreReleaseVersion>$(NuGetPreReleaseVersion)-$(BuildNumberFiveDigitDateStamp)-$(BuildNumberBuildOfTheDayPadded)</NuGetPerBuildPreReleaseVersion>
<!-- TODO: change to a fixed version once we move this component to a separate repo -->
<MicrosoftDiaSymReaderPortablePdbVersion>1.1.0-beta1</MicrosoftDiaSymReaderPortablePdbVersion>
<MicrosoftDiaSymReaderPortablePdbVersion Condition="'$(BuildNumber)' != ''">$(MicrosoftDiaSymReaderPortablePdbVersion)-$(BuildNumber.Split('.')[0])-$(BuildNumber.Split('.')[1].PadLeft(2,'0'))</MicrosoftDiaSymReaderPortablePdbVersion>
</PropertyGroup>
</Project>

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.24720.0
VisualStudioVersion = 14.0.25420.1
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeAnalysis", "..\src\Compilers\Core\Portable\CodeAnalysis.csproj", "{1EE8CAD3-55F9-4D91-96B2-084641DA9A6C}"
EndProject
......@@ -39,10 +39,6 @@ Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "AnalyzerDriver", "..\src\Co
EndProject
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "SharedCollections", "..\src\Compilers\Core\SharedCollections\SharedCollections.shproj", "{C1930979-C824-496B-A630-70F5369A636F}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debugging", "Debugging", "{0539DC23-F553-44C6-9D9D-B0CFEB4FFE9A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.DiaSymReader.PortablePdb", "..\src\Debugging\Microsoft.DiaSymReader.PortablePdb\Microsoft.DiaSymReader.PortablePdb.csproj", "{F83343BA-B4EA-451C-B6DB-5D645E6171BC}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "csc", "..\src\Compilers\CSharp\csc\csc.csproj", "{4B45CA0C-03A0-400F-B454-3D4BCB16AF38}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "vbc", "..\src\Compilers\VisualBasic\vbc\vbc.csproj", "{E58EE9D7-1239-4961-A0C1-F9EC3952C4C1}"
......@@ -57,19 +53,19 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DeployCompilerGeneratorTool
EndProject
Global
GlobalSection(SharedMSBuildProjectFiles) = preSolution
..\src\Compilers\Core\MSBuildTask\Shared\MSBuildTask.Shared.projitems*{d87f0e46-dd1b-46ea-8425-9e185d9b602e}*SharedItemsImports = 13
..\src\Compilers\Core\AnalyzerDriver\AnalyzerDriver.projitems*{d0bc9be7-24f6-40ca-8dc6-fcb93bd44b34}*SharedItemsImports = 13
..\src\Compilers\Core\CommandLine\CommandLine.projitems*{e58ee9d7-1239-4961-a0c1-f9ec3952c4c1}*SharedItemsImports = 4
..\src\Compilers\Core\CommandLine\CommandLine.projitems*{9508f118-f62e-4c16-a6f4-7c3b56e166ad}*SharedItemsImports = 4
..\src\Compilers\Server\ServerShared\ServerShared.projitems*{9508f118-f62e-4c16-a6f4-7c3b56e166ad}*SharedItemsImports = 4
..\src\Compilers\Core\SharedCollections\SharedCollections.projitems*{1ee8cad3-55f9-4d91-96b2-084641da9a6c}*SharedItemsImports = 4
..\src\Compilers\Core\AnalyzerDriver\AnalyzerDriver.projitems*{1ee8cad3-55f9-4d91-96b2-084641da9a6c}*SharedItemsImports = 4
..\src\Compilers\CSharp\CSharpAnalyzerDriver\CSharpAnalyzerDriver.projitems*{b501a547-c911-4a05-ac6e-274a50dff30e}*SharedItemsImports = 4
..\src\Compilers\Core\SharedCollections\SharedCollections.projitems*{1ee8cad3-55f9-4d91-96b2-084641da9a6c}*SharedItemsImports = 4
..\src\Compilers\VisualBasic\BasicAnalyzerDriver\BasicAnalyzerDriver.projitems*{2523d0e6-df32-4a3e-8ae0-a19bffae2ef6}*SharedItemsImports = 4
..\src\Compilers\Core\CommandLine\CommandLine.projitems*{4b45ca0c-03a0-400f-b454-3d4bcb16af38}*SharedItemsImports = 4
..\src\Compilers\Core\CommandLine\CommandLine.projitems*{9508f118-f62e-4c16-a6f4-7c3b56e166ad}*SharedItemsImports = 4
..\src\Compilers\Server\ServerShared\ServerShared.projitems*{9508f118-f62e-4c16-a6f4-7c3b56e166ad}*SharedItemsImports = 4
..\src\Compilers\CSharp\CSharpAnalyzerDriver\CSharpAnalyzerDriver.projitems*{b501a547-c911-4a05-ac6e-274a50dff30e}*SharedItemsImports = 4
..\src\Compilers\Core\SharedCollections\SharedCollections.projitems*{c1930979-c824-496b-a630-70f5369a636f}*SharedItemsImports = 13
..\src\Compilers\Core\MSBuildTask\Shared\MSBuildTask.Shared.projitems*{d874349c-8bb3-4bdc-8535-2d52ccca1198}*SharedItemsImports = 4
..\src\Compilers\Core\AnalyzerDriver\AnalyzerDriver.projitems*{d0bc9be7-24f6-40ca-8dc6-fcb93bd44b34}*SharedItemsImports = 13
..\src\Compilers\Core\CommandLine\CommandLine.projitems*{d874349c-8bb3-4bdc-8535-2d52ccca1198}*SharedItemsImports = 4
..\src\Compilers\Core\MSBuildTask\Shared\MSBuildTask.Shared.projitems*{d874349c-8bb3-4bdc-8535-2d52ccca1198}*SharedItemsImports = 4
..\src\Compilers\Core\MSBuildTask\Shared\MSBuildTask.Shared.projitems*{d87f0e46-dd1b-46ea-8425-9e185d9b602e}*SharedItemsImports = 13
..\src\Compilers\Core\CommandLine\CommandLine.projitems*{e58ee9d7-1239-4961-a0c1-f9ec3952c4c1}*SharedItemsImports = 4
EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
......@@ -210,22 +206,6 @@ Global
{909B656F-6095-4AC2-A5AB-C3F032315C45}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{909B656F-6095-4AC2-A5AB-C3F032315C45}.Release|x64.ActiveCfg = Release|Any CPU
{909B656F-6095-4AC2-A5AB-C3F032315C45}.Release|x64.Build.0 = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|ARM.ActiveCfg = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|ARM.Build.0 = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|x64.ActiveCfg = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Debug|x64.Build.0 = Debug|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|Any CPU.Build.0 = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|ARM.ActiveCfg = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|ARM.Build.0 = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|x64.ActiveCfg = Release|Any CPU
{F83343BA-B4EA-451C-B6DB-5D645E6171BC}.Release|x64.Build.0 = Release|Any CPU
{4B45CA0C-03A0-400F-B454-3D4BCB16AF38}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4B45CA0C-03A0-400F-B454-3D4BCB16AF38}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4B45CA0C-03A0-400F-B454-3D4BCB16AF38}.Debug|ARM.ActiveCfg = Debug|Any CPU
......@@ -324,7 +304,6 @@ Global
{909B656F-6095-4AC2-A5AB-C3F032315C45} = {FD0FAF5F-1DED-485C-99FA-84B97F3A8EEC}
{D0BC9BE7-24F6-40CA-8DC6-FCB93BD44B34} = {A41D1B99-F489-4C43-BBDF-96D61B19A6B9}
{C1930979-C824-496B-A630-70F5369A636F} = {A41D1B99-F489-4C43-BBDF-96D61B19A6B9}
{F83343BA-B4EA-451C-B6DB-5D645E6171BC} = {0539DC23-F553-44C6-9D9D-B0CFEB4FFE9A}
{4B45CA0C-03A0-400F-B454-3D4BCB16AF38} = {32A48625-F0AD-419D-828B-A50BDABA38EA}
{E58EE9D7-1239-4961-A0C1-F9EC3952C4C1} = {C65C6143-BED3-46E6-869E-9F0BE6E84C37}
{9508F118-F62E-4C16-A6F4-7C3B56E166AD} = {A41D1B99-F489-4C43-BBDF-96D61B19A6B9}
......
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -->
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="Settings">
<Import Project="..\..\Tools\Microsoft.CodeAnalysis.Toolset.Open\Targets\VSL.Settings.targets" />
<Import Project="..\..\..\build\VSL.Settings.Closed.targets" />
</ImportGroup>
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<Configuration Condition="'$(Configuration)' == ''">Debug</Configuration>
<Platform Condition="'$(Platform)' == ''">AnyCPU</Platform>
<ProjectGuid>{690CACA9-9F32-47DA-B61D-55231257CBA3}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>NativeClientTests</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>false</UseOfMfc>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>false</UseOfMfc>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
<TargetName>Microsoft.DiaSymReader.PortablePdb.Native.UnitTests</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
<TargetName>Microsoft.DiaSymReader.PortablePdb.Native.UnitTests</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>$(IntermediateOutputPath);$(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<UseFullPaths>true</UseFullPaths>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalOptions>/ignore:4099 %(AdditionalOptions)</AdditionalOptions>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>$(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<UseFullPaths>true</UseFullPaths>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalLibraryDirectories>$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalOptions>/ignore:4099 %(AdditionalOptions)</AdditionalOptions>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="SymReaderTests.cpp" />
</ItemGroup>
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<ImportGroup Label="Targets">
<Import Project="..\..\Tools\Microsoft.CodeAnalysis.Toolset.Open\Targets\VSL.Imports.targets" />
<Import Project="..\..\..\build\VSL.Imports.Closed.targets" />
</ImportGroup>
</Project>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="$(GeneratedVersionInfoResourceFile)" />
<ResourceCompile Include="$(GeneratedVersionInfoResourceFile)" />
<ResourceCompile Include="$(GeneratedVersionInfoResourceFile)" />
<ResourceCompile Include="$(GeneratedVersionInfoResourceFile)" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="SymReaderTests.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>
\ No newline at end of file
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
#if TODO
#pragma warning( push )
#pragma warning( disable: 4499 )
#include "CppUnitTest.h"
#pragma warning (pop)
#include <memory>
#include <sstream>
#include <Windows.h>
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
namespace Microsoft_DiaSymReader_PortablePdb_UnitTests
{
// {E4B18DEF-3B78-46AE-8F50-E67E421BDF70}
static const GUID CLSID_Factory = { 0xE4B18DEF, 0x3B78, 0x46AE, { 0x8F, 0x50, 0xE6, 0x7E, 0x42, 0x1B, 0xDF, 0x70 } };
// {AA544D42-28CB-11d3-BD22-0000F80849BD}
static const GUID IID_ISymUnmanagedBinder = { 0xAA544D42, 0x28CB, 0x11d3, { 0xBD, 0x22, 0x00, 0x00, 0xF8, 0x08, 0x49, 0xBD } };
// To run these test from command line
// vstest.console.exe Microsoft.DiaSymReader.PortablePdb.Native.UnitTests.dll
TEST_CLASS(SymReaderTests)
{
public:
TEST_METHOD(Instantiation)
{
HRESULT hr;
hr = CoInitialize(nullptr);
Assert::IsTrue(hr == S_OK || hr == S_FALSE, L"CoInitialize");
LPVOID factory;
hr = CoCreateInstance(CLSID_Factory, nullptr, CLSCTX_INPROC_SERVER, IID_ISymUnmanagedBinder, &factory);
Assert::AreEqual(S_OK, hr, L"CoCreateInstance");
Assert::AreEqual(1, 1);
}
};
}
#endif
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -->
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="Settings">
<Import Project="..\..\..\build\Targets\VSL.Settings.targets" />
</ImportGroup>
<PropertyGroup>
<Nonshipping>true</Nonshipping>
<Configuration Condition="'$(Configuration)' == ''">Debug</Configuration>
<Platform Condition="'$(Platform)' == ''">AnyCPU</Platform>
<ProjectGuid>{DEB3D675-5A3C-46DA-8945-F2EFAB135EA0}</ProjectGuid>
<OutputType>Library</OutputType>
<RootNamespace>Microsoft.DiaSymReader.PortablePdb.UnitTests</RootNamespace>
<AssemblyName>Microsoft.DiaSymReader.PortablePdb.UnitTests</AssemblyName>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<SolutionDir Condition="'$(SolutionDir)' == '' OR '$(SolutionDir)' == '*Undefined*'">..\..\..\..\</SolutionDir>
<RestorePackages>true</RestorePackages>
<TargetFrameworkVersion>v5.0</TargetFrameworkVersion>
<TargetFrameworkProfile>
</TargetFrameworkProfile>
<TargetFrameworkIdentifier>.NETPortable</TargetFrameworkIdentifier>
<ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'" />
<ItemGroup>
<ProjectReference Include="..\..\Dependencies\xUnit.net\xUnit.net.csproj">
<Project>{8635cb8f-d210-41ed-b4ff-71502cdb475c}</Project>
<Name>xUnit.net</Name>
</ProjectReference>
<ProjectReference Include="..\Microsoft.DiaSymReader.PortablePdb\Microsoft.DiaSymReader.PortablePdb.csproj">
<Project>{f83343ba-b4ea-451c-b6db-5d645e6171bc}</Project>
<Name>Microsoft.DiaSymReader.PortablePdb</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Resources\Async.dll">
<LogicalName>Async.dll</LogicalName>
</EmbeddedResource>
<EmbeddedResource Include="Resources\Async.pdb">
<LogicalName>Async.pdb</LogicalName>
</EmbeddedResource>
<EmbeddedResource Include="Resources\Async.dllx">
<LogicalName>Async.dllx</LogicalName>
</EmbeddedResource>
<EmbeddedResource Include="Resources\Async.pdbx">
<LogicalName>Async.pdbx</LogicalName>
</EmbeddedResource>
<EmbeddedResource Include="Resources\Documents.dllx">
<LogicalName>Documents.dllx</LogicalName>
</EmbeddedResource>
<EmbeddedResource Include="Resources\Documents.pdbx">
<LogicalName>Documents.pdbx</LogicalName>
</EmbeddedResource>
<EmbeddedResource Include="Resources\Documents.dll">
<LogicalName>Documents.dll</LogicalName>
</EmbeddedResource>
<EmbeddedResource Include="Resources\Documents.pdb">
<LogicalName>Documents.pdb</LogicalName>
</EmbeddedResource>
<EmbeddedResource Include="Resources\Scopes.dll">
<LogicalName>Scopes.dll</LogicalName>
</EmbeddedResource>
<EmbeddedResource Include="Resources\Scopes.pdbx">
<LogicalName>Scopes.pdbx</LogicalName>
</EmbeddedResource>
<EmbeddedResource Include="Resources\MethodBoundaries.dll">
<LogicalName>MethodBoundaries.dll</LogicalName>
</EmbeddedResource>
<EmbeddedResource Include="Resources\MethodBoundaries.pdb">
<LogicalName>MethodBoundaries.pdb</LogicalName>
</EmbeddedResource>
<EmbeddedResource Include="Resources\MethodBoundaries.dllx">
<LogicalName>MethodBoundaries.dllx</LogicalName>
</EmbeddedResource>
<EmbeddedResource Include="Resources\MethodBoundaries.pdbx">
<LogicalName>MethodBoundaries.pdbx</LogicalName>
</EmbeddedResource>
<Content Include="Resources\Documents.cmd" />
<Content Include="Resources\Scopes.cmd" />
<Content Include="Resources\MethodBoundaries.cmd" />
<Content Include="Resources\Async.cmd" />
<Content Include="Resources\Scopes.cs" />
<Content Include="Resources\Async.cs" />
<Content Include="Resources\Documents.cs" />
<Compile Include="MethodMapTests.cs" />
<Compile Include="ResourceLoader.cs" />
<Content Include="Resources\MethodBoundaries.cs" />
<Compile Include="SymBinderTests.cs" />
<Compile Include="TestHelpers\SymTestHelpers.cs" />
<Compile Include="TestResources.cs" />
</ItemGroup>
<ItemGroup>
<Compile Include="TestHelpers\AssertEx.cs" />
<Compile Include="Utilities\EnumerableHelpersTests.cs" />
<Compile Include="Utilities\SymMetadataImport.cs" />
<Compile Include="SymReaderTests.cs" />
</ItemGroup>
<ItemGroup>
<None Include="project.json" />
</ItemGroup>
<ItemGroup>
<Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
</ItemGroup>
<ImportGroup Label="Targets">
<Import Project="..\..\..\build\Targets\VSL.Imports.targets" />
<Import Project="..\..\..\build\Targets\Roslyn.Toolsets.Xunit.targets" />
</ImportGroup>
</Project>
\ No newline at end of file
// 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.IO;
using System.Reflection;
namespace TestResources
{
internal static class ResourceLoader
{
private static Stream GetResourceStream(string name)
{
var assembly = typeof(ResourceLoader).GetTypeInfo().Assembly;
var stream = assembly.GetManifestResourceStream(name);
if (stream == null)
{
throw new InvalidOperationException($"Resource '{name}' not found in {assembly.FullName}.");
}
return stream;
}
private static byte[] GetResourceBlob(string name)
{
using (var stream = GetResourceStream(name))
{
var bytes = new byte[stream.Length];
using (var memoryStream = new MemoryStream(bytes))
{
stream.CopyTo(memoryStream);
}
return bytes;
}
}
public static byte[] GetOrCreateResource(ref byte[] resource, string name)
{
if (resource == null)
{
resource = GetResourceBlob(name);
}
return resource;
}
}
}
\ No newline at end of file
csc /target:library /debug:portable /optimize- /deterministic Async.cs
copy /y Async.pdb Async.pdbx
copy /y Async.dll Async.dllx
csc /target:library /debug+ /optimize- /deterministic Async.cs
#line 1 "C:\Async.cs"
#pragma checksum "C:\Async.cs" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "DBEB2A067B2F0E0D678A002C587A2806056C3DCE"
using System.Threading.Tasks;
public class C
{
public async Task<int> M1()
{
await Task.FromResult(0);
await Task.FromResult(1);
await Task.FromResult(2);
return 1;
}
public async void M2()
{
await Task.FromResult(0);
}
}
\ No newline at end of file
csc /target:library /debug:portable /optimize- /deterministic Documents.cs
copy /y Documents.pdb Documents.pdbx
copy /y Documents.dll Documents.dllx
csc /target:library /debug+ /optimize- /deterministic Documents.cs
#line 1 "C:\Documents.cs"
#pragma checksum "C:\Documents.cs" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "DBEB2A067B2F0E0D678A002C587A2806056C3DCE"
using System;
class C
{
public void M()
{
#line 10 "C:\a\b\c\d\1.cs"
Console.WriteLine(1);
#line 20 "C:\a\b\c\D\2.cs"
Console.WriteLine(2);
#line 30 "C:\a\b\C\d\3.cs"
Console.WriteLine(3);
#line 40
Console.WriteLine(4);
#line hidden
Console.WriteLine();
#line 50 "C:\a\b\c\d\x.cs"
Console.WriteLine(5);
#line 60 "C:\A\b\c\x.cs"
Console.WriteLine(5);
#line 70 "C:\a\b\x.cs"
Console.WriteLine(5);
#line 80 "C:\a\B\3.cs"
Console.WriteLine(3);
#line 90 "C:\a\B\c/4.cs"
Console.WriteLine(4);
#line 100 "C:\*\5.cs"
Console.WriteLine(5);
#line 110 ":6.cs"
Console.WriteLine(6);
#line 120 "C:\a\b\X.cs"
Console.WriteLine(7);
#line 130 "C:\a\B\x.cs"
Console.WriteLine(8);
}
}
csc /target:library /debug:portable /optimize- /deterministic MethodBoundaries.cs
copy /y MethodBoundaries.pdb MethodBoundaries.pdbx
copy /y MethodBoundaries.dll MethodBoundaries.dllx
csc /target:library /debug+ /optimize- /deterministic MethodBoundaries.cs
#line 1 "C:\MethodBoundaries1.cs"
#pragma checksum "C:\MethodBoundaries1.cs" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "DBEB2A067B2F0E0D678A002C587A2806056C3DCE"
partial class C
{
int i = F() // 5
+ // (6)
F(); // (7)
public C() // 9
{ // 10
F(); // 11
} // 12
int j = F(); // 14
public static int F()
{ // 17
#line 10 "C:\MethodBoundaries1.cs"
F(); // 10
#line 5 "C:\MethodBoundaries1.cs"
F(); // 5
F(); // 7
F(); // 8
#line 5 "C:\MethodBoundaries1.cs"
F(); // 5
#line 1 "C:\MethodBoundaries2.cs"
F(); // 2-1
#line 20 "C:\MethodBoundaries1.cs"
F(); // 20
return 1; // 22
} // 23
public static int G()
#line 4 "C:\MethodBoundaries1.cs"
{ // 4
F( // 5
// (6)
); // (7)
return 1; // 8
} // 9
#line 5 "C:\MethodBoundaries2.cs"
public static int E0() => F(); // 5
#line 7 "C:\MethodBoundaries2.cs"
public static int E1() => F(); // 7
public static int H()
#line 4 "C:\MethodBoundaries2.cs"
{ // 4
F( // 5
// (6)
// (7)
); // (8)
return 1; // 9
} // 10
#line 6 "C:\MethodBoundaries2.cs"
public static int E2() => F(); // 6
public static int E3() =>
#line 8 "C:\MethodBoundaries2.cs"
F() + // 8
F(); // (9)
public static int E4() =>
#line 9 "C:\MethodBoundaries2.cs"
F(); // 9
// Overlapping sequence point spans from different methods.
public static void J1()
#line 13 "C:\MethodBoundaries2.cs"
{ // 13
F(); // 14
} // 15
public static int I()
#line 11 "C:\MethodBoundaries2.cs"
{ // 11
F( // 12
// (13) overlaps with J1
// (14) overlaps with J1
// (15) overlaps with J1
// (16) overlaps with J2
// (17) overlaps with J2
// (18)
// (19)
// (20)
); // (21)
return 1; // 22
} // 23
public static void J2()
#line 16 "C:\MethodBoundaries2.cs"
{ // 16
F(); // 17
#line 28 "C:\MethodBoundaries2.cs"
} // 28
public static void K1()
#line 1 "C:\MethodBoundaries3.cs"
{ // 1 K1
F( // 2 K1
// (3) K1, K2
// (4) K1, K2
// (5) K1, K2, K3
// (6) K1, K2, K3
// (7) K1, K2, K3, K4
// (8) K1, K2, K3, K4
// (9) K1, K2, K3
// (10) K1, K2, K3
); // (11) K1, K2
} // 12 K1
public static void K2()
#line 3 "C:\MethodBoundaries3.cs"
{ // 3
F( // 4
// (5)
// (6)
// (7)
// (8)
// (9)
); // (10)
} // 11
public static void K3()
#line 5 "C:\MethodBoundaries3.cs"
{ // 5
F( // 6
// (7)
// (8)
); // (9)
} // 10
public static void K4() =>
#line 7 "C:\MethodBoundaries3.cs"
F( // 7
); // (8)
}
\ No newline at end of file
csc /target:library /debug:portable /optimize- /deterministic Scopes.cs
copy /y Scopes.pdb Scopes.pdbx
del Scopes.pdb
#line 1 "C:\Scopes.cs"
#pragma checksum "C:\Scopes.cs" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "DBEB2A067B2F0E0D678A002C587A2806056C3DCE"
#pragma warning disable 219 // unused const
using System;
using System.Collections.Generic;
class X { }
public class C<S>
{
enum EnumI1 : sbyte { A = 1 }
enum EnumU1 : byte { A = 2 }
enum EnumI2 : short { A = 3 }
enum EnumU2 : ushort { A = 4 }
enum EnumI4 : int { A = 5 }
enum EnumU4 : uint { A = 6 }
enum EnumI8 : long { A = 7 }
enum EnumU8 : ulong { A = 8 }
public static void F<T>()
{
const bool B = false;
const char C = '\0';
const sbyte I1 = 1;
const byte U1 = 2;
const short I2 = 3;
const ushort U2 = 4;
const int I4 = 5;
const uint U4 = 6;
const long I8 = 7;
const ulong U8 = 8;
const float R4 = (float)9.1;
const double R8 = 10.2;
const C<int>.EnumI1 EI1 = C<int>.EnumI1.A;
const C<int>.EnumU1 EU1 = C<int>.EnumU1.A;
const C<int>.EnumI2 EI2 = C<int>.EnumI2.A;
const C<int>.EnumU2 EU2 = C<int>.EnumU2.A;
const C<int>.EnumI4 EI4 = C<int>.EnumI4.A;
const C<int>.EnumU4 EU4 = C<int>.EnumU4.A;
const C<int>.EnumI8 EI8 = C<int>.EnumI8.A;
const C<int>.EnumU8 EU8 = C<int>.EnumU8.A;
const string StrWithNul = "\0";
const string EmptyStr = "";
const string NullStr = null;
const object NullObject = null;
const dynamic NullDynamic = null;
const X NullTypeDef = null;
const Action NullTypeRef = null;
const Func<Dictionary<int, C<int>>, dynamic, T, List<S>> NullTypeSpec = null;
const decimal D = 123456.78M;
}
public static void NestedScopes()
{
int x0 = 0;
{
const int c1 = 11;
int x1 = 1;
}
int y0 = 0;
{
int y1 = 1;
{
const string c2 = nameof(c2);
const string d2 = nameof(d2);
int y2 = 2;
}
}
}
}
\ No newline at end of file
// 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.IO;
using Roslyn.Test.Utilities;
using Roslyn.Utilities;
using Xunit;
namespace Microsoft.DiaSymReader.PortablePdb.UnitTests
{
using static SymTestHelpers;
public class SymBinderTests
{
private static ISymUnmanagedBinder4 SymBinder => new SymBinder();
private sealed class NotImplementedMetadataProvider : IMetadataImportProvider
{
public static readonly IMetadataImportProvider Instance = new NotImplementedMetadataProvider();
public object GetMetadataImport()
{
throw new NotImplementedException();
}
}
private sealed class TestMetadataProvider : IMetadataImportProvider
{
private readonly Func<IMetadataImport> _importProvider;
public TestMetadataProvider(Func<IMetadataImport> importProvider)
{
_importProvider = importProvider;
}
public object GetMetadataImport() => _importProvider();
}
[Fact]
public void GetReaderForFile_NextToPE()
{
var importer = new SymMetadataImport(new MemoryStream(TestResources.Documents.PortableDll));
string tempDir = Path.Combine(Path.GetDirectoryName(Path.GetTempFileName()), Guid.NewGuid().ToString());
string peFilePath = Path.Combine(tempDir, "Documents.dll");
string pdbFilePath = Path.Combine(tempDir, "Documents.pdb");
Directory.CreateDirectory(tempDir);
File.WriteAllBytes(peFilePath, TestResources.Documents.PortableDll);
File.WriteAllBytes(pdbFilePath, TestResources.Documents.PortablePdb);
string searchPath = null;
ISymUnmanagedReader symReader;
Assert.Equal(HResult.S_OK, SymBinder.GetReaderForFile(importer, peFilePath, searchPath, out symReader));
int actualCount;
Assert.Equal(HResult.S_OK, symReader.GetDocuments(0, out actualCount, null));
Assert.Equal(13, actualCount);
((ISymUnmanagedDispose)symReader).Destroy();
Directory.Delete(tempDir, recursive: true);
}
[Fact]
public void GetReaderForFile_SearchPaths()
{
var importer = new SymMetadataImport(new MemoryStream(TestResources.Documents.PortableDll));
string tempDir = Path.Combine(Path.GetDirectoryName(Path.GetTempFileName()), Guid.NewGuid().ToString());
string searchDir = Path.Combine(tempDir, "Dir");
string peFilePath = Path.Combine(tempDir, "Documents.dll");
string pdbFilePath = Path.Combine(searchDir, "Documents.pdb");
Directory.CreateDirectory(tempDir);
Directory.CreateDirectory(searchDir);
File.WriteAllBytes(peFilePath, TestResources.Documents.PortableDll);
File.WriteAllBytes(pdbFilePath, TestResources.Documents.PortablePdb);
string searchPath = searchDir;
ISymUnmanagedReader symReader;
Assert.Equal(HResult.S_OK, SymBinder.GetReaderForFile(importer, peFilePath, searchPath, out symReader));
int actualCount;
Assert.Equal(HResult.S_OK, symReader.GetDocuments(0, out actualCount, null));
Assert.Equal(13, actualCount);
((ISymUnmanagedDispose)symReader).Destroy();
Directory.Delete(tempDir, recursive: true);
}
[Fact]
public void GetReaderForFile_SearchPaths_SubDir1()
{
var importer = new SymMetadataImport(new MemoryStream(TestResources.Documents.PortableDll));
string tempDir = Path.Combine(Path.GetDirectoryName(Path.GetTempFileName()), Guid.NewGuid().ToString());
string searchDir = Path.Combine(tempDir, "Dir");
string peFilePath = Path.Combine(tempDir, "Documents.dll");
string pdbFilePath = Path.Combine(searchDir, "dll", "Documents.pdb");
Directory.CreateDirectory(tempDir);
Directory.CreateDirectory(Path.GetDirectoryName(pdbFilePath));
File.WriteAllBytes(peFilePath, TestResources.Documents.PortableDll);
File.WriteAllBytes(pdbFilePath, TestResources.Documents.PortablePdb);
string searchPath = searchDir;
ISymUnmanagedReader symReader;
Assert.Equal(HResult.S_OK, SymBinder.GetReaderForFile(importer, peFilePath, searchPath, out symReader));
int actualCount;
Assert.Equal(HResult.S_OK, symReader.GetDocuments(0, out actualCount, null));
Assert.Equal(13, actualCount);
((ISymUnmanagedDispose)symReader).Destroy();
Directory.Delete(tempDir, recursive: true);
}
[Fact]
public void GetReaderForFile_SearchPaths_SubDir2()
{
var importer = new SymMetadataImport(new MemoryStream(TestResources.Documents.PortableDll));
string tempDir = Path.Combine(Path.GetDirectoryName(Path.GetTempFileName()), Guid.NewGuid().ToString());
string searchDir = Path.Combine(tempDir, "Dir");
string peFilePath = Path.Combine(tempDir, "Documents.dll");
string pdbFilePath = Path.Combine(searchDir, "symbols", "dll", "Documents.pdb");
Directory.CreateDirectory(tempDir);
Directory.CreateDirectory(Path.GetDirectoryName(pdbFilePath));
File.WriteAllBytes(peFilePath, TestResources.Documents.PortableDll);
File.WriteAllBytes(pdbFilePath, TestResources.Documents.PortablePdb);
string searchPath = searchDir;
ISymUnmanagedReader symReader;
Assert.Equal(HResult.S_OK, SymBinder.GetReaderForFile(importer, peFilePath, searchPath, out symReader));
int actualCount;
Assert.Equal(HResult.S_OK, symReader.GetDocuments(0, out actualCount, null));
Assert.Equal(13, actualCount);
((ISymUnmanagedDispose)symReader).Destroy();
Directory.Delete(tempDir, recursive: true);
}
// TODO: test Environment, Registry (need test hooks)
[Fact]
public void GetReaderForFile_SkipNative1()
{
var importer = new SymMetadataImport(new MemoryStream(TestResources.Documents.PortableDll));
string tempDir = Path.Combine(Path.GetDirectoryName(Path.GetTempFileName()), Guid.NewGuid().ToString());
string searchDir = Path.Combine(tempDir, "Dir");
string peFilePath = Path.Combine(tempDir, "Documents.dll");
string pdbFilePath = Path.Combine(searchDir, "Documents.pdb");
string nativePdbFilePath = Path.Combine(searchDir, "symbols", "dll", "Documents.pdb");
Directory.CreateDirectory(tempDir);
Directory.CreateDirectory(Path.GetDirectoryName(pdbFilePath));
Directory.CreateDirectory(Path.GetDirectoryName(nativePdbFilePath));
File.WriteAllBytes(peFilePath, TestResources.Documents.PortableDll);
File.WriteAllBytes(pdbFilePath, TestResources.Documents.PortablePdb);
File.WriteAllBytes(nativePdbFilePath, TestResources.Documents.Pdb);
string searchPath = searchDir;
ISymUnmanagedReader symReader;
Assert.Equal(HResult.S_OK, SymBinder.GetReaderForFile(importer, peFilePath, searchPath, out symReader));
int actualCount;
Assert.Equal(HResult.S_OK, symReader.GetDocuments(0, out actualCount, null));
Assert.Equal(13, actualCount);
((ISymUnmanagedDispose)symReader).Destroy();
Directory.Delete(tempDir, recursive: true);
}
[Fact]
public void GetReaderForFile_SkipNative2()
{
var importer = new SymMetadataImport(new MemoryStream(TestResources.Documents.PortableDll));
string tempDir = Path.Combine(Path.GetDirectoryName(Path.GetTempFileName()), Guid.NewGuid().ToString());
string searchDir1 = Path.Combine(tempDir, "Dir1");
string searchDir2 = Path.Combine(tempDir, "Dir2");
string peFilePath = Path.Combine(tempDir, "Documents.dll");
string nativePdbFilePath = Path.Combine(searchDir1, "Documents.pdb");
string pdbFilePath = Path.Combine(searchDir2, "Documents.pdb");
Directory.CreateDirectory(tempDir);
Directory.CreateDirectory(Path.GetDirectoryName(pdbFilePath));
Directory.CreateDirectory(Path.GetDirectoryName(nativePdbFilePath));
File.WriteAllBytes(peFilePath, TestResources.Documents.PortableDll);
File.WriteAllBytes(pdbFilePath, TestResources.Documents.PortablePdb);
File.WriteAllBytes(nativePdbFilePath, TestResources.Documents.Pdb);
string searchPath = searchDir1 + ";" + searchDir2;
ISymUnmanagedReader symReader;
Assert.Equal(HResult.S_OK, SymBinder.GetReaderForFile(importer, peFilePath, searchPath, out symReader));
int actualCount;
Assert.Equal(HResult.S_OK, symReader.GetDocuments(0, out actualCount, null));
Assert.Equal(13, actualCount);
((ISymUnmanagedDispose)symReader).Destroy();
Directory.Delete(tempDir, recursive: true);
}
[Fact]
public void GetReaderForFile_SkipNonMatching()
{
var importer = new SymMetadataImport(new MemoryStream(TestResources.Documents.PortableDll));
string tempDir = Path.Combine(Path.GetDirectoryName(Path.GetTempFileName()), Guid.NewGuid().ToString());
string searchDir = Path.Combine(tempDir, "Dir");
string peFilePath = Path.Combine(tempDir, "Documents.dll");
string pdbFilePath = Path.Combine(searchDir, "Documents.pdb");
string anotherPdbFilePath = Path.Combine(searchDir, "symbols", "dll", "Documents.pdb");
Directory.CreateDirectory(tempDir);
Directory.CreateDirectory(Path.GetDirectoryName(pdbFilePath));
Directory.CreateDirectory(Path.GetDirectoryName(anotherPdbFilePath));
File.WriteAllBytes(peFilePath, TestResources.Documents.PortableDll);
File.WriteAllBytes(pdbFilePath, TestResources.Documents.PortablePdb);
File.WriteAllBytes(anotherPdbFilePath, TestResources.Async.PortablePdb);
string searchPath = searchDir;
ISymUnmanagedReader symReader;
Assert.Equal(HResult.S_OK, SymBinder.GetReaderForFile(importer, peFilePath, searchPath, out symReader));
int actualCount;
Assert.Equal(HResult.S_OK, symReader.GetDocuments(0, out actualCount, null));
Assert.Equal(13, actualCount);
((ISymUnmanagedDispose)symReader).Destroy();
Directory.Delete(tempDir, recursive: true);
}
[Fact]
public void GetReaderForFile_MatchingNotFound()
{
var importer = new SymMetadataImport(new MemoryStream(TestResources.Documents.PortableDll));
string tempDir = Path.Combine(Path.GetDirectoryName(Path.GetTempFileName()), Guid.NewGuid().ToString());
string searchDir = Path.Combine(tempDir, "Dir");
string peFilePath = Path.Combine(tempDir, "Documents.dll");
string anotherPdbFilePath = Path.Combine(searchDir, "symbols", "dll", "Documents.pdb");
Directory.CreateDirectory(tempDir);
Directory.CreateDirectory(Path.GetDirectoryName(anotherPdbFilePath));
File.WriteAllBytes(peFilePath, TestResources.Documents.PortableDll);
File.WriteAllBytes(anotherPdbFilePath, TestResources.Async.PortablePdb);
string searchPath = searchDir;
ISymUnmanagedReader symReader;
Assert.Equal(HResult.E_PDB_NOT_FOUND, SymBinder.GetReaderForFile(importer, peFilePath, searchPath, out symReader));
Assert.Null(symReader);
Directory.Delete(tempDir, recursive: true);
}
[Fact]
public void GetReaderFromPdbFile()
{
string filePath = Path.GetTempFileName();
File.WriteAllBytes(filePath, TestResources.Documents.PortablePdb);
ISymUnmanagedReader symReader;
Assert.Equal(HResult.S_OK, SymBinder.GetReaderFromPdbFile(NotImplementedMetadataProvider.Instance, filePath, out symReader));
int actualCount;
Assert.Equal(HResult.S_OK, symReader.GetDocuments(0, out actualCount, null));
Assert.Equal(13, actualCount);
Assert.Equal(HResult.S_FALSE, ((ISymUnmanagedDispose)symReader).Destroy());
Assert.Equal(HResult.S_OK, ((ISymUnmanagedDispose)symReader).Destroy());
Assert.Throws<ObjectDisposedException>(() => symReader.GetDocuments(0, out actualCount, null));
File.Delete(filePath);
}
[Fact]
public void GetReaderFromStream()
{
var importer = new SymMetadataImport(new MemoryStream(TestResources.Documents.PortableDll));
var stream = new MemoryStream(TestResources.Documents.PortablePdb);
ISymUnmanagedReader symReader = SymBinder.GetReaderFromStream(stream, importer);
int actualCount;
Assert.Equal(HResult.S_OK, symReader.GetDocuments(0, out actualCount, null));
Assert.Equal(13, actualCount);
Assert.Equal(HResult.S_FALSE, ((ISymUnmanagedDispose)symReader).Destroy());
Assert.Equal(HResult.S_OK, ((ISymUnmanagedDispose)symReader).Destroy());
Assert.Throws<ObjectDisposedException>(() => symReader.GetDocuments(0, out actualCount, null));
}
[Fact]
public void GetReaderFromPdbStream()
{
var stream = new MemoryStream(TestResources.Documents.PortablePdb);
ISymUnmanagedReader symReader = SymBinder.GetReaderFromPdbStream(stream, NotImplementedMetadataProvider.Instance);
int actualCount;
Assert.Equal(HResult.S_OK, symReader.GetDocuments(0, out actualCount, null));
Assert.Equal(13, actualCount);
Assert.Equal(HResult.S_FALSE, ((ISymUnmanagedDispose)symReader).Destroy());
Assert.Equal(HResult.S_OK, ((ISymUnmanagedDispose)symReader).Destroy());
Assert.Throws<ObjectDisposedException>(() => symReader.GetDocuments(0, out actualCount, null));
}
[Fact]
public void LazyMetadataImport()
{
bool importCreated = false;
ISymUnmanagedReader symReader = SymBinder.GetReaderFromPdbStream(
new MemoryStream(TestResources.Scopes.Pdb),
new TestMetadataProvider(() =>
{
importCreated = true;
return new SymMetadataImport(new MemoryStream(TestResources.Scopes.Dll));
}));
int count;
//
// C<S>.F<T>
//
ISymUnmanagedMethod mF;
Assert.Equal(HResult.S_OK, symReader.GetMethod(0x06000002, out mF));
// root scope:
ISymUnmanagedScope rootScope;
Assert.Equal(HResult.S_OK, mF.GetRootScope(out rootScope));
// child scope:
var children = GetAndValidateChildScopes(rootScope, expectedCount: 1);
var child = children[0];
Assert.Equal(HResult.S_OK, child.GetLocals(0, out count, null));
Assert.Equal(0, count);
ISymUnmanagedScope parent;
Assert.Equal(HResult.S_OK, child.GetParent(out parent));
Assert.NotSame(rootScope, parent); // a new instance should be created
ValidateRootScope(parent);
ValidateRange(parent, 0, 2);
var constants = GetAndValidateConstants(child, expectedCount: 29);
Assert.False(importCreated);
ValidateConstant(constants[28], "D", 123456.78M, new byte[] { 0x11, 0x2D });
Assert.True(importCreated);
}
}
}
// 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 Roslyn.Test.Utilities;
using System;
using System.Reflection.Metadata;
using Xunit;
namespace Microsoft.DiaSymReader.PortablePdb.UnitTests
{
using System.Runtime.InteropServices;
using static SymTestHelpers;
public class SymReaderTests
{
[Fact]
public unsafe void TestMetadataHeaders1()
{
fixed (byte* pdbPtr = TestResources.Documents.PortablePdb)
{
var pdbReader = new MetadataReader(pdbPtr, TestResources.Documents.PortablePdb.Length);
Assert.Equal("PDB v1.0", pdbReader.MetadataVersion);
Assert.Equal(MetadataKind.Ecma335, pdbReader.MetadataKind);
Assert.False(pdbReader.IsAssembly);
Assert.True(pdbReader.DebugMetadataHeader.EntryPoint.IsNil);
AssertEx.Equal(new byte[]
{
0x89, 0x03, 0x86, 0xAD, 0xFF, 0x27, 0x56, 0x46, 0x9F, 0x3F, 0xE2, 0x18, 0x4B, 0xEF, 0xFC, 0xC0, 0xBE, 0x0C, 0x52, 0xA0
}, pdbReader.DebugMetadataHeader.Id);
}
}
[Fact]
public void MatchesModule()
{
var symReader = (ISymUnmanagedReader4)CreateSymReaderFromResource(TestResources.Documents.PortableDllAndPdb);
var expectedGuid = new Guid(new byte[] { 0x89, 0x03, 0x86, 0xAD, 0xFF, 0x27, 0x56, 0x46, 0x9F, 0x3F, 0xE2, 0x18, 0x4B, 0xEF, 0xFC, 0xC0 });
uint expectedStamp = 0xA0520CBE;
var anotherGuid = new Guid(new byte[] { 0x88, 0x03, 0x86, 0xAD, 0xFF, 0x27, 0x56, 0x46, 0x9F, 0x3F, 0xE2, 0x18, 0x4B, 0xEF, 0xFC, 0xC0 });
var anotherStamp = 0xA0520CBF;
bool matches;
Assert.Equal(HResult.S_OK, symReader.MatchesModule(expectedGuid, expectedStamp, 1, out matches));
Assert.True(matches);
Assert.Equal(HResult.S_OK, symReader.MatchesModule(expectedGuid, expectedStamp, -1, out matches));
Assert.False(matches);
Assert.Equal(HResult.S_OK, symReader.MatchesModule(expectedGuid, expectedStamp, 2, out matches));
Assert.False(matches);
Assert.Equal(HResult.S_OK, symReader.MatchesModule(anotherGuid, expectedStamp, 1, out matches));
Assert.False(matches);
Assert.Equal(HResult.S_OK, symReader.MatchesModule(expectedGuid, anotherStamp, 1, out matches));
Assert.False(matches);
}
[Fact]
public unsafe void GetPortableDebugMetadata()
{
var symReader = (ISymUnmanagedReader4)CreateSymReaderFromResource(TestResources.Documents.PortableDllAndPdb);
byte* ptr;
int size;
Assert.Equal(HResult.S_OK, symReader.GetPortableDebugMetadata(out ptr, out size));
Assert.Equal(size, TestResources.Documents.PortablePdb.Length);
byte[] actual = new byte[size];
Marshal.Copy((IntPtr)ptr, actual, 0, size);
AssertEx.Equal(TestResources.Documents.PortablePdb, actual);
}
[Fact]
public unsafe void GetSourceServerData()
{
var symReader = (ISymUnmanagedReader4)CreateSymReaderFromResource(TestResources.Documents.PortableDllAndPdb);
byte* ptr;
int size;
Assert.Equal(HResult.S_OK, symReader.GetSourceServerData(out ptr, out size));
Assert.Equal(size, 0);
Assert.Equal(IntPtr.Zero, (IntPtr)ptr);
}
[Fact]
public void TestGetDocuments1()
{
var symReader = CreateSymReaderFromResource(TestResources.Documents.PortableDllAndPdb);
int actualCount;
Assert.Equal(HResult.S_OK, symReader.GetDocuments(0, out actualCount, null));
Assert.Equal(13, actualCount);
var actualDocuments = new ISymUnmanagedDocument[actualCount];
int actualCount2;
Assert.Equal(HResult.S_OK, symReader.GetDocuments(actualCount, out actualCount2, actualDocuments));
Assert.Equal(13, actualCount2);
ValidateDocument(actualDocuments[0],
url: @"C:\Documents.cs",
algorithmId: "ff1816ec-aa5e-4d10-87f7-6f4963833460",
checksum: new byte[] { 0xDB, 0xEB, 0x2A, 0x06, 0x7B, 0x2F, 0x0E, 0x0D, 0x67, 0x8A, 0x00, 0x2C, 0x58, 0x7A, 0x28, 0x06, 0x05, 0x6C, 0x3D, 0xCE });
ValidateDocument(actualDocuments[1], url: @"C:\a\b\c\d\1.cs", algorithmId: null, checksum: null);
ValidateDocument(actualDocuments[2], url: @"C:\a\b\c\D\2.cs", algorithmId: null, checksum: null);
ValidateDocument(actualDocuments[3], url: @"C:\a\b\C\d\3.cs", algorithmId: null, checksum: null);
ValidateDocument(actualDocuments[4], url: @"C:\a\b\c\d\x.cs", algorithmId: null, checksum: null);
ValidateDocument(actualDocuments[5], url: @"C:\A\b\c\x.cs", algorithmId: null, checksum: null);
ValidateDocument(actualDocuments[6], url: @"C:\a\b\x.cs", algorithmId: null, checksum: null);
ValidateDocument(actualDocuments[7], url: @"C:\a\B\3.cs", algorithmId: null, checksum: null);
ValidateDocument(actualDocuments[8], url: @"C:\a\B\c\4.cs", algorithmId: null, checksum: null);
ValidateDocument(actualDocuments[9], url: @"C:\*\5.cs", algorithmId: null, checksum: null);
ValidateDocument(actualDocuments[10], url: @":6.cs", algorithmId: null, checksum: null);
ValidateDocument(actualDocuments[11], url: @"C:\a\b\X.cs", algorithmId: null, checksum: null);
ValidateDocument(actualDocuments[12], url: @"C:\a\B\x.cs", algorithmId: null, checksum: null);
}
[Fact]
public void TestGetDocument1()
{
var symReader = CreateSymReaderFromResource(TestResources.Documents.PortableDllAndPdb);
TestGetDocument(symReader, @"x.cs", expectedUrl: @"C:\a\b\c\d\x.cs");
TestGetDocument(symReader, @"X.CS", expectedUrl: @"C:\a\b\c\d\x.cs");
TestGetDocument(symReader, @"X.cs", expectedUrl: @"C:\a\b\X.cs");
TestGetDocument(symReader, @"1.cs", expectedUrl: @"C:\a\b\c\d\1.cs");
TestGetDocument(symReader, @"2.cs", expectedUrl: @"C:\a\b\c\D\2.cs");
TestGetDocument(symReader, @"3.cs", expectedUrl: @"C:\a\b\C\d\3.cs");
TestGetDocument(symReader, @"C:\A\b\c\x.cs", expectedUrl: @"C:\A\b\c\x.cs");
TestGetDocument(symReader, @"C:\a\b\x.cs", expectedUrl: @"C:\a\b\x.cs");
TestGetDocument(symReader, @"C:\*\5.cs", expectedUrl: @"C:\*\5.cs");
TestGetDocument(symReader, @"5.cs", expectedUrl: @"C:\*\5.cs");
TestGetDocument(symReader, @":6.cs", expectedUrl: @":6.cs");
TestGetDocument(symReader, @"C:\a\B\x.cs", expectedUrl: @"C:\a\B\x.cs");
TestGetDocument(symReader, @"C:\a\b\X.cs", expectedUrl: @"C:\a\b\X.cs");
}
private void TestGetDocument(ISymUnmanagedReader symReader, string name, string expectedUrl)
{
ISymUnmanagedDocument document;
if (expectedUrl != null)
{
// guids are ignored
Assert.Equal(HResult.S_OK, symReader.GetDocument(name, Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), out document));
ValidateDocumentUrl(document, expectedUrl);
}
else
{
// guids are ignored
Assert.Equal(HResult.S_FALSE, symReader.GetDocument(name, Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), out document));
Assert.Null(document);
}
}
[Fact]
public void TestSymGetAttribute()
{
var symReader = CreateSymReaderFromResource(TestResources.Documents.PortableDllAndPdb);
int actualCount;
int actualCount2;
Assert.Equal(HResult.S_FALSE, symReader.GetSymAttribute(0, "<PortablePdbImage>", 0, out actualCount, null));
byte[] image = new byte[actualCount];
Assert.Equal(HResult.S_OK, symReader.GetSymAttribute(0, "<PortablePdbImage>", actualCount, out actualCount2, image));
Assert.Equal(actualCount, actualCount2);
AssertEx.Equal(TestResources.Documents.PortablePdb, image);
}
[Fact]
public void TestMethods1()
{
var symReader = CreateSymReaderFromResource(TestResources.Scopes.DllAndPdb);
int count;
//
// C<S>.F<T>
//
ISymUnmanagedMethod mF;
Assert.Equal(HResult.S_OK, symReader.GetMethod(0x06000002, out mF));
// root scope:
ISymUnmanagedScope rootScope, rootScopeCopy;
Assert.Equal(HResult.S_OK, mF.GetRootScope(out rootScope));
Assert.Equal(HResult.S_OK, mF.GetRootScope(out rootScopeCopy));
Assert.NotSame(rootScope, rootScopeCopy);
ValidateRange(rootScope, 0, 2);
ValidateRootScope(rootScope);
// child scope:
var children = GetAndValidateChildScopes(rootScope, expectedCount: 1);
var child = children[0];
Assert.Equal(HResult.S_OK, child.GetLocals(0, out count, null));
Assert.Equal(0, count);
ISymUnmanagedScope parent;
Assert.Equal(HResult.S_OK, child.GetParent(out parent));
Assert.NotSame(rootScope, parent); // a new instance should be created
ValidateRootScope(parent);
ValidateRange(parent, 0, 2);
var constants = GetAndValidateConstants(child, expectedCount: 29);
ValidateConstant(constants[0], "B", (short)0, new byte[] { 0x02 });
ValidateConstant(constants[1], "C", (ushort)'\0', new byte[] { 0x03 });
ValidateConstant(constants[2], "I1", (short)1, new byte[] { 0x04 });
ValidateConstant(constants[3], "U1", (short)2, new byte[] { 0x05 });
ValidateConstant(constants[4], "I2", (short)3, new byte[] { 0x06 });
ValidateConstant(constants[5], "U2", (ushort)4, new byte[] { 0x07 });
ValidateConstant(constants[6], "I4", 5, new byte[] { 0x08 });
ValidateConstant(constants[7], "U4", (uint)6, new byte[] { 0x09 });
ValidateConstant(constants[8], "I8", (long)7, new byte[] { 0x0A });
ValidateConstant(constants[9], "U8", (ulong)8, new byte[] { 0x0B });
ValidateConstant(constants[10], "R4", (float)9.1, new byte[] { 0x0C });
ValidateConstant(constants[11], "R8", 10.2, new byte[] { 0x0D });
ValidateConstant(constants[12], "EI1", (short)1, new byte[] { 0x11, 0x06 });
ValidateConstant(constants[13], "EU1", (short)2, new byte[] { 0x11, 0x0A });
ValidateConstant(constants[14], "EI2", (short)3, new byte[] { 0x11, 0x0E });
ValidateConstant(constants[15], "EU2", (ushort)4, new byte[] { 0x11, 0x12 });
ValidateConstant(constants[16], "EI4", 5, new byte[] { 0x11, 0x16 });
ValidateConstant(constants[17], "EU4", (uint)6, new byte[] { 0x11, 0x1A });
ValidateConstant(constants[18], "EI8", (long)7, new byte[] { 0x11, 0x1E });
ValidateConstant(constants[19], "EU8", (ulong)8, new byte[] { 0x11, 0x22 });
ValidateConstant(constants[20], "StrWithNul", "\0", new byte[] { 0x0e });
ValidateConstant(constants[21], "EmptyStr", "", new byte[] { 0x0e });
ValidateConstant(constants[22], "NullStr", 0, new byte[] { 0x0e });
ValidateConstant(constants[23], "NullObject", 0, new byte[] { 0x1c });
ValidateConstant(constants[24], "NullDynamic", 0, new byte[] { 0x1c });
// Note: Native PDBs produce expanded form of the signature stored as StandAloneSig.
// In Portable PDBs we produce a TypeSpec. Since a StandAlongSig can also contain a TypeSpec
// the consumers should be able to resolve it. If we find a case where that's not true we can
// potentially expand the TypeSpec signature in ISymUnmanagedConstant.GetValue.
ValidateConstant(constants[25], "NullTypeDef", 0, new byte[] { 0x12, 0x08 });
ValidateConstant(constants[26], "NullTypeRef", 0, new byte[] { 0x12, 0x1D });
ValidateConstant(constants[27], "NullTypeSpec", 0, new byte[] { 0x12, 0x26 });
ValidateConstant(constants[28], "D", 123456.78M, new byte[] { 0x11, 0x2D });
//
// C<S>.NestedScopes
//
ISymUnmanagedMethod mNestedScopes;
Assert.Equal(HResult.S_OK, symReader.GetMethod(0x06000003, out mNestedScopes));
// root scope:
Assert.Equal(HResult.S_OK, mNestedScopes.GetRootScope(out rootScope));
ValidateRootScope(rootScope);
var main = GetAndValidateChildScopes(rootScope, expectedCount: 1)[0];
constants = GetAndValidateConstants(main, expectedCount: 0);
var variables = GetAndValidateVariables(main, expectedCount: 2);
ValidateVariable(variables[0], "x0", 0, LocalVariableAttributes.None, new byte[] { 0x08 });
ValidateVariable(variables[1], "y0", 1, LocalVariableAttributes.None, new byte[] { 0x08 });
children = GetAndValidateChildScopes(main, expectedCount: 2);
var first = children[0];
GetAndValidateChildScopes(first, expectedCount: 0);
var second = children[1];
var third = GetAndValidateChildScopes(second, expectedCount: 1)[0];
GetAndValidateChildScopes(third, expectedCount: 0);
constants = GetAndValidateConstants(first, expectedCount: 1);
variables = GetAndValidateVariables(first, expectedCount: 1);
ValidateConstant(constants[0], "c1", 11, new byte[] { 0x08 });
ValidateVariable(variables[0], "x1", 2, LocalVariableAttributes.None, new byte[] { 0x08 });
constants = GetAndValidateConstants(second, expectedCount: 0);
variables = GetAndValidateVariables(second, expectedCount: 1);
ValidateVariable(variables[0], "y1", 3, LocalVariableAttributes.None, new byte[] { 0x08 });
constants = GetAndValidateConstants(third, expectedCount: 2);
variables = GetAndValidateVariables(third, expectedCount: 1);
ValidateConstant(constants[0], "c2", "c2", new byte[] { 0x0e });
ValidateConstant(constants[1], "d2", "d2", new byte[] { 0x0e });
ValidateVariable(variables[0], "y2", 4, LocalVariableAttributes.None, new byte[] { 0x08 });
// TODO:
// f.GetOffset();
// f.GetRanges();
ISymUnmanagedNamespace ns;
ISymUnmanagedVariable[] ps = null;
Assert.Equal(HResult.E_NOTIMPL, mF.GetNamespace(out ns));
Assert.Equal(HResult.E_NOTIMPL, mF.GetParameters(0, out count, ps));
// TODO:
// f.GetScopeFromOffset()
}
[Fact]
public void TestAsyncMethods()
{
var symReader = CreateSymReaderFromResource(TestResources.Async.DllAndPdb);
ValidateAsyncMethod(
symReader,
moveNextMethodToken: 0x06000005,
kickoffMethodToken: 0x06000001,
catchHandlerOffset: -1,
yieldOffsets: new[] { 0x46, 0xAF, 0x11A },
resumeOffsets: new[] { 0x64, 0xCE, 0x136 });
ValidateAsyncMethod(
symReader,
moveNextMethodToken: 0x06000008,
kickoffMethodToken: 0x06000002,
catchHandlerOffset: 0x76,
yieldOffsets: new[] { 0x2D },
resumeOffsets: new[] { 0x48 });
}
[Fact]
public void TestAsyncMethods_GetAsyncStepInfo()
{
var symReader = CreateSymReaderFromResource(TestResources.Async.DllAndPdb);
ISymUnmanagedMethod method;
Assert.Equal(HResult.S_OK, symReader.GetMethod(0x06000005, out method));
var asyncMethod = (ISymUnmanagedAsyncMethod)method;
var actualYieldOffsets = new int[1];
var actualResumeOffsets = new int[1];
var actualResumeMethods = new int[1];
int count2;
Assert.Equal(HResult.S_OK, asyncMethod.GetAsyncStepInfo(1, out count2, actualYieldOffsets, actualResumeOffsets, actualResumeMethods));
Assert.Equal(1, count2);
Assert.NotEqual(0, actualYieldOffsets[0]);
Assert.NotEqual(0, actualResumeOffsets[0]);
Assert.NotEqual(0, actualResumeMethods[0]);
actualYieldOffsets = new int[5];
actualResumeOffsets = new int[5];
actualResumeMethods = new int[5];
Assert.Equal(HResult.S_OK, asyncMethod.GetAsyncStepInfo(4, out count2, actualYieldOffsets, actualResumeOffsets, actualResumeMethods));
Assert.Equal(3, count2);
for (int i = 0; i < 3; i++)
{
Assert.NotEqual(0, actualYieldOffsets[i]);
Assert.NotEqual(0, actualResumeOffsets[i]);
Assert.NotEqual(0, actualResumeMethods[i]);
}
for (int i = 3; i < 5; i++)
{
Assert.Equal(0, actualYieldOffsets[i]);
Assert.Equal(0, actualResumeOffsets[i]);
Assert.Equal(0, actualResumeMethods[i]);
}
}
[Fact]
public void TestAsyncMethods_Errors()
{
var symReader = CreateSymReaderFromResource(TestResources.Scopes.DllAndPdb);
ISymUnmanagedMethod method;
Assert.Equal(HResult.S_OK, symReader.GetMethod(0x06000002, out method));
var asyncMethod = (ISymUnmanagedAsyncMethod)method;
bool isAsync;
Assert.Equal(HResult.S_OK, asyncMethod.IsAsyncMethod(out isAsync));
Assert.False(isAsync);
int actualKickoffMethodToken;
Assert.Equal(HResult.E_UNEXPECTED, asyncMethod.GetKickoffMethod(out actualKickoffMethodToken));
bool hasCatchHandlerILOffset;
Assert.Equal(HResult.E_UNEXPECTED, asyncMethod.HasCatchHandlerILOffset(out hasCatchHandlerILOffset));
int actualCatchHandlerOffset;
Assert.Equal(HResult.E_UNEXPECTED, asyncMethod.GetCatchHandlerILOffset(out actualCatchHandlerOffset));
int count, count2;
Assert.Equal(HResult.E_UNEXPECTED, asyncMethod.GetAsyncStepInfoCount(out count));
Assert.Equal(HResult.E_UNEXPECTED, asyncMethod.GetAsyncStepInfo(count, out count2, null, null, null));
}
}
}
\ No newline at end of file
// 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;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Text;
using Roslyn.Utilities;
using Xunit;
namespace Roslyn.Test.Utilities
{
/// <summary>
/// Assert style type to deal with the lack of features in xUnit's Assert type
/// </summary>
public static class AssertEx
{
#region AssertEqualityComparer<T>
private class AssertEqualityComparer<T> : IEqualityComparer<T>
{
private static readonly IEqualityComparer<T> s_instance = new AssertEqualityComparer<T>();
private static bool CanBeNull()
{
var type = typeof(T);
return !type.GetTypeInfo().IsValueType ||
(type.GetTypeInfo().IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>));
}
public static bool IsNull(T @object)
{
if (!CanBeNull())
{
return false;
}
return object.Equals(@object, default(T));
}
public static bool Equals(T left, T right)
{
return s_instance.Equals(left, right);
}
bool IEqualityComparer<T>.Equals(T x, T y)
{
if (CanBeNull())
{
if (object.Equals(x, default(T)))
{
return object.Equals(y, default(T));
}
if (object.Equals(y, default(T)))
{
return false;
}
}
if (x.GetType() != y.GetType())
{
return false;
}
var equatable = x as IEquatable<T>;
if (equatable != null)
{
return equatable.Equals(y);
}
var comparableT = x as IComparable<T>;
if (comparableT != null)
{
return comparableT.CompareTo(y) == 0;
}
var comparable = x as IComparable;
if (comparable != null)
{
return comparable.CompareTo(y) == 0;
}
var enumerableX = x as IEnumerable;
var enumerableY = y as IEnumerable;
if (enumerableX != null && enumerableY != null)
{
var enumeratorX = enumerableX.GetEnumerator();
var enumeratorY = enumerableY.GetEnumerator();
while (true)
{
bool hasNextX = enumeratorX.MoveNext();
bool hasNextY = enumeratorY.MoveNext();
if (!hasNextX || !hasNextY)
{
return hasNextX == hasNextY;
}
if (!Equals(enumeratorX.Current, enumeratorY.Current))
{
return false;
}
}
}
return object.Equals(x, y);
}
int IEqualityComparer<T>.GetHashCode(T obj)
{
throw new NotImplementedException();
}
}
#endregion
public static void AreEqual<T>(T expected, T actual, string message = null, IEqualityComparer<T> comparer = null)
{
if (ReferenceEquals(expected, actual))
{
return;
}
if (expected == null)
{
Fail("expected was null, but actual wasn't\r\n" + message);
}
else if (actual == null)
{
Fail("actual was null, but expected wasn't\r\n" + message);
}
else
{
if (!(comparer != null ?
comparer.Equals(expected, actual) :
AssertEqualityComparer<T>.Equals(expected, actual)))
{
Fail("Expected and actual were different.\r\n" +
"Expected: " + expected + "\r\n" +
"Actual: " + actual + "\r\n" +
message);
}
}
}
public static void Equal<T>(ImmutableArray<T> expected, IEnumerable<T> actual, Func<T, T, bool> comparer = null, string message = null)
{
if (actual == null || expected.IsDefault)
{
Assert.True((actual == null) == expected.IsDefault, message);
}
else
{
Equal((IEnumerable<T>)expected, actual, comparer, message);
}
}
public static void Equal<T>(IEnumerable<T> expected, ImmutableArray<T> actual, Func<T, T, bool> comparer = null, string message = null, string itemSeparator = null)
{
if (expected == null || actual.IsDefault)
{
Assert.True((expected == null) == actual.IsDefault, message);
}
else
{
Equal(expected, (IEnumerable<T>)actual, comparer, message, itemSeparator);
}
}
public static void Equal<T>(ImmutableArray<T> expected, ImmutableArray<T> actual, Func<T, T, bool> comparer = null, string message = null, string itemSeparator = null)
{
Equal(expected, (IEnumerable<T>)actual, comparer, message, itemSeparator);
}
public static void Equal<T>(IEnumerable<T> expected, IEnumerable<T> actual, Func<T, T, bool> comparer = null, string message = null,
string itemSeparator = null, Func<T, string> itemInspector = null)
{
if (ReferenceEquals(expected, actual))
{
return;
}
if (expected == null)
{
Fail("expected was null, but actual wasn't\r\n" + message);
}
else if (actual == null)
{
Fail("actual was null, but expected wasn't\r\n" + message);
}
else if (!SequenceEqual(expected, actual, comparer))
{
string assertMessage = GetAssertMessage(expected, actual, comparer, itemInspector, itemSeparator);
if (message != null)
{
assertMessage = message + "\r\n" + assertMessage;
}
Assert.True(false, assertMessage);
}
}
private static bool SequenceEqual<T>(IEnumerable<T> expected, IEnumerable<T> actual, Func<T, T, bool> comparer = null)
{
var enumerator1 = expected.GetEnumerator();
var enumerator2 = actual.GetEnumerator();
while (true)
{
var hasNext1 = enumerator1.MoveNext();
var hasNext2 = enumerator2.MoveNext();
if (hasNext1 != hasNext2)
{
return false;
}
if (!hasNext1)
{
break;
}
var value1 = enumerator1.Current;
var value2 = enumerator2.Current;
if (!(comparer != null ? comparer(value1, value2) : AssertEqualityComparer<T>.Equals(value1, value2)))
{
return false;
}
}
return true;
}
public static void SetEqual<T>(IEnumerable<T> expected, IEnumerable<T> actual, IEqualityComparer<T> comparer = null, string message = null, string itemSeparator = "\r\n")
{
var expectedSet = new HashSet<T>(expected, comparer);
var result = expected.Count() == actual.Count() && expectedSet.SetEquals(actual);
if (!result)
{
if (string.IsNullOrEmpty(message))
{
message = GetAssertMessage(expected, actual);
}
Assert.True(result, message);
}
}
public static void SetEqual<T>(IEnumerable<T> actual, params T[] expected)
{
var expectedSet = new HashSet<T>(expected);
Assert.True(expectedSet.SetEquals(actual), string.Format("Expected: {0}\nActual: {1}", ToString(expected), ToString(actual)));
}
public static void None<T>(IEnumerable<T> actual, Func<T, bool> predicate)
{
var none = !actual.Any(predicate);
if (!none)
{
Assert.True(none, string.Format(
"Unexpected item found among existing items: {0}\nExisting items: {1}",
ToString(actual.First(predicate)),
ToString(actual)));
}
}
public static void Any<T>(IEnumerable<T> actual, Func<T, bool> predicate)
{
var any = actual.Any(predicate);
Assert.True(any, string.Format("No expected item was found.\nExisting items: {0}", ToString(actual)));
}
public static void All<T>(IEnumerable<T> actual, Func<T, bool> predicate)
{
var all = actual.All(predicate);
if (!all)
{
Assert.True(all, string.Format(
"Not all items satisfy condition:\n{0}",
ToString(actual.Where(i => !predicate(i)))));
}
}
public static string ToString(object o)
{
return Convert.ToString(o);
}
public static string ToString<T>(IEnumerable<T> list, string separator = ", ", Func<T, string> itemInspector = null)
{
if (itemInspector == null)
{
itemInspector = i => Convert.ToString(i);
}
return string.Join(separator, list.Select(itemInspector));
}
public static void Fail(string message)
{
Assert.False(true, message);
}
public static void Fail(string format, params object[] args)
{
Assert.False(true, string.Format(format, args));
}
public static void Null<T>(T @object, string message = null)
{
Assert.True(AssertEqualityComparer<T>.IsNull(@object), message);
}
public static void NotNull<T>(T @object, string message = null)
{
Assert.False(AssertEqualityComparer<T>.IsNull(@object), message);
}
public static void ThrowsArgumentNull(string parameterName, Action del)
{
try
{
del();
}
catch (ArgumentNullException e)
{
Assert.Equal(parameterName, e.ParamName);
}
}
public static void ThrowsArgumentException(string parameterName, Action del)
{
try
{
del();
}
catch (ArgumentException e)
{
Assert.Equal(parameterName, e.ParamName);
}
}
public static T Throws<T>(Action del, bool allowDerived = false) where T : Exception
{
try
{
del();
}
catch (Exception ex)
{
var type = ex.GetType();
if (type.Equals(typeof(T)))
{
// We got exactly the type we wanted
return (T)ex;
}
if (allowDerived && typeof(T).GetTypeInfo().IsAssignableFrom(type.GetTypeInfo()))
{
// We got a derived type
return (T)ex;
}
// We got some other type. We know that type != typeof(T), and so we'll use Assert.Equal since Xunit
// will give a nice Expected/Actual output for this
Assert.Equal(typeof(T), type);
}
throw new Exception("No exception was thrown.");
}
internal static string NormalizeWhitespace(string input)
{
var output = new StringBuilder();
var inputLines = input.Split('\n', '\r');
foreach (var line in inputLines)
{
var trimmedLine = line.Trim();
if (trimmedLine.Length > 0)
{
if (!(trimmedLine[0] == '{' || trimmedLine[0] == '}'))
{
output.Append(" ");
}
output.AppendLine(trimmedLine);
}
}
return output.ToString();
}
public static string GetAssertMessage<T>(IEnumerable<T> expected, IEnumerable<T> actual, bool escapeQuotes, string expectedValueSourcePath = null, int expectedValueSourceLine = 0)
{
Func<T, string> itemInspector = escapeQuotes ? new Func<T, string>(t => t.ToString().Replace("\"", "\"\"")) : null;
return GetAssertMessage(expected, actual, itemInspector: itemInspector, itemSeparator: "\r\n", expectedValueSourcePath: expectedValueSourcePath, expectedValueSourceLine: expectedValueSourceLine);
}
public static string GetAssertMessage<T>(
IEnumerable<T> expected,
IEnumerable<T> actual,
Func<T, T, bool> comparer = null,
Func<T, string> itemInspector = null,
string itemSeparator = null,
string expectedValueSourcePath = null,
int expectedValueSourceLine = 0)
{
if (itemInspector == null)
{
if (expected is IEnumerable<byte>)
{
itemInspector = b => $"0x{b:X2}";
}
else
{
itemInspector = new Func<T, string>(obj => (obj != null) ? obj.ToString() : "<null>");
}
}
if (itemSeparator == null)
{
if (expected is IEnumerable<byte>)
{
itemSeparator = ", ";
}
else
{
itemSeparator = ",\r\n";
}
}
var actualString = string.Join(itemSeparator, actual.Select(itemInspector));
var message = new StringBuilder();
message.AppendLine();
message.AppendLine("Actual:");
message.AppendLine(actualString);
return message.ToString();
}
}
}
// 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;
using System.Runtime.InteropServices;
using Roslyn.Test.Utilities;
using Xunit;
namespace Microsoft.DiaSymReader.PortablePdb.UnitTests
{
internal static class SymTestHelpers
{
[DefaultDllImportSearchPaths(DllImportSearchPath.AssemblyDirectory)]
[DllImport("Microsoft.DiaSymReader.Native.x86.dll", EntryPoint = "CreateSymReader")]
private extern static void CreateSymReader32(ref Guid id, [MarshalAs(UnmanagedType.IUnknown)]out object symReader);
[DefaultDllImportSearchPaths(DllImportSearchPath.AssemblyDirectory)]
[DllImport("Microsoft.DiaSymReader.Native.amd64.dll", EntryPoint = "CreateSymReader")]
private extern static void CreateSymReader64(ref Guid id, [MarshalAs(UnmanagedType.IUnknown)]out object symReader);
private static ISymUnmanagedReader3 CreateNativeSymReader(Stream pdbStream, object metadataImporter)
{
object symReader = null;
var guid = default(Guid);
if (IntPtr.Size == 4)
{
CreateSymReader32(ref guid, out symReader);
}
else
{
CreateSymReader64(ref guid, out symReader);
}
var reader = (ISymUnmanagedReader3)symReader;
reader.Initialize(pdbStream, metadataImporter);
return reader;
}
private static ISymUnmanagedReader3 CreatePortableSymReader(Stream pdbStream, object metadataImporter)
{
return (ISymUnmanagedReader3)new SymBinder().GetReaderFromStream(pdbStream, metadataImporter);
}
public static ISymUnmanagedReader3 CreateReader(Stream pdbStream, object metadataImporter)
{
pdbStream.Position = 0;
bool isPortable = pdbStream.ReadByte() == 'B' && pdbStream.ReadByte() == 'S' && pdbStream.ReadByte() == 'J' && pdbStream.ReadByte() == 'B';
pdbStream.Position = 0;
if (isPortable)
{
return CreatePortableSymReader(pdbStream, metadataImporter);
}
else
{
return CreateNativeSymReader(pdbStream, metadataImporter);
}
}
public static ISymUnmanagedReader CreateSymReaderFromResource(KeyValuePair<byte[], byte[]> peAndPdb)
{
return CreateReader(new MemoryStream(peAndPdb.Value), metadataImporter: new SymMetadataImport(new MemoryStream(peAndPdb.Key)));
}
public static void ValidateDocumentUrl(ISymUnmanagedDocument document, string url)
{
int actualCount, actualCount2;
Assert.Equal(HResult.S_OK, document.GetUrl(0, out actualCount, null));
char[] actualUrl = new char[actualCount];
Assert.Equal(HResult.S_OK, document.GetUrl(actualCount, out actualCount2, actualUrl));
Assert.Equal(url, new string(actualUrl, 0, actualUrl.Length - 1));
}
public static void ValidateDocument(ISymUnmanagedDocument document, string url, string algorithmId, byte[] checksum)
{
ValidateDocumentUrl(document, url);
int actualCount, actualCount2;
if (checksum != null)
{
Assert.Equal(HResult.S_OK, document.GetChecksum(0, out actualCount, null));
byte[] actualChecksum = new byte[actualCount];
Assert.Equal(HResult.S_OK, document.GetChecksum(actualCount, out actualCount2, actualChecksum));
Assert.Equal(actualCount, actualCount2);
AssertEx.Equal(checksum, actualChecksum);
}
else
{
Assert.Equal(HResult.S_FALSE, document.GetChecksum(0, out actualCount, null));
Assert.Equal(0, actualCount);
}
var guid = Guid.NewGuid();
Assert.Equal(HResult.S_OK, document.GetChecksumAlgorithmId(ref guid));
Assert.Equal(algorithmId != null ? new Guid(algorithmId) : default(Guid), guid);
guid = Guid.NewGuid();
Assert.Equal(HResult.S_OK, document.GetLanguageVendor(ref guid));
Assert.Equal(new Guid("994b45c4-e6e9-11d2-903f-00c04fa302a1"), guid);
guid = Guid.NewGuid();
Assert.Equal(HResult.S_OK, document.GetDocumentType(ref guid));
Assert.Equal(new Guid("5a869d0b-6611-11d3-bd2a-0000f80849bd"), guid);
}
public static void ValidateRange(ISymUnmanagedScope scope, int expectedStartOffset, int expectedLength)
{
int actualOffset;
Assert.Equal(HResult.S_OK, scope.GetStartOffset(out actualOffset));
Assert.Equal(expectedStartOffset, actualOffset);
Assert.Equal(HResult.S_OK, scope.GetEndOffset(out actualOffset));
Assert.Equal(expectedStartOffset + expectedLength, 2);
}
public static void ValidateConstant(ISymUnmanagedConstant constant, string name, object value, byte[] signature)
{
int length, length2;
// name:
Assert.Equal(HResult.S_OK, constant.GetName(0, out length, null));
Assert.Equal(name.Length + 1, length);
var actualName = new char[length];
Assert.Equal(HResult.S_OK, constant.GetName(length, out length2, actualName));
Assert.Equal(length, length2);
Assert.Equal(name + "\0", new string(actualName));
// value:
object actualValue;
Assert.Equal(HResult.S_OK, constant.GetValue(out actualValue));
Assert.Equal(value, actualValue);
// signature:
Assert.Equal(HResult.S_OK, constant.GetSignature(0, out length, null));
var actualSignature = new byte[length];
Assert.Equal(HResult.S_OK, constant.GetSignature(length, out length2, actualSignature));
Assert.Equal(length, length2);
AssertEx.Equal(signature, actualSignature);
}
public static void ValidateVariable(ISymUnmanagedVariable variable, string name, int slot, LocalVariableAttributes attributes, byte[] signature)
{
int length, length2;
// name:
Assert.Equal(HResult.S_OK, variable.GetName(0, out length, null));
Assert.Equal(name.Length + 1, length);
var actualName = new char[length];
Assert.Equal(HResult.S_OK, variable.GetName(length, out length2, actualName));
Assert.Equal(length, length2);
Assert.Equal(name + "\0", new string(actualName));
int value;
Assert.Equal(HResult.S_OK, variable.GetAddressField1(out value));
Assert.Equal(slot, value);
Assert.Equal(HResult.E_NOTIMPL, variable.GetAddressField2(out value));
Assert.Equal(HResult.E_NOTIMPL, variable.GetAddressField3(out value));
Assert.Equal(HResult.E_NOTIMPL, variable.GetStartOffset(out value));
Assert.Equal(HResult.E_NOTIMPL, variable.GetEndOffset(out value));
Assert.Equal(HResult.S_OK, variable.GetAttributes(out value));
Assert.Equal(attributes, (LocalVariableAttributes)value);
Assert.Equal(HResult.S_OK, variable.GetAddressKind(out value));
Assert.Equal(1, value);
Assert.Equal(HResult.S_OK, variable.GetSignature(0, out length, null));
var actualSignature = new byte[length];
Assert.Equal(HResult.S_OK, variable.GetSignature(length, out length2, actualSignature));
Assert.Equal(length, length2);
AssertEx.Equal(signature, actualSignature);
}
public static void ValidateRootScope(ISymUnmanagedScope scope)
{
int count;
Assert.Equal(HResult.S_OK, scope.GetLocalCount(out count));
Assert.Equal(0, count);
Assert.Equal(HResult.S_OK, ((ISymUnmanagedScope2)scope).GetConstantCount(out count));
Assert.Equal(0, count);
Assert.Equal(HResult.S_OK, ((ISymUnmanagedScope2)scope).GetNamespaces(0, out count, null));
Assert.Equal(0, count);
ISymUnmanagedScope parent;
Assert.Equal(HResult.S_OK, scope.GetParent(out parent));
Assert.Null(parent);
}
public static ISymUnmanagedScope[] GetAndValidateChildScopes(ISymUnmanagedScope scope, int expectedCount)
{
int count, count2;
Assert.Equal(HResult.S_OK, scope.GetChildren(0, out count, null));
Assert.Equal(expectedCount, count);
var children = new ISymUnmanagedScope[count];
Assert.Equal(HResult.S_OK, scope.GetChildren(count, out count2, children));
Assert.Equal(count, count2);
return children;
}
public static ISymUnmanagedConstant[] GetAndValidateConstants(ISymUnmanagedScope scope, int expectedCount)
{
int count, count2;
Assert.Equal(HResult.S_OK, ((ISymUnmanagedScope2)scope).GetConstants(0, out count, null));
Assert.Equal(expectedCount, count);
var constants = new ISymUnmanagedConstant[count];
Assert.Equal(HResult.S_OK, ((ISymUnmanagedScope2)scope).GetConstants(count, out count2, constants));
Assert.Equal(count, count2);
return constants;
}
public static ISymUnmanagedVariable[] GetAndValidateVariables(ISymUnmanagedScope scope, int expectedCount)
{
int count, count2, count3;
Assert.Equal(HResult.S_OK, scope.GetLocalCount(out count));
Assert.Equal(expectedCount, count);
Assert.Equal(HResult.S_OK, scope.GetLocals(0, out count2, null));
Assert.Equal(expectedCount, count2);
var variables = new ISymUnmanagedVariable[count];
Assert.Equal(HResult.S_OK, scope.GetLocals(count, out count3, variables));
Assert.Equal(count, count3);
return variables;
}
public static void ValidateAsyncMethod(ISymUnmanagedReader symReader, int moveNextMethodToken, int kickoffMethodToken, int catchHandlerOffset, int[] yieldOffsets, int[] resumeOffsets)
{
ISymUnmanagedMethod method;
Assert.Equal(HResult.S_OK, symReader.GetMethod(moveNextMethodToken, out method));
var asyncMethod = (ISymUnmanagedAsyncMethod)method;
bool isAsync;
Assert.Equal(HResult.S_OK, asyncMethod.IsAsyncMethod(out isAsync));
Assert.True(isAsync);
int actualKickoffMethodToken;
Assert.Equal(HResult.S_OK, asyncMethod.GetKickoffMethod(out actualKickoffMethodToken));
Assert.Equal(kickoffMethodToken, actualKickoffMethodToken);
bool hasCatchHandlerILOffset;
Assert.Equal(HResult.S_OK, asyncMethod.HasCatchHandlerILOffset(out hasCatchHandlerILOffset));
Assert.Equal(catchHandlerOffset >= 0, hasCatchHandlerILOffset);
int actualCatchHandlerOffset;
if (hasCatchHandlerILOffset)
{
Assert.Equal(HResult.S_OK, asyncMethod.GetCatchHandlerILOffset(out actualCatchHandlerOffset));
Assert.Equal(catchHandlerOffset, actualCatchHandlerOffset);
}
else
{
Assert.Equal(HResult.E_UNEXPECTED, asyncMethod.GetCatchHandlerILOffset(out actualCatchHandlerOffset));
}
int count, count2;
Assert.Equal(HResult.S_OK, asyncMethod.GetAsyncStepInfoCount(out count));
Assert.Equal(yieldOffsets.Length, count);
Assert.Equal(resumeOffsets.Length, count);
var actualYieldOffsets = new int[count];
var actualResumeOffsets = new int[count];
var actualResumeMethods = new int[count];
Assert.Equal(HResult.S_OK, asyncMethod.GetAsyncStepInfo(count, out count2, actualYieldOffsets, actualResumeOffsets, actualResumeMethods));
AssertEx.Equal(yieldOffsets, actualYieldOffsets);
AssertEx.Equal(resumeOffsets, actualResumeOffsets);
foreach (int actualResumeMethod in actualResumeMethods)
{
Assert.Equal(moveNextMethodToken, actualResumeMethod);
}
}
internal static int[] GetMethodTokensFromDocumentPosition(
ISymUnmanagedReader symReader,
ISymUnmanagedDocument symDocument,
int line,
int column)
{
Assert.True(line >= 1);
Assert.True(column >= 0);
int count;
Assert.Equal(HResult.S_OK, symReader.GetMethodsFromDocumentPosition(symDocument, line, column, 0, out count, null));
var methods = new ISymUnmanagedMethod[count];
int count2;
Assert.Equal(HResult.S_OK, symReader.GetMethodsFromDocumentPosition(symDocument, line, column, count, out count2, methods));
Assert.Equal(count, count2);
return methods.Select(m =>
{
int token;
Assert.Equal(HResult.S_OK, m.GetToken(out token));
return token;
}).ToArray();
}
internal static int[][] GetMethodTokensForEachLine(ISymUnmanagedReader symReader, ISymUnmanagedDocument symDocument, int minLine, int maxLine)
{
Assert.True(minLine >= 1);
Assert.True(maxLine >= minLine);
var result = new List<int[]>();
for (int line = minLine; line <= maxLine; line++)
{
int[] allMethodTokens = GetMethodTokensFromDocumentPosition(symReader, symDocument, line, 0);
ISymUnmanagedMethod method;
int hr = symReader.GetMethodFromDocumentPosition(symDocument, line, 1, out method);
if (hr != HResult.S_OK)
{
Assert.Equal(HResult.E_FAIL, hr);
Assert.Equal(0, allMethodTokens.Length);
}
else
{
int primaryToken;
Assert.Equal(HResult.S_OK, method.GetToken(out primaryToken));
Assert.Equal(primaryToken, allMethodTokens.First());
}
result.Add(allMethodTokens);
}
return result.ToArray();
}
public static int[] GetILOffsetForEachLine(
ISymUnmanagedReader symReader,
int methodToken,
ISymUnmanagedDocument document,
int minLine, int maxLine)
{
Assert.True(minLine >= 1);
Assert.True(maxLine >= minLine);
var result = new List<int>();
ISymUnmanagedMethod method;
Assert.Equal(HResult.S_OK, symReader.GetMethod(methodToken, out method));
for (int line = minLine; line <= maxLine; line++)
{
int offset;
int hr = method.GetOffset(document, line, 0, out offset);
if (hr != HResult.S_OK)
{
Assert.Equal(HResult.E_FAIL, hr);
offset = int.MaxValue;
}
result.Add(offset);
}
return result.ToArray();
}
public static int[][] GetILOffsetRangesForEachLine(
ISymUnmanagedReader symReader,
int methodToken,
ISymUnmanagedDocument document,
int minLine, int maxLine)
{
Assert.True(minLine >= 1);
Assert.True(maxLine >= minLine);
var result = new List<int[]>();
ISymUnmanagedMethod method;
Assert.Equal(HResult.S_OK, symReader.GetMethod(methodToken, out method));
for (int line = minLine; line <= maxLine; line++)
{
int count;
Assert.Equal(HResult.S_OK, method.GetRanges(document, line, 0, 0, out count, null));
int count2;
int[] ranges = new int[count];
Assert.Equal(HResult.S_OK, method.GetRanges(document, line, 0, count, out count2, ranges));
Assert.Equal(count, count2);
result.Add(ranges);
}
return result.ToArray();
}
public static void ValidateMethodExtent(ISymUnmanagedReader symReader, int methodDef, string documentName, int minLine, int maxLine)
{
Assert.True(minLine >= 1);
Assert.True(maxLine >= minLine);
ISymUnmanagedMethod method;
Assert.Equal(HResult.S_OK, symReader.GetMethod(methodDef, out method));
ISymUnmanagedDocument document;
Assert.Equal(HResult.S_OK, symReader.GetDocument(documentName, default(Guid), default(Guid), default(Guid), out document));
int actualMinLine, actualMaxLine;
Assert.Equal(HResult.S_OK, ((ISymEncUnmanagedMethod)method).GetSourceExtentInDocument(document, out actualMinLine, out actualMaxLine));
Assert.Equal(minLine, actualMinLine);
Assert.Equal(maxLine, actualMaxLine);
}
public static void ValidateNoMethodExtent(ISymUnmanagedReader symReader, int methodDef, string documentName)
{
ISymUnmanagedMethod method;
Assert.Equal(HResult.S_OK, symReader.GetMethod(methodDef, out method));
ISymUnmanagedDocument document;
Assert.Equal(HResult.S_OK, symReader.GetDocument(documentName, default(Guid), default(Guid), default(Guid), out document));
int actualMinLine, actualMaxLine;
Assert.Equal(HResult.E_FAIL, ((ISymEncUnmanagedMethod)method).GetSourceExtentInDocument(document, out actualMinLine, out actualMaxLine));
}
public static int[] FindClosestLineForEachLine(ISymUnmanagedDocument document, int minLine, int maxLine)
{
Assert.True(minLine >= 1);
Assert.True(maxLine >= minLine);
var result = new List<int>();
for (int line = minLine; line <= maxLine; line++)
{
int closestLine;
int hr = document.FindClosestLine(line, out closestLine);
if (hr != HResult.S_OK)
{
Assert.Equal(HResult.E_FAIL, hr);
closestLine = 0;
}
result.Add(closestLine);
}
return result.ToArray();
}
}
}
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
using System.Collections.Generic;
namespace TestResources
{
public static class Documents
{
private static byte[] s_portableDll;
public static byte[] PortableDll => ResourceLoader.GetOrCreateResource(ref s_portableDll, nameof(Documents) + ".dllx");
private static byte[] s_portablePdb;
public static byte[] PortablePdb => ResourceLoader.GetOrCreateResource(ref s_portablePdb, nameof(Documents) + ".pdbx");
private static byte[] s_dll;
public static byte[] Dll => ResourceLoader.GetOrCreateResource(ref s_dll, nameof(Documents) + ".dll");
private static byte[] s_pdb;
public static byte[] Pdb => ResourceLoader.GetOrCreateResource(ref s_pdb, nameof(Documents) + ".pdb");
public static KeyValuePair<byte[], byte[]> PortableDllAndPdb => new KeyValuePair<byte[], byte[]>(PortableDll, PortablePdb);
public static KeyValuePair<byte[], byte[]> DllAndPdb => new KeyValuePair<byte[], byte[]>(Dll, Pdb);
}
public static class Scopes
{
private static byte[] s_dll;
public static byte[] Dll => ResourceLoader.GetOrCreateResource(ref s_dll, nameof(Scopes) + ".dll");
private static byte[] s_pdb;
public static byte[] Pdb => ResourceLoader.GetOrCreateResource(ref s_pdb, nameof(Scopes) + ".pdbx");
public static KeyValuePair<byte[], byte[]> DllAndPdb => new KeyValuePair<byte[], byte[]>(Dll, Pdb);
}
public static class Async
{
private static byte[] s_portableDll;
public static byte[] PortableDll => ResourceLoader.GetOrCreateResource(ref s_portableDll, nameof(Async) + ".dllx");
private static byte[] s_portablePdb;
public static byte[] PortablePdb => ResourceLoader.GetOrCreateResource(ref s_portablePdb, nameof(Async) + ".pdbx");
private static byte[] s_dll;
public static byte[] Dll => ResourceLoader.GetOrCreateResource(ref s_dll, nameof(Async) + ".dll");
private static byte[] s_pdb;
public static byte[] Pdb => ResourceLoader.GetOrCreateResource(ref s_pdb, nameof(Async) + ".pdb");
public static KeyValuePair<byte[], byte[]> PortableDllAndPdb => new KeyValuePair<byte[], byte[]>(PortableDll, PortablePdb);
public static KeyValuePair<byte[], byte[]> DllAndPdb => new KeyValuePair<byte[], byte[]>(Dll, Pdb);
}
public static class MethodBoundaries
{
private static byte[] s_portableDll;
public static byte[] PortableDll => ResourceLoader.GetOrCreateResource(ref s_portableDll, nameof(MethodBoundaries) + ".dllx");
private static byte[] s_portablePdb;
public static byte[] PortablePdb => ResourceLoader.GetOrCreateResource(ref s_portablePdb, nameof(MethodBoundaries) + ".pdbx");
private static byte[] s_dll;
public static byte[] Dll => ResourceLoader.GetOrCreateResource(ref s_dll, nameof(MethodBoundaries) + ".dll");
private static byte[] s_pdb;
public static byte[] Pdb => ResourceLoader.GetOrCreateResource(ref s_pdb, nameof(MethodBoundaries) + ".pdb");
public static KeyValuePair<byte[], byte[]> PortableDllAndPdb => new KeyValuePair<byte[], byte[]>(PortableDll, PortablePdb);
public static KeyValuePair<byte[], byte[]> DllAndPdb => new KeyValuePair<byte[], byte[]>(Dll, Pdb);
}
}
// 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 Roslyn.Test.Utilities;
using Xunit;
namespace Microsoft.DiaSymReader.PortablePdb.UnitTests
{
public class EnumerableHelpersTests
{
[Fact]
public void GroupBy1()
{
var pairs = new[]
{
KeyValuePair.Create("A", 1),
KeyValuePair.Create("B", 2),
KeyValuePair.Create("C", 3),
KeyValuePair.Create("a", 4),
KeyValuePair.Create("B", 5),
KeyValuePair.Create("A", 6),
KeyValuePair.Create("d", 7),
};
var groups = pairs.GroupBy(StringComparer.OrdinalIgnoreCase);
AssertEx.SetEqual(new[] { "A", "B", "C", "d" }, groups.Keys);
Assert.Equal(0, groups["A"].Key);
AssertEx.Equal(new[] { 1, 4, 6 }, groups["A"].Value);
Assert.Equal(0, groups["B"].Key);
AssertEx.Equal(new[] { 2, 5 }, groups["B"].Value);
Assert.Equal(3, groups["C"].Key);
Assert.True(groups["C"].Value.IsDefault);
Assert.Equal(7, groups["d"].Key);
Assert.True(groups["d"].Value.IsDefault);
}
}
}
// 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.IO;
using System.Reflection;
using System.Reflection.Metadata;
using System.Reflection.Metadata.Ecma335;
using System.Reflection.PortableExecutable;
using System.Runtime.InteropServices;
using System.Text;
namespace Microsoft.DiaSymReader.PortablePdb.UnitTests
{
internal sealed class SymMetadataImport : IMetadataImport, IDisposable
{
private readonly PEReader _peReader;
public readonly MetadataReader MetadataReader;
public SymMetadataImport(Stream peStream)
{
_peReader = new PEReader(peStream);
MetadataReader = _peReader.GetMetadataReader();
}
public void Dispose()
{
_peReader.Dispose();
}
public unsafe int GetSigFromToken(int tkSignature, out byte* ppvSig, out int pcbSig)
{
var signatureHandle = (StandaloneSignatureHandle)MetadataTokens.Handle(tkSignature);
var bytes = MetadataReader.GetBlobBytes(MetadataReader.GetStandaloneSignature(signatureHandle).Signature);
var pinned = GCHandle.Alloc(bytes, GCHandleType.Pinned);
ppvSig = (byte*)pinned.AddrOfPinnedObject();
pcbSig = bytes.Length;
return HResult.S_OK;
}
public void GetTypeDefProps(
int typeDefinition,
[MarshalAs(UnmanagedType.LPWStr), Out]StringBuilder qualifiedName,
int qualifiedNameBufferLength,
out int qualifiedNameLength,
[MarshalAs(UnmanagedType.U4)]out TypeAttributes attributes,
out int baseType)
{
var handle = (TypeDefinitionHandle)MetadataTokens.Handle(typeDefinition);
var typeDef = MetadataReader.GetTypeDefinition(handle);
if (qualifiedName != null)
{
qualifiedName.Clear();
if (!typeDef.Namespace.IsNil)
{
qualifiedName.Append(MetadataReader.GetString(typeDef.Namespace));
qualifiedName.Append('.');
}
qualifiedName.Append(MetadataReader.GetString(typeDef.Name));
qualifiedNameLength = qualifiedName.Length;
}
else
{
qualifiedNameLength =
(typeDef.Namespace.IsNil ? 0 : MetadataReader.GetString(typeDef.Namespace).Length + 1) +
MetadataReader.GetString(typeDef.Name).Length;
}
baseType = MetadataTokens.GetToken(typeDef.BaseType);
attributes = typeDef.Attributes;
}
public void GetTypeRefProps(
int typeReference,
out int resolutionScope,
[MarshalAs(UnmanagedType.LPWStr), Out]StringBuilder qualifiedName,
int qualifiedNameBufferLength,
out int qualifiedNameLength)
{
var handle = (TypeReferenceHandle)MetadataTokens.Handle(typeReference);
var typeRef = MetadataReader.GetTypeReference(handle);
if (qualifiedName != null)
{
qualifiedName.Clear();
if (!typeRef.Namespace.IsNil)
{
qualifiedName.Append(MetadataReader.GetString(typeRef.Namespace));
qualifiedName.Append('.');
}
qualifiedName.Append(MetadataReader.GetString(typeRef.Name));
qualifiedNameLength = qualifiedName.Length;
}
else
{
qualifiedNameLength =
(typeRef.Namespace.IsNil ? 0 : MetadataReader.GetString(typeRef.Namespace).Length + 1) +
MetadataReader.GetString(typeRef.Name).Length;
}
resolutionScope = MetadataTokens.GetToken(typeRef.ResolutionScope);
}
#region Not Implemented
public void CloseEnum(uint handleEnum)
{
throw new NotImplementedException();
}
public uint CountEnum(uint handleEnum)
{
throw new NotImplementedException();
}
public uint EnumCustomAttributes(ref uint handlePointerEnum, uint tk, uint tokenType, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 4)]uint[] arrayCustomAttributes, uint countMax)
{
throw new NotImplementedException();
}
public unsafe uint EnumEvents(ref uint handlePointerEnum, uint td, uint* arrayEvents, uint countMax)
{
throw new NotImplementedException();
}
public unsafe uint EnumFields(ref uint handlePointerEnum, uint cl, uint* arrayFields, uint countMax)
{
throw new NotImplementedException();
}
public uint EnumFieldsWithName(ref uint handlePointerEnum, uint cl, string stringName, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 4)]uint[] arrayFields, uint countMax)
{
throw new NotImplementedException();
}
public uint EnumInterfaceImpls(ref uint handlePointerEnum, uint td, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)]uint[] arrayImpls, uint countMax)
{
throw new NotImplementedException();
}
public uint EnumMemberRefs(ref uint handlePointerEnum, uint tokenParent, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)]uint[] arrayMemberRefs, uint countMax)
{
throw new NotImplementedException();
}
public uint EnumMembers(ref uint handlePointerEnum, uint cl, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)]uint[] arrayMembers, uint countMax)
{
throw new NotImplementedException();
}
public uint EnumMembersWithName(ref uint handlePointerEnum, uint cl, string stringName, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 4)]uint[] arrayMembers, uint countMax)
{
throw new NotImplementedException();
}
public uint EnumMethodImpls(ref uint handlePointerEnum, uint td, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 4)]uint[] arrayMethodBody, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 4)]uint[] arrayMethodDecl, uint countMax)
{
throw new NotImplementedException();
}
public unsafe uint EnumMethods(ref uint handlePointerEnum, uint cl, uint* arrayMethods, uint countMax)
{
throw new NotImplementedException();
}
public uint EnumMethodSemantics(ref uint handlePointerEnum, uint mb, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)]uint[] arrayEventProp, uint countMax)
{
throw new NotImplementedException();
}
public uint EnumMethodsWithName(ref uint handlePointerEnum, uint cl, string stringName, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 4)]uint[] arrayMethods, uint countMax)
{
throw new NotImplementedException();
}
public uint EnumModuleRefs(ref uint handlePointerEnum, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)]uint[] arrayModuleRefs, uint cmax)
{
throw new NotImplementedException();
}
public uint EnumParams(ref uint handlePointerEnum, uint mb, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)]uint[] arrayParams, uint countMax)
{
throw new NotImplementedException();
}
public uint EnumPermissionSets(ref uint handlePointerEnum, uint tk, uint dwordActions, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 4)]uint[] arrayPermission, uint countMax)
{
throw new NotImplementedException();
}
public unsafe uint EnumProperties(ref uint handlePointerEnum, uint td, uint* arrayProperties, uint countMax)
{
throw new NotImplementedException();
}
public uint EnumSignatures(ref uint handlePointerEnum, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)]uint[] arraySignatures, uint cmax)
{
throw new NotImplementedException();
}
public uint EnumTypeDefs(ref uint handlePointerEnum, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)]uint[] arrayTypeDefs, uint countMax)
{
throw new NotImplementedException();
}
public uint EnumTypeRefs(ref uint handlePointerEnum, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)]uint[] arrayTypeRefs, uint countMax)
{
throw new NotImplementedException();
}
public uint EnumTypeSpecs(ref uint handlePointerEnum, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)]uint[] arrayTypeSpecs, uint cmax)
{
throw new NotImplementedException();
}
public uint EnumUnresolvedMethods(ref uint handlePointerEnum, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)]uint[] arrayMethods, uint countMax)
{
throw new NotImplementedException();
}
public uint EnumUserStrings(ref uint handlePointerEnum, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)]uint[] arrayStrings, uint cmax)
{
throw new NotImplementedException();
}
public uint FindField(uint td, string stringName, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)]byte[] voidPointerSigBlob, uint byteCountSigBlob)
{
throw new NotImplementedException();
}
public uint FindMember(uint td, string stringName, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)]byte[] voidPointerSigBlob, uint byteCountSigBlob)
{
throw new NotImplementedException();
}
public uint FindMemberRef(uint td, string stringName, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)]byte[] voidPointerSigBlob, uint byteCountSigBlob)
{
throw new NotImplementedException();
}
public uint FindMethod(uint td, string stringName, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)]byte[] voidPointerSigBlob, uint byteCountSigBlob)
{
throw new NotImplementedException();
}
public uint FindTypeDefByName(string stringTypeDef, uint tokenEnclosingClass)
{
throw new NotImplementedException();
}
public uint FindTypeRef(uint tokenResolutionScope, string stringName)
{
throw new NotImplementedException();
}
public uint GetClassLayout(uint td, out uint pdwPackSize, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)]ulong[] arrayFieldOffset, uint countMax, out uint countPointerFieldOffset)
{
throw new NotImplementedException();
}
public unsafe uint GetCustomAttributeByName(uint tokenObj, string stringName, out void* ppData)
{
throw new NotImplementedException();
}
public unsafe uint GetCustomAttributeProps(uint cv, out uint ptkObj, out uint ptkType, out void* ppBlob)
{
throw new NotImplementedException();
}
public uint GetEventProps(uint ev, out uint pointerClass, StringBuilder stringEvent, uint cchEvent, out uint pchEvent, out uint pdwEventFlags, out uint ptkEventType, out uint pmdAddOn, out uint pmdRemoveOn, out uint pmdFire, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 11)]uint[] rmdOtherMethod, uint countMax)
{
throw new NotImplementedException();
}
public unsafe uint GetFieldMarshal(uint tk, out byte* ppvNativeType)
{
throw new NotImplementedException();
}
public unsafe uint GetFieldProps(uint mb, out uint pointerClass, StringBuilder stringField, uint cchField, out uint pchField, out uint pdwAttr, out byte* ppvSigBlob, out uint pcbSigBlob, out uint pdwCPlusTypeFlag, out void* ppValue)
{
throw new NotImplementedException();
}
public uint GetInterfaceImplProps(uint impl, out uint pointerClass)
{
throw new NotImplementedException();
}
public unsafe uint GetMemberProps(uint mb, out uint pointerClass, StringBuilder stringMember, uint cchMember, out uint pchMember, out uint pdwAttr, out byte* ppvSigBlob, out uint pcbSigBlob, out uint pulCodeRVA, out uint pdwImplFlags, out uint pdwCPlusTypeFlag, out void* ppValue)
{
throw new NotImplementedException();
}
public unsafe uint GetMemberRefProps(uint mr, ref uint ptk, StringBuilder stringMember, uint cchMember, out uint pchMember, out byte* ppvSigBlob)
{
throw new NotImplementedException();
}
public uint GetMethodProps(uint mb, out uint pointerClass, IntPtr stringMethod, uint cchMethod, out uint pchMethod, IntPtr pdwAttr, IntPtr ppvSigBlob, IntPtr pcbSigBlob, IntPtr pulCodeRVA)
{
throw new NotImplementedException();
}
public uint GetMethodSemantics(uint mb, uint tokenEventProp)
{
throw new NotImplementedException();
}
public uint GetModuleFromScope()
{
throw new NotImplementedException();
}
public uint GetModuleRefProps(uint mur, StringBuilder stringName, uint cchName)
{
throw new NotImplementedException();
}
public uint GetNameFromToken(uint tk)
{
throw new NotImplementedException();
}
public unsafe uint GetNativeCallConvFromSig(void* voidPointerSig, uint byteCountSig)
{
throw new NotImplementedException();
}
public uint GetNestedClassProps(uint typeDefNestedClass)
{
throw new NotImplementedException();
}
public int GetParamForMethodIndex(uint md, uint ulongParamSeq, out uint pointerParam)
{
throw new NotImplementedException();
}
public unsafe uint GetParamProps(uint tk, out uint pmd, out uint pulSequence, StringBuilder stringName, uint cchName, out uint pchName, out uint pdwAttr, out uint pdwCPlusTypeFlag, out void* ppValue)
{
throw new NotImplementedException();
}
public unsafe uint GetPermissionSetProps(uint pm, out uint pdwAction, out void* ppvPermission)
{
throw new NotImplementedException();
}
public uint GetPinvokeMap(uint tk, out uint pdwMappingFlags, StringBuilder stringImportName, uint cchImportName, out uint pchImportName)
{
throw new NotImplementedException();
}
public unsafe uint GetPropertyProps(uint prop, out uint pointerClass, StringBuilder stringProperty, uint cchProperty, out uint pchProperty, out uint pdwPropFlags, out byte* ppvSig, out uint bytePointerSig, out uint pdwCPlusTypeFlag, out void* ppDefaultValue, out uint pcchDefaultValue, out uint pmdSetter, out uint pmdGetter, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 14)]uint[] rmdOtherMethod, uint countMax)
{
throw new NotImplementedException();
}
public uint GetRVA(uint tk, out uint pulCodeRVA)
{
throw new NotImplementedException();
}
public Guid GetScopeProps(StringBuilder stringName, uint cchName, out uint pchName)
{
throw new NotImplementedException();
}
public unsafe uint GetTypeSpecFromToken(uint typespec, out byte* ppvSig)
{
throw new NotImplementedException();
}
public uint GetUserString(uint stk, StringBuilder stringString, uint cchString)
{
throw new NotImplementedException();
}
public int IsGlobal(uint pd)
{
throw new NotImplementedException();
}
[return: MarshalAs(UnmanagedType.Bool)]
public bool IsValidToken(uint tk)
{
throw new NotImplementedException();
}
public void ResetEnum(uint handleEnum, uint ulongPos)
{
throw new NotImplementedException();
}
public uint ResolveTypeRef(uint tr, [In]ref Guid riid, [MarshalAs(UnmanagedType.Interface)]out object ppIScope)
{
throw new NotImplementedException();
}
#endregion
}
}
{
"dependencies": {
"Microsoft.NETCore.Portable.Compatibility": "1.0.1",
"System.Collections": "4.0.11",
"System.Diagnostics.Debug": "4.0.11",
"System.Runtime": "4.1.0",
"System.Runtime.Extensions": "4.1.0",
"System.Runtime.InteropServices": "4.1.0",
"System.IO.FileSystem": "4.0.1"
},
"frameworks": {
"netstandard1.3": {
"imports": [ "portable-net452", "dotnet5.4" ]
}
}
}
// 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.Immutable;
using System.Diagnostics;
using System.Reflection.Metadata;
using System.Runtime.InteropServices;
namespace Microsoft.DiaSymReader.PortablePdb
{
internal sealed class AsyncMethodData
{
public static readonly AsyncMethodData None = new AsyncMethodData();
public readonly MethodDefinitionHandle KickoffMethod;
public readonly int CatchHandlerOffset;
public readonly ImmutableArray<int> YieldOffsets;
public readonly ImmutableArray<int> ResumeOffsets;
public readonly ImmutableArray<int> ResumeMethods;
private AsyncMethodData()
{
}
public AsyncMethodData(
MethodDefinitionHandle kickoffMethod,
int catchHandlerOffset,
ImmutableArray<int> yieldOffsets,
ImmutableArray<int> resumeOffsets,
ImmutableArray<int> resumeMethods)
{
Debug.Assert(!kickoffMethod.IsNil);
Debug.Assert(catchHandlerOffset >= -1);
Debug.Assert(yieldOffsets.Length == resumeOffsets.Length);
Debug.Assert(yieldOffsets.Length == resumeMethods.Length);
KickoffMethod = kickoffMethod;
CatchHandlerOffset = catchHandlerOffset;
YieldOffsets = yieldOffsets;
ResumeOffsets = resumeOffsets;
ResumeMethods = resumeMethods;
}
public bool IsNone => ReferenceEquals(this, None);
}
}
// 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.Immutable;
using System.Diagnostics;
using System.Reflection.Metadata;
namespace Microsoft.DiaSymReader.PortablePdb
{
internal sealed class ChildScopeData : ScopeData
{
private readonly LocalScopeHandle _handle;
private readonly ScopeData _parent;
internal ChildScopeData(SymMethod symMethod, ScopeData parent, LocalScopeHandle handle)
: base(symMethod)
{
Debug.Assert(parent != null);
Debug.Assert(!handle.IsNil);
_handle = handle;
_parent = parent;
}
internal override ScopeData Parent => _parent;
internal override int StartOffset
{
get
{
return SymMethod.MetadataReader.GetLocalScope(_handle).StartOffset;
}
}
internal override int EndOffset
{
get
{
return AdjustEndOffset(SymMethod.MetadataReader.GetLocalScope(_handle).EndOffset);
}
}
protected override ImmutableArray<ChildScopeData> CreateChildren()
{
// TODO: pool?
var builder = ImmutableArray.CreateBuilder<ChildScopeData>();
var children = SymMethod.MetadataReader.GetLocalScope(_handle).GetChildren();
while (children.MoveNext())
{
builder.Add(new ChildScopeData(SymMethod, this, children.Current));
}
return builder.ToImmutable();
}
internal override int GetConstants(int bufferLength, out int count, ISymUnmanagedConstant[] constants)
{
var symReader = SymMethod.SymReader;
var mdReader = symReader.MetadataReader;
var scope = mdReader.GetLocalScope(_handle);
var handles = scope.GetLocalConstants();
int i = 0;
foreach (var handle in handles)
{
if (i >= bufferLength)
{
break;
}
constants[i++] = new SymConstant(symReader, handle);
}
count = (bufferLength == 0) ? handles.Count : i;
return HResult.S_OK;
}
internal override int GetLocals(int bufferLength, out int count, ISymUnmanagedVariable[] locals)
{
var mdReader = SymMethod.MetadataReader;
var scope = mdReader.GetLocalScope(_handle);
var handles = scope.GetLocalVariables();
int i = 0;
foreach (var handle in handles)
{
if (i >= bufferLength)
{
break;
}
locals[i++] = new SymVariable(SymMethod, handle);
}
count = (bufferLength == 0) ? handles.Count : i;
return HResult.S_OK;
}
}
}
\ No newline at end of file
// 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;
using System.Diagnostics;
using System.Reflection.Metadata;
namespace Microsoft.DiaSymReader.PortablePdb
{
internal sealed class DocumentMap
{
private struct DocumentNameAndHandle
{
public readonly DocumentHandle Handle;
public readonly string FileName;
public DocumentNameAndHandle(DocumentHandle handle, string fileName)
{
Handle = handle;
FileName = fileName;
}
}
private readonly MetadataReader _reader;
// { last part of document name -> one or many document handles that have the part in common }
private readonly IReadOnlyDictionary<string, KeyValuePair<DocumentNameAndHandle, ImmutableArray<DocumentNameAndHandle>>> _map;
public DocumentMap(MetadataReader reader)
{
_reader = reader;
// group ignoring case, we will match the case within the group
_map = GetDocumentsByFileName(reader).GroupBy(StringComparer.OrdinalIgnoreCase);
}
private static IEnumerable<KeyValuePair<string, DocumentNameAndHandle>> GetDocumentsByFileName(MetadataReader reader)
{
foreach (var documentHandle in reader.Documents)
{
string fileName = GetFileName(reader, documentHandle);
// invalid metadata: document doesn't have a name
if (fileName == null)
{
continue;
}
yield return new KeyValuePair<string, DocumentNameAndHandle>(fileName, new DocumentNameAndHandle(documentHandle, fileName));
}
}
private static string GetFileName(MetadataReader reader, DocumentHandle documentHandle)
{
var document = reader.GetDocument(documentHandle);
if (document.Name.IsNil)
{
return null;
}
var nameReader = reader.GetBlobReader(document.Name);
int separator = nameReader.ReadByte();
if (!FileNameUtilities.IsDirectorySeparator((char)separator))
{
return FileNameUtilities.GetFileName(reader.GetString(document.Name));
}
// find the last part handle:
BlobHandle partHandle = default(BlobHandle);
while (nameReader.RemainingBytes > 0)
{
partHandle = nameReader.ReadBlobHandle();
}
if (partHandle.IsNil)
{
return string.Empty;
}
var partReader = reader.GetBlobReader(partHandle);
var part = partReader.ReadUTF8(partReader.Length);
if (part.IndexOf('\0') >= 0)
{
// bad metadata
return null;
}
// it is valid to encode document name so that the parts contain directory separators:
return FileNameUtilities.GetFileName(part);
}
internal bool TryGetDocument(string fullPath, out DocumentHandle documentHandle)
{
var fileName = FileNameUtilities.GetFileName(fullPath);
KeyValuePair<DocumentNameAndHandle, ImmutableArray<DocumentNameAndHandle>> documents;
if (!_map.TryGetValue(fileName, out documents))
{
documentHandle = default(DocumentHandle);
return false;
}
// SymReader first attempts to find the document by the full path, then by file name with extension.
if (documents.Key.FileName != null)
{
// There is only one document with the specified file name.
// SymReader returns the document regardless of whether the path matches the name.
documentHandle = documents.Key.Handle;
return true;
}
Debug.Assert(documents.Value.Length > 1);
// We have multiple candidates with the same file name. Find the one whose name matches the specified full path.
// If none does return the first one. It will be the one with the smallest handle, due to the multi-map construction implementation.
// First try to find candidate whose full name is exactly matching.
foreach (DocumentNameAndHandle candidate in documents.Value)
{
if (_reader.StringComparer.Equals(_reader.GetDocument(candidate.Handle).Name, fullPath, ignoreCase: false))
{
documentHandle = candidate.Handle;
return true;
}
}
// Then try to find candidate whose full name is matching ignoring case.
foreach (DocumentNameAndHandle candidate in documents.Value)
{
if (_reader.StringComparer.Equals(_reader.GetDocument(candidate.Handle).Name, fullPath, ignoreCase: true))
{
documentHandle = candidate.Handle;
return true;
}
}
// Then try to find candidate whose file name is matching exactly.
foreach (DocumentNameAndHandle candidate in documents.Value)
{
if (candidate.FileName == fileName)
{
documentHandle = candidate.Handle;
return true;
}
}
documentHandle = documents.Value[0].Handle;
return true;
}
}
}
\ No newline at end of file
// 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.Reflection;
using System.Reflection.Metadata;
using System.Reflection.Metadata.Ecma335;
using System.Runtime.InteropServices;
using System.Text;
namespace Microsoft.DiaSymReader.PortablePdb
{
internal static class IMetadataImportExtensions
{
public static string GetQualifiedTypeName(this IMetadataImport importer, Handle typeDefOrRef)
{
string qualifiedName;
if (typeDefOrRef.Kind == HandleKind.TypeDefinition)
{
TypeAttributes attributes;
int baseType;
importer.GetTypeDefProps(MetadataTokens.GetToken(typeDefOrRef), out qualifiedName, out attributes, out baseType);
}
else if (typeDefOrRef.Kind == HandleKind.TypeReference)
{
int resolutionScope;
importer.GetTypeRefProps(MetadataTokens.GetToken(typeDefOrRef), out resolutionScope, out qualifiedName);
}
else
{
qualifiedName = null;
}
return qualifiedName;
}
public static void GetTypeDefProps(this IMetadataImport importer, int typeDefinition, out string qualifiedName, out TypeAttributes attributes, out int baseType)
{
int bufferLength;
importer.GetTypeDefProps(typeDefinition, null, 0, out bufferLength, out attributes, out baseType);
var buffer = new StringBuilder(bufferLength);
importer.GetTypeDefProps(typeDefinition, buffer, buffer.Capacity, out bufferLength, out attributes, out baseType);
qualifiedName = buffer.ToString();
}
public static void GetTypeRefProps(this IMetadataImport importer, int typeReference, out int resolutionScope, out string qualifiedName)
{
int bufferLength;
importer.GetTypeRefProps(typeReference, out resolutionScope, null, 0, out bufferLength);
var buffer = new StringBuilder(bufferLength);
importer.GetTypeRefProps(typeReference, out resolutionScope, buffer, buffer.Capacity, out bufferLength);
qualifiedName = buffer.ToString();
}
}
[ComVisible(false)]
[ComImport]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[Guid("7DAC8207-D3AE-4c75-9B67-92801A497D44")]
public unsafe interface IMetadataImport
{
[PreserveSig]
void CloseEnum(uint handleEnum);
uint CountEnum(uint handleEnum);
void ResetEnum(uint handleEnum, uint ulongPos);
uint EnumTypeDefs(ref uint handlePointerEnum, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)] uint[] arrayTypeDefs, uint countMax);
uint EnumInterfaceImpls(ref uint handlePointerEnum, uint td, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] uint[] arrayImpls, uint countMax);
uint EnumTypeRefs(ref uint handlePointerEnum, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)] uint[] arrayTypeRefs, uint countMax);
uint FindTypeDefByName(string stringTypeDef, uint tokenEnclosingClass);
Guid GetScopeProps(StringBuilder stringName, uint cchName, out uint pchName);
uint GetModuleFromScope();
void GetTypeDefProps(
int typeDefinition,
[Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder qualifiedName,
int qualifiedNameBufferLength,
out int qualifiedNameLength,
[MarshalAs(UnmanagedType.U4)] out TypeAttributes attributes,
out int baseType);
uint GetInterfaceImplProps(uint impl, out uint pointerClass);
void GetTypeRefProps(
int typeReference,
out int resolutionScope,
[Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder qualifiedName,
int qualifiedNameBufferLength,
out int qualifiedNameLength);
uint ResolveTypeRef(uint tr, [In] ref Guid riid, [MarshalAs(UnmanagedType.Interface)] out object ppIScope);
uint EnumMembers(ref uint handlePointerEnum, uint cl, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] uint[] arrayMembers, uint countMax);
uint EnumMembersWithName(ref uint handlePointerEnum, uint cl, string stringName, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 4)] uint[] arrayMembers, uint countMax);
uint EnumMethods(ref uint handlePointerEnum, uint cl, uint* arrayMethods, uint countMax);
uint EnumMethodsWithName(ref uint handlePointerEnum, uint cl, string stringName, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 4)] uint[] arrayMethods, uint countMax);
uint EnumFields(ref uint handlePointerEnum, uint cl, uint* arrayFields, uint countMax);
uint EnumFieldsWithName(ref uint handlePointerEnum, uint cl, string stringName, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 4)] uint[] arrayFields, uint countMax);
uint EnumParams(ref uint handlePointerEnum, uint mb, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] uint[] arrayParams, uint countMax);
uint EnumMemberRefs(ref uint handlePointerEnum, uint tokenParent, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] uint[] arrayMemberRefs, uint countMax);
uint EnumMethodImpls(ref uint handlePointerEnum, uint td, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 4)] uint[] arrayMethodBody,
[MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 4)] uint[] arrayMethodDecl, uint countMax);
uint EnumPermissionSets(ref uint handlePointerEnum, uint tk, uint dwordActions, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 4)] uint[] arrayPermission,
uint countMax);
uint FindMember(uint td, string stringName, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] byte[] voidPointerSigBlob, uint byteCountSigBlob);
uint FindMethod(uint td, string stringName, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] byte[] voidPointerSigBlob, uint byteCountSigBlob);
uint FindField(uint td, string stringName, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] byte[] voidPointerSigBlob, uint byteCountSigBlob);
uint FindMemberRef(uint td, string stringName, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] byte[] voidPointerSigBlob, uint byteCountSigBlob);
uint GetMethodProps(uint mb, out uint pointerClass, IntPtr stringMethod, uint cchMethod, out uint pchMethod, IntPtr pdwAttr,
IntPtr ppvSigBlob, IntPtr pcbSigBlob, IntPtr pulCodeRVA);
unsafe uint GetMemberRefProps(uint mr, ref uint ptk, StringBuilder stringMember, uint cchMember, out uint pchMember, out byte* ppvSigBlob);
uint EnumProperties(ref uint handlePointerEnum, uint td, uint* arrayProperties, uint countMax);
uint EnumEvents(ref uint handlePointerEnum, uint td, uint* arrayEvents, uint countMax);
uint GetEventProps(uint ev, out uint pointerClass, StringBuilder stringEvent, uint cchEvent, out uint pchEvent, out uint pdwEventFlags,
out uint ptkEventType, out uint pmdAddOn, out uint pmdRemoveOn, out uint pmdFire,
[MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 11)] uint[] rmdOtherMethod, uint countMax);
uint EnumMethodSemantics(ref uint handlePointerEnum, uint mb, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] uint[] arrayEventProp, uint countMax);
uint GetMethodSemantics(uint mb, uint tokenEventProp);
uint GetClassLayout(uint td, out uint pdwPackSize, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] ulong[] arrayFieldOffset, uint countMax, out uint countPointerFieldOffset);
unsafe uint GetFieldMarshal(uint tk, out byte* ppvNativeType);
uint GetRVA(uint tk, out uint pulCodeRVA);
unsafe uint GetPermissionSetProps(uint pm, out uint pdwAction, out void* ppvPermission);
[PreserveSig]
unsafe int GetSigFromToken(
int tkSignature, // Signature token.
out byte* ppvSig, // return pointer to signature blob
out int pcbSig); // return size of signature
uint GetModuleRefProps(uint mur, StringBuilder stringName, uint cchName);
uint EnumModuleRefs(ref uint handlePointerEnum, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)] uint[] arrayModuleRefs, uint cmax);
unsafe uint GetTypeSpecFromToken(uint typespec, out byte* ppvSig);
uint GetNameFromToken(uint tk);
uint EnumUnresolvedMethods(ref uint handlePointerEnum, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)] uint[] arrayMethods, uint countMax);
uint GetUserString(uint stk, StringBuilder stringString, uint cchString);
uint GetPinvokeMap(uint tk, out uint pdwMappingFlags, StringBuilder stringImportName, uint cchImportName, out uint pchImportName);
uint EnumSignatures(ref uint handlePointerEnum, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)] uint[] arraySignatures, uint cmax);
uint EnumTypeSpecs(ref uint handlePointerEnum, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)] uint[] arrayTypeSpecs, uint cmax);
uint EnumUserStrings(ref uint handlePointerEnum, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)] uint[] arrayStrings, uint cmax);
[PreserveSig]
int GetParamForMethodIndex(uint md, uint ulongParamSeq, out uint pointerParam);
uint EnumCustomAttributes(ref uint handlePointerEnum, uint tk, uint tokenType, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 4)] uint[] arrayCustomAttributes, uint countMax);
uint GetCustomAttributeProps(uint cv, out uint ptkObj, out uint ptkType, out void* ppBlob);
uint FindTypeRef(uint tokenResolutionScope, string stringName);
uint GetMemberProps(uint mb, out uint pointerClass, StringBuilder stringMember, uint cchMember, out uint pchMember, out uint pdwAttr,
out byte* ppvSigBlob, out uint pcbSigBlob, out uint pulCodeRVA, out uint pdwImplFlags, out uint pdwCPlusTypeFlag, out void* ppValue);
uint GetFieldProps(uint mb, out uint pointerClass, StringBuilder stringField, uint cchField, out uint pchField, out uint pdwAttr,
out byte* ppvSigBlob, out uint pcbSigBlob, out uint pdwCPlusTypeFlag, out void* ppValue);
uint GetPropertyProps(uint prop, out uint pointerClass, StringBuilder stringProperty, uint cchProperty, out uint pchProperty, out uint pdwPropFlags,
out byte* ppvSig, out uint bytePointerSig, out uint pdwCPlusTypeFlag, out void* ppDefaultValue, out uint pcchDefaultValue, out uint pmdSetter,
out uint pmdGetter, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 14)] uint[] rmdOtherMethod, uint countMax);
uint GetParamProps(uint tk, out uint pmd, out uint pulSequence, StringBuilder stringName, uint cchName, out uint pchName,
out uint pdwAttr, out uint pdwCPlusTypeFlag, out void* ppValue);
uint GetCustomAttributeByName(uint tokenObj, string stringName, out void* ppData);
[PreserveSig]
[return: MarshalAs(UnmanagedType.Bool)]
bool IsValidToken(uint tk);
uint GetNestedClassProps(uint typeDefNestedClass);
uint GetNativeCallConvFromSig(void* voidPointerSig, uint byteCountSig);
int IsGlobal(uint pd);
}
}
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -->
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="Settings">
<Import Project="Version.targets" />
<Import Project="..\..\..\build\Targets\Settings.targets" />
</ImportGroup>
<PropertyGroup>
<Configuration Condition="'$(Configuration)' == ''">Debug</Configuration>
<Platform Condition="'$(Platform)' == ''">AnyCPU</Platform>
<ProjectGuid>{F83343BA-B4EA-451C-B6DB-5D645E6171BC}</ProjectGuid>
<OutputType>Library</OutputType>
<RootNamespace>Microsoft.DiaSymReader.PortablePdb</RootNamespace>
<AssemblyName>Microsoft.DiaSymReader.PortablePdb</AssemblyName>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<SolutionDir Condition="'$(SolutionDir)' == '' OR '$(SolutionDir)' == '*Undefined*'">..\..\..\</SolutionDir>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<TargetFrameworkProfile>Profile7</TargetFrameworkProfile>
<TargetFrameworkIdentifier>.NETPortable</TargetFrameworkIdentifier>
<ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'" />
<ItemGroup>
<Compile Include="..\..\Compilers\Core\Portable\InternalUtilities\ImmutableArrayExtensions.cs">
<Link>Utilities\ImmutableArrayExtensions.cs</Link>
</Compile>
<Compile Include="..\..\Compilers\Core\Portable\InternalUtilities\ReflectionUtilities.cs">
<Link>Utilities\ReflectionUtilities.cs</Link>
</Compile>
<Compile Include="AsyncMethodData.cs" />
<Compile Include="MethodMap.cs" />
<Compile Include="Utilities\BlobWriter.cs" />
<Compile Include="Utilities\LazyMetadataImport.cs" />
<Compile Include="Utilities\FileNameUtilities.cs" />
<Compile Include="Utilities\HResult.cs" />
<Compile Include="Utilities\InteropUtilities.cs" />
<Compile Include="Utilities\KeyValuePair.cs" />
<Compile Include="Utilities\MetadataUtilities.cs" />
<Compile Include="Utilities\EnumerableHelpers.cs" />
<Compile Include="DocumentMap.cs" />
<Compile Include="IMetadataImport.cs" />
<Compile Include="PortablePdbReader.cs" />
<Compile Include="ScopeData.cs" />
<Compile Include="RootScopeData.cs" />
<Compile Include="ChildScopeData.cs" />
<Compile Include="SymBinder.cs" />
<Compile Include="SymScope.cs" />
<Compile Include="SymConstant.cs" />
<Compile Include="SymDocument.cs" />
<Compile Include="SymMethod.cs" />
<Compile Include="SymReader.cs" />
<Compile Include="SymVariable.cs" />
<Compile Include="Utilities\PortableShim.cs" />
</ItemGroup>
<ItemGroup>
<None Include="project.json" />
</ItemGroup>
<ItemGroup>
<InternalsVisibleToTest Include="Microsoft.DiaSymReader.PortablePdb.UnitTests" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Dependencies\DiaSymReader\DiaSymReader.csproj">
<Project>{27b7a354-80cc-4bac-abf5-d4081056cea9}</Project>
<Name>DiaSymReader</Name>
</ProjectReference>
<ProjectReference Include="..\..\Dependencies\Immutable\Immutable.csproj">
<Project>{030f8ab1-d06d-4526-adec-8e6010899c71}</Project>
<Name>Immutable</Name>
</ProjectReference>
<ProjectReference Include="..\..\Dependencies\Metadata\Metadata.csproj">
<Project>{b36c94c7-f34c-43bc-8834-0b9eea6dd4df}</Project>
<Name>Metadata</Name>
</ProjectReference>
</ItemGroup>
<ImportGroup Label="Targets">
<Import Project="..\..\..\build\Targets\VSL.Imports.targets" />
</ImportGroup>
</Project>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="Settings">
<Import Project="Version.targets" />
<Import Project="..\..\..\build\Targets\Settings.targets" />
</ImportGroup>
<ItemGroup Label="Redist">
<NuSpec Include="Microsoft.DiaSymReader.PortablePdb.nuspec" />
</ItemGroup>
<Target Name="Build" Inputs="@(NuSpec)" Outputs="@(NuSpec-&gt;NuGet\$(NuGetVersionType)\%(Identity).$(NuGetVersion).nupkg">
<PropertyGroup>
<NuGetArguments>-prop binaries=$(OutDir) -prop currentVersion="$(NuGetVersion)"</NuGetArguments>
<NuGetOutDir>$(OutDir)NuGet\$(NuGetVersionType)</NuGetOutDir>
</PropertyGroup>
<!-- clean our output directory -->
<MakeDir Directories="$(NuGetOutDir)" Condition="!Exists('$(NuGetOutDir)')" />
<!-- copy any extra content files (like EULAs) that we need to include -->
<Copy SourceFiles="@(Content)" DestinationFolder="$(OutDir)" SkipUnchangedFiles="true" />
<!-- package! -->
<Exec Command='$(NuGetToolPath) Pack "$(MSBuildProjectDirectory)\%(NuSpec.Identity)" -BasePath $(OutDir) -OutputDirectory $(NuGetOutDir) $(NuGetArguments)' />
</Target>
<Target Name="Clean">
<RemoveDir Directories="$(OutDir)NuGet" />
</Target>
</Project>
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>Microsoft.DiaSymReader.PortablePdb</id>
<summary>Implementation of Microsoft DiaSymReader interfaces that reads debug information from Portable PDB format</summary>
<description>
Implementation of Microsoft DiaSymReader interfaces that reads debug information from Portable PDB format.
</description>
<dependencies>
<group targetFramework="portable-net45+win8">
<dependency id="Microsoft.DiaSymReader" version="1.0.7" />
<dependency id="System.Reflection.Metadata" version="1.2.0" />
<dependency id="System.Collections.Immutable" version="1.1.37" />
</group>
<group targetFramework="netstandard1.1">
<dependency id="Microsoft.DiaSymReader" version="1.1.0-beta1-60625-03" />
<dependency id="System.Collections" version="4.0.11" />
<dependency id="System.Collections.Immutable" version="1.2.0" />
<dependency id="System.Diagnostics.Debug" version="4.0.11" />
<dependency id="System.Globalization" version="4.0.0" />
<dependency id="System.IO" version="4.1.0" />
<dependency id="System.Linq" version="4.1.0" />
<dependency id="System.Reflection" version="4.1.0" />
<dependency id="System.Reflection.Metadata" version="1.3.0" />
<dependency id="System.Reflection.Primitives" version="4.0.1" />
<dependency id="System.Runtime" version="4.1.0" />
<dependency id="System.Runtime.Extensions" version="4.1.0" />
<dependency id="System.Runtime.InteropServices" version="4.1.0" />
<dependency id="System.Text.Encoding" version="4.0.11" />
<dependency id="System.Threading" version="4.0.11" />
<dependency id="System.Xml.XDocument" version="4.0.11" />
</group>
</dependencies>
<language>en-US</language>
<requireLicenseAcceptance>true</requireLicenseAcceptance>
<version>$currentVersion$</version>
<authors>Microsoft</authors>
<licenseUrl>http://go.microsoft.com/fwlink/?LinkId=394369</licenseUrl>
<projectUrl>http://msdn.com/roslyn</projectUrl>
<releaseNotes>Implementation of Microsoft DiaSymReader interfaces that reads debug information from Portable PDB format</releaseNotes>
<tags>DiaSymReader ISymUnmanagedReader Portable PDB COM interop debugging</tags>
</metadata>
<files>
<file src="Microsoft.DiaSymReader.PortablePdb.dll" target="lib\portable-net45+win8" />
<file src="Microsoft.DiaSymReader.PortablePdb.xml" target="lib\portable-net45+win8" />
<file src="Microsoft.DiaSymReader.PortablePdb.dll" target="lib\net45" />
<file src="Microsoft.DiaSymReader.PortablePdb.xml" target="lib\net45" />
<file src="Microsoft.DiaSymReader.PortablePdb.dll" target="lib\netstandard1.1" />
<file src="Microsoft.DiaSymReader.PortablePdb.xml" target="lib\netstandard1.1" />
</files>
</package>
// 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.Collections.Immutable;
namespace Microsoft.DiaSymReader.PortablePdb
{
internal sealed class RootScopeData : ScopeData
{
internal RootScopeData(SymMethod symMethod)
: base(symMethod)
{
}
internal override ScopeData Parent => null;
internal override int StartOffset => 0;
internal override int EndOffset
{
get
{
var mdReader = SymMethod.MetadataReader;
var allScopes = mdReader.GetLocalScopes(SymMethod.DebugHandle);
foreach (var handle in allScopes)
{
// the first scope spans the entire body
return AdjustEndOffset(mdReader.GetLocalScope(handle).EndOffset);
}
// method has no body
return 0;
}
}
protected override ImmutableArray<ChildScopeData> CreateChildren()
{
foreach (var handle in SymMethod.MetadataReader.GetLocalScopes(SymMethod.DebugHandle))
{
// The root scope has only a single child scope,
// which is the first scope in the scopes belonging to the method:
return ImmutableArray.Create(new ChildScopeData(SymMethod, this, handle));
}
// method has no body
return ImmutableArray<ChildScopeData>.Empty;
}
internal override int GetConstants(int bufferLength, out int count, ISymUnmanagedConstant[] constants)
{
// C# and VB never define any constants in the root scope
count = 0;
return HResult.S_OK;
}
internal override int GetLocals(int bufferLength, out int count, ISymUnmanagedVariable[] locals)
{
// C# and VB never define any locals in the root scope
count = 0;
return HResult.S_OK;
}
}
}
\ No newline at end of file
{
{
"supports": {},
"dependencies": {
"Microsoft.DiaSymReader.PortablePdb": "1.2.0-beta1-60706-02"
},
"frameworks": {
".NETPortable,Version=v4.5,Profile=Profile7": {}
......
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册