[Build] Improve performance of GenDummy (#284)
authorWonYoung Choi <wy80.choi@samsung.com>
Tue, 17 Jul 2018 04:09:49 +0000 (13:09 +0900)
committerGitHub <noreply@github.com>
Tue, 17 Jul 2018 04:09:49 +0000 (13:09 +0900)
162 files changed:
build.sh
build/build.proj
build/common.props
build/common.targets
tools/ABIChecker/Checker_ABI.dll [deleted file]
tools/ABIChecker/Checker_ABI.pdb [deleted file]
tools/ABIChecker/Checker_ABI.runtimeconfig.json [deleted file]
tools/ABIChecker/CommandLine.dll [deleted file]
tools/ABIChecker/System.Composition.Convention.dll [deleted file]
tools/ABIChecker/System.Composition.Hosting.dll [deleted file]
tools/ABIChecker/System.Composition.Runtime.dll [deleted file]
tools/ABIChecker/System.Composition.TypedParts.dll [deleted file]
tools/GenDummy/GenDummy.dll [deleted file]
tools/GenDummy/GenDummy.pdb [deleted file]
tools/GenDummy/Microsoft.CodeAnalysis.CSharp.Workspaces.dll [deleted file]
tools/GenDummy/Microsoft.CodeAnalysis.CSharp.dll [deleted file]
tools/GenDummy/Microsoft.CodeAnalysis.VisualBasic.Workspaces.dll [deleted file]
tools/GenDummy/Microsoft.CodeAnalysis.VisualBasic.dll [deleted file]
tools/GenDummy/Microsoft.CodeAnalysis.Workspaces.dll [deleted file]
tools/GenDummy/Microsoft.CodeAnalysis.dll [deleted file]
tools/bin/ABIChecker/ABIChecker.deps.json [moved from tools/ABIChecker/Checker_ABI.deps.json with 97% similarity]
tools/bin/ABIChecker/ABIChecker.dll [new file with mode: 0644]
tools/bin/ABIChecker/ABIChecker.pdb [new file with mode: 0644]
tools/bin/ABIChecker/ABIChecker.runtimeconfig.json [moved from tools/GenDummy/GenDummy.runtimeconfig.json with 100% similarity]
tools/bin/ABIChecker/CommandLine.dll [moved from tools/GenDummy/CommandLine.dll with 100% similarity]
tools/bin/ABIChecker/Microsoft.CodeAnalysis.CSharp.Workspaces.dll [moved from tools/ABIChecker/Microsoft.CodeAnalysis.CSharp.Workspaces.dll with 100% similarity]
tools/bin/ABIChecker/Microsoft.CodeAnalysis.CSharp.dll [moved from tools/ABIChecker/Microsoft.CodeAnalysis.CSharp.dll with 100% similarity]
tools/bin/ABIChecker/Microsoft.CodeAnalysis.VisualBasic.Workspaces.dll [moved from tools/ABIChecker/Microsoft.CodeAnalysis.VisualBasic.Workspaces.dll with 100% similarity]
tools/bin/ABIChecker/Microsoft.CodeAnalysis.VisualBasic.dll [moved from tools/ABIChecker/Microsoft.CodeAnalysis.VisualBasic.dll with 100% similarity]
tools/bin/ABIChecker/Microsoft.CodeAnalysis.Workspaces.dll [moved from tools/ABIChecker/Microsoft.CodeAnalysis.Workspaces.dll with 100% similarity]
tools/bin/ABIChecker/Microsoft.CodeAnalysis.dll [moved from tools/ABIChecker/Microsoft.CodeAnalysis.dll with 100% similarity]
tools/bin/ABIChecker/Microsoft.DotNet.PlatformAbstractions.dll [moved from tools/ABIChecker/Microsoft.DotNet.PlatformAbstractions.dll with 100% similarity]
tools/bin/ABIChecker/Microsoft.Extensions.DependencyModel.dll [moved from tools/ABIChecker/Microsoft.Extensions.DependencyModel.dll with 100% similarity]
tools/bin/ABIChecker/Newtonsoft.Json.dll [moved from tools/ABIChecker/Newtonsoft.Json.dll with 100% similarity, mode: 0644]
tools/bin/ABIChecker/System.Composition.AttributedModel.dll [moved from tools/GenDummy/System.Composition.AttributedModel.dll with 100% similarity, mode: 0644]
tools/bin/ABIChecker/System.Composition.Convention.dll [moved from tools/GenDummy/System.Composition.Convention.dll with 100% similarity, mode: 0644]
tools/bin/ABIChecker/System.Composition.Hosting.dll [moved from tools/GenDummy/System.Composition.Hosting.dll with 100% similarity, mode: 0644]
tools/bin/ABIChecker/System.Composition.Runtime.dll [moved from tools/GenDummy/System.Composition.Runtime.dll with 100% similarity, mode: 0644]
tools/bin/ABIChecker/System.Composition.TypedParts.dll [moved from tools/GenDummy/System.Composition.TypedParts.dll with 100% similarity, mode: 0644]
tools/bin/ABIChecker/runtimes/unix/lib/netstandard1.3/System.Text.Encoding.CodePages.dll [moved from tools/GenDummy/runtimes/unix/lib/netstandard1.3/System.Text.Encoding.CodePages.dll with 100% similarity]
tools/bin/ABIChecker/runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll [moved from tools/GenDummy/runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll with 100% similarity]
tools/bin/GenDummy.Tasks/GenDummy.Tasks.deps.json [moved from tools/GenDummy/GenDummy.deps.json with 70% similarity]
tools/bin/GenDummy.Tasks/GenDummy.Tasks.dll [new file with mode: 0644]
tools/bin/GenDummy.Tasks/GenDummy.Tasks.pdb [new file with mode: 0644]
tools/bin/GenDummy.Tasks/GenDummy.dll [new file with mode: 0644]
tools/bin/GenDummy.Tasks/GenDummy.pdb [new file with mode: 0644]
tools/bin/GenDummy.Tasks/Microsoft.Build.Framework.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/Microsoft.Build.Utilities.Core.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/Microsoft.CodeAnalysis.CSharp.Workspaces.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/Microsoft.CodeAnalysis.CSharp.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/Microsoft.CodeAnalysis.Workspaces.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/Microsoft.CodeAnalysis.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.AppContext.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Buffers.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Collections.Concurrent.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Collections.Immutable.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Collections.NonGeneric.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Composition.AttributedModel.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Composition.Convention.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Composition.Hosting.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Composition.Runtime.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Composition.TypedParts.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Diagnostics.Contracts.dll [new file with mode: 0644]
tools/bin/GenDummy.Tasks/System.Diagnostics.StackTrace.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Dynamic.Runtime.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.IO.FileSystem.Primitives.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Linq.Expressions.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Linq.Parallel.dll [new file with mode: 0644]
tools/bin/GenDummy.Tasks/System.Linq.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.ObjectModel.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Private.DataContractSerialization.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Reflection.Emit.ILGeneration.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Reflection.Emit.Lightweight.dll [moved from tools/ABIChecker/System.Composition.AttributedModel.dll with 58% similarity]
tools/bin/GenDummy.Tasks/System.Reflection.Emit.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Reflection.Metadata.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Reflection.TypeExtensions.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Resources.Reader.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Runtime.Numerics.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Runtime.Serialization.Primitives.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Runtime.Serialization.Xml.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Security.Cryptography.OpenSsl.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Security.Cryptography.Primitives.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Text.RegularExpressions.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Threading.Tasks.Extensions.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Threading.Tasks.Parallel.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Threading.Thread.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Threading.ThreadPool.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Threading.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.ValueTuple.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Xml.ReaderWriter.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Xml.XDocument.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Xml.XPath.XDocument.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Xml.XPath.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Xml.XmlDocument.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/System.Xml.XmlSerializer.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/debian.8-x64/native/System.Security.Cryptography.Native.OpenSsl.so [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/fedora.23-x64/native/System.Security.Cryptography.Native.OpenSsl.so [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/fedora.24-x64/native/System.Security.Cryptography.Native.OpenSsl.so [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/linux/lib/netstandard1.4/System.Diagnostics.Process.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/opensuse.13.2-x64/native/System.Security.Cryptography.Native.OpenSsl.so [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/opensuse.42.1-x64/native/System.Security.Cryptography.Native.OpenSsl.so [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.Apple.dylib [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.OpenSsl.dylib [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/osx/lib/netstandard1.4/System.Diagnostics.Process.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/osx/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/rhel.7-x64/native/System.Security.Cryptography.Native.OpenSsl.so [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/ubuntu.14.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/ubuntu.16.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/ubuntu.16.10-x64/native/System.Security.Cryptography.Native.OpenSsl.so [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.3/Microsoft.Win32.Registry.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.3/System.Diagnostics.FileVersionInfo.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.3/System.Diagnostics.TraceSource.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.3/System.IO.Compression.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Csp.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.3/System.Text.Encoding.CodePages.dll [moved from tools/ABIChecker/runtimes/unix/lib/netstandard1.3/System.Text.Encoding.CodePages.dll with 100% similarity]
tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Cng.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.3/Microsoft.Win32.Registry.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.3/System.Diagnostics.FileVersionInfo.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.3/System.Diagnostics.TraceSource.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.3/System.IO.Compression.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Csp.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll [moved from tools/ABIChecker/runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll with 100% similarity]
tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.4/System.Diagnostics.Process.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Cng.dll [new file with mode: 0755]
tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll [new file with mode: 0755]
tools/build-tools.sh [new file with mode: 0755]
tools/scripts/add_module.sh [moved from tools/add_module.sh with 100% similarity]
tools/scripts/module.csproj.template [moved from tools/module.csproj.template with 100% similarity]
tools/scripts/retry.sh [moved from tools/retry.sh with 100% similarity]
tools/scripts/timeout.sh [moved from tools/timeout.sh with 100% similarity]
tools/src/ABIChecker/ABIChecker.csproj [new file with mode: 0644]
tools/src/ABIChecker/ABITester.cs [new file with mode: 0644]
tools/src/ABIChecker/Checker/AssemblyChecker.cs [new file with mode: 0644]
tools/src/ABIChecker/Checker_ABI.sln [new file with mode: 0644]
tools/src/ABIChecker/Program.cs [new file with mode: 0644]
tools/src/ABIChecker/Properties/launchSettings.json [new file with mode: 0644]
tools/src/ABIChecker/Utilities/ObjectUtil.cs [new file with mode: 0644]
tools/src/ABIChecker/Utilities/ReflectionExtension.cs [new file with mode: 0644]
tools/src/GenDummy.CommandLine/GenDummy.CommandLine.csproj [new file with mode: 0644]
tools/src/GenDummy.CommandLine/Options.cs [new file with mode: 0644]
tools/src/GenDummy.CommandLine/Program.cs [new file with mode: 0644]
tools/src/GenDummy.Tasks/GenDummy.Tasks.csproj [new file with mode: 0644]
tools/src/GenDummy.Tasks/GenDummyTask.cs [new file with mode: 0644]
tools/src/GenDummy/.editorconfig [new file with mode: 0644]
tools/src/GenDummy/DummyProject.cs [new file with mode: 0644]
tools/src/GenDummy/GenDummy.csproj [new file with mode: 0644]
tools/src/GenDummy/Processors/ConstructorProcessor.cs [new file with mode: 0644]
tools/src/GenDummy/Processors/DestructorProcessor.cs [new file with mode: 0644]
tools/src/GenDummy/Processors/DummyProcessor.cs [new file with mode: 0644]
tools/src/GenDummy/Processors/EventProcessor.cs [new file with mode: 0644]
tools/src/GenDummy/Processors/IProcessor.cs [new file with mode: 0644]
tools/src/GenDummy/Processors/MethodProcessor.cs [new file with mode: 0644]
tools/src/GenDummy/Processors/PropertyProcessor.cs [new file with mode: 0644]
tools/src/Tools.sln [new file with mode: 0644]

index 1c78710..ba1914b 100755 (executable)
--- a/build.sh
+++ b/build.sh
@@ -5,8 +5,8 @@ SCRIPT_DIR=$(dirname $SCRIPT_FILE)
 
 OUTDIR=$SCRIPT_DIR/Artifacts
 
-RETRY_CMD="$SCRIPT_DIR/tools/retry.sh"
-TIMEOUT_CMD="$SCRIPT_DIR/tools/timeout.sh"
+RETRY_CMD="$SCRIPT_DIR/tools/scripts/retry.sh"
+TIMEOUT_CMD="$SCRIPT_DIR/tools/scripts/timeout.sh"
 DOTNET_CMD="$RETRY_CMD $TIMEOUT_CMD 600 dotnet"
 
 RUN_BUILD="$DOTNET_CMD msbuild $SCRIPT_DIR/build/build.proj /nologo"
@@ -46,8 +46,8 @@ cmd_dummy_build() {
   if [ -d /nuget ]; then
     NUGET_SOURCE_OPT="/p:RestoreSources=/nuget"
   fi
+  $RUN_BUILD /t:restore $NUGET_SOURCE_OPT
   $RUN_BUILD /t:dummy $NUGET_SOURCE_OPT
-  $RUN_BUILD /t:afterdummy
 }
 
 cmd_pack() {
index 030d6a0..4cb2652 100644 (file)
@@ -78,7 +78,7 @@
              Properties="Configuration=$(Configuration)"
              BuildInParallel="true"
              UseResultsCache="true"
-             Targets="Build" />
+             Targets="Rebuild" />
 
     <MSBuild Projects="@(ProjectToBuild)"
              Properties="Configuration=$(Configuration)"
     ==============
     Generate dummy assemblies of all projects.
   -->
-  <Target Name="Dummy" DependsOnTargets="GenerateDummyProject">
+  <Target Name="Dummy">
 
-    <ItemGroup>
-      <DummyProjectToBuild Include="$(PublicDummyProjectDir)**\*.csproj" />
-      <DummyProjectToBuild Include="$(InternalDummyProjectDir)**\*.csproj" />
-    </ItemGroup>
-
-    <MSBuild Projects="@(DummyProjectToBuild)"
-             Properties="Configuration=$(Configuration);RestoreSources=$(RestoreSources)"
-             BuildInParallel="false"
-             Targets="Restore" />
-
-    <MSBuild Projects="@(DummyProjectToBuild)"
-             Properties="Configuration=$(Configuration);WarningLevel=0;OutDir=$(OutputDummyDir);ProduceReferenceAssembly=False"
+    <MSBuild Projects="@(ProjectToBuild)"
+             Properties="Configuration=$(Configuration);IsDummyBuild=True"
              BuildInParallel="true"
              UseResultsCache="true"
-             Targets="Build" />
-
-  </Target>
+             Targets="Rebuild" />
 
+    <MSBuild Projects="@(ProjectToBuild)"
+             Properties="Configuration=$(Configuration)"
+             BuildInParallel="false"
+             Targets="CopyToDummyArtifactsDirectory" />
 
-  <Target Name="GenerateDummyProject" Inputs="@(ProjectToBuild)" Outputs="%(Filename)" >
-
-    <PropertyGroup>
-      <GeneratedDummyAssembly>$(OutputDummyDir)%(ProjectToBuild.Filename).dll</GeneratedDummyAssembly>
-      <ClonedProjectsDir Condition="'%(ProjectToBuild.Visibility)' == 'Public'" >$(PublicDummyProjectDir)</ClonedProjectsDir>
-      <ClonedProjectsDir Condition="'%(ProjectToBuild.Visibility)' == 'Internal'" >$(InternalDummyProjectDir)</ClonedProjectsDir>
-    </PropertyGroup>
-
-    <Message Text="[GenDummy] %(ProjectToBuild.Filename)" Importance="High" />
-    <Message Text="Directory = %(ProjectToBuild.Directory)" Importance="High" />
-
-    <Exec Command='$(GenDummyCommand) -project %(ProjectToBuild.Filename) -source %(ProjectToBuild.RootDir)%(ProjectToBuild.Directory).. -clonePath $(ClonedProjectsDir)' />
-
-  </Target>
-
-  <Target Name="AfterDummy">
-    <Message Text="Clean Directory" Importance="High" />
-    <RemoveDir Directories="$(PublicDummyProjectDir);$(InternalDummyProjectDir)" />
   </Target>
 
 </Project>
index ef3fb2b..8476ad9 100644 (file)
@@ -6,6 +6,7 @@
     <GenerateDependencyFile>False</GenerateDependencyFile>
     <Deterministic>True</Deterministic>
     <ProduceReferenceAssembly>True</ProduceReferenceAssembly>
+    <NoWarn Condition="'$(IsDummyBuild)' == 'True'">CS0067;CS0169;CS0414;CS0649;CS1998</NoWarn>
   </PropertyGroup>
 
   <PropertyGroup>
index bb8b895..d90f158 100644 (file)
@@ -1,15 +1,33 @@
 <Project>
 
+  <UsingTask TaskName="GenDummyTask" AssemblyFile="$(MSBuildThisFileDirectory)..\tools\bin\GenDummy.Tasks\GenDummy.Tasks.dll" />
+
   <Target Name="CopyToArtifactsDirectory"
           Condition="'$(ArtifactsDirectory)' != ''"
           DependsOnTargets="GetCopyToOutputDirectoryItems">
     <ItemGroup>
       <OutputFilesToCopy Include="$(OutDir)**" />
     </ItemGroup>
-
     <Copy SourceFiles="@(OutputFilesToCopy)"
           DestinationFiles="$(ArtifactsDirectory)%(RecursiveDir)%(Filename)%(Extension)" />
+  </Target>
 
+  <Target Name="CopyToDummyArtifactsDirectory"
+          DependsOnTargets="GetCopyToOutputDirectoryItems">
+    <Copy SourceFiles="$(TargetPath)"
+          DestinationFiles="$(OutputDummyDir)$(TargetFileName)" />
+  </Target>
+
+  <Target Name="BeforeCompile"
+          Condition="'$(IsDummyBuild)' == 'True'">
+
+    <GenDummyTask Sources="@(Compile)" OutputDirectory="$(IntermediateOutputPath)dummy\">
+      <Output TaskParameter="GeneratedFiles" ItemName="_DummyCompile" />
+    </GenDummyTask>
+    <ItemGroup>
+      <Compile Remove="@(Compile)" />
+      <Compile Include="@(_DummyCompile)" />
+    </ItemGroup>
   </Target>
 
 </Project>
diff --git a/tools/ABIChecker/Checker_ABI.dll b/tools/ABIChecker/Checker_ABI.dll
deleted file mode 100644 (file)
index ab3e7c5..0000000
Binary files a/tools/ABIChecker/Checker_ABI.dll and /dev/null differ
diff --git a/tools/ABIChecker/Checker_ABI.pdb b/tools/ABIChecker/Checker_ABI.pdb
deleted file mode 100644 (file)
index 7306303..0000000
Binary files a/tools/ABIChecker/Checker_ABI.pdb and /dev/null differ
diff --git a/tools/ABIChecker/Checker_ABI.runtimeconfig.json b/tools/ABIChecker/Checker_ABI.runtimeconfig.json
deleted file mode 100644 (file)
index 7539019..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-  "runtimeOptions": {
-    "tfm": "netcoreapp2.0",
-    "framework": {
-      "name": "Microsoft.NETCore.App",
-      "version": "2.0.0"
-    }
-  }
-}
\ No newline at end of file
diff --git a/tools/ABIChecker/CommandLine.dll b/tools/ABIChecker/CommandLine.dll
deleted file mode 100755 (executable)
index 54429a9..0000000
Binary files a/tools/ABIChecker/CommandLine.dll and /dev/null differ
diff --git a/tools/ABIChecker/System.Composition.Convention.dll b/tools/ABIChecker/System.Composition.Convention.dll
deleted file mode 100755 (executable)
index ef3669b..0000000
Binary files a/tools/ABIChecker/System.Composition.Convention.dll and /dev/null differ
diff --git a/tools/ABIChecker/System.Composition.Hosting.dll b/tools/ABIChecker/System.Composition.Hosting.dll
deleted file mode 100755 (executable)
index a446fe6..0000000
Binary files a/tools/ABIChecker/System.Composition.Hosting.dll and /dev/null differ
diff --git a/tools/ABIChecker/System.Composition.Runtime.dll b/tools/ABIChecker/System.Composition.Runtime.dll
deleted file mode 100755 (executable)
index a05bfe9..0000000
Binary files a/tools/ABIChecker/System.Composition.Runtime.dll and /dev/null differ
diff --git a/tools/ABIChecker/System.Composition.TypedParts.dll b/tools/ABIChecker/System.Composition.TypedParts.dll
deleted file mode 100755 (executable)
index cfae95d..0000000
Binary files a/tools/ABIChecker/System.Composition.TypedParts.dll and /dev/null differ
diff --git a/tools/GenDummy/GenDummy.dll b/tools/GenDummy/GenDummy.dll
deleted file mode 100644 (file)
index e3c89b2..0000000
Binary files a/tools/GenDummy/GenDummy.dll and /dev/null differ
diff --git a/tools/GenDummy/GenDummy.pdb b/tools/GenDummy/GenDummy.pdb
deleted file mode 100644 (file)
index 0d960a1..0000000
Binary files a/tools/GenDummy/GenDummy.pdb and /dev/null differ
diff --git a/tools/GenDummy/Microsoft.CodeAnalysis.CSharp.Workspaces.dll b/tools/GenDummy/Microsoft.CodeAnalysis.CSharp.Workspaces.dll
deleted file mode 100755 (executable)
index c0af68b..0000000
Binary files a/tools/GenDummy/Microsoft.CodeAnalysis.CSharp.Workspaces.dll and /dev/null differ
diff --git a/tools/GenDummy/Microsoft.CodeAnalysis.CSharp.dll b/tools/GenDummy/Microsoft.CodeAnalysis.CSharp.dll
deleted file mode 100755 (executable)
index f95ba4f..0000000
Binary files a/tools/GenDummy/Microsoft.CodeAnalysis.CSharp.dll and /dev/null differ
diff --git a/tools/GenDummy/Microsoft.CodeAnalysis.VisualBasic.Workspaces.dll b/tools/GenDummy/Microsoft.CodeAnalysis.VisualBasic.Workspaces.dll
deleted file mode 100755 (executable)
index 33e0fc9..0000000
Binary files a/tools/GenDummy/Microsoft.CodeAnalysis.VisualBasic.Workspaces.dll and /dev/null differ
diff --git a/tools/GenDummy/Microsoft.CodeAnalysis.VisualBasic.dll b/tools/GenDummy/Microsoft.CodeAnalysis.VisualBasic.dll
deleted file mode 100755 (executable)
index bc12eda..0000000
Binary files a/tools/GenDummy/Microsoft.CodeAnalysis.VisualBasic.dll and /dev/null differ
diff --git a/tools/GenDummy/Microsoft.CodeAnalysis.Workspaces.dll b/tools/GenDummy/Microsoft.CodeAnalysis.Workspaces.dll
deleted file mode 100755 (executable)
index ffa110a..0000000
Binary files a/tools/GenDummy/Microsoft.CodeAnalysis.Workspaces.dll and /dev/null differ
diff --git a/tools/GenDummy/Microsoft.CodeAnalysis.dll b/tools/GenDummy/Microsoft.CodeAnalysis.dll
deleted file mode 100755 (executable)
index 860ad63..0000000
Binary files a/tools/GenDummy/Microsoft.CodeAnalysis.dll and /dev/null differ
similarity index 97%
rename from tools/ABIChecker/Checker_ABI.deps.json
rename to tools/bin/ABIChecker/ABIChecker.deps.json
index e7dacf5..e0548df 100644 (file)
@@ -6,7 +6,7 @@
   "compilationOptions": {},
   "targets": {
     ".NETCoreApp,Version=v2.0": {
-      "Checker_ABI/1.0.0": {
+      "ABIChecker/1.0.0": {
         "dependencies": {
           "CommandLineParser": "2.2.1",
           "Microsoft.CodeAnalysis": "2.6.1",
@@ -14,7 +14,7 @@
           "System.Runtime.Loader": "4.3.0"
         },
         "runtime": {
-          "Checker_ABI.dll": {}
+          "ABIChecker.dll": {}
         }
       },
       "CommandLineParser/2.2.1": {
           "System.Runtime.Extensions": "4.3.0"
         },
         "runtime": {
-          "lib/netstandard1.5/CommandLine.dll": {}
+          "lib/netstandard1.5/CommandLine.dll": {
+            "assemblyVersion": "2.0.275.0",
+            "fileVersion": "2.0.275.0"
+          }
         }
       },
       "Microsoft.CodeAnalysis/2.6.1": {
           "System.Xml.XmlDocument": "4.3.0"
         },
         "runtime": {
-          "lib/netstandard1.3/Microsoft.CodeAnalysis.dll": {}
+          "lib/netstandard1.3/Microsoft.CodeAnalysis.dll": {
+            "assemblyVersion": "2.6.0.0",
+            "fileVersion": "2.6.1.62414"
+          }
         }
       },
       "Microsoft.CodeAnalysis.CSharp/2.6.1": {
           "Microsoft.CodeAnalysis.Common": "2.6.1"
         },
         "runtime": {
-          "lib/netstandard1.3/Microsoft.CodeAnalysis.CSharp.dll": {}
+          "lib/netstandard1.3/Microsoft.CodeAnalysis.CSharp.dll": {
+            "assemblyVersion": "2.6.0.0",
+            "fileVersion": "2.6.1.62414"
+          }
         }
       },
       "Microsoft.CodeAnalysis.CSharp.Workspaces/2.6.1": {
           "Microsoft.CodeAnalysis.Workspaces.Common": "2.6.1"
         },
         "runtime": {
-          "lib/netstandard1.3/Microsoft.CodeAnalysis.CSharp.Workspaces.dll": {}
+          "lib/netstandard1.3/Microsoft.CodeAnalysis.CSharp.Workspaces.dll": {
+            "assemblyVersion": "2.6.0.0",
+            "fileVersion": "2.6.1.62414"
+          }
         }
       },
       "Microsoft.CodeAnalysis.VisualBasic/2.6.1": {
           "Microsoft.CodeAnalysis.Common": "2.6.1"
         },
         "runtime": {
-          "lib/netstandard1.3/Microsoft.CodeAnalysis.VisualBasic.dll": {}
+          "lib/netstandard1.3/Microsoft.CodeAnalysis.VisualBasic.dll": {
+            "assemblyVersion": "2.6.0.0",
+            "fileVersion": "2.6.1.62414"
+          }
         }
       },
       "Microsoft.CodeAnalysis.VisualBasic.Workspaces/2.6.1": {
           "Microsoft.CodeAnalysis.Workspaces.Common": "2.6.1"
         },
         "runtime": {
-          "lib/netstandard1.3/Microsoft.CodeAnalysis.VisualBasic.Workspaces.dll": {}
+          "lib/netstandard1.3/Microsoft.CodeAnalysis.VisualBasic.Workspaces.dll": {
+            "assemblyVersion": "2.6.0.0",
+            "fileVersion": "2.6.1.62414"
+          }
         }
       },
       "Microsoft.CodeAnalysis.Workspaces.Common/2.6.1": {
           "System.Threading.Tasks.Parallel": "4.3.0"
         },
         "runtime": {
-          "lib/netstandard1.3/Microsoft.CodeAnalysis.Workspaces.dll": {}
+          "lib/netstandard1.3/Microsoft.CodeAnalysis.Workspaces.dll": {
+            "assemblyVersion": "2.6.0.0",
+            "fileVersion": "2.6.1.62414"
+          }
         }
       },
       "Microsoft.CSharp/4.0.1": {
           "System.Runtime.InteropServices.RuntimeInformation": "4.0.0"
         },
         "runtime": {
-          "lib/netstandard1.3/Microsoft.DotNet.PlatformAbstractions.dll": {}
+          "lib/netstandard1.3/Microsoft.DotNet.PlatformAbstractions.dll": {
+            "assemblyVersion": "2.0.4.0",
+            "fileVersion": "2.0.4.0"
+          }
         }
       },
       "Microsoft.Extensions.DependencyModel/2.0.4": {
           "System.Linq": "4.3.0"
         },
         "runtime": {
-          "lib/netstandard1.6/Microsoft.Extensions.DependencyModel.dll": {}
+          "lib/netstandard1.6/Microsoft.Extensions.DependencyModel.dll": {
+            "assemblyVersion": "2.0.4.0",
+            "fileVersion": "2.0.4.0"
+          }
         }
       },
       "Microsoft.NETCore.Targets/1.1.0": {},
           "System.Xml.XDocument": "4.3.0"
         },
         "runtime": {
-          "lib/netstandard1.0/Newtonsoft.Json.dll": {}
+          "lib/netstandard1.0/Newtonsoft.Json.dll": {
+            "assemblyVersion": "9.0.0.0",
+            "fileVersion": "9.0.1.19813"
+          }
         }
       },
       "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
           "System.Runtime": "4.3.0"
         },
         "runtime": {
-          "lib/netstandard1.0/System.Composition.AttributedModel.dll": {}
+          "lib/netstandard1.0/System.Composition.AttributedModel.dll": {
+            "assemblyVersion": "1.0.31.0",
+            "fileVersion": "4.6.24705.1"
+          }
         }
       },
       "System.Composition.Convention/1.0.31": {
           "System.Threading": "4.3.0"
         },
         "runtime": {
-          "lib/netstandard1.0/System.Composition.Convention.dll": {}
+          "lib/netstandard1.0/System.Composition.Convention.dll": {
+            "assemblyVersion": "1.0.31.0",
+            "fileVersion": "4.6.24705.1"
+          }
         }
       },
       "System.Composition.Hosting/1.0.31": {
           "System.Threading": "4.3.0"
         },
         "runtime": {
-          "lib/netstandard1.0/System.Composition.Hosting.dll": {}
+          "lib/netstandard1.0/System.Composition.Hosting.dll": {
+            "assemblyVersion": "1.0.31.0",
+            "fileVersion": "4.6.24705.1"
+          }
         }
       },
       "System.Composition.Runtime/1.0.31": {
           "System.Runtime": "4.3.0"
         },
         "runtime": {
-          "lib/netstandard1.0/System.Composition.Runtime.dll": {}
+          "lib/netstandard1.0/System.Composition.Runtime.dll": {
+            "assemblyVersion": "1.0.31.0",
+            "fileVersion": "4.6.24705.1"
+          }
         }
       },
       "System.Composition.TypedParts/1.0.31": {
           "System.Runtime.Extensions": "4.3.0"
         },
         "runtime": {
-          "lib/netstandard1.0/System.Composition.TypedParts.dll": {}
+          "lib/netstandard1.0/System.Composition.TypedParts.dll": {
+            "assemblyVersion": "1.0.31.0",
+            "fileVersion": "4.6.24705.1"
+          }
         }
       },
       "System.Console/4.3.0": {
         "runtimeTargets": {
           "runtimes/unix/lib/netstandard1.3/System.Text.Encoding.CodePages.dll": {
             "rid": "unix",
-            "assetType": "runtime"
+            "assetType": "runtime",
+            "assemblyVersion": "4.0.2.0",
+            "fileVersion": "4.6.24705.1"
           },
           "runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll": {
             "rid": "win",
-            "assetType": "runtime"
+            "assetType": "runtime",
+            "assemblyVersion": "4.0.2.0",
+            "fileVersion": "4.6.24705.1"
           }
         }
       },
     }
   },
   "libraries": {
-    "Checker_ABI/1.0.0": {
+    "ABIChecker/1.0.0": {
       "type": "project",
       "serviceable": false,
       "sha512": ""
diff --git a/tools/bin/ABIChecker/ABIChecker.dll b/tools/bin/ABIChecker/ABIChecker.dll
new file mode 100644 (file)
index 0000000..5e33f8a
Binary files /dev/null and b/tools/bin/ABIChecker/ABIChecker.dll differ
diff --git a/tools/bin/ABIChecker/ABIChecker.pdb b/tools/bin/ABIChecker/ABIChecker.pdb
new file mode 100644 (file)
index 0000000..8982721
Binary files /dev/null and b/tools/bin/ABIChecker/ABIChecker.pdb differ
old mode 100755 (executable)
new mode 100644 (file)
similarity index 100%
rename from tools/ABIChecker/Newtonsoft.Json.dll
rename to tools/bin/ABIChecker/Newtonsoft.Json.dll
similarity index 70%
rename from tools/GenDummy/GenDummy.deps.json
rename to tools/bin/GenDummy.Tasks/GenDummy.Tasks.deps.json
index 9c1100e..132abfe 100644 (file)
@@ -1,48 +1,90 @@
 {
   "runtimeTarget": {
-    "name": ".NETCoreApp,Version=v2.0",
-    "signature": "3b44e5b0ec312efc226f5ae465c016bbc789a96c"
+    "name": ".NETStandard,Version=v2.0/",
+    "signature": "7236924ea528998607ed53999323a2e9686e3636"
   },
   "compilationOptions": {},
   "targets": {
-    ".NETCoreApp,Version=v2.0": {
-      "GenDummy/1.0.0": {
+    ".NETStandard,Version=v2.0": {},
+    ".NETStandard,Version=v2.0/": {
+      "GenDummy.Tasks/1.0.0": {
+        "dependencies": {
+          "GenDummy": "1.0.0",
+          "Microsoft.Build.Framework": "15.3.409",
+          "Microsoft.Build.Utilities.Core": "15.3.409",
+          "NETStandard.Library": "2.0.3"
+        },
+        "runtime": {
+          "GenDummy.Tasks.dll": {}
+        }
+      },
+      "Microsoft.Build.Framework/15.3.409": {
         "dependencies": {
-          "CommandLineParser": "2.2.1",
-          "Microsoft.CodeAnalysis": "2.3.2"
+          "System.Collections": "4.3.0",
+          "System.Diagnostics.Debug": "4.3.0",
+          "System.Globalization": "4.3.0",
+          "System.Linq": "4.3.0",
+          "System.Resources.ResourceManager": "4.3.0",
+          "System.Runtime": "4.3.0",
+          "System.Runtime.InteropServices": "4.3.0",
+          "System.Threading": "4.3.0",
+          "System.Threading.Thread": "4.3.0"
         },
         "runtime": {
-          "GenDummy.dll": {}
+          "lib/netstandard1.3/Microsoft.Build.Framework.dll": {
+            "assemblyVersion": "15.1.0.0",
+            "fileVersion": "15.3.409.57025"
+          }
         }
       },
-      "CommandLineParser/2.2.1": {
+      "Microsoft.Build.Utilities.Core/15.3.409": {
         "dependencies": {
+          "Microsoft.Build.Framework": "15.3.409",
+          "Microsoft.Win32.Primitives": "4.0.1",
+          "System.AppContext": "4.3.0",
           "System.Collections": "4.3.0",
+          "System.Collections.Concurrent": "4.3.0",
+          "System.Collections.NonGeneric": "4.0.1",
           "System.Console": "4.3.0",
           "System.Diagnostics.Debug": "4.3.0",
+          "System.Diagnostics.Process": "4.1.0",
+          "System.Diagnostics.TraceSource": "4.0.0",
           "System.Globalization": "4.3.0",
           "System.IO": "4.3.0",
+          "System.IO.FileSystem": "4.3.0",
+          "System.IO.FileSystem.Primitives": "4.3.0",
           "System.Linq": "4.3.0",
-          "System.Linq.Expressions": "4.3.0",
+          "System.ObjectModel": "4.3.0",
           "System.Reflection": "4.3.0",
-          "System.Reflection.Extensions": "4.3.0",
           "System.Reflection.TypeExtensions": "4.3.0",
+          "System.Resources.Reader": "4.0.0",
           "System.Resources.ResourceManager": "4.3.0",
           "System.Runtime": "4.3.0",
-          "System.Runtime.Extensions": "4.3.0"
+          "System.Runtime.Extensions": "4.3.0",
+          "System.Runtime.Handles": "4.3.0",
+          "System.Runtime.InteropServices": "4.3.0",
+          "System.Runtime.InteropServices.RuntimeInformation": "4.0.0",
+          "System.Runtime.Serialization.Primitives": "4.1.1",
+          "System.Runtime.Serialization.Xml": "4.1.1",
+          "System.Text.Encoding": "4.3.0",
+          "System.Text.Encoding.CodePages": "4.3.0",
+          "System.Text.RegularExpressions": "4.3.0",
+          "System.Threading": "4.3.0",
+          "System.Threading.Tasks": "4.3.0",
+          "System.Threading.Thread": "4.3.0",
+          "System.Threading.Timer": "4.0.1",
+          "System.Xml.ReaderWriter": "4.3.0",
+          "System.Xml.XmlDocument": "4.3.0"
         },
         "runtime": {
-          "lib/netstandard1.5/CommandLine.dll": {}
-        }
-      },
-      "Microsoft.CodeAnalysis/2.3.2": {
-        "dependencies": {
-          "Microsoft.CodeAnalysis.CSharp.Workspaces": "2.3.2",
-          "Microsoft.CodeAnalysis.VisualBasic.Workspaces": "2.3.2"
+          "lib/netstandard1.3/Microsoft.Build.Utilities.Core.dll": {
+            "assemblyVersion": "15.1.0.0",
+            "fileVersion": "15.3.409.57025"
+          }
         }
       },
       "Microsoft.CodeAnalysis.Analyzers/1.1.0": {},
-      "Microsoft.CodeAnalysis.Common/2.3.2": {
+      "Microsoft.CodeAnalysis.Common/2.1.0": {
         "dependencies": {
           "Microsoft.CodeAnalysis.Analyzers": "1.1.0",
           "System.AppContext": "4.3.0",
           "System.Xml.XmlDocument": "4.3.0"
         },
         "runtime": {
-          "lib/netstandard1.3/Microsoft.CodeAnalysis.dll": {}
-        }
-      },
-      "Microsoft.CodeAnalysis.CSharp/2.3.2": {
-        "dependencies": {
-          "Microsoft.CodeAnalysis.Common": "2.3.2"
-        },
-        "runtime": {
-          "lib/netstandard1.3/Microsoft.CodeAnalysis.CSharp.dll": {}
-        }
-      },
-      "Microsoft.CodeAnalysis.CSharp.Workspaces/2.3.2": {
-        "dependencies": {
-          "Microsoft.CodeAnalysis.CSharp": "2.3.2",
-          "Microsoft.CodeAnalysis.Workspaces.Common": "2.3.2"
-        },
-        "runtime": {
-          "lib/netstandard1.3/Microsoft.CodeAnalysis.CSharp.Workspaces.dll": {}
+          "lib/netstandard1.3/Microsoft.CodeAnalysis.dll": {
+            "assemblyVersion": "2.1.0.0",
+            "fileVersion": "2.1.0.61520"
+          }
         }
       },
-      "Microsoft.CodeAnalysis.VisualBasic/2.3.2": {
+      "Microsoft.CodeAnalysis.CSharp/2.1.0": {
         "dependencies": {
-          "Microsoft.CodeAnalysis.Common": "2.3.2"
+          "Microsoft.CodeAnalysis.Common": "2.1.0"
         },
         "runtime": {
-          "lib/netstandard1.3/Microsoft.CodeAnalysis.VisualBasic.dll": {}
+          "lib/netstandard1.3/Microsoft.CodeAnalysis.CSharp.dll": {
+            "assemblyVersion": "2.1.0.0",
+            "fileVersion": "2.1.0.61520"
+          }
         }
       },
-      "Microsoft.CodeAnalysis.VisualBasic.Workspaces/2.3.2": {
+      "Microsoft.CodeAnalysis.CSharp.Workspaces/2.1.0": {
         "dependencies": {
-          "Microsoft.CodeAnalysis.VisualBasic": "2.3.2",
-          "Microsoft.CodeAnalysis.Workspaces.Common": "2.3.2"
+          "Microsoft.CodeAnalysis.CSharp": "2.1.0",
+          "Microsoft.CodeAnalysis.Workspaces.Common": "2.1.0"
         },
         "runtime": {
-          "lib/netstandard1.3/Microsoft.CodeAnalysis.VisualBasic.Workspaces.dll": {}
+          "lib/netstandard1.3/Microsoft.CodeAnalysis.CSharp.Workspaces.dll": {
+            "assemblyVersion": "2.1.0.0",
+            "fileVersion": "2.1.0.61520"
+          }
         }
       },
-      "Microsoft.CodeAnalysis.Workspaces.Common/2.3.2": {
+      "Microsoft.CodeAnalysis.Workspaces.Common/2.1.0": {
         "dependencies": {
-          "Microsoft.CodeAnalysis.Common": "2.3.2",
-          "System.Composition": "1.0.31",
+          "Microsoft.CodeAnalysis.Common": "2.1.0",
+          "Microsoft.Composition": "1.0.27",
           "System.Diagnostics.Contracts": "4.3.0",
           "System.Linq.Parallel": "4.3.0",
           "System.ObjectModel": "4.3.0",
           "System.Threading.Tasks.Parallel": "4.3.0"
         },
         "runtime": {
-          "lib/netstandard1.3/Microsoft.CodeAnalysis.Workspaces.dll": {}
+          "lib/netstandard1.3/Microsoft.CodeAnalysis.Workspaces.dll": {
+            "assemblyVersion": "2.1.0.0",
+            "fileVersion": "2.1.0.61520"
+          }
         }
       },
-      "Microsoft.NETCore.Targets/1.1.0": {},
-      "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
-        "runtimeTargets": {
-          "runtime/debian.8-x64/native/_._": {
-            "rid": "debian.8-x64",
-            "assetType": "native"
+      "Microsoft.Composition/1.0.27": {
+        "runtime": {
+          "lib/portable-net45+win8+wp8+wpa81/System.Composition.AttributedModel.dll": {
+            "assemblyVersion": "1.0.27.0",
+            "fileVersion": "1.0.27.0"
+          },
+          "lib/portable-net45+win8+wp8+wpa81/System.Composition.Convention.dll": {
+            "assemblyVersion": "1.0.27.0",
+            "fileVersion": "1.0.27.0"
+          },
+          "lib/portable-net45+win8+wp8+wpa81/System.Composition.Hosting.dll": {
+            "assemblyVersion": "1.0.27.0",
+            "fileVersion": "1.0.27.0"
+          },
+          "lib/portable-net45+win8+wp8+wpa81/System.Composition.Runtime.dll": {
+            "assemblyVersion": "1.0.27.0",
+            "fileVersion": "1.0.27.0"
+          },
+          "lib/portable-net45+win8+wp8+wpa81/System.Composition.TypedParts.dll": {
+            "assemblyVersion": "1.0.27.0",
+            "fileVersion": "1.0.27.0"
           }
         }
       },
-      "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
-        "runtimeTargets": {
-          "runtime/fedora.23-x64/native/_._": {
-            "rid": "fedora.23-x64",
-            "assetType": "native"
-          }
+      "Microsoft.NETCore.Platforms/1.1.0": {},
+      "Microsoft.NETCore.Targets/1.1.0": {},
+      "Microsoft.Win32.Primitives/4.0.1": {
+        "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
+          "Microsoft.NETCore.Targets": "1.1.0",
+          "System.Runtime": "4.3.0"
         }
       },
-      "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
-        "runtimeTargets": {
-          "runtime/fedora.24-x64/native/_._": {
-            "rid": "fedora.24-x64",
-            "assetType": "native"
-          }
+      "Microsoft.Win32.Registry/4.0.0": {
+        "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
+          "System.Collections": "4.3.0",
+          "System.Globalization": "4.3.0",
+          "System.Resources.ResourceManager": "4.3.0",
+          "System.Runtime": "4.3.0",
+          "System.Runtime.Extensions": "4.3.0",
+          "System.Runtime.Handles": "4.3.0",
+          "System.Runtime.InteropServices": "4.3.0"
+        }
+      },
+      "NETStandard.Library/2.0.3": {
+        "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0"
         }
       },
+      "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
+      "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
+      "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
       "runtime.native.System/4.3.0": {
         "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
           "Microsoft.NETCore.Targets": "1.1.0"
         }
       },
       "runtime.native.System.IO.Compression/4.3.0": {
         "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
           "Microsoft.NETCore.Targets": "1.1.0"
         }
       },
       "runtime.native.System.Net.Http/4.3.0": {
         "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
           "Microsoft.NETCore.Targets": "1.1.0"
         }
       },
           "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
         }
       },
-      "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
-        "runtimeTargets": {
-          "runtime/opensuse.13.2-x64/native/_._": {
-            "rid": "opensuse.13.2-x64",
-            "assetType": "native"
-          }
-        }
-      },
-      "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
-        "runtimeTargets": {
-          "runtime/opensuse.42.1-x64/native/_._": {
-            "rid": "opensuse.42.1-x64",
-            "assetType": "native"
-          }
-        }
-      },
-      "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": {
-        "runtimeTargets": {
-          "runtime/osx.10.10-x64/native/_._": {
-            "rid": "osx.10.10-x64",
-            "assetType": "native"
-          }
-        }
-      },
-      "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
-        "runtimeTargets": {
-          "runtime/osx.10.10-x64/native/_._": {
-            "rid": "osx.10.10-x64",
-            "assetType": "native"
-          }
-        }
-      },
-      "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
-        "runtimeTargets": {
-          "runtime/rhel.7-x64/native/_._": {
-            "rid": "rhel.7-x64",
-            "assetType": "native"
-          }
-        }
-      },
-      "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
-        "runtimeTargets": {
-          "runtime/ubuntu.14.04-x64/native/_._": {
-            "rid": "ubuntu.14.04-x64",
-            "assetType": "native"
-          }
-        }
-      },
-      "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
-        "runtimeTargets": {
-          "runtime/ubuntu.16.04-x64/native/_._": {
-            "rid": "ubuntu.16.04-x64",
-            "assetType": "native"
-          }
-        }
-      },
-      "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
-        "runtimeTargets": {
-          "runtime/ubuntu.16.10-x64/native/_._": {
-            "rid": "ubuntu.16.10-x64",
-            "assetType": "native"
-          }
-        }
-      },
+      "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
+      "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
+      "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": {},
+      "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
+      "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
+      "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
+      "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
+      "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {},
       "System.AppContext/4.3.0": {
         "dependencies": {
           "System.Runtime": "4.3.0"
+        },
+        "runtime": {
+          "lib/netstandard1.6/System.AppContext.dll": {
+            "assemblyVersion": "4.1.1.0",
+            "fileVersion": "4.6.24705.1"
+          }
         }
       },
       "System.Buffers/4.3.0": {
           "System.Resources.ResourceManager": "4.3.0",
           "System.Runtime": "4.3.0",
           "System.Threading": "4.3.0"
+        },
+        "runtime": {
+          "lib/netstandard1.1/System.Buffers.dll": {
+            "assemblyVersion": "4.0.1.0",
+            "fileVersion": "4.6.24705.1"
+          }
         }
       },
       "System.Collections/4.3.0": {
         "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
           "Microsoft.NETCore.Targets": "1.1.0",
           "System.Runtime": "4.3.0"
         }
           "System.Runtime.Extensions": "4.3.0",
           "System.Threading": "4.3.0",
           "System.Threading.Tasks": "4.3.0"
-        }
-      },
-      "System.Collections.Immutable/1.3.1": {
-        "dependencies": {
-          "System.Collections": "4.3.0",
-          "System.Diagnostics.Debug": "4.3.0",
-          "System.Globalization": "4.3.0",
-          "System.Linq": "4.3.0",
-          "System.Resources.ResourceManager": "4.3.0",
-          "System.Runtime": "4.3.0",
-          "System.Runtime.Extensions": "4.3.0",
-          "System.Threading": "4.3.0"
-        }
-      },
-      "System.Composition/1.0.31": {
-        "dependencies": {
-          "System.Composition.AttributedModel": "1.0.31",
-          "System.Composition.Convention": "1.0.31",
-          "System.Composition.Hosting": "1.0.31",
-          "System.Composition.Runtime": "1.0.31",
-          "System.Composition.TypedParts": "1.0.31"
-        }
-      },
-      "System.Composition.AttributedModel/1.0.31": {
-        "dependencies": {
-          "System.Reflection": "4.3.0",
-          "System.Runtime": "4.3.0"
         },
         "runtime": {
-          "lib/netstandard1.0/System.Composition.AttributedModel.dll": {}
+          "lib/netstandard1.3/System.Collections.Concurrent.dll": {
+            "assemblyVersion": "4.0.13.0",
+            "fileVersion": "4.6.24705.1"
+          }
         }
       },
