summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Mike Barnett <mbarnett@microsoft.com>2011-07-27 17:54:54 -0700
committerGravatar Mike Barnett <mbarnett@microsoft.com>2011-07-27 17:54:54 -0700
commit3e01b4e346a17ba9d65ca92d68fc0cbede05be42 (patch)
tree8f668b970dc8ba534066a2608bd8513ed1f450d6
parent055d639ad02d7ff9a1f6707d9f13fb4f7eeca880 (diff)
New project to support "Get Me Here": an assertion injector that puts into a
binary a call to "Contract.Assert(false)".
-rw-r--r--BCT/BCT.sln414
-rw-r--r--BCT/GetMeHere/AssertionInjector/AssertionInjector.csproj99
-rw-r--r--BCT/GetMeHere/AssertionInjector/Program.cs596
-rw-r--r--BCT/GetMeHere/AssertionInjector/Properties/AssemblyInfo.cs36
4 files changed, 1145 insertions, 0 deletions
diff --git a/BCT/BCT.sln b/BCT/BCT.sln
index 308706e2..d3151d97 100644
--- a/BCT/BCT.sln
+++ b/BCT/BCT.sln
@@ -44,223 +44,637 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Contracts", "..\.
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TranslationPlugins", "TranslationPlugins\TranslationPlugins.csproj", "{8C242D42-9714-440F-884D-F64F09E78C7B}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AssertionInjector", "GetMeHere\AssertionInjector\AssertionInjector.csproj", "{F55B9215-F618-4DCD-AD4C-2DB72CAE5A99}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PeWriter", "..\..\CCICodePlex\Ast\Metadata\Sources\PeWriter\PeWriter.csproj", "{304A8B0B-851B-4AA6-A17D-5F87F39C5E5C}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PdbWriter", "..\..\CCICodePlex\Ast\Metadata\Sources\PdbWriter\PdbWriter.csproj", "{6D83F687-ABB5-40B3-915E-CA53DA0EB7F3}"
+EndProject
Global
GlobalSection(TestCaseManagementSettings) = postSolution
CategoryFile = BCT.vsmdi
EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
CompilerOnly|Any CPU = CompilerOnly|Any CPU
+ CompilerOnly|Mixed Platforms = CompilerOnly|Mixed Platforms
+ CompilerOnly|x86 = CompilerOnly|x86
Debug|Any CPU = Debug|Any CPU
+ Debug|Mixed Platforms = Debug|Mixed Platforms
+ Debug|x86 = Debug|x86
FastpathSim|Any CPU = FastpathSim|Any CPU
+ FastpathSim|Mixed Platforms = FastpathSim|Mixed Platforms
+ FastpathSim|x86 = FastpathSim|x86
NightlyDebug|Any CPU = NightlyDebug|Any CPU
+ NightlyDebug|Mixed Platforms = NightlyDebug|Mixed Platforms
+ NightlyDebug|x86 = NightlyDebug|x86
NightlyRelease|Any CPU = NightlyRelease|Any CPU
+ NightlyRelease|Mixed Platforms = NightlyRelease|Mixed Platforms
+ NightlyRelease|x86 = NightlyRelease|x86
Release|Any CPU = Release|Any CPU
+ Release|Mixed Platforms = Release|Mixed Platforms
+ Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{9C8E4D74-0251-479D-ADAC-A9A469977301}.CompilerOnly|Any CPU.ActiveCfg = Release|Any CPU
{9C8E4D74-0251-479D-ADAC-A9A469977301}.CompilerOnly|Any CPU.Build.0 = Release|Any CPU
+ {9C8E4D74-0251-479D-ADAC-A9A469977301}.CompilerOnly|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {9C8E4D74-0251-479D-ADAC-A9A469977301}.CompilerOnly|Mixed Platforms.Build.0 = Release|Any CPU
+ {9C8E4D74-0251-479D-ADAC-A9A469977301}.CompilerOnly|x86.ActiveCfg = Release|Any CPU
{9C8E4D74-0251-479D-ADAC-A9A469977301}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9C8E4D74-0251-479D-ADAC-A9A469977301}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9C8E4D74-0251-479D-ADAC-A9A469977301}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {9C8E4D74-0251-479D-ADAC-A9A469977301}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {9C8E4D74-0251-479D-ADAC-A9A469977301}.Debug|x86.ActiveCfg = Debug|Any CPU
{9C8E4D74-0251-479D-ADAC-A9A469977301}.FastpathSim|Any CPU.ActiveCfg = Release|Any CPU
{9C8E4D74-0251-479D-ADAC-A9A469977301}.FastpathSim|Any CPU.Build.0 = Release|Any CPU
+ {9C8E4D74-0251-479D-ADAC-A9A469977301}.FastpathSim|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {9C8E4D74-0251-479D-ADAC-A9A469977301}.FastpathSim|Mixed Platforms.Build.0 = Release|Any CPU
+ {9C8E4D74-0251-479D-ADAC-A9A469977301}.FastpathSim|x86.ActiveCfg = Release|Any CPU
{9C8E4D74-0251-479D-ADAC-A9A469977301}.NightlyDebug|Any CPU.ActiveCfg = Debug|Any CPU
{9C8E4D74-0251-479D-ADAC-A9A469977301}.NightlyDebug|Any CPU.Build.0 = Debug|Any CPU
+ {9C8E4D74-0251-479D-ADAC-A9A469977301}.NightlyDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {9C8E4D74-0251-479D-ADAC-A9A469977301}.NightlyDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {9C8E4D74-0251-479D-ADAC-A9A469977301}.NightlyDebug|x86.ActiveCfg = Debug|Any CPU
{9C8E4D74-0251-479D-ADAC-A9A469977301}.NightlyRelease|Any CPU.ActiveCfg = Release|Any CPU
{9C8E4D74-0251-479D-ADAC-A9A469977301}.NightlyRelease|Any CPU.Build.0 = Release|Any CPU
+ {9C8E4D74-0251-479D-ADAC-A9A469977301}.NightlyRelease|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {9C8E4D74-0251-479D-ADAC-A9A469977301}.NightlyRelease|Mixed Platforms.Build.0 = Release|Any CPU
+ {9C8E4D74-0251-479D-ADAC-A9A469977301}.NightlyRelease|x86.ActiveCfg = Release|Any CPU
{9C8E4D74-0251-479D-ADAC-A9A469977301}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9C8E4D74-0251-479D-ADAC-A9A469977301}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9C8E4D74-0251-479D-ADAC-A9A469977301}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {9C8E4D74-0251-479D-ADAC-A9A469977301}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {9C8E4D74-0251-479D-ADAC-A9A469977301}.Release|x86.ActiveCfg = Release|Any CPU
{33CAB640-0D03-43DF-81BD-22CDC6C0A597}.CompilerOnly|Any CPU.ActiveCfg = CompilerOnly|Any CPU
{33CAB640-0D03-43DF-81BD-22CDC6C0A597}.CompilerOnly|Any CPU.Build.0 = CompilerOnly|Any CPU
+ {33CAB640-0D03-43DF-81BD-22CDC6C0A597}.CompilerOnly|Mixed Platforms.ActiveCfg = CompilerOnly|Any CPU
+ {33CAB640-0D03-43DF-81BD-22CDC6C0A597}.CompilerOnly|Mixed Platforms.Build.0 = CompilerOnly|Any CPU
+ {33CAB640-0D03-43DF-81BD-22CDC6C0A597}.CompilerOnly|x86.ActiveCfg = CompilerOnly|Any CPU
{33CAB640-0D03-43DF-81BD-22CDC6C0A597}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{33CAB640-0D03-43DF-81BD-22CDC6C0A597}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {33CAB640-0D03-43DF-81BD-22CDC6C0A597}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {33CAB640-0D03-43DF-81BD-22CDC6C0A597}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {33CAB640-0D03-43DF-81BD-22CDC6C0A597}.Debug|x86.ActiveCfg = Debug|Any CPU
{33CAB640-0D03-43DF-81BD-22CDC6C0A597}.FastpathSim|Any CPU.ActiveCfg = CompilerOnly|Any CPU
{33CAB640-0D03-43DF-81BD-22CDC6C0A597}.FastpathSim|Any CPU.Build.0 = CompilerOnly|Any CPU
+ {33CAB640-0D03-43DF-81BD-22CDC6C0A597}.FastpathSim|Mixed Platforms.ActiveCfg = CompilerOnly|Any CPU
+ {33CAB640-0D03-43DF-81BD-22CDC6C0A597}.FastpathSim|Mixed Platforms.Build.0 = CompilerOnly|Any CPU
+ {33CAB640-0D03-43DF-81BD-22CDC6C0A597}.FastpathSim|x86.ActiveCfg = CompilerOnly|Any CPU
{33CAB640-0D03-43DF-81BD-22CDC6C0A597}.NightlyDebug|Any CPU.ActiveCfg = NightlyDebug|Any CPU
{33CAB640-0D03-43DF-81BD-22CDC6C0A597}.NightlyDebug|Any CPU.Build.0 = NightlyDebug|Any CPU
+ {33CAB640-0D03-43DF-81BD-22CDC6C0A597}.NightlyDebug|Mixed Platforms.ActiveCfg = NightlyDebug|Any CPU
+ {33CAB640-0D03-43DF-81BD-22CDC6C0A597}.NightlyDebug|Mixed Platforms.Build.0 = NightlyDebug|Any CPU
+ {33CAB640-0D03-43DF-81BD-22CDC6C0A597}.NightlyDebug|x86.ActiveCfg = NightlyDebug|Any CPU
{33CAB640-0D03-43DF-81BD-22CDC6C0A597}.NightlyRelease|Any CPU.ActiveCfg = NightlyRelease|Any CPU
{33CAB640-0D03-43DF-81BD-22CDC6C0A597}.NightlyRelease|Any CPU.Build.0 = NightlyRelease|Any CPU
+ {33CAB640-0D03-43DF-81BD-22CDC6C0A597}.NightlyRelease|Mixed Platforms.ActiveCfg = NightlyRelease|Any CPU
+ {33CAB640-0D03-43DF-81BD-22CDC6C0A597}.NightlyRelease|Mixed Platforms.Build.0 = NightlyRelease|Any CPU
+ {33CAB640-0D03-43DF-81BD-22CDC6C0A597}.NightlyRelease|x86.ActiveCfg = NightlyRelease|Any CPU
{33CAB640-0D03-43DF-81BD-22CDC6C0A597}.Release|Any CPU.ActiveCfg = Release|Any CPU
{33CAB640-0D03-43DF-81BD-22CDC6C0A597}.Release|Any CPU.Build.0 = Release|Any CPU
+ {33CAB640-0D03-43DF-81BD-22CDC6C0A597}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {33CAB640-0D03-43DF-81BD-22CDC6C0A597}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {33CAB640-0D03-43DF-81BD-22CDC6C0A597}.Release|x86.ActiveCfg = Release|Any CPU
{4A34A3C5-6176-49D7-A4C5-B2B671247F8F}.CompilerOnly|Any CPU.ActiveCfg = CompilerOnly|Any CPU
{4A34A3C5-6176-49D7-A4C5-B2B671247F8F}.CompilerOnly|Any CPU.Build.0 = CompilerOnly|Any CPU
+ {4A34A3C5-6176-49D7-A4C5-B2B671247F8F}.CompilerOnly|Mixed Platforms.ActiveCfg = CompilerOnly|Any CPU
+ {4A34A3C5-6176-49D7-A4C5-B2B671247F8F}.CompilerOnly|Mixed Platforms.Build.0 = CompilerOnly|Any CPU
+ {4A34A3C5-6176-49D7-A4C5-B2B671247F8F}.CompilerOnly|x86.ActiveCfg = CompilerOnly|Any CPU
{4A34A3C5-6176-49D7-A4C5-B2B671247F8F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4A34A3C5-6176-49D7-A4C5-B2B671247F8F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4A34A3C5-6176-49D7-A4C5-B2B671247F8F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {4A34A3C5-6176-49D7-A4C5-B2B671247F8F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {4A34A3C5-6176-49D7-A4C5-B2B671247F8F}.Debug|x86.ActiveCfg = Debug|Any CPU
{4A34A3C5-6176-49D7-A4C5-B2B671247F8F}.FastpathSim|Any CPU.ActiveCfg = CompilerOnly|Any CPU
{4A34A3C5-6176-49D7-A4C5-B2B671247F8F}.FastpathSim|Any CPU.Build.0 = CompilerOnly|Any CPU
+ {4A34A3C5-6176-49D7-A4C5-B2B671247F8F}.FastpathSim|Mixed Platforms.ActiveCfg = CompilerOnly|Any CPU
+ {4A34A3C5-6176-49D7-A4C5-B2B671247F8F}.FastpathSim|Mixed Platforms.Build.0 = CompilerOnly|Any CPU
+ {4A34A3C5-6176-49D7-A4C5-B2B671247F8F}.FastpathSim|x86.ActiveCfg = CompilerOnly|Any CPU
{4A34A3C5-6176-49D7-A4C5-B2B671247F8F}.NightlyDebug|Any CPU.ActiveCfg = NightlyDebug|Any CPU
{4A34A3C5-6176-49D7-A4C5-B2B671247F8F}.NightlyDebug|Any CPU.Build.0 = NightlyDebug|Any CPU
+ {4A34A3C5-6176-49D7-A4C5-B2B671247F8F}.NightlyDebug|Mixed Platforms.ActiveCfg = NightlyDebug|Any CPU
+ {4A34A3C5-6176-49D7-A4C5-B2B671247F8F}.NightlyDebug|Mixed Platforms.Build.0 = NightlyDebug|Any CPU
+ {4A34A3C5-6176-49D7-A4C5-B2B671247F8F}.NightlyDebug|x86.ActiveCfg = NightlyDebug|Any CPU
{4A34A3C5-6176-49D7-A4C5-B2B671247F8F}.NightlyRelease|Any CPU.ActiveCfg = NightlyRelease|Any CPU
{4A34A3C5-6176-49D7-A4C5-B2B671247F8F}.NightlyRelease|Any CPU.Build.0 = NightlyRelease|Any CPU
+ {4A34A3C5-6176-49D7-A4C5-B2B671247F8F}.NightlyRelease|Mixed Platforms.ActiveCfg = NightlyRelease|Any CPU
+ {4A34A3C5-6176-49D7-A4C5-B2B671247F8F}.NightlyRelease|Mixed Platforms.Build.0 = NightlyRelease|Any CPU
+ {4A34A3C5-6176-49D7-A4C5-B2B671247F8F}.NightlyRelease|x86.ActiveCfg = NightlyRelease|Any CPU
{4A34A3C5-6176-49D7-A4C5-B2B671247F8F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4A34A3C5-6176-49D7-A4C5-B2B671247F8F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4A34A3C5-6176-49D7-A4C5-B2B671247F8F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {4A34A3C5-6176-49D7-A4C5-B2B671247F8F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {4A34A3C5-6176-49D7-A4C5-B2B671247F8F}.Release|x86.ActiveCfg = Release|Any CPU
{319E151C-8F33-49E7-81C9-30F02F9BA90A}.CompilerOnly|Any CPU.ActiveCfg = CompilerOnly|Any CPU
{319E151C-8F33-49E7-81C9-30F02F9BA90A}.CompilerOnly|Any CPU.Build.0 = CompilerOnly|Any CPU
+ {319E151C-8F33-49E7-81C9-30F02F9BA90A}.CompilerOnly|Mixed Platforms.ActiveCfg = CompilerOnly|Any CPU
+ {319E151C-8F33-49E7-81C9-30F02F9BA90A}.CompilerOnly|Mixed Platforms.Build.0 = CompilerOnly|Any CPU
+ {319E151C-8F33-49E7-81C9-30F02F9BA90A}.CompilerOnly|x86.ActiveCfg = CompilerOnly|Any CPU
{319E151C-8F33-49E7-81C9-30F02F9BA90A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{319E151C-8F33-49E7-81C9-30F02F9BA90A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {319E151C-8F33-49E7-81C9-30F02F9BA90A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {319E151C-8F33-49E7-81C9-30F02F9BA90A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {319E151C-8F33-49E7-81C9-30F02F9BA90A}.Debug|x86.ActiveCfg = Debug|Any CPU
{319E151C-8F33-49E7-81C9-30F02F9BA90A}.FastpathSim|Any CPU.ActiveCfg = CompilerOnly|Any CPU
{319E151C-8F33-49E7-81C9-30F02F9BA90A}.FastpathSim|Any CPU.Build.0 = CompilerOnly|Any CPU
+ {319E151C-8F33-49E7-81C9-30F02F9BA90A}.FastpathSim|Mixed Platforms.ActiveCfg = CompilerOnly|Any CPU
+ {319E151C-8F33-49E7-81C9-30F02F9BA90A}.FastpathSim|Mixed Platforms.Build.0 = CompilerOnly|Any CPU
+ {319E151C-8F33-49E7-81C9-30F02F9BA90A}.FastpathSim|x86.ActiveCfg = CompilerOnly|Any CPU
{319E151C-8F33-49E7-81C9-30F02F9BA90A}.NightlyDebug|Any CPU.ActiveCfg = NightlyDebug|Any CPU
{319E151C-8F33-49E7-81C9-30F02F9BA90A}.NightlyDebug|Any CPU.Build.0 = NightlyDebug|Any CPU
+ {319E151C-8F33-49E7-81C9-30F02F9BA90A}.NightlyDebug|Mixed Platforms.ActiveCfg = NightlyDebug|Any CPU
+ {319E151C-8F33-49E7-81C9-30F02F9BA90A}.NightlyDebug|Mixed Platforms.Build.0 = NightlyDebug|Any CPU
+ {319E151C-8F33-49E7-81C9-30F02F9BA90A}.NightlyDebug|x86.ActiveCfg = NightlyDebug|Any CPU
{319E151C-8F33-49E7-81C9-30F02F9BA90A}.NightlyRelease|Any CPU.ActiveCfg = NightlyRelease|Any CPU
{319E151C-8F33-49E7-81C9-30F02F9BA90A}.NightlyRelease|Any CPU.Build.0 = NightlyRelease|Any CPU
+ {319E151C-8F33-49E7-81C9-30F02F9BA90A}.NightlyRelease|Mixed Platforms.ActiveCfg = NightlyRelease|Any CPU
+ {319E151C-8F33-49E7-81C9-30F02F9BA90A}.NightlyRelease|Mixed Platforms.Build.0 = NightlyRelease|Any CPU
+ {319E151C-8F33-49E7-81C9-30F02F9BA90A}.NightlyRelease|x86.ActiveCfg = NightlyRelease|Any CPU
{319E151C-8F33-49E7-81C9-30F02F9BA90A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{319E151C-8F33-49E7-81C9-30F02F9BA90A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {319E151C-8F33-49E7-81C9-30F02F9BA90A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {319E151C-8F33-49E7-81C9-30F02F9BA90A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {319E151C-8F33-49E7-81C9-30F02F9BA90A}.Release|x86.ActiveCfg = Release|Any CPU
{34B9A0CE-DF18-4CBC-8F7A-90C2B74338D5}.CompilerOnly|Any CPU.ActiveCfg = CompilerOnly|Any CPU
{34B9A0CE-DF18-4CBC-8F7A-90C2B74338D5}.CompilerOnly|Any CPU.Build.0 = CompilerOnly|Any CPU
+ {34B9A0CE-DF18-4CBC-8F7A-90C2B74338D5}.CompilerOnly|Mixed Platforms.ActiveCfg = CompilerOnly|Any CPU
+ {34B9A0CE-DF18-4CBC-8F7A-90C2B74338D5}.CompilerOnly|Mixed Platforms.Build.0 = CompilerOnly|Any CPU
+ {34B9A0CE-DF18-4CBC-8F7A-90C2B74338D5}.CompilerOnly|x86.ActiveCfg = CompilerOnly|Any CPU
{34B9A0CE-DF18-4CBC-8F7A-90C2B74338D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{34B9A0CE-DF18-4CBC-8F7A-90C2B74338D5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {34B9A0CE-DF18-4CBC-8F7A-90C2B74338D5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {34B9A0CE-DF18-4CBC-8F7A-90C2B74338D5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {34B9A0CE-DF18-4CBC-8F7A-90C2B74338D5}.Debug|x86.ActiveCfg = Debug|Any CPU
{34B9A0CE-DF18-4CBC-8F7A-90C2B74338D5}.FastpathSim|Any CPU.ActiveCfg = CompilerOnly|Any CPU
{34B9A0CE-DF18-4CBC-8F7A-90C2B74338D5}.FastpathSim|Any CPU.Build.0 = CompilerOnly|Any CPU
+ {34B9A0CE-DF18-4CBC-8F7A-90C2B74338D5}.FastpathSim|Mixed Platforms.ActiveCfg = CompilerOnly|Any CPU
+ {34B9A0CE-DF18-4CBC-8F7A-90C2B74338D5}.FastpathSim|Mixed Platforms.Build.0 = CompilerOnly|Any CPU
+ {34B9A0CE-DF18-4CBC-8F7A-90C2B74338D5}.FastpathSim|x86.ActiveCfg = CompilerOnly|Any CPU
{34B9A0CE-DF18-4CBC-8F7A-90C2B74338D5}.NightlyDebug|Any CPU.ActiveCfg = Debug|Any CPU
{34B9A0CE-DF18-4CBC-8F7A-90C2B74338D5}.NightlyDebug|Any CPU.Build.0 = Debug|Any CPU
+ {34B9A0CE-DF18-4CBC-8F7A-90C2B74338D5}.NightlyDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {34B9A0CE-DF18-4CBC-8F7A-90C2B74338D5}.NightlyDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {34B9A0CE-DF18-4CBC-8F7A-90C2B74338D5}.NightlyDebug|x86.ActiveCfg = Debug|Any CPU
{34B9A0CE-DF18-4CBC-8F7A-90C2B74338D5}.NightlyRelease|Any CPU.ActiveCfg = Release|Any CPU
{34B9A0CE-DF18-4CBC-8F7A-90C2B74338D5}.NightlyRelease|Any CPU.Build.0 = Release|Any CPU
+ {34B9A0CE-DF18-4CBC-8F7A-90C2B74338D5}.NightlyRelease|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {34B9A0CE-DF18-4CBC-8F7A-90C2B74338D5}.NightlyRelease|Mixed Platforms.Build.0 = Release|Any CPU
+ {34B9A0CE-DF18-4CBC-8F7A-90C2B74338D5}.NightlyRelease|x86.ActiveCfg = Release|Any CPU
{34B9A0CE-DF18-4CBC-8F7A-90C2B74338D5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{34B9A0CE-DF18-4CBC-8F7A-90C2B74338D5}.Release|Any CPU.Build.0 = Release|Any CPU
+ {34B9A0CE-DF18-4CBC-8F7A-90C2B74338D5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {34B9A0CE-DF18-4CBC-8F7A-90C2B74338D5}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {34B9A0CE-DF18-4CBC-8F7A-90C2B74338D5}.Release|x86.ActiveCfg = Release|Any CPU
{A6A31B03-7C3D-4DE6-AA73-BE88116BC40A}.CompilerOnly|Any CPU.ActiveCfg = Release|Any CPU
{A6A31B03-7C3D-4DE6-AA73-BE88116BC40A}.CompilerOnly|Any CPU.Build.0 = Release|Any CPU
+ {A6A31B03-7C3D-4DE6-AA73-BE88116BC40A}.CompilerOnly|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {A6A31B03-7C3D-4DE6-AA73-BE88116BC40A}.CompilerOnly|Mixed Platforms.Build.0 = Release|Any CPU
+ {A6A31B03-7C3D-4DE6-AA73-BE88116BC40A}.CompilerOnly|x86.ActiveCfg = Release|Any CPU
{A6A31B03-7C3D-4DE6-AA73-BE88116BC40A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A6A31B03-7C3D-4DE6-AA73-BE88116BC40A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A6A31B03-7C3D-4DE6-AA73-BE88116BC40A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {A6A31B03-7C3D-4DE6-AA73-BE88116BC40A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {A6A31B03-7C3D-4DE6-AA73-BE88116BC40A}.Debug|x86.ActiveCfg = Debug|Any CPU
{A6A31B03-7C3D-4DE6-AA73-BE88116BC40A}.FastpathSim|Any CPU.ActiveCfg = Release|Any CPU
{A6A31B03-7C3D-4DE6-AA73-BE88116BC40A}.FastpathSim|Any CPU.Build.0 = Release|Any CPU
+ {A6A31B03-7C3D-4DE6-AA73-BE88116BC40A}.FastpathSim|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {A6A31B03-7C3D-4DE6-AA73-BE88116BC40A}.FastpathSim|Mixed Platforms.Build.0 = Release|Any CPU
+ {A6A31B03-7C3D-4DE6-AA73-BE88116BC40A}.FastpathSim|x86.ActiveCfg = Release|Any CPU
{A6A31B03-7C3D-4DE6-AA73-BE88116BC40A}.NightlyDebug|Any CPU.ActiveCfg = Debug|Any CPU
{A6A31B03-7C3D-4DE6-AA73-BE88116BC40A}.NightlyDebug|Any CPU.Build.0 = Debug|Any CPU
+ {A6A31B03-7C3D-4DE6-AA73-BE88116BC40A}.NightlyDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {A6A31B03-7C3D-4DE6-AA73-BE88116BC40A}.NightlyDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {A6A31B03-7C3D-4DE6-AA73-BE88116BC40A}.NightlyDebug|x86.ActiveCfg = Debug|Any CPU
{A6A31B03-7C3D-4DE6-AA73-BE88116BC40A}.NightlyRelease|Any CPU.ActiveCfg = Release|Any CPU
{A6A31B03-7C3D-4DE6-AA73-BE88116BC40A}.NightlyRelease|Any CPU.Build.0 = Release|Any CPU
+ {A6A31B03-7C3D-4DE6-AA73-BE88116BC40A}.NightlyRelease|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {A6A31B03-7C3D-4DE6-AA73-BE88116BC40A}.NightlyRelease|Mixed Platforms.Build.0 = Release|Any CPU
+ {A6A31B03-7C3D-4DE6-AA73-BE88116BC40A}.NightlyRelease|x86.ActiveCfg = Release|Any CPU
{A6A31B03-7C3D-4DE6-AA73-BE88116BC40A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A6A31B03-7C3D-4DE6-AA73-BE88116BC40A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A6A31B03-7C3D-4DE6-AA73-BE88116BC40A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {A6A31B03-7C3D-4DE6-AA73-BE88116BC40A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {A6A31B03-7C3D-4DE6-AA73-BE88116BC40A}.Release|x86.ActiveCfg = Release|Any CPU
{4B0054FD-124A-4037-9965-BDB55E6BF389}.CompilerOnly|Any CPU.ActiveCfg = CompilerOnly|Any CPU
{4B0054FD-124A-4037-9965-BDB55E6BF389}.CompilerOnly|Any CPU.Build.0 = CompilerOnly|Any CPU
+ {4B0054FD-124A-4037-9965-BDB55E6BF389}.CompilerOnly|Mixed Platforms.ActiveCfg = CompilerOnly|Any CPU
+ {4B0054FD-124A-4037-9965-BDB55E6BF389}.CompilerOnly|Mixed Platforms.Build.0 = CompilerOnly|Any CPU
+ {4B0054FD-124A-4037-9965-BDB55E6BF389}.CompilerOnly|x86.ActiveCfg = CompilerOnly|Any CPU
{4B0054FD-124A-4037-9965-BDB55E6BF389}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4B0054FD-124A-4037-9965-BDB55E6BF389}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4B0054FD-124A-4037-9965-BDB55E6BF389}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {4B0054FD-124A-4037-9965-BDB55E6BF389}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {4B0054FD-124A-4037-9965-BDB55E6BF389}.Debug|x86.ActiveCfg = Debug|Any CPU
{4B0054FD-124A-4037-9965-BDB55E6BF389}.FastpathSim|Any CPU.ActiveCfg = CompilerOnly|Any CPU
{4B0054FD-124A-4037-9965-BDB55E6BF389}.FastpathSim|Any CPU.Build.0 = CompilerOnly|Any CPU
+ {4B0054FD-124A-4037-9965-BDB55E6BF389}.FastpathSim|Mixed Platforms.ActiveCfg = CompilerOnly|Any CPU
+ {4B0054FD-124A-4037-9965-BDB55E6BF389}.FastpathSim|Mixed Platforms.Build.0 = CompilerOnly|Any CPU
+ {4B0054FD-124A-4037-9965-BDB55E6BF389}.FastpathSim|x86.ActiveCfg = CompilerOnly|Any CPU
{4B0054FD-124A-4037-9965-BDB55E6BF389}.NightlyDebug|Any CPU.ActiveCfg = Debug|Any CPU
{4B0054FD-124A-4037-9965-BDB55E6BF389}.NightlyDebug|Any CPU.Build.0 = Debug|Any CPU
+ {4B0054FD-124A-4037-9965-BDB55E6BF389}.NightlyDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {4B0054FD-124A-4037-9965-BDB55E6BF389}.NightlyDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {4B0054FD-124A-4037-9965-BDB55E6BF389}.NightlyDebug|x86.ActiveCfg = Debug|Any CPU
{4B0054FD-124A-4037-9965-BDB55E6BF389}.NightlyRelease|Any CPU.ActiveCfg = Release|Any CPU
{4B0054FD-124A-4037-9965-BDB55E6BF389}.NightlyRelease|Any CPU.Build.0 = Release|Any CPU
+ {4B0054FD-124A-4037-9965-BDB55E6BF389}.NightlyRelease|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {4B0054FD-124A-4037-9965-BDB55E6BF389}.NightlyRelease|Mixed Platforms.Build.0 = Release|Any CPU
+ {4B0054FD-124A-4037-9965-BDB55E6BF389}.NightlyRelease|x86.ActiveCfg = Release|Any CPU
{4B0054FD-124A-4037-9965-BDB55E6BF389}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4B0054FD-124A-4037-9965-BDB55E6BF389}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4B0054FD-124A-4037-9965-BDB55E6BF389}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {4B0054FD-124A-4037-9965-BDB55E6BF389}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {4B0054FD-124A-4037-9965-BDB55E6BF389}.Release|x86.ActiveCfg = Release|Any CPU
{27F2A417-B6ED-43AD-A38E-A0B6142216F6}.CompilerOnly|Any CPU.ActiveCfg = Release|Any CPU
{27F2A417-B6ED-43AD-A38E-A0B6142216F6}.CompilerOnly|Any CPU.Build.0 = Release|Any CPU
+ {27F2A417-B6ED-43AD-A38E-A0B6142216F6}.CompilerOnly|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {27F2A417-B6ED-43AD-A38E-A0B6142216F6}.CompilerOnly|Mixed Platforms.Build.0 = Release|Any CPU
+ {27F2A417-B6ED-43AD-A38E-A0B6142216F6}.CompilerOnly|x86.ActiveCfg = Release|Any CPU
{27F2A417-B6ED-43AD-A38E-A0B6142216F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{27F2A417-B6ED-43AD-A38E-A0B6142216F6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {27F2A417-B6ED-43AD-A38E-A0B6142216F6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {27F2A417-B6ED-43AD-A38E-A0B6142216F6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {27F2A417-B6ED-43AD-A38E-A0B6142216F6}.Debug|x86.ActiveCfg = Debug|Any CPU
{27F2A417-B6ED-43AD-A38E-A0B6142216F6}.FastpathSim|Any CPU.ActiveCfg = Release|Any CPU
{27F2A417-B6ED-43AD-A38E-A0B6142216F6}.FastpathSim|Any CPU.Build.0 = Release|Any CPU
+ {27F2A417-B6ED-43AD-A38E-A0B6142216F6}.FastpathSim|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {27F2A417-B6ED-43AD-A38E-A0B6142216F6}.FastpathSim|Mixed Platforms.Build.0 = Release|Any CPU
+ {27F2A417-B6ED-43AD-A38E-A0B6142216F6}.FastpathSim|x86.ActiveCfg = Release|Any CPU
{27F2A417-B6ED-43AD-A38E-A0B6142216F6}.NightlyDebug|Any CPU.ActiveCfg = Debug|Any CPU
{27F2A417-B6ED-43AD-A38E-A0B6142216F6}.NightlyDebug|Any CPU.Build.0 = Debug|Any CPU
+ {27F2A417-B6ED-43AD-A38E-A0B6142216F6}.NightlyDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {27F2A417-B6ED-43AD-A38E-A0B6142216F6}.NightlyDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {27F2A417-B6ED-43AD-A38E-A0B6142216F6}.NightlyDebug|x86.ActiveCfg = Debug|Any CPU
{27F2A417-B6ED-43AD-A38E-A0B6142216F6}.NightlyRelease|Any CPU.ActiveCfg = Release|Any CPU
{27F2A417-B6ED-43AD-A38E-A0B6142216F6}.NightlyRelease|Any CPU.Build.0 = Release|Any CPU
+ {27F2A417-B6ED-43AD-A38E-A0B6142216F6}.NightlyRelease|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {27F2A417-B6ED-43AD-A38E-A0B6142216F6}.NightlyRelease|Mixed Platforms.Build.0 = Release|Any CPU
+ {27F2A417-B6ED-43AD-A38E-A0B6142216F6}.NightlyRelease|x86.ActiveCfg = Release|Any CPU
{27F2A417-B6ED-43AD-A38E-A0B6142216F6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{27F2A417-B6ED-43AD-A38E-A0B6142216F6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {27F2A417-B6ED-43AD-A38E-A0B6142216F6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {27F2A417-B6ED-43AD-A38E-A0B6142216F6}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {27F2A417-B6ED-43AD-A38E-A0B6142216F6}.Release|x86.ActiveCfg = Release|Any CPU
{035FEA7F-0D36-4AE4-B694-EC45191B9AF2}.CompilerOnly|Any CPU.ActiveCfg = CompilerOnly|Any CPU
{035FEA7F-0D36-4AE4-B694-EC45191B9AF2}.CompilerOnly|Any CPU.Build.0 = CompilerOnly|Any CPU
+ {035FEA7F-0D36-4AE4-B694-EC45191B9AF2}.CompilerOnly|Mixed Platforms.ActiveCfg = CompilerOnly|Any CPU
+ {035FEA7F-0D36-4AE4-B694-EC45191B9AF2}.CompilerOnly|Mixed Platforms.Build.0 = CompilerOnly|Any CPU
+ {035FEA7F-0D36-4AE4-B694-EC45191B9AF2}.CompilerOnly|x86.ActiveCfg = CompilerOnly|Any CPU
{035FEA7F-0D36-4AE4-B694-EC45191B9AF2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{035FEA7F-0D36-4AE4-B694-EC45191B9AF2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {035FEA7F-0D36-4AE4-B694-EC45191B9AF2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {035FEA7F-0D36-4AE4-B694-EC45191B9AF2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {035FEA7F-0D36-4AE4-B694-EC45191B9AF2}.Debug|x86.ActiveCfg = Debug|Any CPU
{035FEA7F-0D36-4AE4-B694-EC45191B9AF2}.FastpathSim|Any CPU.ActiveCfg = CompilerOnly|Any CPU
{035FEA7F-0D36-4AE4-B694-EC45191B9AF2}.FastpathSim|Any CPU.Build.0 = CompilerOnly|Any CPU
+ {035FEA7F-0D36-4AE4-B694-EC45191B9AF2}.FastpathSim|Mixed Platforms.ActiveCfg = CompilerOnly|Any CPU
+ {035FEA7F-0D36-4AE4-B694-EC45191B9AF2}.FastpathSim|Mixed Platforms.Build.0 = CompilerOnly|Any CPU
+ {035FEA7F-0D36-4AE4-B694-EC45191B9AF2}.FastpathSim|x86.ActiveCfg = CompilerOnly|Any CPU
{035FEA7F-0D36-4AE4-B694-EC45191B9AF2}.NightlyDebug|Any CPU.ActiveCfg = Debug|Any CPU
{035FEA7F-0D36-4AE4-B694-EC45191B9AF2}.NightlyDebug|Any CPU.Build.0 = Debug|Any CPU
+ {035FEA7F-0D36-4AE4-B694-EC45191B9AF2}.NightlyDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {035FEA7F-0D36-4AE4-B694-EC45191B9AF2}.NightlyDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {035FEA7F-0D36-4AE4-B694-EC45191B9AF2}.NightlyDebug|x86.ActiveCfg = Debug|Any CPU
{035FEA7F-0D36-4AE4-B694-EC45191B9AF2}.NightlyRelease|Any CPU.ActiveCfg = Release|Any CPU
{035FEA7F-0D36-4AE4-B694-EC45191B9AF2}.NightlyRelease|Any CPU.Build.0 = Release|Any CPU
+ {035FEA7F-0D36-4AE4-B694-EC45191B9AF2}.NightlyRelease|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {035FEA7F-0D36-4AE4-B694-EC45191B9AF2}.NightlyRelease|Mixed Platforms.Build.0 = Release|Any CPU
+ {035FEA7F-0D36-4AE4-B694-EC45191B9AF2}.NightlyRelease|x86.ActiveCfg = Release|Any CPU
{035FEA7F-0D36-4AE4-B694-EC45191B9AF2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{035FEA7F-0D36-4AE4-B694-EC45191B9AF2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {035FEA7F-0D36-4AE4-B694-EC45191B9AF2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {035FEA7F-0D36-4AE4-B694-EC45191B9AF2}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {035FEA7F-0D36-4AE4-B694-EC45191B9AF2}.Release|x86.ActiveCfg = Release|Any CPU
{319E150C-8F33-49E7-81CA-30F02F9BA90A}.CompilerOnly|Any CPU.ActiveCfg = CompilerOnly|Any CPU
{319E150C-8F33-49E7-81CA-30F02F9BA90A}.CompilerOnly|Any CPU.Build.0 = CompilerOnly|Any CPU
+ {319E150C-8F33-49E7-81CA-30F02F9BA90A}.CompilerOnly|Mixed Platforms.ActiveCfg = CompilerOnly|Any CPU
+ {319E150C-8F33-49E7-81CA-30F02F9BA90A}.CompilerOnly|Mixed Platforms.Build.0 = CompilerOnly|Any CPU
+ {319E150C-8F33-49E7-81CA-30F02F9BA90A}.CompilerOnly|x86.ActiveCfg = CompilerOnly|Any CPU
{319E150C-8F33-49E7-81CA-30F02F9BA90A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{319E150C-8F33-49E7-81CA-30F02F9BA90A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {319E150C-8F33-49E7-81CA-30F02F9BA90A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {319E150C-8F33-49E7-81CA-30F02F9BA90A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {319E150C-8F33-49E7-81CA-30F02F9BA90A}.Debug|x86.ActiveCfg = Debug|Any CPU
{319E150C-8F33-49E7-81CA-30F02F9BA90A}.FastpathSim|Any CPU.ActiveCfg = CompilerOnly|Any CPU
{319E150C-8F33-49E7-81CA-30F02F9BA90A}.FastpathSim|Any CPU.Build.0 = CompilerOnly|Any CPU
+ {319E150C-8F33-49E7-81CA-30F02F9BA90A}.FastpathSim|Mixed Platforms.ActiveCfg = CompilerOnly|Any CPU
+ {319E150C-8F33-49E7-81CA-30F02F9BA90A}.FastpathSim|Mixed Platforms.Build.0 = CompilerOnly|Any CPU
+ {319E150C-8F33-49E7-81CA-30F02F9BA90A}.FastpathSim|x86.ActiveCfg = CompilerOnly|Any CPU
{319E150C-8F33-49E7-81CA-30F02F9BA90A}.NightlyDebug|Any CPU.ActiveCfg = NightlyDebug|Any CPU
{319E150C-8F33-49E7-81CA-30F02F9BA90A}.NightlyDebug|Any CPU.Build.0 = NightlyDebug|Any CPU
+ {319E150C-8F33-49E7-81CA-30F02F9BA90A}.NightlyDebug|Mixed Platforms.ActiveCfg = NightlyDebug|Any CPU
+ {319E150C-8F33-49E7-81CA-30F02F9BA90A}.NightlyDebug|Mixed Platforms.Build.0 = NightlyDebug|Any CPU
+ {319E150C-8F33-49E7-81CA-30F02F9BA90A}.NightlyDebug|x86.ActiveCfg = NightlyDebug|Any CPU
{319E150C-8F33-49E7-81CA-30F02F9BA90A}.NightlyRelease|Any CPU.ActiveCfg = NightlyRelease|Any CPU
{319E150C-8F33-49E7-81CA-30F02F9BA90A}.NightlyRelease|Any CPU.Build.0 = NightlyRelease|Any CPU
+ {319E150C-8F33-49E7-81CA-30F02F9BA90A}.NightlyRelease|Mixed Platforms.ActiveCfg = NightlyRelease|Any CPU
+ {319E150C-8F33-49E7-81CA-30F02F9BA90A}.NightlyRelease|Mixed Platforms.Build.0 = NightlyRelease|Any CPU
+ {319E150C-8F33-49E7-81CA-30F02F9BA90A}.NightlyRelease|x86.ActiveCfg = NightlyRelease|Any CPU
{319E150C-8F33-49E7-81CA-30F02F9BA90A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{319E150C-8F33-49E7-81CA-30F02F9BA90A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {319E150C-8F33-49E7-81CA-30F02F9BA90A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {319E150C-8F33-49E7-81CA-30F02F9BA90A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {319E150C-8F33-49E7-81CA-30F02F9BA90A}.Release|x86.ActiveCfg = Release|Any CPU
{CEB76EA1-A168-49B0-A410-2C4195FEE86F}.CompilerOnly|Any CPU.ActiveCfg = CompilerOnly|Any CPU
{CEB76EA1-A168-49B0-A410-2C4195FEE86F}.CompilerOnly|Any CPU.Build.0 = CompilerOnly|Any CPU
+ {CEB76EA1-A168-49B0-A410-2C4195FEE86F}.CompilerOnly|Mixed Platforms.ActiveCfg = CompilerOnly|Any CPU
+ {CEB76EA1-A168-49B0-A410-2C4195FEE86F}.CompilerOnly|Mixed Platforms.Build.0 = CompilerOnly|Any CPU
+ {CEB76EA1-A168-49B0-A410-2C4195FEE86F}.CompilerOnly|x86.ActiveCfg = CompilerOnly|Any CPU
{CEB76EA1-A168-49B0-A410-2C4195FEE86F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CEB76EA1-A168-49B0-A410-2C4195FEE86F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CEB76EA1-A168-49B0-A410-2C4195FEE86F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {CEB76EA1-A168-49B0-A410-2C4195FEE86F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {CEB76EA1-A168-49B0-A410-2C4195FEE86F}.Debug|x86.ActiveCfg = Debug|Any CPU
{CEB76EA1-A168-49B0-A410-2C4195FEE86F}.FastpathSim|Any CPU.ActiveCfg = CompilerOnly|Any CPU
{CEB76EA1-A168-49B0-A410-2C4195FEE86F}.FastpathSim|Any CPU.Build.0 = CompilerOnly|Any CPU
+ {CEB76EA1-A168-49B0-A410-2C4195FEE86F}.FastpathSim|Mixed Platforms.ActiveCfg = CompilerOnly|Any CPU
+ {CEB76EA1-A168-49B0-A410-2C4195FEE86F}.FastpathSim|Mixed Platforms.Build.0 = CompilerOnly|Any CPU
+ {CEB76EA1-A168-49B0-A410-2C4195FEE86F}.FastpathSim|x86.ActiveCfg = CompilerOnly|Any CPU
{CEB76EA1-A168-49B0-A410-2C4195FEE86F}.NightlyDebug|Any CPU.ActiveCfg = Debug|Any CPU
{CEB76EA1-A168-49B0-A410-2C4195FEE86F}.NightlyDebug|Any CPU.Build.0 = Debug|Any CPU
+ {CEB76EA1-A168-49B0-A410-2C4195FEE86F}.NightlyDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {CEB76EA1-A168-49B0-A410-2C4195FEE86F}.NightlyDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {CEB76EA1-A168-49B0-A410-2C4195FEE86F}.NightlyDebug|x86.ActiveCfg = Debug|Any CPU
{CEB76EA1-A168-49B0-A410-2C4195FEE86F}.NightlyRelease|Any CPU.ActiveCfg = Release|Any CPU
{CEB76EA1-A168-49B0-A410-2C4195FEE86F}.NightlyRelease|Any CPU.Build.0 = Release|Any CPU
+ {CEB76EA1-A168-49B0-A410-2C4195FEE86F}.NightlyRelease|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {CEB76EA1-A168-49B0-A410-2C4195FEE86F}.NightlyRelease|Mixed Platforms.Build.0 = Release|Any CPU
+ {CEB76EA1-A168-49B0-A410-2C4195FEE86F}.NightlyRelease|x86.ActiveCfg = Release|Any CPU
{CEB76EA1-A168-49B0-A410-2C4195FEE86F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CEB76EA1-A168-49B0-A410-2C4195FEE86F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CEB76EA1-A168-49B0-A410-2C4195FEE86F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {CEB76EA1-A168-49B0-A410-2C4195FEE86F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {CEB76EA1-A168-49B0-A410-2C4195FEE86F}.Release|x86.ActiveCfg = Release|Any CPU
{08156C78-403A-4112-AD81-8646AC51CD2F}.CompilerOnly|Any CPU.ActiveCfg = CompilerOnly|Any CPU
{08156C78-403A-4112-AD81-8646AC51CD2F}.CompilerOnly|Any CPU.Build.0 = CompilerOnly|Any CPU
+ {08156C78-403A-4112-AD81-8646AC51CD2F}.CompilerOnly|Mixed Platforms.ActiveCfg = CompilerOnly|Any CPU
+ {08156C78-403A-4112-AD81-8646AC51CD2F}.CompilerOnly|Mixed Platforms.Build.0 = CompilerOnly|Any CPU
+ {08156C78-403A-4112-AD81-8646AC51CD2F}.CompilerOnly|x86.ActiveCfg = CompilerOnly|Any CPU
{08156C78-403A-4112-AD81-8646AC51CD2F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{08156C78-403A-4112-AD81-8646AC51CD2F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {08156C78-403A-4112-AD81-8646AC51CD2F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {08156C78-403A-4112-AD81-8646AC51CD2F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {08156C78-403A-4112-AD81-8646AC51CD2F}.Debug|x86.ActiveCfg = Debug|Any CPU
{08156C78-403A-4112-AD81-8646AC51CD2F}.FastpathSim|Any CPU.ActiveCfg = CompilerOnly|Any CPU
{08156C78-403A-4112-AD81-8646AC51CD2F}.FastpathSim|Any CPU.Build.0 = CompilerOnly|Any CPU
+ {08156C78-403A-4112-AD81-8646AC51CD2F}.FastpathSim|Mixed Platforms.ActiveCfg = CompilerOnly|Any CPU
+ {08156C78-403A-4112-AD81-8646AC51CD2F}.FastpathSim|Mixed Platforms.Build.0 = CompilerOnly|Any CPU
+ {08156C78-403A-4112-AD81-8646AC51CD2F}.FastpathSim|x86.ActiveCfg = CompilerOnly|Any CPU
{08156C78-403A-4112-AD81-8646AC51CD2F}.NightlyDebug|Any CPU.ActiveCfg = Debug|Any CPU
{08156C78-403A-4112-AD81-8646AC51CD2F}.NightlyDebug|Any CPU.Build.0 = Debug|Any CPU
+ {08156C78-403A-4112-AD81-8646AC51CD2F}.NightlyDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {08156C78-403A-4112-AD81-8646AC51CD2F}.NightlyDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {08156C78-403A-4112-AD81-8646AC51CD2F}.NightlyDebug|x86.ActiveCfg = Debug|Any CPU
{08156C78-403A-4112-AD81-8646AC51CD2F}.NightlyRelease|Any CPU.ActiveCfg = Release|Any CPU
{08156C78-403A-4112-AD81-8646AC51CD2F}.NightlyRelease|Any CPU.Build.0 = Release|Any CPU
+ {08156C78-403A-4112-AD81-8646AC51CD2F}.NightlyRelease|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {08156C78-403A-4112-AD81-8646AC51CD2F}.NightlyRelease|Mixed Platforms.Build.0 = Release|Any CPU
+ {08156C78-403A-4112-AD81-8646AC51CD2F}.NightlyRelease|x86.ActiveCfg = Release|Any CPU
{08156C78-403A-4112-AD81-8646AC51CD2F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{08156C78-403A-4112-AD81-8646AC51CD2F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {08156C78-403A-4112-AD81-8646AC51CD2F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {08156C78-403A-4112-AD81-8646AC51CD2F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {08156C78-403A-4112-AD81-8646AC51CD2F}.Release|x86.ActiveCfg = Release|Any CPU
{3D13D2CC-6387-46FA-BDC2-4BEEFC460118}.CompilerOnly|Any CPU.ActiveCfg = Release|Any CPU
{3D13D2CC-6387-46FA-BDC2-4BEEFC460118}.CompilerOnly|Any CPU.Build.0 = Release|Any CPU
+ {3D13D2CC-6387-46FA-BDC2-4BEEFC460118}.CompilerOnly|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {3D13D2CC-6387-46FA-BDC2-4BEEFC460118}.CompilerOnly|Mixed Platforms.Build.0 = Release|Any CPU
+ {3D13D2CC-6387-46FA-BDC2-4BEEFC460118}.CompilerOnly|x86.ActiveCfg = Release|Any CPU
{3D13D2CC-6387-46FA-BDC2-4BEEFC460118}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3D13D2CC-6387-46FA-BDC2-4BEEFC460118}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3D13D2CC-6387-46FA-BDC2-4BEEFC460118}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {3D13D2CC-6387-46FA-BDC2-4BEEFC460118}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {3D13D2CC-6387-46FA-BDC2-4BEEFC460118}.Debug|x86.ActiveCfg = Debug|Any CPU
{3D13D2CC-6387-46FA-BDC2-4BEEFC460118}.FastpathSim|Any CPU.ActiveCfg = Release|Any CPU
{3D13D2CC-6387-46FA-BDC2-4BEEFC460118}.FastpathSim|Any CPU.Build.0 = Release|Any CPU
+ {3D13D2CC-6387-46FA-BDC2-4BEEFC460118}.FastpathSim|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {3D13D2CC-6387-46FA-BDC2-4BEEFC460118}.FastpathSim|Mixed Platforms.Build.0 = Release|Any CPU
+ {3D13D2CC-6387-46FA-BDC2-4BEEFC460118}.FastpathSim|x86.ActiveCfg = Release|Any CPU
{3D13D2CC-6387-46FA-BDC2-4BEEFC460118}.NightlyDebug|Any CPU.ActiveCfg = Debug|Any CPU
{3D13D2CC-6387-46FA-BDC2-4BEEFC460118}.NightlyDebug|Any CPU.Build.0 = Debug|Any CPU
+ {3D13D2CC-6387-46FA-BDC2-4BEEFC460118}.NightlyDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {3D13D2CC-6387-46FA-BDC2-4BEEFC460118}.NightlyDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {3D13D2CC-6387-46FA-BDC2-4BEEFC460118}.NightlyDebug|x86.ActiveCfg = Debug|Any CPU
{3D13D2CC-6387-46FA-BDC2-4BEEFC460118}.NightlyRelease|Any CPU.ActiveCfg = Release|Any CPU
{3D13D2CC-6387-46FA-BDC2-4BEEFC460118}.NightlyRelease|Any CPU.Build.0 = Release|Any CPU
+ {3D13D2CC-6387-46FA-BDC2-4BEEFC460118}.NightlyRelease|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {3D13D2CC-6387-46FA-BDC2-4BEEFC460118}.NightlyRelease|Mixed Platforms.Build.0 = Release|Any CPU
+ {3D13D2CC-6387-46FA-BDC2-4BEEFC460118}.NightlyRelease|x86.ActiveCfg = Release|Any CPU
{3D13D2CC-6387-46FA-BDC2-4BEEFC460118}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3D13D2CC-6387-46FA-BDC2-4BEEFC460118}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3D13D2CC-6387-46FA-BDC2-4BEEFC460118}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {3D13D2CC-6387-46FA-BDC2-4BEEFC460118}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {3D13D2CC-6387-46FA-BDC2-4BEEFC460118}.Release|x86.ActiveCfg = Release|Any CPU
{A112AFBA-D6F6-44A4-A683-C3D458A68D84}.CompilerOnly|Any CPU.ActiveCfg = Release|Any CPU
{A112AFBA-D6F6-44A4-A683-C3D458A68D84}.CompilerOnly|Any CPU.Build.0 = Release|Any CPU
+ {A112AFBA-D6F6-44A4-A683-C3D458A68D84}.CompilerOnly|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {A112AFBA-D6F6-44A4-A683-C3D458A68D84}.CompilerOnly|Mixed Platforms.Build.0 = Release|Any CPU
+ {A112AFBA-D6F6-44A4-A683-C3D458A68D84}.CompilerOnly|x86.ActiveCfg = Release|Any CPU
{A112AFBA-D6F6-44A4-A683-C3D458A68D84}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A112AFBA-D6F6-44A4-A683-C3D458A68D84}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A112AFBA-D6F6-44A4-A683-C3D458A68D84}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {A112AFBA-D6F6-44A4-A683-C3D458A68D84}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {A112AFBA-D6F6-44A4-A683-C3D458A68D84}.Debug|x86.ActiveCfg = Debug|Any CPU
{A112AFBA-D6F6-44A4-A683-C3D458A68D84}.FastpathSim|Any CPU.ActiveCfg = Release|Any CPU
{A112AFBA-D6F6-44A4-A683-C3D458A68D84}.FastpathSim|Any CPU.Build.0 = Release|Any CPU
+ {A112AFBA-D6F6-44A4-A683-C3D458A68D84}.FastpathSim|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {A112AFBA-D6F6-44A4-A683-C3D458A68D84}.FastpathSim|Mixed Platforms.Build.0 = Release|Any CPU
+ {A112AFBA-D6F6-44A4-A683-C3D458A68D84}.FastpathSim|x86.ActiveCfg = Release|Any CPU
{A112AFBA-D6F6-44A4-A683-C3D458A68D84}.NightlyDebug|Any CPU.ActiveCfg = Debug|Any CPU
{A112AFBA-D6F6-44A4-A683-C3D458A68D84}.NightlyDebug|Any CPU.Build.0 = Debug|Any CPU
+ {A112AFBA-D6F6-44A4-A683-C3D458A68D84}.NightlyDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {A112AFBA-D6F6-44A4-A683-C3D458A68D84}.NightlyDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {A112AFBA-D6F6-44A4-A683-C3D458A68D84}.NightlyDebug|x86.ActiveCfg = Debug|Any CPU
{A112AFBA-D6F6-44A4-A683-C3D458A68D84}.NightlyRelease|Any CPU.ActiveCfg = Release|Any CPU
{A112AFBA-D6F6-44A4-A683-C3D458A68D84}.NightlyRelease|Any CPU.Build.0 = Release|Any CPU
+ {A112AFBA-D6F6-44A4-A683-C3D458A68D84}.NightlyRelease|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {A112AFBA-D6F6-44A4-A683-C3D458A68D84}.NightlyRelease|Mixed Platforms.Build.0 = Release|Any CPU
+ {A112AFBA-D6F6-44A4-A683-C3D458A68D84}.NightlyRelease|x86.ActiveCfg = Release|Any CPU
{A112AFBA-D6F6-44A4-A683-C3D458A68D84}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A112AFBA-D6F6-44A4-A683-C3D458A68D84}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A112AFBA-D6F6-44A4-A683-C3D458A68D84}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {A112AFBA-D6F6-44A4-A683-C3D458A68D84}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {A112AFBA-D6F6-44A4-A683-C3D458A68D84}.Release|x86.ActiveCfg = Release|Any CPU
{0703D916-A881-45E6-A5CD-6BC50E2E30E2}.CompilerOnly|Any CPU.ActiveCfg = Release|Any CPU
{0703D916-A881-45E6-A5CD-6BC50E2E30E2}.CompilerOnly|Any CPU.Build.0 = Release|Any CPU
+ {0703D916-A881-45E6-A5CD-6BC50E2E30E2}.CompilerOnly|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {0703D916-A881-45E6-A5CD-6BC50E2E30E2}.CompilerOnly|Mixed Platforms.Build.0 = Release|Any CPU
+ {0703D916-A881-45E6-A5CD-6BC50E2E30E2}.CompilerOnly|x86.ActiveCfg = Release|Any CPU
{0703D916-A881-45E6-A5CD-6BC50E2E30E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0703D916-A881-45E6-A5CD-6BC50E2E30E2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0703D916-A881-45E6-A5CD-6BC50E2E30E2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {0703D916-A881-45E6-A5CD-6BC50E2E30E2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {0703D916-A881-45E6-A5CD-6BC50E2E30E2}.Debug|x86.ActiveCfg = Debug|Any CPU
{0703D916-A881-45E6-A5CD-6BC50E2E30E2}.FastpathSim|Any CPU.ActiveCfg = Release|Any CPU
{0703D916-A881-45E6-A5CD-6BC50E2E30E2}.FastpathSim|Any CPU.Build.0 = Release|Any CPU
+ {0703D916-A881-45E6-A5CD-6BC50E2E30E2}.FastpathSim|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {0703D916-A881-45E6-A5CD-6BC50E2E30E2}.FastpathSim|Mixed Platforms.Build.0 = Release|Any CPU
+ {0703D916-A881-45E6-A5CD-6BC50E2E30E2}.FastpathSim|x86.ActiveCfg = Release|Any CPU
{0703D916-A881-45E6-A5CD-6BC50E2E30E2}.NightlyDebug|Any CPU.ActiveCfg = Debug|Any CPU
{0703D916-A881-45E6-A5CD-6BC50E2E30E2}.NightlyDebug|Any CPU.Build.0 = Debug|Any CPU
+ {0703D916-A881-45E6-A5CD-6BC50E2E30E2}.NightlyDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {0703D916-A881-45E6-A5CD-6BC50E2E30E2}.NightlyDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {0703D916-A881-45E6-A5CD-6BC50E2E30E2}.NightlyDebug|x86.ActiveCfg = Debug|Any CPU
{0703D916-A881-45E6-A5CD-6BC50E2E30E2}.NightlyRelease|Any CPU.ActiveCfg = Release|Any CPU
{0703D916-A881-45E6-A5CD-6BC50E2E30E2}.NightlyRelease|Any CPU.Build.0 = Release|Any CPU
+ {0703D916-A881-45E6-A5CD-6BC50E2E30E2}.NightlyRelease|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {0703D916-A881-45E6-A5CD-6BC50E2E30E2}.NightlyRelease|Mixed Platforms.Build.0 = Release|Any CPU
+ {0703D916-A881-45E6-A5CD-6BC50E2E30E2}.NightlyRelease|x86.ActiveCfg = Release|Any CPU
{0703D916-A881-45E6-A5CD-6BC50E2E30E2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0703D916-A881-45E6-A5CD-6BC50E2E30E2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0703D916-A881-45E6-A5CD-6BC50E2E30E2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {0703D916-A881-45E6-A5CD-6BC50E2E30E2}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {0703D916-A881-45E6-A5CD-6BC50E2E30E2}.Release|x86.ActiveCfg = Release|Any CPU
{B114E5FF-F2A2-4BE7-8AF1-936FC87030F0}.CompilerOnly|Any CPU.ActiveCfg = FastpathSim|Any CPU
{B114E5FF-F2A2-4BE7-8AF1-936FC87030F0}.CompilerOnly|Any CPU.Build.0 = FastpathSim|Any CPU
+ {B114E5FF-F2A2-4BE7-8AF1-936FC87030F0}.CompilerOnly|Mixed Platforms.ActiveCfg = FastpathSim|Any CPU
+ {B114E5FF-F2A2-4BE7-8AF1-936FC87030F0}.CompilerOnly|Mixed Platforms.Build.0 = FastpathSim|Any CPU
+ {B114E5FF-F2A2-4BE7-8AF1-936FC87030F0}.CompilerOnly|x86.ActiveCfg = FastpathSim|Any CPU
{B114E5FF-F2A2-4BE7-8AF1-936FC87030F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B114E5FF-F2A2-4BE7-8AF1-936FC87030F0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B114E5FF-F2A2-4BE7-8AF1-936FC87030F0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {B114E5FF-F2A2-4BE7-8AF1-936FC87030F0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {B114E5FF-F2A2-4BE7-8AF1-936FC87030F0}.Debug|x86.ActiveCfg = Debug|Any CPU
{B114E5FF-F2A2-4BE7-8AF1-936FC87030F0}.FastpathSim|Any CPU.ActiveCfg = FastpathSim|Any CPU
{B114E5FF-F2A2-4BE7-8AF1-936FC87030F0}.FastpathSim|Any CPU.Build.0 = FastpathSim|Any CPU
+ {B114E5FF-F2A2-4BE7-8AF1-936FC87030F0}.FastpathSim|Mixed Platforms.ActiveCfg = FastpathSim|Any CPU
+ {B114E5FF-F2A2-4BE7-8AF1-936FC87030F0}.FastpathSim|Mixed Platforms.Build.0 = FastpathSim|Any CPU
+ {B114E5FF-F2A2-4BE7-8AF1-936FC87030F0}.FastpathSim|x86.ActiveCfg = FastpathSim|Any CPU
{B114E5FF-F2A2-4BE7-8AF1-936FC87030F0}.NightlyDebug|Any CPU.ActiveCfg = Debug|Any CPU
{B114E5FF-F2A2-4BE7-8AF1-936FC87030F0}.NightlyDebug|Any CPU.Build.0 = Debug|Any CPU
+ {B114E5FF-F2A2-4BE7-8AF1-936FC87030F0}.NightlyDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {B114E5FF-F2A2-4BE7-8AF1-936FC87030F0}.NightlyDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {B114E5FF-F2A2-4BE7-8AF1-936FC87030F0}.NightlyDebug|x86.ActiveCfg = Debug|Any CPU
{B114E5FF-F2A2-4BE7-8AF1-936FC87030F0}.NightlyRelease|Any CPU.ActiveCfg = Release|Any CPU
{B114E5FF-F2A2-4BE7-8AF1-936FC87030F0}.NightlyRelease|Any CPU.Build.0 = Release|Any CPU
+ {B114E5FF-F2A2-4BE7-8AF1-936FC87030F0}.NightlyRelease|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {B114E5FF-F2A2-4BE7-8AF1-936FC87030F0}.NightlyRelease|Mixed Platforms.Build.0 = Release|Any CPU
+ {B114E5FF-F2A2-4BE7-8AF1-936FC87030F0}.NightlyRelease|x86.ActiveCfg = Release|Any CPU
{B114E5FF-F2A2-4BE7-8AF1-936FC87030F0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B114E5FF-F2A2-4BE7-8AF1-936FC87030F0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B114E5FF-F2A2-4BE7-8AF1-936FC87030F0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {B114E5FF-F2A2-4BE7-8AF1-936FC87030F0}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {B114E5FF-F2A2-4BE7-8AF1-936FC87030F0}.Release|x86.ActiveCfg = Release|Any CPU
{8C242D42-9714-440F-884D-F64F09E78C7B}.CompilerOnly|Any CPU.ActiveCfg = Release|Any CPU
{8C242D42-9714-440F-884D-F64F09E78C7B}.CompilerOnly|Any CPU.Build.0 = Release|Any CPU
+ {8C242D42-9714-440F-884D-F64F09E78C7B}.CompilerOnly|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {8C242D42-9714-440F-884D-F64F09E78C7B}.CompilerOnly|Mixed Platforms.Build.0 = Release|Any CPU
+ {8C242D42-9714-440F-884D-F64F09E78C7B}.CompilerOnly|x86.ActiveCfg = Release|Any CPU
{8C242D42-9714-440F-884D-F64F09E78C7B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8C242D42-9714-440F-884D-F64F09E78C7B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8C242D42-9714-440F-884D-F64F09E78C7B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {8C242D42-9714-440F-884D-F64F09E78C7B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {8C242D42-9714-440F-884D-F64F09E78C7B}.Debug|x86.ActiveCfg = Debug|Any CPU
{8C242D42-9714-440F-884D-F64F09E78C7B}.FastpathSim|Any CPU.ActiveCfg = Release|Any CPU
{8C242D42-9714-440F-884D-F64F09E78C7B}.FastpathSim|Any CPU.Build.0 = Release|Any CPU
+ {8C242D42-9714-440F-884D-F64F09E78C7B}.FastpathSim|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {8C242D42-9714-440F-884D-F64F09E78C7B}.FastpathSim|Mixed Platforms.Build.0 = Release|Any CPU
+ {8C242D42-9714-440F-884D-F64F09E78C7B}.FastpathSim|x86.ActiveCfg = Release|Any CPU
{8C242D42-9714-440F-884D-F64F09E78C7B}.NightlyDebug|Any CPU.ActiveCfg = Debug|Any CPU
{8C242D42-9714-440F-884D-F64F09E78C7B}.NightlyDebug|Any CPU.Build.0 = Debug|Any CPU
+ {8C242D42-9714-440F-884D-F64F09E78C7B}.NightlyDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {8C242D42-9714-440F-884D-F64F09E78C7B}.NightlyDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {8C242D42-9714-440F-884D-F64F09E78C7B}.NightlyDebug|x86.ActiveCfg = Debug|Any CPU
{8C242D42-9714-440F-884D-F64F09E78C7B}.NightlyRelease|Any CPU.ActiveCfg = Release|Any CPU
{8C242D42-9714-440F-884D-F64F09E78C7B}.NightlyRelease|Any CPU.Build.0 = Release|Any CPU
+ {8C242D42-9714-440F-884D-F64F09E78C7B}.NightlyRelease|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {8C242D42-9714-440F-884D-F64F09E78C7B}.NightlyRelease|Mixed Platforms.Build.0 = Release|Any CPU
+ {8C242D42-9714-440F-884D-F64F09E78C7B}.NightlyRelease|x86.ActiveCfg = Release|Any CPU
{8C242D42-9714-440F-884D-F64F09E78C7B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8C242D42-9714-440F-884D-F64F09E78C7B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8C242D42-9714-440F-884D-F64F09E78C7B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {8C242D42-9714-440F-884D-F64F09E78C7B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {8C242D42-9714-440F-884D-F64F09E78C7B}.Release|x86.ActiveCfg = Release|Any CPU
+ {F55B9215-F618-4DCD-AD4C-2DB72CAE5A99}.CompilerOnly|Any CPU.ActiveCfg = Release|x86
+ {F55B9215-F618-4DCD-AD4C-2DB72CAE5A99}.CompilerOnly|Mixed Platforms.ActiveCfg = Release|x86
+ {F55B9215-F618-4DCD-AD4C-2DB72CAE5A99}.CompilerOnly|Mixed Platforms.Build.0 = Release|x86
+ {F55B9215-F618-4DCD-AD4C-2DB72CAE5A99}.CompilerOnly|x86.ActiveCfg = Release|x86
+ {F55B9215-F618-4DCD-AD4C-2DB72CAE5A99}.CompilerOnly|x86.Build.0 = Release|x86
+ {F55B9215-F618-4DCD-AD4C-2DB72CAE5A99}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {F55B9215-F618-4DCD-AD4C-2DB72CAE5A99}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {F55B9215-F618-4DCD-AD4C-2DB72CAE5A99}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {F55B9215-F618-4DCD-AD4C-2DB72CAE5A99}.Debug|x86.ActiveCfg = Debug|x86
+ {F55B9215-F618-4DCD-AD4C-2DB72CAE5A99}.Debug|x86.Build.0 = Debug|x86
+ {F55B9215-F618-4DCD-AD4C-2DB72CAE5A99}.FastpathSim|Any CPU.ActiveCfg = Release|x86
+ {F55B9215-F618-4DCD-AD4C-2DB72CAE5A99}.FastpathSim|Mixed Platforms.ActiveCfg = Release|x86
+ {F55B9215-F618-4DCD-AD4C-2DB72CAE5A99}.FastpathSim|Mixed Platforms.Build.0 = Release|x86
+ {F55B9215-F618-4DCD-AD4C-2DB72CAE5A99}.FastpathSim|x86.ActiveCfg = Release|x86
+ {F55B9215-F618-4DCD-AD4C-2DB72CAE5A99}.FastpathSim|x86.Build.0 = Release|x86
+ {F55B9215-F618-4DCD-AD4C-2DB72CAE5A99}.NightlyDebug|Any CPU.ActiveCfg = Debug|x86
+ {F55B9215-F618-4DCD-AD4C-2DB72CAE5A99}.NightlyDebug|Mixed Platforms.ActiveCfg = Debug|x86
+ {F55B9215-F618-4DCD-AD4C-2DB72CAE5A99}.NightlyDebug|Mixed Platforms.Build.0 = Debug|x86
+ {F55B9215-F618-4DCD-AD4C-2DB72CAE5A99}.NightlyDebug|x86.ActiveCfg = Debug|x86
+ {F55B9215-F618-4DCD-AD4C-2DB72CAE5A99}.NightlyDebug|x86.Build.0 = Debug|x86
+ {F55B9215-F618-4DCD-AD4C-2DB72CAE5A99}.NightlyRelease|Any CPU.ActiveCfg = Release|x86
+ {F55B9215-F618-4DCD-AD4C-2DB72CAE5A99}.NightlyRelease|Mixed Platforms.ActiveCfg = Release|x86
+ {F55B9215-F618-4DCD-AD4C-2DB72CAE5A99}.NightlyRelease|Mixed Platforms.Build.0 = Release|x86
+ {F55B9215-F618-4DCD-AD4C-2DB72CAE5A99}.NightlyRelease|x86.ActiveCfg = Release|x86
+ {F55B9215-F618-4DCD-AD4C-2DB72CAE5A99}.NightlyRelease|x86.Build.0 = Release|x86
+ {F55B9215-F618-4DCD-AD4C-2DB72CAE5A99}.Release|Any CPU.ActiveCfg = Release|x86
+ {F55B9215-F618-4DCD-AD4C-2DB72CAE5A99}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {F55B9215-F618-4DCD-AD4C-2DB72CAE5A99}.Release|Mixed Platforms.Build.0 = Release|x86
+ {F55B9215-F618-4DCD-AD4C-2DB72CAE5A99}.Release|x86.ActiveCfg = Release|x86
+ {F55B9215-F618-4DCD-AD4C-2DB72CAE5A99}.Release|x86.Build.0 = Release|x86
+ {304A8B0B-851B-4AA6-A17D-5F87F39C5E5C}.CompilerOnly|Any CPU.ActiveCfg = Release|Any CPU
+ {304A8B0B-851B-4AA6-A17D-5F87F39C5E5C}.CompilerOnly|Any CPU.Build.0 = Release|Any CPU
+ {304A8B0B-851B-4AA6-A17D-5F87F39C5E5C}.CompilerOnly|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {304A8B0B-851B-4AA6-A17D-5F87F39C5E5C}.CompilerOnly|Mixed Platforms.Build.0 = Release|Any CPU
+ {304A8B0B-851B-4AA6-A17D-5F87F39C5E5C}.CompilerOnly|x86.ActiveCfg = Release|Any CPU
+ {304A8B0B-851B-4AA6-A17D-5F87F39C5E5C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {304A8B0B-851B-4AA6-A17D-5F87F39C5E5C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {304A8B0B-851B-4AA6-A17D-5F87F39C5E5C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {304A8B0B-851B-4AA6-A17D-5F87F39C5E5C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {304A8B0B-851B-4AA6-A17D-5F87F39C5E5C}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {304A8B0B-851B-4AA6-A17D-5F87F39C5E5C}.FastpathSim|Any CPU.ActiveCfg = Release|Any CPU
+ {304A8B0B-851B-4AA6-A17D-5F87F39C5E5C}.FastpathSim|Any CPU.Build.0 = Release|Any CPU
+ {304A8B0B-851B-4AA6-A17D-5F87F39C5E5C}.FastpathSim|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {304A8B0B-851B-4AA6-A17D-5F87F39C5E5C}.FastpathSim|Mixed Platforms.Build.0 = Release|Any CPU
+ {304A8B0B-851B-4AA6-A17D-5F87F39C5E5C}.FastpathSim|x86.ActiveCfg = Release|Any CPU
+ {304A8B0B-851B-4AA6-A17D-5F87F39C5E5C}.NightlyDebug|Any CPU.ActiveCfg = Debug|Any CPU
+ {304A8B0B-851B-4AA6-A17D-5F87F39C5E5C}.NightlyDebug|Any CPU.Build.0 = Debug|Any CPU
+ {304A8B0B-851B-4AA6-A17D-5F87F39C5E5C}.NightlyDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {304A8B0B-851B-4AA6-A17D-5F87F39C5E5C}.NightlyDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {304A8B0B-851B-4AA6-A17D-5F87F39C5E5C}.NightlyDebug|x86.ActiveCfg = Debug|Any CPU
+ {304A8B0B-851B-4AA6-A17D-5F87F39C5E5C}.NightlyRelease|Any CPU.ActiveCfg = Release|Any CPU
+ {304A8B0B-851B-4AA6-A17D-5F87F39C5E5C}.NightlyRelease|Any CPU.Build.0 = Release|Any CPU
+ {304A8B0B-851B-4AA6-A17D-5F87F39C5E5C}.NightlyRelease|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {304A8B0B-851B-4AA6-A17D-5F87F39C5E5C}.NightlyRelease|Mixed Platforms.Build.0 = Release|Any CPU
+ {304A8B0B-851B-4AA6-A17D-5F87F39C5E5C}.NightlyRelease|x86.ActiveCfg = Release|Any CPU
+ {304A8B0B-851B-4AA6-A17D-5F87F39C5E5C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {304A8B0B-851B-4AA6-A17D-5F87F39C5E5C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {304A8B0B-851B-4AA6-A17D-5F87F39C5E5C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {304A8B0B-851B-4AA6-A17D-5F87F39C5E5C}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {304A8B0B-851B-4AA6-A17D-5F87F39C5E5C}.Release|x86.ActiveCfg = Release|Any CPU
+ {6D83F687-ABB5-40B3-915E-CA53DA0EB7F3}.CompilerOnly|Any CPU.ActiveCfg = Release|Any CPU
+ {6D83F687-ABB5-40B3-915E-CA53DA0EB7F3}.CompilerOnly|Any CPU.Build.0 = Release|Any CPU
+ {6D83F687-ABB5-40B3-915E-CA53DA0EB7F3}.CompilerOnly|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {6D83F687-ABB5-40B3-915E-CA53DA0EB7F3}.CompilerOnly|Mixed Platforms.Build.0 = Release|Any CPU
+ {6D83F687-ABB5-40B3-915E-CA53DA0EB7F3}.CompilerOnly|x86.ActiveCfg = Release|Any CPU
+ {6D83F687-ABB5-40B3-915E-CA53DA0EB7F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6D83F687-ABB5-40B3-915E-CA53DA0EB7F3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6D83F687-ABB5-40B3-915E-CA53DA0EB7F3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {6D83F687-ABB5-40B3-915E-CA53DA0EB7F3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {6D83F687-ABB5-40B3-915E-CA53DA0EB7F3}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {6D83F687-ABB5-40B3-915E-CA53DA0EB7F3}.FastpathSim|Any CPU.ActiveCfg = Release|Any CPU
+ {6D83F687-ABB5-40B3-915E-CA53DA0EB7F3}.FastpathSim|Any CPU.Build.0 = Release|Any CPU
+ {6D83F687-ABB5-40B3-915E-CA53DA0EB7F3}.FastpathSim|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {6D83F687-ABB5-40B3-915E-CA53DA0EB7F3}.FastpathSim|Mixed Platforms.Build.0 = Release|Any CPU
+ {6D83F687-ABB5-40B3-915E-CA53DA0EB7F3}.FastpathSim|x86.ActiveCfg = Release|Any CPU
+ {6D83F687-ABB5-40B3-915E-CA53DA0EB7F3}.NightlyDebug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6D83F687-ABB5-40B3-915E-CA53DA0EB7F3}.NightlyDebug|Any CPU.Build.0 = Debug|Any CPU
+ {6D83F687-ABB5-40B3-915E-CA53DA0EB7F3}.NightlyDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {6D83F687-ABB5-40B3-915E-CA53DA0EB7F3}.NightlyDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {6D83F687-ABB5-40B3-915E-CA53DA0EB7F3}.NightlyDebug|x86.ActiveCfg = Debug|Any CPU
+ {6D83F687-ABB5-40B3-915E-CA53DA0EB7F3}.NightlyRelease|Any CPU.ActiveCfg = Release|Any CPU
+ {6D83F687-ABB5-40B3-915E-CA53DA0EB7F3}.NightlyRelease|Any CPU.Build.0 = Release|Any CPU
+ {6D83F687-ABB5-40B3-915E-CA53DA0EB7F3}.NightlyRelease|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {6D83F687-ABB5-40B3-915E-CA53DA0EB7F3}.NightlyRelease|Mixed Platforms.Build.0 = Release|Any CPU
+ {6D83F687-ABB5-40B3-915E-CA53DA0EB7F3}.NightlyRelease|x86.ActiveCfg = Release|Any CPU
+ {6D83F687-ABB5-40B3-915E-CA53DA0EB7F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6D83F687-ABB5-40B3-915E-CA53DA0EB7F3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6D83F687-ABB5-40B3-915E-CA53DA0EB7F3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {6D83F687-ABB5-40B3-915E-CA53DA0EB7F3}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {6D83F687-ABB5-40B3-915E-CA53DA0EB7F3}.Release|x86.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/BCT/GetMeHere/AssertionInjector/AssertionInjector.csproj b/BCT/GetMeHere/AssertionInjector/AssertionInjector.csproj
new file mode 100644
index 00000000..628bec7c
--- /dev/null
+++ b/BCT/GetMeHere/AssertionInjector/AssertionInjector.csproj
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
+ <ProductVersion>8.0.30703</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{F55B9215-F618-4DCD-AD4C-2DB72CAE5A99}</ProjectGuid>
+ <OutputType>Exe</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>AssertionInjector</RootNamespace>
+ <AssemblyName>AssertionInjector</AssemblyName>
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+ <TargetFrameworkProfile>Client</TargetFrameworkProfile>
+ <FileAlignment>512</FileAlignment>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+ <PlatformTarget>x86</PlatformTarget>
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+ <PlatformTarget>x86</PlatformTarget>
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Program.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\..\CCICodePlex\Ast\Metadata\Sources\ILGenerator\ILGenerator.csproj">
+ <Project>{08156C78-403A-4112-AD81-8646AC51CD2F}</Project>
+ <Name>ILGenerator</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\..\CCICodePlex\Ast\Metadata\Sources\MetadataHelper\MetadataHelper.csproj">
+ <Project>{4A34A3C5-6176-49D7-A4C5-B2B671247F8F}</Project>
+ <Name>MetadataHelper</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\..\CCICodePlex\Ast\Metadata\Sources\MetadataModel\MetadataModel.csproj">
+ <Project>{33CAB640-0D03-43DF-81BD-22CDC6C0A597}</Project>
+ <Name>MetadataModel</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\..\CCICodePlex\Ast\Metadata\Sources\MutableMetadataModel\MutableMetadataModel.csproj">
+ <Project>{319E151C-8F33-49E7-81C9-30F02F9BA90A}</Project>
+ <Name>MutableMetadataModel</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\..\CCICodePlex\Ast\Metadata\Sources\PdbReader\PdbReader.csproj">
+ <Project>{A6A31B03-7C3D-4DE6-AA73-BE88116BC40A}</Project>
+ <Name>PdbReader</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\..\CCICodePlex\Ast\Metadata\Sources\PdbWriter\PdbWriter.csproj">
+ <Project>{6D83F687-ABB5-40B3-915E-CA53DA0EB7F3}</Project>
+ <Name>PdbWriter</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\..\CCICodePlex\Ast\Metadata\Sources\PeReader\PeReader.csproj">
+ <Project>{34B9A0CE-DF18-4CBC-8F7A-90C2B74338D5}</Project>
+ <Name>PeReader</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\..\CCICodePlex\Ast\Metadata\Sources\PeWriter\PeWriter.csproj">
+ <Project>{304A8B0B-851B-4AA6-A17D-5F87F39C5E5C}</Project>
+ <Name>PeWriter</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\..\CCICodePlex\Ast\Metadata\Sources\SourceModel\SourceModel.csproj">
+ <Project>{4B0054FD-124A-4037-9965-BDB55E6BF389}</Project>
+ <Name>SourceModel</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\..\CCICodePlex\Ast\Sources\CodeModel\CodeModel.csproj">
+ <Project>{035FEA7F-0D36-4AE4-B694-EC45191B9AF2}</Project>
+ <Name>CodeModel</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/BCT/GetMeHere/AssertionInjector/Program.cs b/BCT/GetMeHere/AssertionInjector/Program.cs
new file mode 100644
index 00000000..f5d4262c
--- /dev/null
+++ b/BCT/GetMeHere/AssertionInjector/Program.cs
@@ -0,0 +1,596 @@
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) Microsoft. All rights reserved.
+// This code is licensed under the Microsoft Public License.
+// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF
+// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY
+// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR
+// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.
+//
+//-----------------------------------------------------------------------------
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Runtime.Serialization; // needed for defining exception .ctors
+using Microsoft.Cci;
+using Microsoft.Cci.MutableCodeModel;
+
+namespace AssertionInjector {
+
+ class Program {
+ readonly static int errorValue = -1;
+ static int Main(string[] args) {
+ if (args == null || args.Length < 4) {
+ Console.WriteLine("Usage: AssertionInjector <assembly> <filename+extension> <line number> <column number> [<outputPath>]");
+ return errorValue;
+ }
+
+ var fileName = args[1];
+
+ int lineNumber;
+ if (!Int32.TryParse(args[2], out lineNumber)) {
+ Console.WriteLine("Error: couldn't parse '{0}' as an integer to use as a line number", args[2]);
+ return errorValue;
+ }
+ int columnNumber;
+ if (!Int32.TryParse(args[3], out columnNumber)) {
+ Console.WriteLine("Error: couldn't parse '{0}' as an integer to use as a column number", args[3]);
+ return errorValue;
+ }
+
+ using (var host = new PeReader.DefaultHost()) {
+ IModule/*?*/ module = host.LoadUnitFrom(args[0]) as IModule;
+ if (module == null || module == Dummy.Module || module == Dummy.Assembly) {
+ Console.WriteLine(args[0] + " is not a PE file containing a CLR assembly, or an error occurred when loading it.");
+ return errorValue;
+ }
+ module = new MetadataDeepCopier(host).Copy(module);
+
+ var pdbFile = Path.ChangeExtension(module.Location, "pdb");
+ if (!File.Exists(pdbFile)) {
+ Console.WriteLine("Could not load the PDB file for '" + module.Name.Value + "' . Exiting.");
+ return errorValue;
+ }
+ using (var pdbStream = File.OpenRead(pdbFile)) {
+ if (pdbStream == null) {
+ Console.WriteLine("Could not load the PDB file for '" + module.Name.Value + "' . Exiting.");
+ return errorValue;
+ }
+ using (var pdbReader = new PdbReader(pdbStream, host)) {
+ var localScopeProvider = new ILGenerator.LocalScopeProvider(pdbReader);
+ var mutator = new ILMutator(host, pdbReader, fileName, lineNumber, columnNumber);
+ module = mutator.Rewrite(module);
+
+ var outputPath = (args.Length == 2) ? args[1] : module.Location + ".pe";
+
+ var outputFileName = Path.GetFileNameWithoutExtension(outputPath);
+
+ using (var pdbWriter = new PdbWriter(outputFileName + ".pdb", pdbReader)) {
+ PeWriter.WritePeToStream(module, host, File.Create(outputPath), pdbReader, localScopeProvider, pdbWriter);
+ }
+ }
+ }
+ return 0; // success
+ }
+ }
+ }
+
+ /// <summary>
+ /// A mutator that modifies method bodies at the IL level.
+ /// It injects a call to Console.WriteLine for each store
+ /// to a local for which the PDB reader is able to provide a name.
+ /// This is meant to distinguish programmer-defined locals from
+ /// those introduced by the compiler.
+ /// </summary>
+ public class ILMutator : MetadataRewriter {
+
+ PdbReader pdbReader;
+ IMethodReference contractDotAssert;
+ string fileName;
+ int lineNumber;
+ int columnNumber;
+
+ public ILMutator(IMetadataHost host, PdbReader pdbReader, string fileName, int lineNumber, int columnNumber)
+ : base(host) {
+ this.pdbReader = pdbReader;
+ this.fileName = fileName;
+ this.lineNumber = lineNumber;
+ this.columnNumber = columnNumber;
+
+ #region Get reference to Contract.Assert
+ var platformType = host.PlatformType;
+ this.contractDotAssert = new Microsoft.Cci.MethodReference(
+ this.host, this.host.PlatformType.SystemDiagnosticsContractsContract,
+ CallingConvention.Default,
+ platformType.SystemVoid,
+ host.NameTable.GetNameFor("Assert"),
+ 0, platformType.SystemBoolean);
+ #endregion Get reference to Contract.Assert
+ }
+
+ List<ILocalDefinition> currentLocals;
+ ILGenerator currentGenerator;
+ IEnumerator<ILocalScope>/*?*/ scopeEnumerator;
+ bool scopeEnumeratorIsValid;
+ Stack<ILocalScope> scopeStack = new Stack<ILocalScope>();
+
+ public override IMethodBody Rewrite(IMethodBody methodBody) {
+ try {
+ this.currentGenerator = null;
+ base.Rewrite(methodBody);
+ if (this.currentGenerator == null) {
+ //Console.WriteLine("Not rewriting '{0}'", MemberHelper.GetMethodSignature(methodBody.MethodDefinition, NameFormattingOptions.None));
+ return methodBody;
+ }
+ var newBody = new ILGeneratorMethodBody(this.currentGenerator, methodBody.LocalsAreZeroed, (ushort)(methodBody.MaxStack + 1),
+ methodBody.MethodDefinition, this.currentLocals ?? new List<ILocalDefinition>(), Enumerable<ITypeDefinition>.Empty);
+ return newBody;
+ } finally {
+ this.currentGenerator = null;
+ this.currentLocals = null;
+ }
+ }
+
+ public override void RewriteChildren(MethodBody methodBody) {
+ this.currentLocals = methodBody.LocalVariables;
+
+ try {
+ var operations = methodBody.Operations;
+ if (operations == null || operations.Count == 0) return;
+
+ IPrimarySourceLocation startLocation = null;
+ IPrimarySourceLocation endLocation = null;
+ var ys = this.pdbReader.GetClosestPrimarySourceLocationsFor(operations[0].Location);
+ foreach (var y in ys) {
+ //Console.WriteLine("{0}:{1}({2},{3})", y.Document.Name.Value, MemberHelper.GetMethodSignature(methodBody.MethodDefinition, NameFormattingOptions.None),
+ // y.StartLine, y.StartColumn);
+ startLocation = y;
+ break;
+ }
+
+ if (startLocation == null || !startLocation.Document.Name.Value.Equals(this.fileName)) return;
+
+ ys = this.pdbReader.GetClosestPrimarySourceLocationsFor(operations[operations.Count - 1].Location);
+ foreach (var y in ys) {
+ //Console.WriteLine("{0}:{1}({2},{3})", y.Document.Name.Value, MemberHelper.GetMethodSignature(methodBody.MethodDefinition, NameFormattingOptions.None),
+ // y.StartLine, y.StartColumn);
+ endLocation = y;
+ break;
+ }
+
+ if (endLocation == null) return;
+ if (startLocation.StartLine > this.lineNumber) return;
+
+ ProcessOperations(methodBody, operations);
+ } catch (AssertionInjectorException) {
+ Console.WriteLine("Internal error during IL mutation for the method '{0}'.",
+ MemberHelper.GetMemberSignature(methodBody.MethodDefinition, NameFormattingOptions.SmartTypeName));
+ }
+
+ }
+
+ private void ProcessOperations(MethodBody methodBody, List<IOperation> operations) {
+
+ var count = operations.Count;
+ ILGenerator generator = new ILGenerator(this.host, methodBody.MethodDefinition);
+ if (this.pdbReader != null) {
+ foreach (var ns in this.pdbReader.GetNamespaceScopes(methodBody)) {
+ foreach (var uns in ns.UsedNamespaces)
+ generator.UseNamespace(uns.NamespaceName.Value);
+ }
+ }
+
+ this.currentGenerator = generator;
+ this.scopeEnumerator = this.pdbReader == null ? null : this.pdbReader.GetLocalScopes(methodBody).GetEnumerator();
+ this.scopeEnumeratorIsValid = this.scopeEnumerator != null && this.scopeEnumerator.MoveNext();
+
+ var methodName = MemberHelper.GetMemberSignature(methodBody.MethodDefinition, NameFormattingOptions.SmartTypeName);
+
+ #region Record all offsets that appear as part of an exception handler
+ Dictionary<uint, bool> offsetsUsedInExceptionInformation = new Dictionary<uint, bool>();
+ foreach (var exceptionInfo in methodBody.OperationExceptionInformation ?? Enumerable<IOperationExceptionInformation>.Empty) {
+ uint x = exceptionInfo.TryStartOffset;
+ if (!offsetsUsedInExceptionInformation.ContainsKey(x)) offsetsUsedInExceptionInformation.Add(x, true);
+ x = exceptionInfo.TryEndOffset;
+ if (!offsetsUsedInExceptionInformation.ContainsKey(x)) offsetsUsedInExceptionInformation.Add(x, true);
+ x = exceptionInfo.HandlerStartOffset;
+ if (!offsetsUsedInExceptionInformation.ContainsKey(x)) offsetsUsedInExceptionInformation.Add(x, true);
+ x = exceptionInfo.HandlerEndOffset;
+ if (!offsetsUsedInExceptionInformation.ContainsKey(x)) offsetsUsedInExceptionInformation.Add(x, true);
+ if (exceptionInfo.HandlerKind == HandlerKind.Filter) {
+ x = exceptionInfo.FilterDecisionStartOffset;
+ if (!offsetsUsedInExceptionInformation.ContainsKey(x)) offsetsUsedInExceptionInformation.Add(x, true);
+ }
+ }
+ #endregion Record all offsets that appear as part of an exception handler
+
+ Dictionary<uint, ILGeneratorLabel> offset2Label = new Dictionary<uint, ILGeneratorLabel>();
+ #region Pass 1: Make a label for each branch target
+ for (int i = 0; i < count; i++) {
+ IOperation op = operations[i];
+ switch (op.OperationCode) {
+ case OperationCode.Beq:
+ case OperationCode.Bge:
+ case OperationCode.Bge_Un:
+ case OperationCode.Bgt:
+ case OperationCode.Bgt_Un:
+ case OperationCode.Ble:
+ case OperationCode.Ble_Un:
+ case OperationCode.Blt:
+ case OperationCode.Blt_Un:
+ case OperationCode.Bne_Un:
+ case OperationCode.Br:
+ case OperationCode.Brfalse:
+ case OperationCode.Brtrue:
+ case OperationCode.Leave:
+ case OperationCode.Beq_S:
+ case OperationCode.Bge_S:
+ case OperationCode.Bge_Un_S:
+ case OperationCode.Bgt_S:
+ case OperationCode.Bgt_Un_S:
+ case OperationCode.Ble_S:
+ case OperationCode.Ble_Un_S:
+ case OperationCode.Blt_S:
+ case OperationCode.Blt_Un_S:
+ case OperationCode.Bne_Un_S:
+ case OperationCode.Br_S:
+ case OperationCode.Brfalse_S:
+ case OperationCode.Brtrue_S:
+ case OperationCode.Leave_S:
+ uint x = (uint)op.Value;
+ if (!offset2Label.ContainsKey(x))
+ offset2Label.Add(x, new ILGeneratorLabel());
+ break;
+ case OperationCode.Switch:
+ uint[] offsets = op.Value as uint[];
+ foreach (var offset in offsets) {
+ if (!offset2Label.ContainsKey(offset))
+ offset2Label.Add(offset, new ILGeneratorLabel());
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ #endregion Pass 1: Make a label for each branch target
+
+ #region Pass 2: Emit each operation, along with labels
+ bool emittedProbe = false; // don't do it more than once
+ for (int i = 0; i < count; i++) {
+ IOperation op = operations[i];
+ ILGeneratorLabel label;
+ this.EmitDebugInformationFor(op);
+ #region Mark operation if it is a label for a branch
+ if (offset2Label.TryGetValue(op.Offset, out label)) {
+ generator.MarkLabel(label);
+ }
+ #endregion Mark operation if it is a label for a branch
+
+ #region Mark operation if it is pointed to by an exception handler
+ bool ignore;
+ uint offset = op.Offset;
+ if (offsetsUsedInExceptionInformation.TryGetValue(offset, out ignore)) {
+ foreach (var exceptionInfo in methodBody.OperationExceptionInformation) {
+ if (offset == exceptionInfo.TryStartOffset)
+ generator.BeginTryBody();
+
+ // Never need to do anthing when offset == exceptionInfo.TryEndOffset because
+ // we pick up an EndTryBody from the HandlerEndOffset below
+ // generator.EndTryBody();
+
+ if (offset == exceptionInfo.HandlerStartOffset) {
+ switch (exceptionInfo.HandlerKind) {
+ case HandlerKind.Catch:
+ generator.BeginCatchBlock(exceptionInfo.ExceptionType);
+ break;
+ case HandlerKind.Fault:
+ generator.BeginFaultBlock();
+ break;
+ case HandlerKind.Filter:
+ generator.BeginFilterBody();
+ break;
+ case HandlerKind.Finally:
+ generator.BeginFinallyBlock();
+ break;
+ }
+ }
+ if (exceptionInfo.HandlerKind == HandlerKind.Filter && offset == exceptionInfo.FilterDecisionStartOffset) {
+ generator.BeginFilterBlock();
+ }
+ if (offset == exceptionInfo.HandlerEndOffset)
+ generator.EndTryBody();
+ }
+ }
+ #endregion Mark operation if it is pointed to by an exception handler
+
+ #region Emit operation along with any injection
+
+ if (!emittedProbe) {
+ IPrimarySourceLocation location = null;
+ var locations = this.pdbReader.GetPrimarySourceLocationsFor(op.Location);
+ foreach (var x in locations) {
+ if (this.lineNumber <= x.StartLine) {
+ location = x;
+ break;
+ }
+ }
+ if (location != null) {
+ emittedProbe = true;
+ generator.Emit(OperationCode.Ldc_I4_0);
+ generator.Emit(OperationCode.Call, this.contractDotAssert);
+ }
+ }
+
+ switch (op.OperationCode) {
+ #region Branches
+ case OperationCode.Beq:
+ case OperationCode.Bge:
+ case OperationCode.Bge_Un:
+ case OperationCode.Bgt:
+ case OperationCode.Bgt_Un:
+ case OperationCode.Ble:
+ case OperationCode.Ble_Un:
+ case OperationCode.Blt:
+ case OperationCode.Blt_Un:
+ case OperationCode.Bne_Un:
+ case OperationCode.Br:
+ case OperationCode.Brfalse:
+ case OperationCode.Brtrue:
+ case OperationCode.Leave:
+ case OperationCode.Beq_S:
+ case OperationCode.Bge_S:
+ case OperationCode.Bge_Un_S:
+ case OperationCode.Bgt_S:
+ case OperationCode.Bgt_Un_S:
+ case OperationCode.Ble_S:
+ case OperationCode.Ble_Un_S:
+ case OperationCode.Blt_S:
+ case OperationCode.Blt_Un_S:
+ case OperationCode.Bne_Un_S:
+ case OperationCode.Br_S:
+ case OperationCode.Brfalse_S:
+ case OperationCode.Brtrue_S:
+ case OperationCode.Leave_S:
+ generator.Emit(ILGenerator.LongVersionOf(op.OperationCode), offset2Label[(uint)op.Value]);
+ break;
+ case OperationCode.Switch:
+ uint[] offsets = op.Value as uint[];
+ ILGeneratorLabel[] labels = new ILGeneratorLabel[offsets.Length];
+ for (int j = 0, n = offsets.Length; j < n; j++) {
+ labels[j] = offset2Label[offsets[j]];
+ }
+ generator.Emit(OperationCode.Switch, labels);
+ break;
+ #endregion Branches
+ #region Everything else
+ //case OperationCode.Stloc:
+ //case OperationCode.Stloc_0:
+ //case OperationCode.Stloc_1:
+ //case OperationCode.Stloc_2:
+ //case OperationCode.Stloc_3:
+ //case OperationCode.Stloc_S:
+ // EmitStoreLocal(generator, op);
+ // break;
+ default:
+ if (op.Value == null) {
+ generator.Emit(op.OperationCode);
+ break;
+ }
+ var typeCode = System.Convert.GetTypeCode(op.Value);
+ switch (typeCode) {
+ case TypeCode.Byte:
+ generator.Emit(op.OperationCode, (byte)op.Value);
+ break;
+ case TypeCode.Double:
+ generator.Emit(op.OperationCode, (double)op.Value);
+ break;
+ case TypeCode.Int16:
+ generator.Emit(op.OperationCode, (short)op.Value);
+ break;
+ case TypeCode.Int32:
+ generator.Emit(op.OperationCode, (int)op.Value);
+ break;
+ case TypeCode.Int64:
+ generator.Emit(op.OperationCode, (long)op.Value);
+ break;
+ case TypeCode.Object:
+ IFieldReference fieldReference = op.Value as IFieldReference;
+ if (fieldReference != null) {
+ generator.Emit(op.OperationCode, this.Rewrite(fieldReference));
+ break;
+ }
+ ILocalDefinition localDefinition = op.Value as ILocalDefinition;
+ if (localDefinition != null) {
+ generator.Emit(op.OperationCode, localDefinition);
+ break;
+ }
+ IMethodReference methodReference = op.Value as IMethodReference;
+ if (methodReference != null) {
+ generator.Emit(op.OperationCode, this.Rewrite(methodReference));
+ break;
+ }
+ IParameterDefinition parameterDefinition = op.Value as IParameterDefinition;
+ if (parameterDefinition != null) {
+ generator.Emit(op.OperationCode, parameterDefinition);
+ break;
+ }
+ ISignature signature = op.Value as ISignature;
+ if (signature != null) {
+ generator.Emit(op.OperationCode, signature);
+ break;
+ }
+ ITypeReference typeReference = op.Value as ITypeReference;
+ if (typeReference != null) {
+ generator.Emit(op.OperationCode, this.Rewrite(typeReference));
+ break;
+ }
+ throw new AssertionInjectorException("Should never get here: no other IOperation argument types should exist");
+ case TypeCode.SByte:
+ generator.Emit(op.OperationCode, (sbyte)op.Value);
+ break;
+ case TypeCode.Single:
+ generator.Emit(op.OperationCode, (float)op.Value);
+ break;
+ case TypeCode.String:
+ generator.Emit(op.OperationCode, (string)op.Value);
+ break;
+ default:
+ // The other cases are the other enum values that TypeCode has.
+ // But no other argument types should be in the Operations. ILGenerator cannot handle anything else,
+ // so such IOperations should never exist.
+ //case TypeCode.Boolean:
+ //case TypeCode.Char:
+ //case TypeCode.DateTime:
+ //case TypeCode.DBNull:
+ //case TypeCode.Decimal:
+ //case TypeCode.Empty: // this would be the value for null, but the case when op.Value is null is handled before the switch statement
+ //case TypeCode.UInt16:
+ //case TypeCode.UInt32:
+ //case TypeCode.UInt64:
+ throw new AssertionInjectorException("Should never get here: no other IOperation argument types should exist");
+ }
+ break;
+ #endregion Everything else
+ }
+ #endregion Emit operation along with any injection
+
+ }
+ while (generator.InTryBody)
+ generator.EndTryBody();
+ while (this.scopeStack.Count > 0) {
+ this.currentGenerator.EndScope();
+ this.scopeStack.Pop();
+ }
+ #endregion Pass 2: Emit each operation, along with labels
+
+ }
+
+ private void EmitDebugInformationFor(IOperation operation) {
+ this.currentGenerator.MarkSequencePoint(operation.Location);
+ if (this.scopeEnumerator == null) return;
+ ILocalScope/*?*/ currentScope = null;
+ while (this.scopeStack.Count > 0) {
+ currentScope = this.scopeStack.Peek();
+ if (operation.Offset < currentScope.Offset + currentScope.Length) break;
+ this.scopeStack.Pop();
+ this.currentGenerator.EndScope();
+ currentScope = null;
+ }
+ while (this.scopeEnumeratorIsValid) {
+ currentScope = this.scopeEnumerator.Current;
+ if (currentScope.Offset <= operation.Offset && operation.Offset < currentScope.Offset + currentScope.Length) {
+ this.scopeStack.Push(currentScope);
+ this.currentGenerator.BeginScope();
+ foreach (var local in this.pdbReader.GetVariablesInScope(currentScope))
+ this.currentGenerator.AddVariableToCurrentScope(local);
+ foreach (var constant in this.pdbReader.GetConstantsInScope(currentScope))
+ this.currentGenerator.AddConstantToCurrentScope(constant);
+ this.scopeEnumeratorIsValid = this.scopeEnumerator.MoveNext();
+ } else
+ break;
+ }
+ }
+
+ private void EmitStoreLocal(ILGenerator generator, IOperation op) {
+
+ #region Emit: call Console.WriteLine("foo");
+ //generator.Emit(OperationCode.Ldstr, "foo");
+ //generator.Emit(OperationCode.Call, this.consoleDotWriteLine);
+ #endregion Emit: call Console.WriteLine("foo");
+
+ string localName;
+ switch (op.OperationCode) {
+ case OperationCode.Stloc:
+ case OperationCode.Stloc_S:
+ ILocalDefinition loc = op.Value as ILocalDefinition;
+ if (loc == null) throw new AssertionInjectorException("Stloc operation found without a valid operand");
+ if (TryGetLocalName(loc, out localName)) {
+ generator.Emit(OperationCode.Ldstr, localName);
+ generator.Emit(OperationCode.Call, this.contractDotAssert);
+ }
+ generator.Emit(op.OperationCode, loc);
+ break;
+
+ case OperationCode.Stloc_0:
+ if (this.currentLocals.Count < 1)
+ throw new AssertionInjectorException("stloc.0 operation found but no corresponding local in method body");
+ if (TryGetLocalName(this.currentLocals[0], out localName)) {
+ generator.Emit(OperationCode.Ldstr, localName);
+ generator.Emit(OperationCode.Call, this.contractDotAssert);
+ }
+ generator.Emit(op.OperationCode);
+ break;
+
+ case OperationCode.Stloc_1:
+ if (this.currentLocals.Count < 2)
+ throw new AssertionInjectorException("stloc.1 operation found but no corresponding local in method body");
+ if (TryGetLocalName(this.currentLocals[1], out localName)) {
+ generator.Emit(OperationCode.Ldstr, localName);
+ generator.Emit(OperationCode.Call, this.contractDotAssert);
+ }
+ generator.Emit(op.OperationCode);
+ break;
+
+ case OperationCode.Stloc_2:
+ if (this.currentLocals.Count < 3)
+ throw new AssertionInjectorException("stloc.2 operation found but no corresponding local in method body");
+ if (TryGetLocalName(this.currentLocals[2], out localName)) {
+ generator.Emit(OperationCode.Ldstr, localName);
+ generator.Emit(OperationCode.Call, this.contractDotAssert);
+ }
+ generator.Emit(op.OperationCode);
+ break;
+
+ case OperationCode.Stloc_3:
+ if (this.currentLocals.Count < 4)
+ throw new AssertionInjectorException("stloc.3 operation found but no corresponding local in method body");
+ if (TryGetLocalName(this.currentLocals[3], out localName)) {
+ generator.Emit(OperationCode.Ldstr, localName);
+ generator.Emit(OperationCode.Call, this.contractDotAssert);
+ }
+ generator.Emit(op.OperationCode);
+ break;
+
+ default:
+ throw new AssertionInjectorException("Should never get here: switch statement was meant to be exhaustive");
+ }
+ }
+
+ private bool TryGetLocalName(ILocalDefinition local, out string localNameFromPDB) {
+ string localName = local.Name.Value;
+ localNameFromPDB = null;
+ if (this.pdbReader != null) {
+ foreach (IPrimarySourceLocation psloc in this.pdbReader.GetPrimarySourceLocationsForDefinitionOf(local)) {
+ if (psloc.Source.Length > 0) {
+ localNameFromPDB = psloc.Source;
+ break;
+ }
+ }
+ }
+ return localNameFromPDB != null;
+ }
+
+ /// <summary>
+ /// Exceptions thrown during extraction. Should not escape this class.
+ /// </summary>
+ private class AssertionInjectorException : Exception {
+ /// <summary>
+ /// Exception specific to an error occurring in the contract extractor
+ /// </summary>
+ public AssertionInjectorException() { }
+ /// <summary>
+ /// Exception specific to an error occurring in the contract extractor
+ /// </summary>
+ public AssertionInjectorException(string s) : base(s) { }
+ /// <summary>
+ /// Exception specific to an error occurring in the contract extractor
+ /// </summary>
+ public AssertionInjectorException(string s, Exception inner) : base(s, inner) { }
+ /// <summary>
+ /// Exception specific to an error occurring in the contract extractor
+ /// </summary>
+ public AssertionInjectorException(SerializationInfo info, StreamingContext context) : base(info, context) { }
+ }
+ }
+
+}
diff --git a/BCT/GetMeHere/AssertionInjector/Properties/AssemblyInfo.cs b/BCT/GetMeHere/AssertionInjector/Properties/AssemblyInfo.cs
new file mode 100644
index 00000000..e58cc425
--- /dev/null
+++ b/BCT/GetMeHere/AssertionInjector/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("AssertionInjector")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Microsoft")]
+[assembly: AssemblyProduct("AssertionInjector")]
+[assembly: AssemblyCopyright("Copyright © Microsoft 2011")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("f39cb052-3add-469f-9b89-6fdd7f5b1ec4")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]