-      "System.Composition.Convention/1.0.31": {
+      "System.Collections.Immutable/1.3.1": {
         "dependencies": {
           "System.Collections": "4.3.0",
-          "System.Composition.AttributedModel": "1.0.31",
           "System.Diagnostics.Debug": "4.3.0",
-          "System.Diagnostics.Tools": "4.3.0",
           "System.Globalization": "4.3.0",
           "System.Linq": "4.3.0",
-          "System.Linq.Expressions": "4.3.0",
-          "System.Reflection": "4.3.0",
-          "System.Reflection.Extensions": "4.3.0",
           "System.Resources.ResourceManager": "4.3.0",
           "System.Runtime": "4.3.0",
+          "System.Runtime.Extensions": "4.3.0",
           "System.Threading": "4.3.0"
         },
         "runtime": {
-          "lib/netstandard1.0/System.Composition.Convention.dll": {}
+          "lib/netstandard1.0/System.Collections.Immutable.dll": {
+            "assemblyVersion": "1.2.1.0",
+            "fileVersion": "4.6.24816.1"
+          }
         }
       },
-      "System.Composition.Hosting/1.0.31": {
+      "System.Collections.NonGeneric/4.0.1": {
         "dependencies": {
-          "System.Collections": "4.3.0",
-          "System.Composition.Runtime": "1.0.31",
           "System.Diagnostics.Debug": "4.3.0",
-          "System.Diagnostics.Tools": "4.3.0",
           "System.Globalization": "4.3.0",
-          "System.Linq": "4.3.0",
-          "System.Linq.Expressions": "4.3.0",
-          "System.ObjectModel": "4.3.0",
-          "System.Reflection": "4.3.0",
-          "System.Reflection.Extensions": "4.3.0",
           "System.Resources.ResourceManager": "4.3.0",
           "System.Runtime": "4.3.0",
+          "System.Runtime.Extensions": "4.3.0",
           "System.Threading": "4.3.0"
         },
         "runtime": {
-          "lib/netstandard1.0/System.Composition.Hosting.dll": {}
-        }
-      },
-      "System.Composition.Runtime/1.0.31": {
-        "dependencies": {
-          "System.Collections": "4.3.0",
-          "System.Diagnostics.Debug": "4.3.0",
-          "System.Diagnostics.Tools": "4.3.0",
-          "System.Globalization": "4.3.0",
-          "System.Linq": "4.3.0",
-          "System.Reflection": "4.3.0",
-          "System.Resources.ResourceManager": "4.3.0",
-          "System.Runtime": "4.3.0"
-        },
-        "runtime": {
-          "lib/netstandard1.0/System.Composition.Runtime.dll": {}
-        }
-      },
-      "System.Composition.TypedParts/1.0.31": {
-        "dependencies": {
-          "System.Collections": "4.3.0",
-          "System.Composition.AttributedModel": "1.0.31",
-          "System.Composition.Hosting": "1.0.31",
-          "System.Composition.Runtime": "1.0.31",
-          "System.Diagnostics.Debug": "4.3.0",
-          "System.Diagnostics.Tools": "4.3.0",
-          "System.Globalization": "4.3.0",
-          "System.Linq": "4.3.0",
-          "System.Linq.Expressions": "4.3.0",
-          "System.Reflection": "4.3.0",
-          "System.Reflection.Extensions": "4.3.0",
-          "System.Resources.ResourceManager": "4.3.0",
-          "System.Runtime": "4.3.0",
-          "System.Runtime.Extensions": "4.3.0"
-        },
-        "runtime": {
-          "lib/netstandard1.0/System.Composition.TypedParts.dll": {}
+          "lib/netstandard1.3/System.Collections.NonGeneric.dll": {
+            "assemblyVersion": "4.0.1.0",
+            "fileVersion": "1.0.24212.1"
+          }
         }
       },
       "System.Console/4.3.0": {
         "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
           "Microsoft.NETCore.Targets": "1.1.0",
           "System.IO": "4.3.0",
           "System.Runtime": "4.3.0",
       "System.Diagnostics.Contracts/4.3.0": {
         "dependencies": {
           "System.Runtime": "4.3.0"
+        },
+        "runtime": {
+          "lib/netstandard1.0/System.Diagnostics.Contracts.dll": {
+            "assemblyVersion": "4.0.2.0",
+            "fileVersion": "4.6.24705.1"
+          }
         }
       },
       "System.Diagnostics.Debug/4.3.0": {
         "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
           "Microsoft.NETCore.Targets": "1.1.0",
           "System.Runtime": "4.3.0"
         }
       },
       "System.Diagnostics.FileVersionInfo/4.3.0": {
         "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
           "System.Globalization": "4.3.0",
           "System.IO": "4.3.0",
           "System.IO.FileSystem": "4.3.0",
           "System.Runtime": "4.3.0",
           "System.Runtime.Extensions": "4.3.0",
           "System.Runtime.InteropServices": "4.3.0"
-        },
-        "runtimeTargets": {
-          "runtime/unix/lib/_._": {
-            "rid": "unix",
-            "assetType": "runtime"
-          },
-          "runtime/win/lib/_._": {
-            "rid": "win",
-            "assetType": "runtime"
-          }
+        }
+      },
+      "System.Diagnostics.Process/4.1.0": {
+        "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
+          "Microsoft.Win32.Primitives": "4.0.1",
+          "Microsoft.Win32.Registry": "4.0.0",
+          "System.Collections": "4.3.0",
+          "System.Diagnostics.Debug": "4.3.0",
+          "System.Globalization": "4.3.0",
+          "System.IO": "4.3.0",
+          "System.IO.FileSystem": "4.3.0",
+          "System.IO.FileSystem.Primitives": "4.3.0",
+          "System.Resources.ResourceManager": "4.3.0",
+          "System.Runtime": "4.3.0",
+          "System.Runtime.Extensions": "4.3.0",
+          "System.Runtime.Handles": "4.3.0",
+          "System.Runtime.InteropServices": "4.3.0",
+          "System.Text.Encoding": "4.3.0",
+          "System.Text.Encoding.Extensions": "4.3.0",
+          "System.Threading": "4.3.0",
+          "System.Threading.Tasks": "4.3.0",
+          "System.Threading.Thread": "4.3.0",
+          "System.Threading.ThreadPool": "4.0.10",
+          "runtime.native.System": "4.3.0"
         }
       },
       "System.Diagnostics.StackTrace/4.3.0": {
           "System.Reflection": "4.3.0",
           "System.Reflection.Metadata": "1.4.2",
           "System.Runtime": "4.3.0"
+        },
+        "runtime": {
+          "lib/netstandard1.3/System.Diagnostics.StackTrace.dll": {
+            "assemblyVersion": "4.0.3.0",
+            "fileVersion": "4.6.24705.1"
+          }
         }
       },
       "System.Diagnostics.Tools/4.3.0": {
         "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
           "Microsoft.NETCore.Targets": "1.1.0",
           "System.Runtime": "4.3.0"
         }
       },
+      "System.Diagnostics.TraceSource/4.0.0": {
+        "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
+          "System.Collections": "4.3.0",
+          "System.Diagnostics.Debug": "4.3.0",
+          "System.Globalization": "4.3.0",
+          "System.Resources.ResourceManager": "4.3.0",
+          "System.Runtime": "4.3.0",
+          "System.Runtime.Extensions": "4.3.0",
+          "System.Threading": "4.3.0",
+          "runtime.native.System": "4.3.0"
+        }
+      },
       "System.Diagnostics.Tracing/4.3.0": {
         "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
           "Microsoft.NETCore.Targets": "1.1.0",
           "System.Runtime": "4.3.0"
         }
           "System.Runtime": "4.3.0",
           "System.Runtime.Extensions": "4.3.0",
           "System.Threading": "4.3.0"
+        },
+        "runtime": {
+          "lib/netstandard1.3/System.Dynamic.Runtime.dll": {
+            "assemblyVersion": "4.0.12.0",
+            "fileVersion": "4.6.24705.1"
+          }
         }
       },
       "System.Globalization/4.3.0": {
         "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
           "Microsoft.NETCore.Targets": "1.1.0",
           "System.Runtime": "4.3.0"
         }
       },
       "System.Globalization.Calendars/4.3.0": {
         "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
           "Microsoft.NETCore.Targets": "1.1.0",
           "System.Globalization": "4.3.0",
           "System.Runtime": "4.3.0"
       },
       "System.IO/4.3.0": {
         "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
           "Microsoft.NETCore.Targets": "1.1.0",
           "System.Runtime": "4.3.0",
           "System.Text.Encoding": "4.3.0",
       },
       "System.IO.Compression/4.3.0": {
         "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
           "System.Buffers": "4.3.0",
           "System.Collections": "4.3.0",
           "System.Diagnostics.Debug": "4.3.0",
           "System.Threading.Tasks": "4.3.0",
           "runtime.native.System": "4.3.0",
           "runtime.native.System.IO.Compression": "4.3.0"
-        },
-        "runtimeTargets": {
-          "runtime/unix/lib/_._": {
-            "rid": "unix",
-            "assetType": "runtime"
-          },
-          "runtime/win/lib/_._": {
-            "rid": "win",
-            "assetType": "runtime"
-          }
         }
       },
       "System.IO.FileSystem/4.3.0": {
         "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
           "Microsoft.NETCore.Targets": "1.1.0",
           "System.IO": "4.3.0",
           "System.IO.FileSystem.Primitives": "4.3.0",
       "System.IO.FileSystem.Primitives/4.3.0": {
         "dependencies": {
           "System.Runtime": "4.3.0"
+        },
+        "runtime": {
+          "lib/netstandard1.3/System.IO.FileSystem.Primitives.dll": {
+            "assemblyVersion": "4.0.2.0",
+            "fileVersion": "4.6.24705.1"
+          }
         }
       },
       "System.Linq/4.3.0": {
           "System.Resources.ResourceManager": "4.3.0",
           "System.Runtime": "4.3.0",
           "System.Runtime.Extensions": "4.3.0"
+        },
+        "runtime": {
+          "lib/netstandard1.6/System.Linq.dll": {
+            "assemblyVersion": "4.1.1.0",
+            "fileVersion": "4.6.24705.1"
+          }
         }
       },
       "System.Linq.Expressions/4.3.0": {
           "System.Runtime": "4.3.0",
           "System.Runtime.Extensions": "4.3.0",
           "System.Threading": "4.3.0"
+        },
+        "runtime": {
+          "lib/netstandard1.6/System.Linq.Expressions.dll": {
+            "assemblyVersion": "4.1.1.0",
+            "fileVersion": "4.6.24705.1"
+          }
         }
       },
       "System.Linq.Parallel/4.3.0": {
           "System.Runtime.Extensions": "4.3.0",
           "System.Threading": "4.3.0",
           "System.Threading.Tasks": "4.3.0"
+        },
+        "runtime": {
+          "lib/netstandard1.3/System.Linq.Parallel.dll": {
+            "assemblyVersion": "4.0.2.0",
+            "fileVersion": "4.6.24705.1"
+          }
         }
       },
       "System.ObjectModel/4.3.0": {
           "System.Resources.ResourceManager": "4.3.0",
           "System.Runtime": "4.3.0",
           "System.Threading": "4.3.0"
+        },
+        "runtime": {
+          "lib/netstandard1.3/System.ObjectModel.dll": {
+            "assemblyVersion": "4.0.13.0",
+            "fileVersion": "4.6.24705.1"
+          }
+        }
+      },
+      "System.Private.DataContractSerialization/4.1.1": {
+        "dependencies": {
+          "System.Collections": "4.3.0",
+          "System.Collections.Concurrent": "4.3.0",
+          "System.Diagnostics.Debug": "4.3.0",
+          "System.Globalization": "4.3.0",
+          "System.IO": "4.3.0",
+          "System.Linq": "4.3.0",
+          "System.Reflection": "4.3.0",
+          "System.Reflection.Emit.ILGeneration": "4.3.0",
+          "System.Reflection.Emit.Lightweight": "4.3.0",
+          "System.Reflection.Extensions": "4.3.0",
+          "System.Reflection.Primitives": "4.3.0",
+          "System.Reflection.TypeExtensions": "4.3.0",
+          "System.Resources.ResourceManager": "4.3.0",
+          "System.Runtime": "4.3.0",
+          "System.Runtime.Extensions": "4.3.0",
+          "System.Runtime.Serialization.Primitives": "4.1.1",
+          "System.Text.Encoding": "4.3.0",
+          "System.Text.Encoding.Extensions": "4.3.0",
+          "System.Text.RegularExpressions": "4.3.0",
+          "System.Threading": "4.3.0",
+          "System.Threading.Tasks": "4.3.0",
+          "System.Xml.ReaderWriter": "4.3.0",
+          "System.Xml.XmlDocument": "4.3.0",
+          "System.Xml.XmlSerializer": "4.0.11"
+        },
+        "runtime": {
+          "lib/netstandard1.3/System.Private.DataContractSerialization.dll": {
+            "assemblyVersion": "4.1.1.0",
+            "fileVersion": "1.0.24212.1"
+          }
         }
       },
       "System.Reflection/4.3.0": {
         "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
           "Microsoft.NETCore.Targets": "1.1.0",
           "System.IO": "4.3.0",
           "System.Reflection.Primitives": "4.3.0",
           "System.Reflection.Emit.ILGeneration": "4.3.0",
           "System.Reflection.Primitives": "4.3.0",
           "System.Runtime": "4.3.0"
+        },
+        "runtime": {
+          "lib/netstandard1.3/System.Reflection.Emit.dll": {
+            "assemblyVersion": "4.0.2.0",
+            "fileVersion": "4.6.24705.1"
+          }
         }
       },
       "System.Reflection.Emit.ILGeneration/4.3.0": {
           "System.Reflection": "4.3.0",
           "System.Reflection.Primitives": "4.3.0",
           "System.Runtime": "4.3.0"
+        },
+        "runtime": {
+          "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll": {
+            "assemblyVersion": "4.0.2.0",
+            "fileVersion": "4.6.24705.1"
+          }
         }
       },
       "System.Reflection.Emit.Lightweight/4.3.0": {
           "System.Reflection.Emit.ILGeneration": "4.3.0",
           "System.Reflection.Primitives": "4.3.0",
           "System.Runtime": "4.3.0"
+        },
+        "runtime": {
+          "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll": {
+            "assemblyVersion": "4.0.2.0",
+            "fileVersion": "4.6.24705.1"
+          }
         }
       },
       "System.Reflection.Extensions/4.3.0": {
         "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
           "Microsoft.NETCore.Targets": "1.1.0",
           "System.Reflection": "4.3.0",
           "System.Runtime": "4.3.0"
           "System.Text.Encoding": "4.3.0",
           "System.Text.Encoding.Extensions": "4.3.0",
           "System.Threading": "4.3.0"
+        },
+        "runtime": {
+          "lib/netstandard1.1/System.Reflection.Metadata.dll": {
+            "assemblyVersion": "1.4.1.0",
+            "fileVersion": "4.6.24816.1"
+          }
         }
       },
       "System.Reflection.Primitives/4.3.0": {
         "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
           "Microsoft.NETCore.Targets": "1.1.0",
           "System.Runtime": "4.3.0"
         }
         "dependencies": {
           "System.Reflection": "4.3.0",
           "System.Runtime": "4.3.0"
+        },
+        "runtime": {
+          "lib/netstandard1.5/System.Reflection.TypeExtensions.dll": {
+            "assemblyVersion": "4.1.1.0",
+            "fileVersion": "4.6.24705.1"
+          }
+        }
+      },
+      "System.Resources.Reader/4.0.0": {
+        "dependencies": {
+          "System.IO": "4.3.0",
+          "System.Resources.ResourceManager": "4.3.0",
+          "System.Runtime": "4.3.0",
+          "System.Text.Encoding": "4.3.0",
+          "System.Threading": "4.3.0"
+        },
+        "runtime": {
+          "lib/netstandard1.0/System.Resources.Reader.dll": {
+            "assemblyVersion": "4.0.0.0",
+            "fileVersion": "1.0.24212.1"
+          }
         }
       },
       "System.Resources.ResourceManager/4.3.0": {
         "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
           "Microsoft.NETCore.Targets": "1.1.0",
           "System.Globalization": "4.3.0",
           "System.Reflection": "4.3.0",
       },
       "System.Runtime/4.3.0": {
         "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
           "Microsoft.NETCore.Targets": "1.1.0"
         }
       },
       "System.Runtime.Extensions/4.3.0": {
         "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
           "Microsoft.NETCore.Targets": "1.1.0",
           "System.Runtime": "4.3.0"
         }
       },
       "System.Runtime.Handles/4.3.0": {
         "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
           "Microsoft.NETCore.Targets": "1.1.0",
           "System.Runtime": "4.3.0"
         }
       },
       "System.Runtime.InteropServices/4.3.0": {
         "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
           "Microsoft.NETCore.Targets": "1.1.0",
           "System.Reflection": "4.3.0",
           "System.Reflection.Primitives": "4.3.0",
           "System.Runtime.Handles": "4.3.0"
         }
       },
+      "System.Runtime.InteropServices.RuntimeInformation/4.0.0": {
+        "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
+          "System.Reflection": "4.3.0",
+          "System.Resources.ResourceManager": "4.3.0",
+          "System.Runtime": "4.3.0",
+          "System.Runtime.InteropServices": "4.3.0",
+          "System.Threading": "4.3.0",
+          "runtime.native.System": "4.3.0"
+        }
+      },
       "System.Runtime.Numerics/4.3.0": {
         "dependencies": {
           "System.Globalization": "4.3.0",
           "System.Resources.ResourceManager": "4.3.0",
           "System.Runtime": "4.3.0",
           "System.Runtime.Extensions": "4.3.0"
+        },
+        "runtime": {
+          "lib/netstandard1.3/System.Runtime.Numerics.dll": {
+            "assemblyVersion": "4.0.2.0",
+            "fileVersion": "4.6.24705.1"
+          }
+        }
+      },
+      "System.Runtime.Serialization.Primitives/4.1.1": {
+        "dependencies": {
+          "System.Resources.ResourceManager": "4.3.0",
+          "System.Runtime": "4.3.0"
+        },
+        "runtime": {
+          "lib/netstandard1.3/System.Runtime.Serialization.Primitives.dll": {
+            "assemblyVersion": "4.1.1.0",
+            "fileVersion": "1.0.24212.1"
+          }
+        }
+      },
+      "System.Runtime.Serialization.Xml/4.1.1": {
+        "dependencies": {
+          "System.IO": "4.3.0",
+          "System.Private.DataContractSerialization": "4.1.1",
+          "System.Runtime": "4.3.0",
+          "System.Runtime.Serialization.Primitives": "4.1.1",
+          "System.Text.Encoding": "4.3.0",
+          "System.Xml.ReaderWriter": "4.3.0"
+        },
+        "runtime": {
+          "lib/netstandard1.3/System.Runtime.Serialization.Xml.dll": {
+            "assemblyVersion": "4.1.1.0",
+            "fileVersion": "1.0.24212.1"
+          }
         }
       },
       "System.Security.Cryptography.Algorithms/4.3.0": {
         "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
           "System.Collections": "4.3.0",
           "System.IO": "4.3.0",
           "System.Resources.ResourceManager": "4.3.0",
           "System.Text.Encoding": "4.3.0",
           "runtime.native.System.Security.Cryptography.Apple": "4.3.0",
           "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
-        },
-        "runtimeTargets": {
-          "runtime/osx/lib/_._": {
-            "rid": "osx",
-            "assetType": "runtime"
-          },
-          "runtime/unix/lib/_._": {
-            "rid": "unix",
-            "assetType": "runtime"
-          },
-          "runtime/win/lib/_._": {
-            "rid": "win",
-            "assetType": "runtime"
-          }
         }
       },
       "System.Security.Cryptography.Cng/4.3.0": {
         "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
           "System.IO": "4.3.0",
           "System.Resources.ResourceManager": "4.3.0",
           "System.Runtime": "4.3.0",
           "System.Security.Cryptography.Encoding": "4.3.0",
           "System.Security.Cryptography.Primitives": "4.3.0",
           "System.Text.Encoding": "4.3.0"
-        },
-        "runtimeTargets": {
-          "runtime/unix/lib/_._": {
-            "rid": "unix",
-            "assetType": "runtime"
-          },
-          "runtime/win/lib/_._": {
-            "rid": "win",
-            "assetType": "runtime"
-          }
         }
       },
       "System.Security.Cryptography.Csp/4.3.0": {
         "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
           "System.IO": "4.3.0",
           "System.Reflection": "4.3.0",
           "System.Resources.ResourceManager": "4.3.0",
           "System.Security.Cryptography.Primitives": "4.3.0",
           "System.Text.Encoding": "4.3.0",
           "System.Threading": "4.3.0"
-        },
-        "runtimeTargets": {
-          "runtime/unix/lib/_._": {
-            "rid": "unix",
-            "assetType": "runtime"
-          },
-          "runtime/win/lib/_._": {
-            "rid": "win",
-            "assetType": "runtime"
-          }
         }
       },
       "System.Security.Cryptography.Encoding/4.3.0": {
         "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
           "System.Collections": "4.3.0",
           "System.Collections.Concurrent": "4.3.0",
           "System.Linq": "4.3.0",
           "System.Security.Cryptography.Primitives": "4.3.0",
           "System.Text.Encoding": "4.3.0",
           "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
-        },
-        "runtimeTargets": {
-          "runtime/unix/lib/_._": {
-            "rid": "unix",
-            "assetType": "runtime"
-          },
-          "runtime/win/lib/_._": {
-            "rid": "win",
-            "assetType": "runtime"
-          }
         }
       },
       "System.Security.Cryptography.OpenSsl/4.3.0": {
           "System.Text.Encoding": "4.3.0",
           "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
         },
-        "runtimeTargets": {
-          "runtime/unix/lib/_._": {
-            "rid": "unix",
-            "assetType": "runtime"
+        "runtime": {
+          "lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll": {
+            "assemblyVersion": "4.0.0.0",
+            "fileVersion": "1.0.24212.1"
           }
         }
       },
           "System.Runtime": "4.3.0",
           "System.Threading": "4.3.0",
           "System.Threading.Tasks": "4.3.0"
+        },
+        "runtime": {
+          "lib/netstandard1.3/System.Security.Cryptography.Primitives.dll": {
+            "assemblyVersion": "4.0.1.0",
+            "fileVersion": "4.6.24705.1"
+          }
         }
       },
       "System.Security.Cryptography.X509Certificates/4.3.0": {
         "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
           "System.Collections": "4.3.0",
           "System.Diagnostics.Debug": "4.3.0",
           "System.Globalization": "4.3.0",
           "runtime.native.System": "4.3.0",
           "runtime.native.System.Net.Http": "4.3.0",
           "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
-        },
-        "runtimeTargets": {
-          "runtime/unix/lib/_._": {
-            "rid": "unix",
-            "assetType": "runtime"
-          },
-          "runtime/win/lib/_._": {
-            "rid": "win",
-            "assetType": "runtime"
-          }
         }
       },
       "System.Text.Encoding/4.3.0": {
         "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
           "Microsoft.NETCore.Targets": "1.1.0",
           "System.Runtime": "4.3.0"
         }
       },
       "System.Text.Encoding.CodePages/4.3.0": {
         "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
           "System.Collections": "4.3.0",
           "System.Globalization": "4.3.0",
           "System.IO": "4.3.0",
           "System.Runtime.InteropServices": "4.3.0",
           "System.Text.Encoding": "4.3.0",
           "System.Threading": "4.3.0"
-        },
-        "runtimeTargets": {
-          "runtimes/unix/lib/netstandard1.3/System.Text.Encoding.CodePages.dll": {
-            "rid": "unix",
-            "assetType": "runtime"
-          },
-          "runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll": {
-            "rid": "win",
-            "assetType": "runtime"
-          }
         }
       },
       "System.Text.Encoding.Extensions/4.3.0": {
         "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
           "Microsoft.NETCore.Targets": "1.1.0",
           "System.Runtime": "4.3.0",
           "System.Text.Encoding": "4.3.0"
       },
       "System.Text.RegularExpressions/4.3.0": {
         "dependencies": {
-          "System.Runtime": "4.3.0"
+          "System.Collections": "4.3.0",
+          "System.Globalization": "4.3.0",
+          "System.Resources.ResourceManager": "4.3.0",
+          "System.Runtime": "4.3.0",
+          "System.Runtime.Extensions": "4.3.0",
+          "System.Threading": "4.3.0"
+        },
+        "runtime": {
+          "lib/netstandard1.6/System.Text.RegularExpressions.dll": {
+            "assemblyVersion": "4.1.1.0",
+            "fileVersion": "4.6.24705.1"
+          }
         }
       },
       "System.Threading/4.3.0": {
         "dependencies": {
           "System.Runtime": "4.3.0",
           "System.Threading.Tasks": "4.3.0"
+        },
+        "runtime": {
+          "lib/netstandard1.3/System.Threading.dll": {
+            "assemblyVersion": "4.0.12.0",
+            "fileVersion": "4.6.24705.1"
+          }
         }
       },
       "System.Threading.Tasks/4.3.0": {
         "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
           "Microsoft.NETCore.Targets": "1.1.0",
           "System.Runtime": "4.3.0"
         }
           "System.Collections": "4.3.0",
           "System.Runtime": "4.3.0",
           "System.Threading.Tasks": "4.3.0"
+        },
+        "runtime": {
+          "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll": {
+            "assemblyVersion": "4.1.0.0",
+            "fileVersion": "4.6.24705.1"
+          }
         }
       },
       "System.Threading.Tasks.Parallel/4.3.0": {
           "System.Runtime.Extensions": "4.3.0",
           "System.Threading": "4.3.0",
           "System.Threading.Tasks": "4.3.0"
+        },
+        "runtime": {
+          "lib/netstandard1.3/System.Threading.Tasks.Parallel.dll": {
+            "assemblyVersion": "4.0.2.0",
+            "fileVersion": "4.6.24705.1"
+          }
         }
       },
       "System.Threading.Thread/4.3.0": {
         "dependencies": {
           "System.Runtime": "4.3.0"
+        },
+        "runtime": {
+          "lib/netstandard1.3/System.Threading.Thread.dll": {
+            "assemblyVersion": "4.0.1.0",
+            "fileVersion": "4.6.24705.1"
+          }
+        }
+      },
+      "System.Threading.ThreadPool/4.0.10": {
+        "dependencies": {
+          "System.Runtime": "4.3.0",
+          "System.Runtime.Handles": "4.3.0"
+        },
+        "runtime": {
+          "lib/netstandard1.3/System.Threading.ThreadPool.dll": {
+            "assemblyVersion": "4.0.10.0",
+            "fileVersion": "1.0.24212.1"
+          }
+        }
+      },
+      "System.Threading.Timer/4.0.1": {
+        "dependencies": {
+          "Microsoft.NETCore.Platforms": "1.1.0",
+          "Microsoft.NETCore.Targets": "1.1.0",
+          "System.Runtime": "4.3.0"
         }
       },
       "System.ValueTuple/4.3.0": {
           "System.Collections": "4.3.0",
           "System.Resources.ResourceManager": "4.3.0",
           "System.Runtime": "4.3.0"
+        },
+        "runtime": {
+          "lib/netstandard1.0/System.ValueTuple.dll": {
+            "assemblyVersion": "4.0.1.0",
+            "fileVersion": "4.6.24705.1"
+          }
         }
       },
       "System.Xml.ReaderWriter/4.3.0": {
           "System.Text.RegularExpressions": "4.3.0",
           "System.Threading.Tasks": "4.3.0",
           "System.Threading.Tasks.Extensions": "4.3.0"
+        },
+        "runtime": {
+          "lib/netstandard1.3/System.Xml.ReaderWriter.dll": {
+            "assemblyVersion": "4.1.0.0",
+            "fileVersion": "4.6.24705.1"
+          }
         }
       },
       "System.Xml.XDocument/4.3.0": {
           "System.Text.Encoding": "4.3.0",
           "System.Threading": "4.3.0",
           "System.Xml.ReaderWriter": "4.3.0"
+        },
+        "runtime": {
+          "lib/netstandard1.3/System.Xml.XDocument.dll": {
+            "assemblyVersion": "4.0.12.0",
+            "fileVersion": "4.6.24705.1"
+          }
         }
       },
       "System.Xml.XmlDocument/4.3.0": {
           "System.Text.Encoding": "4.3.0",
           "System.Threading": "4.3.0",
           "System.Xml.ReaderWriter": "4.3.0"
+        },
+        "runtime": {
+          "lib/netstandard1.3/System.Xml.XmlDocument.dll": {
+            "assemblyVersion": "4.0.2.0",
+            "fileVersion": "4.6.24705.1"
+          }
+        }
+      },
+      "System.Xml.XmlSerializer/4.0.11": {
+        "dependencies": {
+          "System.Collections": "4.3.0",
+          "System.Globalization": "4.3.0",
+          "System.IO": "4.3.0",
+          "System.Linq": "4.3.0",
+          "System.Reflection": "4.3.0",
+          "System.Reflection.Emit": "4.3.0",
+          "System.Reflection.Emit.ILGeneration": "4.3.0",
+          "System.Reflection.Extensions": "4.3.0",
+          "System.Reflection.Primitives": "4.3.0",
+          "System.Reflection.TypeExtensions": "4.3.0",
+          "System.Resources.ResourceManager": "4.3.0",
+          "System.Runtime": "4.3.0",
+          "System.Runtime.Extensions": "4.3.0",
+          "System.Text.RegularExpressions": "4.3.0",
+          "System.Threading": "4.3.0",
+          "System.Xml.ReaderWriter": "4.3.0",
+          "System.Xml.XmlDocument": "4.3.0"
+        },
+        "runtime": {
+          "lib/netstandard1.3/System.Xml.XmlSerializer.dll": {
+            "assemblyVersion": "4.0.11.0",
+            "fileVersion": "1.0.24212.1"
+          }
         }
       },
       "System.Xml.XPath/4.3.0": {
           "System.Runtime.Extensions": "4.3.0",
           "System.Threading": "4.3.0",
           "System.Xml.ReaderWriter": "4.3.0"
+        },
+        "runtime": {
+          "lib/netstandard1.3/System.Xml.XPath.dll": {
+            "assemblyVersion": "4.0.2.0",
+            "fileVersion": "4.6.24705.1"
+          }
         }
       },
       "System.Xml.XPath.XDocument/4.3.0": {
           "System.Xml.ReaderWriter": "4.3.0",
           "System.Xml.XDocument": "4.3.0",
           "System.Xml.XPath": "4.3.0"
+        },
+        "runtime": {
+          "lib/netstandard1.3/System.Xml.XPath.XDocument.dll": {
+            "assemblyVersion": "4.0.2.0",
+            "fileVersion": "4.6.24705.1"
+          }
+        }
+      },
+      "GenDummy/1.0.0": {
+        "dependencies": {
+          "Microsoft.CodeAnalysis.CSharp.Workspaces": "2.1.0"
+        },
+        "runtime": {
+          "GenDummy.dll": {}
         }
       }
     }
   },
   "libraries": {
-    "GenDummy/1.0.0": {
+    "GenDummy.Tasks/1.0.0": {
       "type": "project",
       "serviceable": false,
       "sha512": ""
     },
-    "CommandLineParser/2.2.1": {
+    "Microsoft.Build.Framework/15.3.409": {
       "type": "package",
       "serviceable": true,
-      "sha512": "sha512-s+cVeOzKcoPu0IWda5DPd0b9K7vfKqo17aOOrj5zsUnE5n3Bts8vutn5R3KYqBlnbuqQEXzJT7IhAkRKMXouzw==",
-      "path": "commandlineparser/2.2.1",
-      "hashPath": "commandlineparser.2.2.1.nupkg.sha512"
+      "sha512": "sha512-+H11umzkkq46gMtgzmQ1JAVHEmZKmtMiPvi4YZiRPtmaGJC9xv8czMs8lHAL/W/wEnsv7SxD0UFNtNSdbpyvFA==",
+      "path": "microsoft.build.framework/15.3.409",
+      "hashPath": "microsoft.build.framework.15.3.409.nupkg.sha512"
     },
-    "Microsoft.CodeAnalysis/2.3.2": {
+    "Microsoft.Build.Utilities.Core/15.3.409": {
       "type": "package",
       "serviceable": true,
-      "sha512": "sha512-i6++anqNoCT44GMs1Y02pv2jx34l1yfswnjVLn+PxaKZyvgIfPv++4/sRNPJH4O8hvTQ/bVEO1uAiIfImcymZg==",
-      "path": "microsoft.codeanalysis/2.3.2",
-      "hashPath": "microsoft.codeanalysis.2.3.2.nupkg.sha512"
+      "sha512": "sha512-UVntU9ObJxbrPoycTTtt6cZHiSRTowXRMvjNLGzFECRU81p0NCEvguVt3A7tQEF2mOTvyUh/T21oaNhaWKtndQ==",
+      "path": "microsoft.build.utilities.core/15.3.409",
+      "hashPath": "microsoft.build.utilities.core.15.3.409.nupkg.sha512"
     },
     "Microsoft.CodeAnalysis.Analyzers/1.1.0": {
       "type": "package",
       "path": "microsoft.codeanalysis.analyzers/1.1.0",
       "hashPath": "microsoft.codeanalysis.analyzers.1.1.0.nupkg.sha512"
     },
-    "Microsoft.CodeAnalysis.Common/2.3.2": {
+    "Microsoft.CodeAnalysis.Common/2.1.0": {
       "type": "package",
       "serviceable": true,
-      "sha512": "sha512-Kbzj8seI9xL63LErIXluRYZ6LGTkUzfvBEbVSPC5ko7f0pqzr5B6L8XNFD0VFuwA8UBCy9CPPYcZoMJ5gloe5g==",
-      "path": "microsoft.codeanalysis.common/2.3.2",
-      "hashPath": "microsoft.codeanalysis.common.2.3.2.nupkg.sha512"
+      "sha512": "sha512-QeE+TpysVUtMBPwq8dCUvO5Sz/7oVsMhpNe1cjHKNt5V2SwYD5YwMC2IfFkXFcUS6SCyg0yaYWce6tPquc/FlA==",
+      "path": "microsoft.codeanalysis.common/2.1.0",
+      "hashPath": "microsoft.codeanalysis.common.2.1.0.nupkg.sha512"
     },
-    "Microsoft.CodeAnalysis.CSharp/2.3.2": {
+    "Microsoft.CodeAnalysis.CSharp/2.1.0": {
       "type": "package",
       "serviceable": true,
-      "sha512": "sha512-4U2TRVWBdamRMceDWr/8VFX66zuBadHzIBFvFwt/9M76gTZCrt18+rxvSEvDfNaGTqqorw7SNWu1cfiF7aVebw==",
-      "path": "microsoft.codeanalysis.csharp/2.3.2",
-      "hashPath": "microsoft.codeanalysis.csharp.2.3.2.nupkg.sha512"
+      "sha512": "sha512-5L+OEh5T3eWeF61GT5sFQXwwvYrg3Y2HR3TcScrOKVdyDN7hQ4cnxcDcQHGSQ+td8UsIRei7i+Jxa9QXfbgARg==",
+      "path": "microsoft.codeanalysis.csharp/2.1.0",
+      "hashPath": "microsoft.codeanalysis.csharp.2.1.0.nupkg.sha512"
     },
-    "Microsoft.CodeAnalysis.CSharp.Workspaces/2.3.2": {
+    "Microsoft.CodeAnalysis.CSharp.Workspaces/2.1.0": {
       "type": "package",
       "serviceable": true,
-      "sha512": "sha512-ht5LS5Z0+rs/xWsw1Gi50wAUKNxnMoA5VX1dFCl2fiFaywNK1SDFY444KHpv+1M9J06Ely6SLp3t39o7ZIfWAg==",
-      "path": "microsoft.codeanalysis.csharp.workspaces/2.3.2",
-      "hashPath": "microsoft.codeanalysis.csharp.workspaces.2.3.2.nupkg.sha512"
+      "sha512": "sha512-AM3/ACdx17eMXdXq7M8OzLLzIGeTbHVGMli3+kgxn5wk7oCzZJ4BCBxGs6dKNSuMa0PM93y6UZL1Fgojkg3WVw==",
+      "path": "microsoft.codeanalysis.csharp.workspaces/2.1.0",
+      "hashPath": "microsoft.codeanalysis.csharp.workspaces.2.1.0.nupkg.sha512"
     },
-    "Microsoft.CodeAnalysis.VisualBasic/2.3.2": {
+    "Microsoft.CodeAnalysis.Workspaces.Common/2.1.0": {
       "type": "package",
       "serviceable": true,
-      "sha512": "sha512-TDZ9bErEUdjejICYXAQLpiRrdW4Iy+RZcSNWpc9DALwGUB6SzphOS+RDEkLVN8n5HqfvXNd4ybR7So5s9ky+aA==",
-      "path": "microsoft.codeanalysis.visualbasic/2.3.2",
-      "hashPath": "microsoft.codeanalysis.visualbasic.2.3.2.nupkg.sha512"
+      "sha512": "sha512-fclicuWb7fKo/QfG5EBZiqFU9hIUQSgACJsWQelu6QQqL9o5M4XjCesO/x9KJfJqt0HGxw2LIR1O9iLuJPdJBA==",
+      "path": "microsoft.codeanalysis.workspaces.common/2.1.0",
+      "hashPath": "microsoft.codeanalysis.workspaces.common.2.1.0.nupkg.sha512"
     },
-    "Microsoft.CodeAnalysis.VisualBasic.Workspaces/2.3.2": {
+    "Microsoft.Composition/1.0.27": {
       "type": "package",
       "serviceable": true,
-      "sha512": "sha512-mkwQFzHH3F11MISPhJB0SBUzN9d8baSzSlGBXsUjWUpw1XOUdKP65U3XZRT80wUSOgZ2h2khg03RkYze0Se4Og==",
-      "path": "microsoft.codeanalysis.visualbasic.workspaces/2.3.2",
-      "hashPath": "microsoft.codeanalysis.visualbasic.workspaces.2.3.2.nupkg.sha512"
+      "sha512": "sha512-pwu80Ohe7SBzZ6i69LVdzowp6V+LaVRzd5F7A6QlD42vQkX0oT7KXKWWPlM/S00w1gnMQMRnEdbtOV12z6rXdQ==",
+      "path": "microsoft.composition/1.0.27",
+      "hashPath": "microsoft.composition.1.0.27.nupkg.sha512"
     },
-    "Microsoft.CodeAnalysis.Workspaces.Common/2.3.2": {
+    "Microsoft.NETCore.Platforms/1.1.0": {
       "type": "package",
       "serviceable": true,
-      "sha512": "sha512-yehKRa/nQ7vW7eQNHbzf7uIJN6ftYgJxNZ66kM/8soRDo+CjihZ67TAjCp+s7y3MWaCKnvxhcKBuVKvzppzeug==",
-      "path": "microsoft.codeanalysis.workspaces.common/2.3.2",
-      "hashPath": "microsoft.codeanalysis.workspaces.common.2.3.2.nupkg.sha512"
+      "sha512": "sha512-kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==",
+      "path": "microsoft.netcore.platforms/1.1.0",
+      "hashPath": "microsoft.netcore.platforms.1.1.0.nupkg.sha512"
     },
     "Microsoft.NETCore.Targets/1.1.0": {
       "type": "package",
       "path": "microsoft.netcore.targets/1.1.0",
       "hashPath": "microsoft.netcore.targets.1.1.0.nupkg.sha512"
     },
+    "Microsoft.Win32.Primitives/4.0.1": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-fQnBHO9DgcmkC9dYSJoBqo6sH1VJwJprUHh8F3hbcRlxiQiBUuTntdk8tUwV490OqC2kQUrinGwZyQHTieuXRA==",
+      "path": "microsoft.win32.primitives/4.0.1",
+      "hashPath": "microsoft.win32.primitives.4.0.1.nupkg.sha512"
+    },
+    "Microsoft.Win32.Registry/4.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-q+eLtROUAQ3OxYA5mpQrgyFgzLQxIyrfT2eLpYX5IEPlHmIio2nh4F5bgOaQoGOV865kFKZZso9Oq9RlazvXtg==",
+      "path": "microsoft.win32.registry/4.0.0",
+      "hashPath": "microsoft.win32.registry.4.0.0.nupkg.sha512"
+    },
+    "NETStandard.Library/2.0.3": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==",
+      "path": "netstandard.library/2.0.3",
+      "hashPath": "netstandard.library.2.0.3.nupkg.sha512"
+    },
     "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {
       "type": "package",
       "serviceable": true,
       "path": "system.collections.immutable/1.3.1",
       "hashPath": "system.collections.immutable.1.3.1.nupkg.sha512"
     },
-    "System.Composition/1.0.31": {
-      "type": "package",
-      "serviceable": true,
-      "sha512": "sha512-I+D26qpYdoklyAVUdqwUBrEIckMNjAYnuPJy/h9dsQItpQwVREkDFs4b4tkBza0kT2Yk48Lcfsv2QQ9hWsh9Iw==",
-      "path": "system.composition/1.0.31",
-      "hashPath": "system.composition.1.0.31.nupkg.sha512"
-    },
-    "System.Composition.AttributedModel/1.0.31": {
-      "type": "package",
-      "serviceable": true,
-      "sha512": "sha512-NHWhkM3ZkspmA0XJEsKdtTt1ViDYuojgSND3yHhTzwxepiwqZf+BCWuvCbjUt4fe0NxxQhUDGJ5km6sLjo9qnQ==",
-      "path": "system.composition.attributedmodel/1.0.31",
-      "hashPath": "system.composition.attributedmodel.1.0.31.nupkg.sha512"
-    },
-    "System.Composition.Convention/1.0.31": {
+    "System.Collections.NonGeneric/4.0.1": {
       "type": "package",
       "serviceable": true,
-      "sha512": "sha512-GLjh2Ju71k6C0qxMMtl4efHa68NmWeIUYh4fkUI8xbjQrEBvFmRwMDFcylT8/PR9SQbeeL48IkFxU/+gd0nYEQ==",
-      "path": "system.composition.convention/1.0.31",
-      "hashPath": "system.composition.convention.1.0.31.nupkg.sha512"
-    },
-    "System.Composition.Hosting/1.0.31": {
-      "type": "package",
-      "serviceable": true,
-      "sha512": "sha512-fN1bT4RX4vUqjbgoyuJFVUizAl2mYF5VAb+bVIxIYZSSc0BdnX+yGAxcavxJuDDCQ1K+/mdpgyEFc8e9ikjvrg==",
-      "path": "system.composition.hosting/1.0.31",
-      "hashPath": "system.composition.hosting.1.0.31.nupkg.sha512"
-    },
-    "System.Composition.Runtime/1.0.31": {
-      "type": "package",
-      "serviceable": true,
-      "sha512": "sha512-0LEJN+2NVM89CE4SekDrrk5tHV5LeATltkp+9WNYrR+Huiyt0vaCqHbbHtVAjPyeLWIc8dOz/3kthRBj32wGQg==",
-      "path": "system.composition.runtime/1.0.31",
-      "hashPath": "system.composition.runtime.1.0.31.nupkg.sha512"
-    },
-    "System.Composition.TypedParts/1.0.31": {
-      "type": "package",
-      "serviceable": true,
-      "sha512": "sha512-0Zae/FtzeFgDBBuILeIbC/T9HMYbW4olAmi8XqqAGosSOWvXfiQLfARZEhiGd0LVXaYgXr0NhxiU1LldRP1fpQ==",
-      "path": "system.composition.typedparts/1.0.31",
-      "hashPath": "system.composition.typedparts.1.0.31.nupkg.sha512"
+      "sha512": "sha512-hMxFT2RhhlffyCdKLDXjx8WEC5JfCvNozAZxCablAuFRH74SCV4AgzE8yJCh/73bFnEoZgJ9MJmkjQ0dJmnKqA==",
+      "path": "system.collections.nongeneric/4.0.1",
+      "hashPath": "system.collections.nongeneric.4.0.1.nupkg.sha512"
     },
     "System.Console/4.3.0": {
       "type": "package",
       "path": "system.diagnostics.fileversioninfo/4.3.0",
       "hashPath": "system.diagnostics.fileversioninfo.4.3.0.nupkg.sha512"
     },
+    "System.Diagnostics.Process/4.1.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-mpVZ5bnlSs3tTeJ6jYyDJEIa6tavhAd88lxq1zbYhkkCu0Pno2+gHXcvZcoygq2d8JxW3gojXqNJMTAshduqZA==",
+      "path": "system.diagnostics.process/4.1.0",
+      "hashPath": "system.diagnostics.process.4.1.0.nupkg.sha512"
+    },
     "System.Diagnostics.StackTrace/4.3.0": {
       "type": "package",
       "serviceable": true,
       "path": "system.diagnostics.tools/4.3.0",
       "hashPath": "system.diagnostics.tools.4.3.0.nupkg.sha512"
     },
+    "System.Diagnostics.TraceSource/4.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-6WVCczFZKXwpWpzd/iJkYnsmWTSFFiU24Xx/YdHXBcu+nFI/ehTgeqdJQFbtRPzbrO3KtRNjvkhtj4t5/WwWsA==",
+      "path": "system.diagnostics.tracesource/4.0.0",
+      "hashPath": "system.diagnostics.tracesource.4.0.0.nupkg.sha512"
+    },
     "System.Diagnostics.Tracing/4.3.0": {
       "type": "package",
       "serviceable": true,
       "path": "system.objectmodel/4.3.0",
       "hashPath": "system.objectmodel.4.3.0.nupkg.sha512"
     },
+    "System.Private.DataContractSerialization/4.1.1": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-lcqFBUaCZxPiUkA4dlSOoPZGtZsAuuElH2XHgLwGLxd7ZozWetV5yiz0qGAV2AUYOqw97MtZBjbLMN16Xz4vXA==",
+      "path": "system.private.datacontractserialization/4.1.1",
+      "hashPath": "system.private.datacontractserialization.4.1.1.nupkg.sha512"
+    },
     "System.Reflection/4.3.0": {
       "type": "package",
       "serviceable": true,
       "path": "system.reflection.typeextensions/4.3.0",
       "hashPath": "system.reflection.typeextensions.4.3.0.nupkg.sha512"
     },
+    "System.Resources.Reader/4.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-VX1iHAoHxgrLZv+nq/9drCZI6Q4SSCzSVyUm1e0U60sqWdj6XhY7wvKmy3RvsSal9h+/vqSWwxxJsm0J4vn/jA==",
+      "path": "system.resources.reader/4.0.0",
+      "hashPath": "system.resources.reader.4.0.0.nupkg.sha512"
+    },
     "System.Resources.ResourceManager/4.3.0": {
       "type": "package",
       "serviceable": true,
       "path": "system.runtime.interopservices/4.3.0",
       "hashPath": "system.runtime.interopservices.4.3.0.nupkg.sha512"
     },
+    "System.Runtime.InteropServices.RuntimeInformation/4.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-hWPhJxc453RCa8Z29O91EmfGeZIHX1ZH2A8L6lYQVSaKzku2DfArSfMEb1/MYYzPQRJZeu0c9dmYeJKxW5Fgng==",
+      "path": "system.runtime.interopservices.runtimeinformation/4.0.0",
+      "hashPath": "system.runtime.interopservices.runtimeinformation.4.0.0.nupkg.sha512"
+    },
     "System.Runtime.Numerics/4.3.0": {
       "type": "package",
       "serviceable": true,
       "path": "system.runtime.numerics/4.3.0",
       "hashPath": "system.runtime.numerics.4.3.0.nupkg.sha512"
     },
+    "System.Runtime.Serialization.Primitives/4.1.1": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-HZ6Du5QrTG8MNJbf4e4qMO3JRAkIboGT5Fk804uZtg3Gq516S7hAqTm2UZKUHa7/6HUGdVy3AqMQKbns06G/cg==",
+      "path": "system.runtime.serialization.primitives/4.1.1",
+      "hashPath": "system.runtime.serialization.primitives.4.1.1.nupkg.sha512"
+    },
+    "System.Runtime.Serialization.Xml/4.1.1": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-yqfKHkWUAdI0hdDIdD9KDzluKtZ8IIqLF3O7xIZlt6UTs1bOvFRpCvRTvGQva3Ak/ZM9/nq9IHBJ1tC4Ybcrjg==",
+      "path": "system.runtime.serialization.xml/4.1.1",
+      "hashPath": "system.runtime.serialization.xml.4.1.1.nupkg.sha512"
+    },
     "System.Security.Cryptography.Algorithms/4.3.0": {
       "type": "package",
       "serviceable": true,
       "path": "system.threading.thread/4.3.0",
       "hashPath": "system.threading.thread.4.3.0.nupkg.sha512"
     },
+    "System.Threading.ThreadPool/4.0.10": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-IMXgB5Vf/5Qw1kpoVgJMOvUO1l32aC+qC3OaIZjWJOjvcxuxNWOK2ZTWWYXfij22NHxT2j1yWX5vlAeQWld9vA==",
+      "path": "system.threading.threadpool/4.0.10",
+      "hashPath": "system.threading.threadpool.4.0.10.nupkg.sha512"
+    },
+    "System.Threading.Timer/4.0.1": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-saGfUV8uqVW6LeURiqxcGhZ24PzuRNaUBtbhVeuUAvky1naH395A/1nY0P2bWvrw/BreRtIB/EzTDkGBpqCwEw==",
+      "path": "system.threading.timer/4.0.1",
+      "hashPath": "system.threading.timer.4.0.1.nupkg.sha512"
+    },
     "System.ValueTuple/4.3.0": {
       "type": "package",
       "serviceable": true,
       "path": "system.xml.xmldocument/4.3.0",
       "hashPath": "system.xml.xmldocument.4.3.0.nupkg.sha512"
     },
+    "System.Xml.XmlSerializer/4.0.11": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-FrazwwqfIXTfq23mfv4zH+BjqkSFNaNFBtjzu3I9NRmG8EELYyrv/fJnttCIwRMFRR/YKXF1hmsMmMEnl55HGw==",
+      "path": "system.xml.xmlserializer/4.0.11",
+      "hashPath": "system.xml.xmlserializer.4.0.11.nupkg.sha512"
+    },
     "System.Xml.XPath/4.3.0": {
       "type": "package",
       "serviceable": true,
       "sha512": "sha512-jw9oHHEIVW53mHY9PgrQa98Xo2IZ0ZjrpdOTmtvk+Rvg4tq7dydmxdNqUvJ5YwjDqhn75mBXWttWjiKhWP53LQ==",
       "path": "system.xml.xpath.xdocument/4.3.0",
       "hashPath": "system.xml.xpath.xdocument.4.3.0.nupkg.sha512"
+    },
+    "GenDummy/1.0.0": {
+      "type": "project",
+      "serviceable": false,
+      "sha512": ""
     }
   }
 }
\ No newline at end of file
diff --git a/tools/bin/GenDummy.Tasks/GenDummy.Tasks.dll b/tools/bin/GenDummy.Tasks/GenDummy.Tasks.dll
new file mode 100644 (file)
index 0000000..9050e22
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/GenDummy.Tasks.dll differ
diff --git a/tools/bin/GenDummy.Tasks/GenDummy.Tasks.pdb b/tools/bin/GenDummy.Tasks/GenDummy.Tasks.pdb
new file mode 100644 (file)
index 0000000..cfc3cf6
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/GenDummy.Tasks.pdb differ
diff --git a/tools/bin/GenDummy.Tasks/GenDummy.dll b/tools/bin/GenDummy.Tasks/GenDummy.dll
new file mode 100644 (file)
index 0000000..dd7d526
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/GenDummy.dll differ
diff --git a/tools/bin/GenDummy.Tasks/GenDummy.pdb b/tools/bin/GenDummy.Tasks/GenDummy.pdb
new file mode 100644 (file)
index 0000000..e97a86e
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/GenDummy.pdb differ
diff --git a/tools/bin/GenDummy.Tasks/Microsoft.Build.Framework.dll b/tools/bin/GenDummy.Tasks/Microsoft.Build.Framework.dll
new file mode 100755 (executable)
index 0000000..e4c7030
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/Microsoft.Build.Framework.dll differ
diff --git a/tools/bin/GenDummy.Tasks/Microsoft.Build.Utilities.Core.dll b/tools/bin/GenDummy.Tasks/Microsoft.Build.Utilities.Core.dll
new file mode 100755 (executable)
index 0000000..6a4455e
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/Microsoft.Build.Utilities.Core.dll differ
diff --git a/tools/bin/GenDummy.Tasks/Microsoft.CodeAnalysis.CSharp.Workspaces.dll b/tools/bin/GenDummy.Tasks/Microsoft.CodeAnalysis.CSharp.Workspaces.dll
new file mode 100755 (executable)
index 0000000..f8215ef
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/Microsoft.CodeAnalysis.CSharp.Workspaces.dll differ
diff --git a/tools/bin/GenDummy.Tasks/Microsoft.CodeAnalysis.CSharp.dll b/tools/bin/GenDummy.Tasks/Microsoft.CodeAnalysis.CSharp.dll
new file mode 100755 (executable)
index 0000000..eb1769c
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/Microsoft.CodeAnalysis.CSharp.dll differ
diff --git a/tools/bin/GenDummy.Tasks/Microsoft.CodeAnalysis.Workspaces.dll b/tools/bin/GenDummy.Tasks/Microsoft.CodeAnalysis.Workspaces.dll
new file mode 100755 (executable)
index 0000000..22cfb80
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/Microsoft.CodeAnalysis.Workspaces.dll differ
diff --git a/tools/bin/GenDummy.Tasks/Microsoft.CodeAnalysis.dll b/tools/bin/GenDummy.Tasks/Microsoft.CodeAnalysis.dll
new file mode 100755 (executable)
index 0000000..1db0ace
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/Microsoft.CodeAnalysis.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.AppContext.dll b/tools/bin/GenDummy.Tasks/System.AppContext.dll
new file mode 100755 (executable)
index 0000000..1895462
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.AppContext.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Buffers.dll b/tools/bin/GenDummy.Tasks/System.Buffers.dll
new file mode 100755 (executable)
index 0000000..c5c44b7
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Buffers.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Collections.Concurrent.dll b/tools/bin/GenDummy.Tasks/System.Collections.Concurrent.dll
new file mode 100755 (executable)
index 0000000..1a1c925
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Collections.Concurrent.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Collections.Immutable.dll b/tools/bin/GenDummy.Tasks/System.Collections.Immutable.dll
new file mode 100755 (executable)
index 0000000..ce6fc0e
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Collections.Immutable.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Collections.NonGeneric.dll b/tools/bin/GenDummy.Tasks/System.Collections.NonGeneric.dll
new file mode 100755 (executable)
index 0000000..a962377
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Collections.NonGeneric.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Composition.AttributedModel.dll b/tools/bin/GenDummy.Tasks/System.Composition.AttributedModel.dll
new file mode 100755 (executable)
index 0000000..af0aa13
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Composition.AttributedModel.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Composition.Convention.dll b/tools/bin/GenDummy.Tasks/System.Composition.Convention.dll
new file mode 100755 (executable)
index 0000000..108179c
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Composition.Convention.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Composition.Hosting.dll b/tools/bin/GenDummy.Tasks/System.Composition.Hosting.dll
new file mode 100755 (executable)
index 0000000..2b25a90
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Composition.Hosting.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Composition.Runtime.dll b/tools/bin/GenDummy.Tasks/System.Composition.Runtime.dll
new file mode 100755 (executable)
index 0000000..660ac75
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Composition.Runtime.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Composition.TypedParts.dll b/tools/bin/GenDummy.Tasks/System.Composition.TypedParts.dll
new file mode 100755 (executable)
index 0000000..4435eaa
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Composition.TypedParts.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Diagnostics.Contracts.dll b/tools/bin/GenDummy.Tasks/System.Diagnostics.Contracts.dll
new file mode 100644 (file)
index 0000000..dabbc71
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Diagnostics.Contracts.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Diagnostics.StackTrace.dll b/tools/bin/GenDummy.Tasks/System.Diagnostics.StackTrace.dll
new file mode 100755 (executable)
index 0000000..15ef090
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Diagnostics.StackTrace.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Dynamic.Runtime.dll b/tools/bin/GenDummy.Tasks/System.Dynamic.Runtime.dll
new file mode 100755 (executable)
index 0000000..0bd01d5
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Dynamic.Runtime.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.IO.FileSystem.Primitives.dll b/tools/bin/GenDummy.Tasks/System.IO.FileSystem.Primitives.dll
new file mode 100755 (executable)
index 0000000..050c54d
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.IO.FileSystem.Primitives.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Linq.Expressions.dll b/tools/bin/GenDummy.Tasks/System.Linq.Expressions.dll
new file mode 100755 (executable)
index 0000000..5c56b18
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Linq.Expressions.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Linq.Parallel.dll b/tools/bin/GenDummy.Tasks/System.Linq.Parallel.dll
new file mode 100644 (file)
index 0000000..00f8328
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Linq.Parallel.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Linq.dll b/tools/bin/GenDummy.Tasks/System.Linq.dll
new file mode 100755 (executable)
index 0000000..d3ca6a4
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Linq.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.ObjectModel.dll b/tools/bin/GenDummy.Tasks/System.ObjectModel.dll
new file mode 100755 (executable)
index 0000000..e44fe67
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.ObjectModel.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Private.DataContractSerialization.dll b/tools/bin/GenDummy.Tasks/System.Private.DataContractSerialization.dll
new file mode 100755 (executable)
index 0000000..35bf085
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Private.DataContractSerialization.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Reflection.Emit.ILGeneration.dll b/tools/bin/GenDummy.Tasks/System.Reflection.Emit.ILGeneration.dll
new file mode 100755 (executable)
index 0000000..6417602
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Reflection.Emit.ILGeneration.dll differ
similarity index 58%
rename from tools/ABIChecker/System.Composition.AttributedModel.dll
rename to tools/bin/GenDummy.Tasks/System.Reflection.Emit.Lightweight.dll
index 4acc216..d7b76e7 100755 (executable)
Binary files a/tools/ABIChecker/System.Composition.AttributedModel.dll and b/tools/bin/GenDummy.Tasks/System.Reflection.Emit.Lightweight.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Reflection.Emit.dll b/tools/bin/GenDummy.Tasks/System.Reflection.Emit.dll
new file mode 100755 (executable)
index 0000000..3424401
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Reflection.Emit.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Reflection.Metadata.dll b/tools/bin/GenDummy.Tasks/System.Reflection.Metadata.dll
new file mode 100755 (executable)
index 0000000..ee68731
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Reflection.Metadata.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Reflection.TypeExtensions.dll b/tools/bin/GenDummy.Tasks/System.Reflection.TypeExtensions.dll
new file mode 100755 (executable)
index 0000000..975497c
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Reflection.TypeExtensions.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Resources.Reader.dll b/tools/bin/GenDummy.Tasks/System.Resources.Reader.dll
new file mode 100755 (executable)
index 0000000..9e506f6
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Resources.Reader.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Runtime.Numerics.dll b/tools/bin/GenDummy.Tasks/System.Runtime.Numerics.dll
new file mode 100755 (executable)
index 0000000..0307900
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Runtime.Numerics.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Runtime.Serialization.Primitives.dll b/tools/bin/GenDummy.Tasks/System.Runtime.Serialization.Primitives.dll
new file mode 100755 (executable)
index 0000000..7cbc843
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Runtime.Serialization.Primitives.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Runtime.Serialization.Xml.dll b/tools/bin/GenDummy.Tasks/System.Runtime.Serialization.Xml.dll
new file mode 100755 (executable)
index 0000000..2fd75aa
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Runtime.Serialization.Xml.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Security.Cryptography.OpenSsl.dll b/tools/bin/GenDummy.Tasks/System.Security.Cryptography.OpenSsl.dll
new file mode 100755 (executable)
index 0000000..7391cf0
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Security.Cryptography.OpenSsl.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Security.Cryptography.Primitives.dll b/tools/bin/GenDummy.Tasks/System.Security.Cryptography.Primitives.dll
new file mode 100755 (executable)
index 0000000..e0e747f
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Security.Cryptography.Primitives.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Text.RegularExpressions.dll b/tools/bin/GenDummy.Tasks/System.Text.RegularExpressions.dll
new file mode 100755 (executable)
index 0000000..9b28654
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Text.RegularExpressions.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Threading.Tasks.Extensions.dll b/tools/bin/GenDummy.Tasks/System.Threading.Tasks.Extensions.dll
new file mode 100755 (executable)
index 0000000..a1234ce
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Threading.Tasks.Extensions.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Threading.Tasks.Parallel.dll b/tools/bin/GenDummy.Tasks/System.Threading.Tasks.Parallel.dll
new file mode 100755 (executable)
index 0000000..a6f8e1f
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Threading.Tasks.Parallel.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Threading.Thread.dll b/tools/bin/GenDummy.Tasks/System.Threading.Thread.dll
new file mode 100755 (executable)
index 0000000..a981cb1
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Threading.Thread.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Threading.ThreadPool.dll b/tools/bin/GenDummy.Tasks/System.Threading.ThreadPool.dll
new file mode 100755 (executable)
index 0000000..b144d7c
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Threading.ThreadPool.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Threading.dll b/tools/bin/GenDummy.Tasks/System.Threading.dll
new file mode 100755 (executable)
index 0000000..7868cf0
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Threading.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.ValueTuple.dll b/tools/bin/GenDummy.Tasks/System.ValueTuple.dll
new file mode 100755 (executable)
index 0000000..78a1851
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.ValueTuple.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Xml.ReaderWriter.dll b/tools/bin/GenDummy.Tasks/System.Xml.ReaderWriter.dll
new file mode 100755 (executable)
index 0000000..022e63a
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Xml.ReaderWriter.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Xml.XDocument.dll b/tools/bin/GenDummy.Tasks/System.Xml.XDocument.dll
new file mode 100755 (executable)
index 0000000..3e41a45
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Xml.XDocument.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Xml.XPath.XDocument.dll b/tools/bin/GenDummy.Tasks/System.Xml.XPath.XDocument.dll
new file mode 100755 (executable)
index 0000000..7ce36d5
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Xml.XPath.XDocument.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Xml.XPath.dll b/tools/bin/GenDummy.Tasks/System.Xml.XPath.dll
new file mode 100755 (executable)
index 0000000..963874b
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Xml.XPath.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Xml.XmlDocument.dll b/tools/bin/GenDummy.Tasks/System.Xml.XmlDocument.dll
new file mode 100755 (executable)
index 0000000..c1d415d
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Xml.XmlDocument.dll differ
diff --git a/tools/bin/GenDummy.Tasks/System.Xml.XmlSerializer.dll b/tools/bin/GenDummy.Tasks/System.Xml.XmlSerializer.dll
new file mode 100755 (executable)
index 0000000..bb364ad
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/System.Xml.XmlSerializer.dll differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/debian.8-x64/native/System.Security.Cryptography.Native.OpenSsl.so b/tools/bin/GenDummy.Tasks/runtimes/debian.8-x64/native/System.Security.Cryptography.Native.OpenSsl.so
new file mode 100755 (executable)
index 0000000..6cc4be3
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/debian.8-x64/native/System.Security.Cryptography.Native.OpenSsl.so differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/fedora.23-x64/native/System.Security.Cryptography.Native.OpenSsl.so b/tools/bin/GenDummy.Tasks/runtimes/fedora.23-x64/native/System.Security.Cryptography.Native.OpenSsl.so
new file mode 100755 (executable)
index 0000000..f9631b1
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/fedora.23-x64/native/System.Security.Cryptography.Native.OpenSsl.so differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/fedora.24-x64/native/System.Security.Cryptography.Native.OpenSsl.so b/tools/bin/GenDummy.Tasks/runtimes/fedora.24-x64/native/System.Security.Cryptography.Native.OpenSsl.so
new file mode 100755 (executable)
index 0000000..a515723
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/fedora.24-x64/native/System.Security.Cryptography.Native.OpenSsl.so differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/linux/lib/netstandard1.4/System.Diagnostics.Process.dll b/tools/bin/GenDummy.Tasks/runtimes/linux/lib/netstandard1.4/System.Diagnostics.Process.dll
new file mode 100755 (executable)
index 0000000..cbd100f
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/linux/lib/netstandard1.4/System.Diagnostics.Process.dll differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/opensuse.13.2-x64/native/System.Security.Cryptography.Native.OpenSsl.so b/tools/bin/GenDummy.Tasks/runtimes/opensuse.13.2-x64/native/System.Security.Cryptography.Native.OpenSsl.so
new file mode 100755 (executable)
index 0000000..331d3f1
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/opensuse.13.2-x64/native/System.Security.Cryptography.Native.OpenSsl.so differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/opensuse.42.1-x64/native/System.Security.Cryptography.Native.OpenSsl.so b/tools/bin/GenDummy.Tasks/runtimes/opensuse.42.1-x64/native/System.Security.Cryptography.Native.OpenSsl.so
new file mode 100755 (executable)
index 0000000..dedeeb5
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/opensuse.42.1-x64/native/System.Security.Cryptography.Native.OpenSsl.so differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.Apple.dylib b/tools/bin/GenDummy.Tasks/runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.Apple.dylib
new file mode 100755 (executable)
index 0000000..a82e715
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.Apple.dylib differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.OpenSsl.dylib b/tools/bin/GenDummy.Tasks/runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.OpenSsl.dylib
new file mode 100755 (executable)
index 0000000..b2c88cb
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.OpenSsl.dylib differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/osx/lib/netstandard1.4/System.Diagnostics.Process.dll b/tools/bin/GenDummy.Tasks/runtimes/osx/lib/netstandard1.4/System.Diagnostics.Process.dll
new file mode 100755 (executable)
index 0000000..863e931
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/osx/lib/netstandard1.4/System.Diagnostics.Process.dll differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/osx/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll b/tools/bin/GenDummy.Tasks/runtimes/osx/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll
new file mode 100755 (executable)
index 0000000..51ebcfd
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/osx/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/rhel.7-x64/native/System.Security.Cryptography.Native.OpenSsl.so b/tools/bin/GenDummy.Tasks/runtimes/rhel.7-x64/native/System.Security.Cryptography.Native.OpenSsl.so
new file mode 100755 (executable)
index 0000000..13782cb
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/rhel.7-x64/native/System.Security.Cryptography.Native.OpenSsl.so differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/ubuntu.14.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so b/tools/bin/GenDummy.Tasks/runtimes/ubuntu.14.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so
new file mode 100755 (executable)
index 0000000..5a22712
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/ubuntu.14.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/ubuntu.16.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so b/tools/bin/GenDummy.Tasks/runtimes/ubuntu.16.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so
new file mode 100755 (executable)
index 0000000..628b9ed
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/ubuntu.16.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/ubuntu.16.10-x64/native/System.Security.Cryptography.Native.OpenSsl.so b/tools/bin/GenDummy.Tasks/runtimes/ubuntu.16.10-x64/native/System.Security.Cryptography.Native.OpenSsl.so
new file mode 100755 (executable)
index 0000000..5957613
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/ubuntu.16.10-x64/native/System.Security.Cryptography.Native.OpenSsl.so differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll b/tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll
new file mode 100755 (executable)
index 0000000..c95aafd
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.3/Microsoft.Win32.Registry.dll b/tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.3/Microsoft.Win32.Registry.dll
new file mode 100755 (executable)
index 0000000..c4cbf32
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.3/Microsoft.Win32.Registry.dll differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.3/System.Diagnostics.FileVersionInfo.dll b/tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.3/System.Diagnostics.FileVersionInfo.dll
new file mode 100755 (executable)
index 0000000..b1d71c9
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.3/System.Diagnostics.FileVersionInfo.dll differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.3/System.Diagnostics.TraceSource.dll b/tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.3/System.Diagnostics.TraceSource.dll
new file mode 100755 (executable)
index 0000000..ab39b18
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.3/System.Diagnostics.TraceSource.dll differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.3/System.IO.Compression.dll b/tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.3/System.IO.Compression.dll
new file mode 100755 (executable)
index 0000000..004f3bc
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.3/System.IO.Compression.dll differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Csp.dll b/tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Csp.dll
new file mode 100755 (executable)
index 0000000..a433508
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Csp.dll differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll b/tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll
new file mode 100755 (executable)
index 0000000..a962b90
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll b/tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll
new file mode 100755 (executable)
index 0000000..d3f2375
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Cng.dll b/tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Cng.dll
new file mode 100755 (executable)
index 0000000..52b817c
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Cng.dll differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll b/tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll
new file mode 100755 (executable)
index 0000000..35f9396
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll b/tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll
new file mode 100755 (executable)
index 0000000..d019a38
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll b/tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll
new file mode 100755 (executable)
index 0000000..1642e7b
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.3/Microsoft.Win32.Registry.dll b/tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.3/Microsoft.Win32.Registry.dll
new file mode 100755 (executable)
index 0000000..d5c3a04
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.3/Microsoft.Win32.Registry.dll differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.3/System.Diagnostics.FileVersionInfo.dll b/tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.3/System.Diagnostics.FileVersionInfo.dll
new file mode 100755 (executable)
index 0000000..ee9969d
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.3/System.Diagnostics.FileVersionInfo.dll differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.3/System.Diagnostics.TraceSource.dll b/tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.3/System.Diagnostics.TraceSource.dll
new file mode 100755 (executable)
index 0000000..101733a
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.3/System.Diagnostics.TraceSource.dll differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.3/System.IO.Compression.dll b/tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.3/System.IO.Compression.dll
new file mode 100755 (executable)
index 0000000..4ed0af9
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.3/System.IO.Compression.dll differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Csp.dll b/tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Csp.dll
new file mode 100755 (executable)
index 0000000..fb99251
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Csp.dll differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll b/tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll
new file mode 100755 (executable)
index 0000000..111eb48
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.4/System.Diagnostics.Process.dll b/tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.4/System.Diagnostics.Process.dll
new file mode 100755 (executable)
index 0000000..435d2cf
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.4/System.Diagnostics.Process.dll differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll b/tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll
new file mode 100755 (executable)
index 0000000..4bf9ee5
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Cng.dll b/tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Cng.dll
new file mode 100755 (executable)
index 0000000..914dafa
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Cng.dll differ
diff --git a/tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll b/tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll
new file mode 100755 (executable)
index 0000000..ea3f140
Binary files /dev/null and b/tools/bin/GenDummy.Tasks/runtimes/win/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll differ
diff --git a/tools/build-tools.sh b/tools/build-tools.sh
new file mode 100755 (executable)
index 0000000..c95e151
--- /dev/null
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+SCRIPT_FILE=$(readlink -f $0)
+SCRIPT_DIR=$(dirname $SCRIPT_FILE)
+
+SOURCE_DIR=$SCRIPT_DIR/src
+BINARY_DIR=$SCRIPT_DIR/bin
+
+CONF=Release
+
+# Cleanup
+rm -fr $BINARY_DIR/*
+find $SOURCE_DIR -type d -name "bin" -prune -exec rm -r "{}" \;
+find $SOURCE_DIR -type d -name "obj" -prune -exec rm -r "{}" \;
+
+# Build and publish
+dotnet publish -c $CONF src/Tools.sln
+
+# Install
+APPS="GenDummy.Tasks ABIChecker"
+
+for x in $APPS; do
+  mkdir -p $BINARY_DIR/$x
+  cp -fr $SOURCE_DIR/$x/bin/$CONF/*/publish/* $BINARY_DIR/$x
+done
similarity index 100%
rename from tools/retry.sh
rename to tools/scripts/retry.sh
similarity index 100%
rename from tools/timeout.sh
rename to tools/scripts/timeout.sh
diff --git a/tools/src/ABIChecker/ABIChecker.csproj b/tools/src/ABIChecker/ABIChecker.csproj
new file mode 100644 (file)
index 0000000..0d2a332
--- /dev/null
@@ -0,0 +1,15 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <OutputType>Exe</OutputType>
+    <TargetFramework>netcoreapp2.0</TargetFramework>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="CommandLineParser" Version="2.2.1" />
+    <PackageReference Include="Microsoft.CodeAnalysis" Version="2.6.1" />
+    <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="2.0.4" />
+    <PackageReference Include="System.Runtime.Loader" Version="4.3.0" />
+  </ItemGroup>
+
+</Project>
diff --git a/tools/src/ABIChecker/ABITester.cs b/tools/src/ABIChecker/ABITester.cs
new file mode 100644 (file)
index 0000000..47703a4
--- /dev/null
@@ -0,0 +1,78 @@
+using System;
+using System.IO;
+using System.Reflection;
+
+namespace Checker_ABI
+{
+    public class ABITester
+    {
+        AssemblyChecker _checker = new AssemblyChecker();
+        string _basePath;
+        string _latestPath;
+        bool _isFile;
+
+        public ABITester(string basePath, string latestPath, bool isFile)
+        {
+            _basePath = basePath;
+            _latestPath = latestPath;
+            _isFile = isFile;
+        }
+
+        public bool CheckABI()
+        {
+            if (!_isFile)
+            {
+                return InternalDirectoryCheck();
+            }
+            else
+            {
+                var result = _checker.CheckAssemblyToList(Assembly.LoadFrom(_basePath), Assembly.LoadFile(_latestPath));
+                var bResult = result.Count > 0 ? false : true;
+                Console.WriteLine($"{_basePath} : {(bResult ? "PASS" : "FAIL")}");
+                return bResult;
+            }
+        }
+
+        bool InternalDirectoryCheck()
+        {
+            DirectoryInfo baseDirectoryInfo = new DirectoryInfo(_basePath);
+            DirectoryInfo targetDirectoryInfo = new DirectoryInfo(_latestPath);
+
+            if (!baseDirectoryInfo.Exists || !targetDirectoryInfo.Exists)
+            {
+                Console.WriteLine($"invalid directory path");
+            }
+
+            FileInfo[] baseDllFiles = baseDirectoryInfo.GetFiles("*.dll", SearchOption.TopDirectoryOnly);
+            FileInfo[] targetDllFiles = targetDirectoryInfo.GetFiles("*.dll", SearchOption.TopDirectoryOnly);
+
+            Console.WriteLine($"File Count : {baseDllFiles.Length} == {targetDllFiles.Length}");
+
+            int num = 1;
+            int errCount = 0;
+
+            foreach (var baseFile in baseDllFiles)
+            {
+                foreach (var latestFile in targetDllFiles)
+                {
+                    if (baseFile.Name == latestFile.Name)
+                    {
+                        try
+                        {
+                            var result = _checker.CheckAssemblyToList(Assembly.LoadFrom(baseFile.FullName), Assembly.LoadFile(latestFile.FullName));
+                            bool bResult = result.Count > 0 ? false : true;
+                            Console.WriteLine($"{num++}. {baseFile.ToString()} : {(bResult ? "PASS" : "FAIL")}");
+
+                            if (!bResult) errCount++;
+                        }
+                        catch (Exception)
+                        {
+                            continue;
+                        }
+                    }
+                }
+            }
+            return errCount > 0 ? false : true;
+        }
+    }
+}
diff --git a/tools/src/ABIChecker/Checker/AssemblyChecker.cs b/tools/src/ABIChecker/Checker/AssemblyChecker.cs
new file mode 100644 (file)
index 0000000..2bc15bd
--- /dev/null
@@ -0,0 +1,129 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+
+namespace Checker_ABI
+{
+    internal class AssemblyChecker
+    {
+        private const BindingFlags s_PublicOnlyFlags = BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly | BindingFlags.Static;
+
+        public bool TypeValidate(Type originalType, Type comparedType)
+        {
+            var originalMembers = originalType.GetMembers(s_PublicOnlyFlags);
+            var comparedMembers = comparedType.GetMembers(s_PublicOnlyFlags);
+
+            // Compare Number of public Methods
+            MethodInfo[] originalMethods = originalType.GetMethods(s_PublicOnlyFlags);
+            MethodInfo[] comparedMethods = comparedType.GetMethods(s_PublicOnlyFlags);
+
+            if (comparedMethods.Length != originalMethods.Length)
+                return false;
+
+            // Compare Number of public Properties
+            PropertyInfo[] originalProperties = originalType.GetProperties(s_PublicOnlyFlags);
+            PropertyInfo[] comparedProperties = comparedType.GetProperties(s_PublicOnlyFlags);
+
+            if (comparedProperties.Length != originalProperties.Length)
+                return false;
+
+            // Compare number of public fields
+            FieldInfo[] originalFields = originalType.GetFields(s_PublicOnlyFlags);
+            FieldInfo[] comparedToFields = comparedType.GetFields(s_PublicOnlyFlags);
+
+            if (comparedToFields.Length != originalFields.Length)
+                return false;
+
+
+            // Compare number of public events
+            EventInfo[] originalEvents = originalType.GetEvents(s_PublicOnlyFlags);
+            EventInfo[] comparedToEvents = comparedType.GetEvents(s_PublicOnlyFlags);
+
+            if (originalEvents.Length != comparedToEvents.Length)
+                return false;
+
+            return true;
+        }
+
+        public IList<MemberInfo> CompareClassTypeToList(Type originalType, Type comparedType)
+        {
+            if (originalType.ToString() != comparedType.ToString())
+            {
+                throw new ArgumentException("The full name of type is different. ABI check is only possible if name is the same.");
+            }
+
+            IList<MemberInfo> diffrentMemberList = new List<MemberInfo>();
+            var originalMembers = originalType.GetMembers(s_PublicOnlyFlags).ToList();
+            var comparedMembers = comparedType.GetMembers(s_PublicOnlyFlags).ToList();
+
+            for (int i = originalMembers.Count-1; i >= 0; i--)
+            {
+                bool bResult = false;
+                for (int j = comparedMembers.Count-1; j >= 0; j--)
+                {
+                     if (originalMembers[i].ToString() == comparedMembers[j].ToString())
+                    {
+                        if (originalMembers[i] is MethodInfo first && comparedMembers[j] is MethodInfo last)
+                        {
+                            if (first.GetBaseDefinition().DeclaringType.ToString() != last.GetBaseDefinition().DeclaringType.ToString())
+                            {
+                                continue;
+                            }
+                        }
+
+                        bResult = true;
+                        originalMembers.RemoveAt(i);
+                        comparedMembers.RemoveAt(j);
+                        break;
+                    }
+                }
+
+                if (!bResult)
+                {
+                    diffrentMemberList.Add(originalMembers[i]);
+                }
+            }
+
+            if (comparedMembers.Count > 0)
+            {
+                foreach (var item in originalMembers)
+                    diffrentMemberList.Add(item);
+
+                foreach (var item in comparedMembers)
+                    diffrentMemberList.Add(item);
+            }
+
+            return diffrentMemberList;
+        }
+
+        public IList<MemberInfo> CheckAssemblyToList(Assembly baseAssembly, Assembly latestAssembly)
+        {
+            var baseInfos = baseAssembly.GetTypes().Where(b => b.IsPublic).ToList();
+            var lastInfos = latestAssembly.GetTypes().Where(b => b.IsPublic).ToList();
+            var diffrentMemberList = new List<MemberInfo>();
+
+            for (int i = 0; i < baseInfos.Count; i++)
+            {
+                for (int j = 0; j < lastInfos.Count; j++)
+                {
+                    if (baseInfos[i].ToString() == lastInfos[j].ToString())
+                    {
+                        var result = CompareClassTypeToList(baseInfos[i], lastInfos[j]);
+
+                        if (result?.Count > 0)
+                        {
+                            Console.WriteLine($"ABI BREAK!! {baseInfos[i]} : Diffrent Member Count : {result.Count}");
+                            foreach (var item in result)
+                            {
+                                diffrentMemberList.Add(item);
+                                Console.WriteLine($"ABI BREAK!! {item.DeclaringType}::{item}");
+                            }
+                        }
+                    }
+                }
+            }
+            return diffrentMemberList;
+        }
+    }
+}
diff --git a/tools/src/ABIChecker/Checker_ABI.sln b/tools/src/ABIChecker/Checker_ABI.sln
new file mode 100644 (file)
index 0000000..d88a160
--- /dev/null
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+VisualStudioVersion = 15.0.27130.2036
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Checker_ABI", "Checker_ABI.csproj", "{99956C3A-4C56-455F-9793-7E98A056ED34}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               Debug|Any CPU = Debug|Any CPU
+               Release|Any CPU = Release|Any CPU
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {99956C3A-4C56-455F-9793-7E98A056ED34}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {99956C3A-4C56-455F-9793-7E98A056ED34}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {99956C3A-4C56-455F-9793-7E98A056ED34}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {99956C3A-4C56-455F-9793-7E98A056ED34}.Release|Any CPU.Build.0 = Release|Any CPU
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+       GlobalSection(ExtensibilityGlobals) = postSolution
+               SolutionGuid = {FFC2467C-4F5E-4B70-86B1-DD71FC699C12}
+       EndGlobalSection
+EndGlobal
diff --git a/tools/src/ABIChecker/Program.cs b/tools/src/ABIChecker/Program.cs
new file mode 100644 (file)
index 0000000..8c0277c
--- /dev/null
@@ -0,0 +1,72 @@
+using CommandLine;
+using System;
+using System.IO;
+using System.Net;
+using System.Net.Http;
+using System.Text;
+
+namespace Checker_ABI
+{
+    class AssemblyOptions
+    {
+        [Option('f', "isFile", Default = false, HelpText = "Is it File?")]
+        public bool IsFile { get; set; }
+
+        [Option('b', "base", Required = true, HelpText = "Input Base Assembly path")]
+        public string BasePath { get; set; }
+
+        [Option('p', "pr", Required = true, HelpText = "Input latest Assembly path")]
+        public string PrPath { get; set; }
+    }
+
+    class Program
+    {
+        private static readonly HttpClient client = new HttpClient();
+
+        static int Main(string[] args)
+        {
+            Console.WriteLine("=========ABI CHECK START=========");
+
+            AssemblyOptions options = null;
+            CommandLine.Parser.Default.ParseArguments<AssemblyOptions>(args).WithParsed(b => options = b);
+
+            if (options == null)
+            {
+                Console.WriteLine($"invalid Arguments");
+                return 0;
+            }
+
+            var tester = new ABITester(options.BasePath, options.PrPath, options.IsFile);
+            var bResult = tester.CheckABI();
+            Console.WriteLine("=====================");
+            Console.WriteLine($"ABI CHECK : {bResult}");
+            Console.WriteLine("=====================");
+
+            Console.WriteLine("=========ABI CHECK END=========");
+
+            return bResult ? 0 : 1;
+        }
+
+        public static void LabelingTest()
+        {
+            WebRequest request = WebRequest.Create("https://api.github.com/repos/darkleem/google-diff-match-patch/issues/111/labels");
+            request.Method = "POST";
+            request.Headers.Add(HttpRequestHeader.UserAgent, "google-diff-match-patch");
+            request.Headers.Add(HttpRequestHeader.ContentType, "application/json");
+            request.Headers.Add(HttpRequestHeader.Authorization, "token 3a37a027156bca0e561ae7a317d29fd249502899");
+
+
+            var postData = @"[""bug""]";
+            var data = Encoding.ASCII.GetBytes(postData);
+
+            using (var stream = request.GetRequestStream())
+            {
+                stream.Write(data, 0, data.Length);
+            }
+
+            var response = (HttpWebResponse)request.GetResponse();
+            var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
+            Console.WriteLine(responseString);
+        }
+    }
+}
diff --git a/tools/src/ABIChecker/Properties/launchSettings.json b/tools/src/ABIChecker/Properties/launchSettings.json
new file mode 100644 (file)
index 0000000..5929676
--- /dev/null
@@ -0,0 +1,8 @@
+{
+  "profiles": {
+    "Checker_ABI": {
+      "commandName": "Project",
+      "commandLineArgs": "-p c:/base/bin/public -b c:/target/bin/public"
+    }
+  }
+}
\ No newline at end of file
diff --git a/tools/src/ABIChecker/Utilities/ObjectUtil.cs b/tools/src/ABIChecker/Utilities/ObjectUtil.cs
new file mode 100644 (file)
index 0000000..e5c8baa
--- /dev/null
@@ -0,0 +1,181 @@
+using System;
+using System.Reflection;
+
+namespace Checker_ABI.Utilities
+{
+    /// -----------------------------------------------------------------------
+    /// <summary>  
+    /// This utility class contains a rich sets of utility methods that perform operations 
+    /// on objects during runtime such as copying of property and field values
+    /// between 2 objects, deep cloning of objects, etc.  
+    /// </summary>
+    /// -----------------------------------------------------------------------
+    public abstract class ObjectUtils
+    {
+        /// <summary>
+        /// Deep Comparison two objects if they are alike. The objects are consider alike if 
+        /// they are:
+        /// <list type="ordered">
+        ///    <item>of the same <see cref="System.Type"/>,</item>
+        ///    <item>have the same number of methods, properties and fields</item>
+        ///    <item>the public and private properties and fields values reflect each other's. </item>
+        /// </list>
+        /// </summary>
+        /// <param name="original"></param>
+        /// <param name="comparedToObject"></param>
+        /// <returns></returns>
+        public static bool IsALike(object original, object comparedToObject)
+        {
+
+            if (original.GetType() != comparedToObject.GetType())
+                return false;
+
+            // ...............................................
+            // Compare Number of Private and public Methods
+            // ...............................................
+            MethodInfo[] originalMethods = original
+              .GetType()
+              .GetMethods(BindingFlags.Instance |
+              BindingFlags.NonPublic |
+              BindingFlags.Public);
+
+            MethodInfo[] comparedMethods = comparedToObject
+              .GetType()
+              .GetMethods(BindingFlags.Instance |
+              BindingFlags.NonPublic |
+              BindingFlags.Public);
+
+            if (comparedMethods.Length != originalMethods.Length)
+                return false;
+
+            // ...............................................
+            // Compare Number of Private and public Properties
+            // ................................................
+            PropertyInfo[] originalProperties = original
+              .GetType()
+              .GetProperties(BindingFlags.Instance |
+              BindingFlags.NonPublic |
+              BindingFlags.Public);
+
+            PropertyInfo[] comparedProperties = comparedToObject
+              .GetType()
+              .GetProperties(BindingFlags.Instance |
+              BindingFlags.NonPublic |
+              BindingFlags.Public);
+
+
+            if (comparedProperties.Length != originalProperties.Length)
+                return false;
+
+
+            // ...........................................
+            // Compare number of public and private fields
+            // ...........................................
+            FieldInfo[] originalFields = original
+              .GetType()
+              .GetFields(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
+
+            FieldInfo[] comparedToFields = comparedToObject
+              .GetType()
+              .GetFields(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
+
+
+            if (comparedToFields.Length != originalFields.Length)
+                return false;
+
+            // ........................................
+            // compare field values
+            // ........................................
+            foreach (FieldInfo fi in originalFields)
+            {
+
+                // check to see if the object to contains the field          
+                FieldInfo fiComparedObj = comparedToObject.GetType().GetField(fi.Name, BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
+
+                if (fiComparedObj == null)
+                    return false;
+
+                // Get the value of the field from the original object        
+                Object srcValue = original.GetType().InvokeMember(fi.Name,
+                  BindingFlags.GetField | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public,
+                  null,
+                  original,
+                  null);
+
+
+
+                // Get the value of the field
+                object comparedObjFieldValue = comparedToObject
+                  .GetType()
+                  .InvokeMember(fiComparedObj.Name,
+                  BindingFlags.GetField | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public,
+                  null,
+                  comparedToObject,
+                  null);
+
+
+                // -------------------------------
+                // now compare the field values
+                // -------------------------------
+
+                if (srcValue == null)
+                {
+                    if (comparedObjFieldValue != null)
+                        return false;
+                    else
+                        return true;
+                }
+
+                if (srcValue.GetType() != comparedObjFieldValue.GetType())
+                    return false;
+
+                if (!srcValue.ToString().Equals(comparedObjFieldValue.ToString()))
+                    return false;
+            }
+
+            // ........................................
+            // compare each Property values
+            // ........................................
+            foreach (PropertyInfo pi in originalProperties)
+            {
+
+                // check to see if the object to contains the field          
+                PropertyInfo piComparedObj = comparedToObject
+                  .GetType()
+                  .GetProperty(pi.Name, BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
+
+                if (piComparedObj == null)
+                    return false;
+
+                // Get the value of the property from the original object        
+                Object srcValue = original
+                  .GetType()
+                  .InvokeMember(pi.Name,
+                  BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public,
+                  null,
+                  original,
+                  null);
+
+                // Get the value of the property
+                object comparedObjValue = comparedToObject
+                  .GetType()
+                  .InvokeMember(piComparedObj.Name,
+                  BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public,
+                  null,
+                  comparedToObject,
+                  null);
+
+
+                // -------------------------------
+                // now compare the property values
+                // -------------------------------
+                if (srcValue.GetType() != comparedObjValue.GetType())
+                    return false;
+
+                if (!srcValue.ToString().Equals(comparedObjValue.ToString()))
+                    return false;
+            }
+            return true;
+        }
+    }
+}
diff --git a/tools/src/ABIChecker/Utilities/ReflectionExtension.cs b/tools/src/ABIChecker/Utilities/ReflectionExtension.cs
new file mode 100644 (file)
index 0000000..de4db85
--- /dev/null
@@ -0,0 +1,23 @@
+using System;
+using System.Linq;
+using System.Reflection;
+
+namespace Checker_ABI.Utilities
+{
+    public static class ReflectionExtension
+    {
+        public static bool IsOverride(this MethodInfo method)
+        {
+            if (method == null) throw new ArgumentNullException();
+            return method.DeclaringType != method.GetBaseDefinition().DeclaringType;
+        }
+
+        public static bool AreMethodsEqualForDeclaringType(MethodInfo first, MethodInfo second)
+        {
+            first = first.ReflectedType == first.DeclaringType ? first : first.DeclaringType.GetMethod(first.Name, first.GetParameters().Select(p => p.ParameterType).ToArray());
+            second = second.ReflectedType == second.DeclaringType ? second : second.DeclaringType.GetMethod(second.Name, second.GetParameters().Select(p => p.ParameterType).ToArray());
+            return first == second;
+        }
+
+    }
+}
diff --git a/tools/src/GenDummy.CommandLine/GenDummy.CommandLine.csproj b/tools/src/GenDummy.CommandLine/GenDummy.CommandLine.csproj
new file mode 100644 (file)
index 0000000..8935e7c
--- /dev/null
@@ -0,0 +1,16 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <OutputType>Exe</OutputType>
+    <TargetFramework>netcoreapp2.0</TargetFramework>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="CommandLineParser" Version="2.2.1" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\GenDummy\GenDummy.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/tools/src/GenDummy.CommandLine/Options.cs b/tools/src/GenDummy.CommandLine/Options.cs
new file mode 100644 (file)
index 0000000..3a98903
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using CommandLine;
+
+namespace GenDummy.CommandLine
+{
+    class Options
+    {
+        public Options()
+        {
+            IsMultiple = false;
+        }
+
+        [Option('v', "verbose", Default = false, HelpText = "Print verbose messages.")]
+        public bool Verbose { get; set; }
+
+        [Value(0, MetaName = "InputPath", Required = true, HelpText = "Input file or directory to process.")]
+        public string InputPath { get; set; }
+
+        [Value(1, MetaName = "OutputPath", HelpText = "Output path for generated files.")]
+        public string OutputPath { get; set; }
+
+        public bool IsMultiple { get; set; }
+    }
+}
diff --git a/tools/src/GenDummy.CommandLine/Program.cs b/tools/src/GenDummy.CommandLine/Program.cs
new file mode 100644 (file)
index 0000000..7fdf256
--- /dev/null
@@ -0,0 +1,96 @@
+/*
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using System.IO;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+using CommandLine;
+
+namespace GenDummy.CommandLine
+{
+    class Program
+    {
+        FileInfo[] inputFiles;
+
+        public async Task Run(Options options)
+        {
+            if (Directory.Exists(options.InputPath))
+            {
+                options.IsMultiple = true;
+            }
+
+            if (options.IsMultiple)
+            {
+                if (string.IsNullOrEmpty(options.OutputPath) || !Directory.Exists(options.OutputPath))
+                {
+                    ExitWithError("Directory should be set as the output path.");
+                }
+                DirectoryInfo inputDirInfo = new DirectoryInfo(options.InputPath);
+                inputFiles = inputDirInfo.GetFiles("*.cs", SearchOption.AllDirectories);
+            }
+            else
+            {
+                if (!File.Exists(options.InputPath))
+                {
+                    ExitWithError("Couldn't find the input file : " + options.InputPath);
+                }
+                FileInfo fileInfo = new FileInfo(options.InputPath);
+                inputFiles = new FileInfo[] { fileInfo };
+            }
+
+            DummyProject project = new DummyProject();
+
+            Regex rgx = new Regex("^" + options.InputPath.Replace("\\", "\\\\"));
+            foreach (var f in inputFiles)
+            {
+                if (string.IsNullOrEmpty(options.OutputPath))
+                {
+                    await project.GenerateDummy(f.FullName);
+                }
+                else if (Directory.Exists(options.OutputPath))
+                {
+                    var outputFile = rgx.Replace(f.FullName, options.OutputPath);
+                    Directory.CreateDirectory(Path.GetDirectoryName(outputFile));
+                    await project.GenerateDummy(f.FullName, outputFile);
+                }
+                else
+                {
+                    await project.GenerateDummy(f.FullName, options.OutputPath);
+                }
+                
+                if (options.Verbose)
+                {
+                    Console.WriteLine($"Processed : {f.FullName}");
+                }
+            }
+        }
+
+        static void Main(string[] args)
+        {
+            Program program = new Program();
+            Parser.Default.ParseArguments<Options>(args)
+                .WithParsed(opts => program.Run(opts).Wait());
+        }
+
+        static void ExitWithError(string err)
+        {
+            Console.Error.WriteLine("Error: " + err);
+            Environment.Exit(1);
+        }
+
+    }
+}
diff --git a/tools/src/GenDummy.Tasks/GenDummy.Tasks.csproj b/tools/src/GenDummy.Tasks/GenDummy.Tasks.csproj
new file mode 100644 (file)
index 0000000..4ef13bd
--- /dev/null
@@ -0,0 +1,16 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>netstandard2.0</TargetFramework>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="Microsoft.Build.Framework" Version="15.3.409" />
+    <PackageReference Include="Microsoft.Build.Utilities.Core" Version="15.3.409" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\GenDummy\GenDummy.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/tools/src/GenDummy.Tasks/GenDummyTask.cs b/tools/src/GenDummy.Tasks/GenDummyTask.cs
new file mode 100644 (file)
index 0000000..2fc7963
--- /dev/null
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using System.IO;
+using System.Collections.Generic;
+using Microsoft.Build.Framework;
+using Microsoft.Build.Utilities;
+
+namespace GenDummy.Tasks
+{
+    public class GenDummyTask : ITask
+    {
+        readonly List<ITaskItem> _generatedFiles = new List<ITaskItem>();
+
+        public IBuildEngine BuildEngine { get; set; }
+        public ITaskHost HostObject { get; set; }
+
+        [Required]
+        public ITaskItem[] Sources { get; set; }
+
+        [Required]
+        public string OutputDirectory { get; set; }
+
+        [Output]
+        public ITaskItem[] GeneratedFiles => _generatedFiles.ToArray();
+
+        public bool Execute()
+        {
+            try
+            {
+                ExecuteCore().Wait();
+            } catch(Exception e)
+            {
+                Console.Error.WriteLine($"{e.ToString()} : {e.Message}");
+                return false;
+            }
+            return true;
+        }
+
+        public async System.Threading.Tasks.Task ExecuteCore()
+        {
+            if (string.IsNullOrEmpty(OutputDirectory))
+            {
+                throw new ArgumentException("OutputDirectory is not set.");
+            }
+
+            DummyProject project = new DummyProject();
+
+            foreach (var source in Sources)
+            {
+                string sourceFile = source.ItemSpec;
+                if (!File.Exists(sourceFile))
+                {
+                    throw new FileNotFoundException(sourceFile);
+                }
+                
+                string generatedFile = Path.Combine(OutputDirectory, sourceFile);
+
+                string targetDirectory = Path.GetDirectoryName(generatedFile);
+                Directory.CreateDirectory(targetDirectory);
+
+                await project.GenerateDummy(source.ItemSpec, generatedFile);
+                _generatedFiles.Add(new TaskItem(generatedFile));
+            }
+        }
+    }
+}
diff --git a/tools/src/GenDummy/.editorconfig b/tools/src/GenDummy/.editorconfig
new file mode 100644 (file)
index 0000000..d59a020
--- /dev/null
@@ -0,0 +1,39 @@
+# To learn more about .editorconfig see https://aka.ms/editorconfigdocs
+root = true
+
+# All files
+[*]
+indent_style = space
+
+# Code files
+[*.{cs,csx,vb,vbx}]
+indent_size = 4
+end_of_line = lf
+
+# Xml files
+[*.xml]
+indent_size = 2
+
+# Dotnet code style
+[*.{cs,vb}]
+# Organize usings
+dotnet_sort_system_directives_first = true
+
+# Avoid this. unless absolutely necessary
+dotnet_style_qualification_for_field = false:suggestion
+dotnet_style_qualification_for_property = false:suggestion
+dotnet_style_qualification_for_method = false:suggestion
+dotnet_style_qualification_for_event = false:suggestion
+
+# Use language keywords instead of BCL types
+dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
+dotnet_style_predefined_type_for_member_access = true:suggestion
+
+# Naming conventions
+dotnet_naming_style.pascal_case_style.capitalization        = pascal_case
+# Classes, structs, methods, enums, events, properties, namespaces, delegates must be PascalCase
+dotnet_naming_rule.general_naming.severity                  = suggestion
+dotnet_naming_rule.general_naming.symbols                   = general
+dotnet_naming_rule.general_naming.style                     = pascal_case_style
+dotnet_naming_symbols.general.applicable_kinds              = class,struct,enum,property,method,event,namespace,delegate
+dotnet_naming_symbols.general.applicable_accessibilities    = *
diff --git a/tools/src/GenDummy/DummyProject.cs b/tools/src/GenDummy/DummyProject.cs
new file mode 100644 (file)
index 0000000..50e0755
--- /dev/null
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using GenDummy.Processors;
+using Microsoft.CodeAnalysis;
+using Microsoft.CodeAnalysis.CSharp.Syntax;
+using Microsoft.CodeAnalysis.Editing;
+using Microsoft.CodeAnalysis.Text;
+using System;
+using System.IO;
+using System.Threading.Tasks;
+
+namespace GenDummy
+{
+    public class DummyProject
+    {
+        readonly Project _project;
+        readonly IProcessor _processor;
+
+        public DummyProject()
+        {
+            AdhocWorkspace workSpace = new AdhocWorkspace();
+            ProjectInfo projectInfo = ProjectInfo.Create(ProjectId.CreateNewId(), VersionStamp.Create(), "DummyProject", "DummyAssembly", LanguageNames.CSharp);
+            _project = workSpace.AddProject(projectInfo);
+
+            _processor = new DummyProcessor();
+        }
+
+        public Task GenerateDummy(string source, string dest = null)
+        {
+            if (string.IsNullOrEmpty(source))
+                throw new ArgumentNullException("source");
+
+            return GenerateDummyInternal(source, dest);
+        }
+
+        async Task GenerateDummyInternal(string source, string dest = null)
+        {
+            var sourceText = File.ReadAllText(source);
+            var document = _project.AddDocument(Path.GetFileName(source), SourceText.From(sourceText));
+            document = await UpdateMembers(document);
+            var destText = await document.GetTextAsync();
+
+            string destPath = dest;
+            if (string.IsNullOrEmpty(dest))
+            {
+                destPath = Path.ChangeExtension(source, "dummy.cs");
+            }
+            File.WriteAllText(destPath, destText.ToString());
+        }
+        
+        async Task<Document> UpdateMembers(Document document)
+        {
+            var documentRoot = (CompilationUnitSyntax)await document.GetSyntaxRootAsync();
+            var editor = await DocumentEditor.CreateAsync(document);
+
+            foreach (var member in documentRoot.DescendantNodes())
+            {
+                var newMember = _processor.Process(member as MemberDeclarationSyntax);
+                if (newMember != null)
+                {
+                    editor.ReplaceNode(member, newMember);
+                }
+            }
+            return editor.GetChangedDocument();
+        }
+    }
+}
diff --git a/tools/src/GenDummy/GenDummy.csproj b/tools/src/GenDummy/GenDummy.csproj
new file mode 100644 (file)
index 0000000..99269d5
--- /dev/null
@@ -0,0 +1,9 @@
+<Project Sdk="Microsoft.NET.Sdk">
+  <PropertyGroup>
+    <TargetFramework>netstandard2.0</TargetFramework>
+    <NoWarn>$(NoWarn);NU1701</NoWarn>
+  </PropertyGroup>
+  <ItemGroup>
+    <PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="2.1.0" />
+  </ItemGroup>
+</Project>
diff --git a/tools/src/GenDummy/Processors/ConstructorProcessor.cs b/tools/src/GenDummy/Processors/ConstructorProcessor.cs
new file mode 100644 (file)
index 0000000..f46cc6c
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using Microsoft.CodeAnalysis;
+using Microsoft.CodeAnalysis.CSharp;
+using Microsoft.CodeAnalysis.CSharp.Syntax;
+
+namespace GenDummy.Processors
+{
+    public class ConstructorProcessor : IProcessor
+    {
+        public BlockSyntax DummyBlock { get; set; }
+
+        public MemberDeclarationSyntax Process(MemberDeclarationSyntax member)
+        {
+            MemberDeclarationSyntax newMember = null;
+
+            if (!(member is ConstructorDeclarationSyntax constructor))
+            {
+                return null;
+            }
+
+            if (constructor.Modifiers.ToString().Contains("static"))
+            {
+                newMember = constructor.WithBody(SyntaxFactory.Block()).WithTrailingTrivia(SyntaxFactory.Whitespace("\r\n"));
+            }
+            else
+            {
+                newMember = constructor.WithBody(DummyBlock).WithTrailingTrivia(SyntaxFactory.Whitespace("\r\n"));
+            }
+
+            return newMember;
+        }
+    }
+}
diff --git a/tools/src/GenDummy/Processors/DestructorProcessor.cs b/tools/src/GenDummy/Processors/DestructorProcessor.cs
new file mode 100644 (file)
index 0000000..54e3d7a
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using Microsoft.CodeAnalysis;
+using Microsoft.CodeAnalysis.CSharp;
+using Microsoft.CodeAnalysis.CSharp.Syntax;
+
+namespace GenDummy.Processors
+{
+    public class DestructorProcessor : IProcessor
+    {
+        public BlockSyntax DummyBlock { get; set; }
+
+        public MemberDeclarationSyntax Process(MemberDeclarationSyntax member)
+        {
+            MemberDeclarationSyntax newMember = null;
+
+            if (!(member is DestructorDeclarationSyntax destructor))
+            {
+                return null;
+            }
+
+            newMember = destructor.WithBody(SyntaxFactory.Block()).WithTrailingTrivia(SyntaxFactory.Whitespace("\r\n"));
+
+            return newMember;
+        }
+    }
+}
diff --git a/tools/src/GenDummy/Processors/DummyProcessor.cs b/tools/src/GenDummy/Processors/DummyProcessor.cs
new file mode 100644 (file)
index 0000000..9b5d2f0
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using Microsoft.CodeAnalysis.CSharp;
+using Microsoft.CodeAnalysis.CSharp.Syntax;
+using System.Collections.Generic;
+
+namespace GenDummy.Processors
+{
+    public class DummyProcessor : IProcessor
+    {
+        readonly List<IProcessor> _processors;
+
+        public BlockSyntax DummyBlock { get; set; }
+
+        public DummyProcessor()
+        {
+            _processors = new List<IProcessor>
+            {
+                new ConstructorProcessor(),
+                new DestructorProcessor(),
+                new PropertyProcessor(),
+                new MethodProcessor(),
+                new EventProcessor()
+            };
+
+            DummyBlock = SyntaxFactory.Block(statements: SyntaxFactory.ParseStatement("throw new global::System.PlatformNotSupportedException(\"Not Supported Feature\");"));
+            foreach (var processor in _processors)
+            {
+                processor.DummyBlock = DummyBlock;
+            }
+        }
+
+        public MemberDeclarationSyntax Process(MemberDeclarationSyntax member)
+        {
+            MemberDeclarationSyntax newMember = null;
+            foreach (var processor in _processors)
+            {
+                newMember = processor.Process(member);
+                if (newMember != null)
+                {
+                    break;
+                }
+            }
+            return newMember;
+        }
+    }
+}
diff --git a/tools/src/GenDummy/Processors/EventProcessor.cs b/tools/src/GenDummy/Processors/EventProcessor.cs
new file mode 100644 (file)
index 0000000..9226580
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using Microsoft.CodeAnalysis;
+using Microsoft.CodeAnalysis.CSharp;
+using Microsoft.CodeAnalysis.CSharp.Syntax;
+using System.Collections.Generic;
+
+namespace GenDummy.Processors
+{
+    public class EventProcessor : IProcessor
+    {
+        public BlockSyntax DummyBlock { get; set; }
+
+        public MemberDeclarationSyntax Process(MemberDeclarationSyntax member)
+        {
+            MemberDeclarationSyntax newMember = null;
+
+            if (!(member is EventDeclarationSyntax ev))
+            {
+                return null;
+            }
+
+            if (ev.AccessorList != null)
+            {
+                List<AccessorDeclarationSyntax> newAccessorSyntaxList = new List<AccessorDeclarationSyntax>();
+                foreach (var accessor in ev.AccessorList.Accessors)
+                {
+                    var newAccessor = accessor.WithBody(DummyBlock).WithSemicolonToken(new SyntaxToken()).WithTrailingTrivia(SyntaxFactory.Whitespace("\r\n"));
+                    newAccessorSyntaxList.Add(newAccessor);
+                }
+
+                var newaccessorListSyntax = SyntaxFactory.AccessorList().AddAccessors(newAccessorSyntaxList.ToArray());
+                newMember = ev.WithAccessorList(newaccessorListSyntax.WithTrailingTrivia(SyntaxFactory.Whitespace("\r\n")));
+            }
+
+            return newMember;
+        }
+    }
+}
diff --git a/tools/src/GenDummy/Processors/IProcessor.cs b/tools/src/GenDummy/Processors/IProcessor.cs
new file mode 100644 (file)
index 0000000..96df417
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using Microsoft.CodeAnalysis.CSharp.Syntax;
+
+namespace GenDummy.Processors
+{
+    public interface IProcessor
+    {
+        BlockSyntax DummyBlock { get; set; }
+
+        MemberDeclarationSyntax Process(MemberDeclarationSyntax member);
+    }
+}
diff --git a/tools/src/GenDummy/Processors/MethodProcessor.cs b/tools/src/GenDummy/Processors/MethodProcessor.cs
new file mode 100644 (file)
index 0000000..4339f22
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using Microsoft.CodeAnalysis;
+using Microsoft.CodeAnalysis.CSharp;
+using Microsoft.CodeAnalysis.CSharp.Syntax;
+
+namespace GenDummy.Processors
+{
+    public class MethodProcessor : IProcessor
+    {
+        public BlockSyntax DummyBlock { get; set; }
+
+        public MemberDeclarationSyntax Process(MemberDeclarationSyntax member)
+        {
+            MemberDeclarationSyntax newMember = null;
+
+            if (!(member is MethodDeclarationSyntax method))
+            {
+                return null;
+            }
+
+            if (method.Modifiers.ToString().Contains("override") || method.Modifiers.ToString().Contains("abstract")
+                || method.Modifiers.ToString().Contains("private") || method.Modifiers.ToString().Contains("internal")
+                || method.Modifiers.ToString().Contains("extern") || method.Parent is InterfaceDeclarationSyntax)
+            {
+                return null;
+            }
+
+            if (method.Body != null)
+            {
+                newMember = method.WithBody(DummyBlock).WithTrailingTrivia(SyntaxFactory.Whitespace("\r\n"));
+            }
+
+            return newMember;
+        }
+    }
+}
diff --git a/tools/src/GenDummy/Processors/PropertyProcessor.cs b/tools/src/GenDummy/Processors/PropertyProcessor.cs
new file mode 100644 (file)
index 0000000..946dabd
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using Microsoft.CodeAnalysis;
+using Microsoft.CodeAnalysis.CSharp;
+using Microsoft.CodeAnalysis.CSharp.Syntax;
+using System.Collections.Generic;
+
+namespace GenDummy.Processors
+{
+    public class PropertyProcessor : IProcessor
+    {
+        public BlockSyntax DummyBlock { get; set; }
+
+        public MemberDeclarationSyntax Process(MemberDeclarationSyntax member)
+        {
+            MemberDeclarationSyntax newMember = null;
+
+            if (!(member is PropertyDeclarationSyntax property))
+            {
+                return null;
+            }
+
+            if (property.Modifiers.ToString().Contains("abstract") || property.Modifiers.ToString().Contains("override")
+                || property.Modifiers.ToString().Contains("internal") || property.Modifiers.ToString().Contains("private")
+                || property.Parent is InterfaceDeclarationSyntax)
+            {
+                return null;
+            }
+
+            if (property.AccessorList != null)
+            {
+                List<AccessorDeclarationSyntax> newAccessorSyntaxList = new List<AccessorDeclarationSyntax>();
+                foreach (var accessor in property.AccessorList.Accessors)
+                {
+                    var newAccessor = accessor.WithBody(DummyBlock).WithSemicolonToken(new SyntaxToken()).WithTrailingTrivia(SyntaxFactory.Whitespace("\r\n"));
+                    if (newAccessor.ExpressionBody != null)
+                        newAccessor = newAccessor.WithExpressionBody(null);
+                    newAccessorSyntaxList.Add(newAccessor);
+                }
+
+                var newaccessorListSyntax = SyntaxFactory.AccessorList().AddAccessors(newAccessorSyntaxList.ToArray());
+                newMember = property.WithAccessorList(newaccessorListSyntax.WithTrailingTrivia(SyntaxFactory.Whitespace("\r\n")))
+                    .WithInitializer(null).WithSemicolonToken(new SyntaxToken());
+            }
+
+            return newMember;
+        }
+    }
+}
diff --git a/tools/src/Tools.sln b/tools/src/Tools.sln
new file mode 100644 (file)
index 0000000..c8ced8c
--- /dev/null
@@ -0,0 +1,79 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+VisualStudioVersion = 15.0.26124.0
+MinimumVisualStudioVersion = 15.0.26124.0
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ABIChecker", "ABIChecker\ABIChecker.csproj", "{CBA86009-11E4-4DCC-A3D2-BF93040FE9B0}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GenDummy", "GenDummy\GenDummy.csproj", "{1E1A1D65-0455-4F29-A97B-5343F34418B5}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GenDummy.Tasks", "GenDummy.Tasks\GenDummy.Tasks.csproj", "{E9C95342-979E-4ACC-BB12-C7C85F7B84B2}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GenDummy.CommandLine", "GenDummy.CommandLine\GenDummy.CommandLine.csproj", "{0A8A3694-C87C-4131-ACBF-216E778142BA}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               Debug|Any CPU = Debug|Any CPU
+               Debug|x64 = Debug|x64
+               Debug|x86 = Debug|x86
+               Release|Any CPU = Release|Any CPU
+               Release|x64 = Release|x64
+               Release|x86 = Release|x86
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {CBA86009-11E4-4DCC-A3D2-BF93040FE9B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {CBA86009-11E4-4DCC-A3D2-BF93040FE9B0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {CBA86009-11E4-4DCC-A3D2-BF93040FE9B0}.Debug|x64.ActiveCfg = Debug|Any CPU
+               {CBA86009-11E4-4DCC-A3D2-BF93040FE9B0}.Debug|x64.Build.0 = Debug|Any CPU
+               {CBA86009-11E4-4DCC-A3D2-BF93040FE9B0}.Debug|x86.ActiveCfg = Debug|Any CPU
+               {CBA86009-11E4-4DCC-A3D2-BF93040FE9B0}.Debug|x86.Build.0 = Debug|Any CPU
+               {CBA86009-11E4-4DCC-A3D2-BF93040FE9B0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {CBA86009-11E4-4DCC-A3D2-BF93040FE9B0}.Release|Any CPU.Build.0 = Release|Any CPU
+               {CBA86009-11E4-4DCC-A3D2-BF93040FE9B0}.Release|x64.ActiveCfg = Release|Any CPU
+               {CBA86009-11E4-4DCC-A3D2-BF93040FE9B0}.Release|x64.Build.0 = Release|Any CPU
+               {CBA86009-11E4-4DCC-A3D2-BF93040FE9B0}.Release|x86.ActiveCfg = Release|Any CPU
+               {CBA86009-11E4-4DCC-A3D2-BF93040FE9B0}.Release|x86.Build.0 = Release|Any CPU
+               {1E1A1D65-0455-4F29-A97B-5343F34418B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {1E1A1D65-0455-4F29-A97B-5343F34418B5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {1E1A1D65-0455-4F29-A97B-5343F34418B5}.Debug|x64.ActiveCfg = Debug|Any CPU
+               {1E1A1D65-0455-4F29-A97B-5343F34418B5}.Debug|x64.Build.0 = Debug|Any CPU
+               {1E1A1D65-0455-4F29-A97B-5343F34418B5}.Debug|x86.ActiveCfg = Debug|Any CPU
+               {1E1A1D65-0455-4F29-A97B-5343F34418B5}.Debug|x86.Build.0 = Debug|Any CPU
+               {1E1A1D65-0455-4F29-A97B-5343F34418B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {1E1A1D65-0455-4F29-A97B-5343F34418B5}.Release|Any CPU.Build.0 = Release|Any CPU
+               {1E1A1D65-0455-4F29-A97B-5343F34418B5}.Release|x64.ActiveCfg = Release|Any CPU
+               {1E1A1D65-0455-4F29-A97B-5343F34418B5}.Release|x64.Build.0 = Release|Any CPU
+               {1E1A1D65-0455-4F29-A97B-5343F34418B5}.Release|x86.ActiveCfg = Release|Any CPU
+               {1E1A1D65-0455-4F29-A97B-5343F34418B5}.Release|x86.Build.0 = Release|Any CPU
+               {E9C95342-979E-4ACC-BB12-C7C85F7B84B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {E9C95342-979E-4ACC-BB12-C7C85F7B84B2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {E9C95342-979E-4ACC-BB12-C7C85F7B84B2}.Debug|x64.ActiveCfg = Debug|Any CPU
+               {E9C95342-979E-4ACC-BB12-C7C85F7B84B2}.Debug|x64.Build.0 = Debug|Any CPU
+               {E9C95342-979E-4ACC-BB12-C7C85F7B84B2}.Debug|x86.ActiveCfg = Debug|Any CPU
+               {E9C95342-979E-4ACC-BB12-C7C85F7B84B2}.Debug|x86.Build.0 = Debug|Any CPU
+               {E9C95342-979E-4ACC-BB12-C7C85F7B84B2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {E9C95342-979E-4ACC-BB12-C7C85F7B84B2}.Release|Any CPU.Build.0 = Release|Any CPU
+               {E9C95342-979E-4ACC-BB12-C7C85F7B84B2}.Release|x64.ActiveCfg = Release|Any CPU
+               {E9C95342-979E-4ACC-BB12-C7C85F7B84B2}.Release|x64.Build.0 = Release|Any CPU
+               {E9C95342-979E-4ACC-BB12-C7C85F7B84B2}.Release|x86.ActiveCfg = Release|Any CPU
+               {E9C95342-979E-4ACC-BB12-C7C85F7B84B2}.Release|x86.Build.0 = Release|Any CPU
+               {0A8A3694-C87C-4131-ACBF-216E778142BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {0A8A3694-C87C-4131-ACBF-216E778142BA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {0A8A3694-C87C-4131-ACBF-216E778142BA}.Debug|x64.ActiveCfg = Debug|Any CPU
+               {0A8A3694-C87C-4131-ACBF-216E778142BA}.Debug|x64.Build.0 = Debug|Any CPU
+               {0A8A3694-C87C-4131-ACBF-216E778142BA}.Debug|x86.ActiveCfg = Debug|Any CPU
+               {0A8A3694-C87C-4131-ACBF-216E778142BA}.Debug|x86.Build.0 = Debug|Any CPU
+               {0A8A3694-C87C-4131-ACBF-216E778142BA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {0A8A3694-C87C-4131-ACBF-216E778142BA}.Release|Any CPU.Build.0 = Release|Any CPU
+               {0A8A3694-C87C-4131-ACBF-216E778142BA}.Release|x64.ActiveCfg = Release|Any CPU
+               {0A8A3694-C87C-4131-ACBF-216E778142BA}.Release|x64.Build.0 = Release|Any CPU
+               {0A8A3694-C87C-4131-ACBF-216E778142BA}.Release|x86.ActiveCfg = Release|Any CPU
+               {0A8A3694-C87C-4131-ACBF-216E778142BA}.Release|x86.Build.0 = Release|Any CPU
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+       GlobalSection(ExtensibilityGlobals) = postSolution
+               SolutionGuid = {66FC1898-9E04-4FCD-B673-23168371658A}
+       EndGlobalSection
+EndGlobal