diff --git a/tests/fsharp/typeProviders/samples/TypePassing/Erasing/.paket/Paket.Restore.targets b/tests/fsharp/typeProviders/samples/TypePassing/Erasing/.paket/Paket.Restore.targets new file mode 100644 index 00000000000..87814bb747e --- /dev/null +++ b/tests/fsharp/typeProviders/samples/TypePassing/Erasing/.paket/Paket.Restore.targets @@ -0,0 +1,42 @@ + + + + true + $(MSBuildThisFileDirectory) + /Library/Frameworks/Mono.framework/Commands/mono + mono + + $(PaketRootPath)paket.exe + $(PaketToolsPath)paket.exe + "$(PaketExePath)" + $(MonoPath) --runtime=v4.0.30319 "$(PaketExePath)" + + + + + + + + $(MSBuildProjectDirectory)/obj/$(MSBuildProjectFile).references + + + + + + + + + $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[0]) + $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[1]) + + + %(PaketReferencesFileLinesInfo.PackageVersion) + + + + + $(MSBuildProjectDirectory)/obj/$(MSBuildProjectFile).NuGet.Config + + + + \ No newline at end of file diff --git a/tests/fsharp/typeProviders/samples/TypePassing/Erasing/.paket/paket.targets b/tests/fsharp/typeProviders/samples/TypePassing/Erasing/.paket/paket.targets new file mode 100644 index 00000000000..22c9f0a87aa --- /dev/null +++ b/tests/fsharp/typeProviders/samples/TypePassing/Erasing/.paket/paket.targets @@ -0,0 +1,38 @@ + + + + + true + + true + $(MSBuildThisFileDirectory) + $(MSBuildThisFileDirectory)..\ + + + + $(PaketToolsPath)paket.exe + $(PaketToolsPath)paket.bootstrapper.exe + "$(PaketExePath)" + mono --runtime=v4.0.30319 $(PaketExePath) + "$(PaketBootStrapperExePath)" + mono --runtime=v4.0.30319 $(PaketBootStrapperExePath) + + $(MSBuildProjectDirectory)\paket.references + $(MSBuildProjectFullPath).paket.references + $(PaketCommand) restore --references-files "$(PaketReferences)" + $(PaketBootStrapperCommand) + + RestorePackages; $(BuildDependsOn); + + + + + + + + + + + + + diff --git a/tests/fsharp/typeProviders/samples/TypePassing/Erasing/script.fsx b/tests/fsharp/typeProviders/samples/TypePassing/Erasing/script.fsx index 6bd5a598256..3e96b3625fa 100644 --- a/tests/fsharp/typeProviders/samples/TypePassing/Erasing/script.fsx +++ b/tests/fsharp/typeProviders/samples/TypePassing/Erasing/script.fsx @@ -1,14 +1,164 @@ -#r "type_passing_tp/bin/Debug/type_passing_tp.dll" +#r "../../../../../../Debug/net40/bin/type_passing_tp.dll" +open FSharp.Reflection open Test type MyRecord = { Id: string } - member x.TestInstanceMember(y:string) = y - static member TestStaticMember(y:string) = y + member x.TestInstanceProperty = 1 + member x.TestInstanceMethod(y:string) = y + static member TestStaticMethod(y:string) = y + static member TestStaticProperty = 2 -type Test = TypePassing.TypePassingTP +type MyUnion = + | A of int + | B of string + member x.TestInstanceProperty = 1 + member x.TestInstanceMethod(y:string) = y + static member TestStaticMethod(y:string) = y + static member TestStaticProperty = 2 -type Test2 = TypePassing.TypePassingTP -type Test3 = TypePassing.TypePassingTP +let mutable failures = [] + +let check nm v1 v2 = + if v1 = v2 then printfn "%s: PASSED" nm + else + failures <- failures @ [nm] + printfn "\n*** %s: FAILED, expected %A, got %A\n" nm v2 v1 + +let inaccurate nm v1 v2 v3 = + if v1 = v2 then printfn "%s: PASSED (was failing, now passing)" nm + elif v1 = v3 then printfn "%s: PASSED (inaccurate), expected %A, allowing %A" nm v2 v1 + else + failures <- failures @ [nm] + printfn "\n*** %s: FAILED, expected %A, got %A, would have accepted %A\n" nm v2 v1 v3 + +// Check an F# record type from this assembly +module MyRecord = + let T = typeof + type S = TypePassing.Summarize + check "cnkewcwpo1" S.Name T.Name + inaccurate "cnkewcwpo2" S.Assembly_DefinedTypes_Count (Seq.length T.Assembly.DefinedTypes) 0 // INACCURACY: this is wrong value, not sure why + inaccurate "cnkewcwpo3" S.Assembly_FullName T.FullName "script" // INACCURACY: the full name is not returned + check "cnkewcwpo3" S.IsAbstract T.IsAbstract + check "cnkewcwpo3" S.IsAnsiClass T.IsAnsiClass + check "cnkewcwpo3" S.IsArray T.IsArray + check "cnkewcwpo4" S.IsClass T.IsClass + inaccurate "cnkewcwpo5a" S.IsPublic T.IsPublic true // INACCURACY: This should report "false", and IsNestedPublic should report "true" + inaccurate "cnkewcwpo5b" S.IsNestedPublic T.IsNestedPublic false // INACCURACY: This should report "true", and IsPublic should report "false" + check "cnkewcwpo6" S.IsNotPublic T.IsNotPublic + check "cnkewcwpo7" S.IsValueType T.IsValueType + check "cnkewcwpo8" S.IsInterface T.IsInterface + inaccurate "cnkewcwpo9" S.IsRecord (FSharpType.IsRecord(T)) false // INACCURACY: Getting FSharp.Core reflection to give the right answer here is a tricky as it looks for attributes that aren't in the TAST + check "cnkewcwpo10" S.IsFunction (FSharpType.IsFunction(T)) + check "cnkewcwpo11" S.IsModule (FSharpType.IsModule(T)) + check "cnkewcwpo12" S.IsExceptionRepresentation (FSharpType.IsExceptionRepresentation(T)) + check "cnkewcwpo13" S.IsTuple (FSharpType.IsTuple(T)) + check "cnkewcwpo14" S.IsUnion (FSharpType.IsUnion(T)) + inaccurate "cnkewcwpo15" S.GetPublicProperties_Length (T.GetProperties().Length) 2 // INACCURACY: this should also report the properties for the F# record fields (which are not in the TAST unfortunately) + inaccurate "cnkewcwpo16" S.GetPublicConstructors_Length (T.GetConstructors().Length) 0 // INACCURACY: this should also report the constructor for the F# record type + inaccurate "cnkewcwpo17" S.GetPublicMethods_Length (T.GetMethods().Length) 4 // INACCURACY: like GetProperties, this should report the getter methods for the properties for the F# record fields (which are not in the TAST unfortunately) +#if CURRENTLY_GIVES_COMPILATION_ERROR_NEED_TO_CHECK_IF_EXPECTED + check "cnkewcwpo18" S.Assembly_EntryPoint_isNull true + check "cnkewcwpo19" S.GUID "" + check "cnkewcwpo20" (try S.Assembly_CodeBase; false with _ -> true) true + check "cnkewcwpo21" S.Assembly_CustomAttributes_Count 0 +#endif + // TODO: rest of System.Type properties and methods + // TODO: reset of FSharp Reflection methods + + +// Check an F# record type from this assembly +module MyUnion = + let T = typeof + type S = TypePassing.Summarize + check "unkewcwpo1" S.Name T.Name + inaccurate "unkewcwpo2" S.Assembly_DefinedTypes_Count (Seq.length T.Assembly.DefinedTypes) 0 // INACCURACY: this is wrong value, not sure why + inaccurate "unkewcwpo3" S.Assembly_FullName T.FullName "script" // INACCURACY: the full name is not returned + inaccurate "unkewcwpo3a" S.IsAbstract T.IsAbstract false // INACCURACY: reports "false", but "true" is expected for the base class of a union type (but depends on representation of union etc.) + inaccurate "unkewcwpo3b" S.IsAnsiClass T.IsAnsiClass true // INACCURACY: reports "true", but "false" is expected, not at all important though + check "unkewcwpo3c" S.IsArray T.IsArray + check "unkewcwpo4" S.IsClass T.IsClass + inaccurate "unkewcwpo5a" S.IsPublic T.IsPublic true // INACCURACY: This should report "false", and IsNestedPublic should report "true" + inaccurate "unkewcwpo5b" S.IsNestedPublic T.IsNestedPublic false // INACCURACY: This should report "true", and IsPublic should report "false" + check "unkewcwpo6" S.IsNotPublic T.IsNotPublic + check "unkewcwpo7" S.IsValueType T.IsValueType + check "unkewcwpo8" S.IsInterface T.IsInterface + check "unkewcwpo9" S.IsRecord (FSharpType.IsRecord(T)) + check "unkewcwpo10" S.IsFunction (FSharpType.IsFunction(T)) + check "unkewcwpo11" S.IsModule (FSharpType.IsModule(T)) + check "unkewcwpo12" S.IsExceptionRepresentation (FSharpType.IsExceptionRepresentation(T)) + check "unkewcwpo13" S.IsTuple (FSharpType.IsTuple(T)) + inaccurate "unkewcwpo14" S.IsUnion (FSharpType.IsUnion(T)) false // INACCURACY: Getting FSharp.Core reflection to give the right answer here is a tricky as it looks for attributes that aren't in the TAST + inaccurate "unkewcwpo15" S.GetPublicProperties_Length (T.GetProperties().Length) 2 // INACCURACY: this should also report the properties for the F# record fields (which are not in the TAST unfortunately) + check "unkewcwpo16" S.GetPublicConstructors_Length (T.GetConstructors().Length) 0 + inaccurate "unkewcwpo17" S.GetPublicMethods_Length (T.GetMethods().Length) 4 // INACCURACY: like GetProperties, this should report the getter methods for the properties for the F# record fields (which are not in the TAST unfortunately) +#if CURRENTLY_GIVES_COMPILATION_ERROR_NEED_TO_CHECK_IF_EXPECTED + check "unkewcwpo18" S.Assembly_EntryPoint_isNull true + check "unkewcwpo19" S.GUID "" + check "unkewcwpo20" (try S.Assembly_CodeBase; false with _ -> true) true + check "unkewcwpo21" S.Assembly_CustomAttributes_Count 0 +#endif + // TODO: rest of System.Type properties and methods + // TODO: reset of FSharp Reflection methods + + + +// Check a .NET interface from a system assembly +module IComparable = + let T = typeof + type S = TypePassing.Summarize + check "inkewcwpo1i1" S.Name T.Name + check "inkewcwpo1i2" S.FullName T.FullName + check "inkewcwpo1i3" S.IsInterface T.IsInterface + check "inkewcwpo1i4" S.IsClass T.IsClass + check "inkewcwpo1i4" S.IsValueType T.IsValueType + check "inkewcwpo2i5" S.Assembly_FullName T.Assembly.FullName + +#if CURRENTLY_GIVES_COMPILATION_ERROR_NEED_TO_CHECK_IF_EXPECTED + check "inkewcwpo3i" S.Assembly_DefinedTypes_Count 0 + check "inkewcwpo4i" S.Assembly_EntryPoint_isNull true + check "inkewcwpo5i" S.GUID "" + check "inkewcwpo6i" (try S.Assembly_CodeBase; false with _ -> true) true + check "inkewcwpo7i" S.Assembly_CustomAttributes_Count 0 +#endif + + + +// Check a .NET primitive struct type from a system assembly +module Int32 = + let T = typeof + type S = TypePassing.Summarize + check "vnkewcwpo1v" S.Name T.Name + check "vnkewcwpo2v" S.FullName T.FullName + check "vnkewcwpo1i3" S.IsInterface T.IsInterface + check "vnkewcwpo1i4" S.IsClass T.IsClass + check "vnkewcwpo1i4" S.IsValueType T.IsValueType + check "vnkewcwpo3v" S.Assembly_FullName T.Assembly.FullName + +#if CURRENTLY_GIVES_COMPILATION_ERROR_NEED_TO_CHECK_IF_EXPECTED + check "vnkewcwpo4v" S.Assembly_DefinedTypes_Count 0 +#endif + +module int32_abbreviation = + let T = typeof + type S = TypePassing.Summarize + check "ankewcwpo1" S.Name T.Name + check "ankewcwpo1" S.FullName T.FullName + check "ankewcwpo1i3" S.IsInterface T.IsInterface + check "ankewcwpo1i4" S.IsClass T.IsClass + check "ankewcwpo1i4" S.IsValueType T.IsValueType + check "ankewcwpo3" S.Assembly_FullName T.Assembly.FullName + +#if CURRENTLY_GIVES_COMPILATION_ERROR_NEED_TO_CHECK_IF_EXPECTED + check "ankewcwpo3" S.Assembly_DefinedTypes_Count 0 +#endif + + +if failures.Length > 0 then + printfn "FAILURES: %A" failures + exit 1 +else + printfn "TEST PASSED (with some inaccuracies)" + exit 0 diff --git a/tests/fsharp/typeProviders/samples/TypePassing/Erasing/type_passing_tp.fs b/tests/fsharp/typeProviders/samples/TypePassing/Erasing/type_passing_tp.fs index 0055f711f04..f6b9cb77517 100644 --- a/tests/fsharp/typeProviders/samples/TypePassing/Erasing/type_passing_tp.fs +++ b/tests/fsharp/typeProviders/samples/TypePassing/Erasing/type_passing_tp.fs @@ -3,7 +3,6 @@ namespace Test open System open System.Reflection open Microsoft.FSharp.Core.CompilerServices -open Microsoft.FSharp.Quotations open ProviderImplementation.ProvidedTypes @@ -16,10 +15,50 @@ type TypePassingTp(config: TypeProviderConfig) as this = let createTypes (ty:Type) typeName = let rootType = ProvidedTypeDefinition(runtimeAssembly,ns,typeName,baseType= (Some typeof), HideObjectMethods=true) - rootType.AddMember(ProvidedProperty(ty.Name, typeof, GetterCode = fun args -> <@@ obj() @@> )) + rootType.AddMember(ProvidedProperty("Name", typeof, GetterCode = (fun args -> let v = ty.Name in <@@ v @@> ), IsStatic=true)) + rootType.AddMember(ProvidedProperty("FullName", typeof, GetterCode = (fun args -> let v = ty.FullName in <@@ v @@> ), IsStatic=true)) + rootType.AddMember(ProvidedProperty("AssemblyQualifiedName", typeof, GetterCode = (fun args -> let v = ty.AssemblyQualifiedName in <@@ v @@> ), IsStatic=true)) + rootType.AddMember(ProvidedProperty("IsAbstract", typeof, GetterCode = (fun args -> let v = ty.IsAbstract in <@@ v @@> ), IsStatic=true)) + rootType.AddMember(ProvidedProperty("IsAnsiClass", typeof, GetterCode = (fun args -> let v = ty.IsAnsiClass in <@@ v @@> ), IsStatic=true)) + rootType.AddMember(ProvidedProperty("IsArray", typeof, GetterCode = (fun args -> let v = ty.IsArray in <@@ v @@> ), IsStatic=true)) + rootType.AddMember(ProvidedProperty("IsAutoClass", typeof, GetterCode = (fun args -> let v = ty.IsAutoClass in <@@ v @@> ), IsStatic=true)) + rootType.AddMember(ProvidedProperty("IsAutoLayout", typeof, GetterCode = (fun args -> let v = ty.IsAutoLayout in <@@ v @@> ), IsStatic=true)) + rootType.AddMember(ProvidedProperty("IsByRef", typeof, GetterCode = (fun args -> let v = ty.IsByRef in <@@ v @@> ), IsStatic=true)) + rootType.AddMember(ProvidedProperty("IsClass", typeof, GetterCode = (fun args -> let v = ty.IsClass in <@@ v @@> ), IsStatic=true)) + rootType.AddMember(ProvidedProperty("IsValueType", typeof, GetterCode = (fun args -> let v = ty.IsValueType in <@@ v @@> ), IsStatic=true)) + rootType.AddMember(ProvidedProperty("IsInterface", typeof, GetterCode = (fun args -> let v = ty.IsInterface in <@@ v @@> ), IsStatic=true)) + rootType.AddMember(ProvidedProperty("IsGenericParameter", typeof, GetterCode = (fun args -> let v = ty.IsGenericParameter in <@@ v @@> ), IsStatic=true)) + rootType.AddMember(ProvidedProperty("IsNested", typeof, GetterCode = (fun args -> let v = ty.IsNested in <@@ v @@> ), IsStatic=true)) + rootType.AddMember(ProvidedProperty("IsNestedPublic", typeof, GetterCode = (fun args -> let v = ty.IsNestedPublic in <@@ v @@> ), IsStatic=true)) + rootType.AddMember(ProvidedProperty("IsPublic", typeof, GetterCode = (fun args -> let v = ty.IsPublic in <@@ v @@> ), IsStatic=true)) + rootType.AddMember(ProvidedProperty("IsNotPublic", typeof, GetterCode = (fun args -> let v = ty.IsNotPublic in <@@ v @@> ), IsStatic=true)) + rootType.AddMember(ProvidedProperty("IsSealed", typeof, GetterCode = (fun args -> let v = ty.IsSealed in <@@ v @@> ), IsStatic=true)) + rootType.AddMember(ProvidedProperty("IsRecord", typeof, GetterCode = (fun args -> let v = Reflection.FSharpType.IsRecord(ty) in <@@ v @@> ), IsStatic=true)) + rootType.AddMember(ProvidedProperty("IsFunction", typeof, GetterCode = (fun args -> let v = Reflection.FSharpType.IsFunction(ty) in <@@ v @@> ), IsStatic=true)) + rootType.AddMember(ProvidedProperty("IsModule", typeof, GetterCode = (fun args -> let v = Reflection.FSharpType.IsModule(ty) in <@@ v @@> ), IsStatic=true)) + rootType.AddMember(ProvidedProperty("IsExceptionRepresentation", typeof, GetterCode = (fun args -> let v = Reflection.FSharpType.IsExceptionRepresentation(ty) in <@@ v @@> ), IsStatic=true)) + rootType.AddMember(ProvidedProperty("IsTuple", typeof, GetterCode = (fun args -> let v = Reflection.FSharpType.IsTuple(ty) in <@@ v @@> ), IsStatic=true)) + rootType.AddMember(ProvidedProperty("IsUnion", typeof, GetterCode = (fun args -> let v = Reflection.FSharpType.IsUnion(ty) in <@@ v @@> ), IsStatic=true)) + rootType.AddMember(ProvidedProperty("GetPublicProperties_Length", typeof, GetterCode = (fun args -> let v = ty.GetProperties().Length in <@@ v @@> ), IsStatic=true)) + rootType.AddMember(ProvidedProperty("GetPublicConstructors_Length", typeof, GetterCode = (fun args -> let v = ty.GetConstructors().Length in <@@ v @@> ), IsStatic=true)) + rootType.AddMember(ProvidedProperty("GetPublicMethods_Length", typeof, GetterCode = (fun args -> let v = ty.GetMethods().Length in <@@ v @@> ), IsStatic=true)) + + // Raises error is used in program + rootType.AddMember(ProvidedProperty("Assembly_CodeBase", typeof, GetterCode = (fun args -> let v = ty.Assembly.CodeBase in <@@ v @@> ), IsStatic=true)) + + // Raises error is used in program + rootType.AddMember(ProvidedProperty("Assembly_CustomAttributes_Count", typeof, GetterCode = (fun args -> let v = Seq.length ty.Assembly.CustomAttributes in <@@ v @@> ), IsStatic=true)) + + // Always returns 0 + rootType.AddMember(ProvidedProperty("Assembly_DefinedTypes_Count", typeof, GetterCode = (fun args -> let v = Seq.length ty.Assembly.DefinedTypes in <@@ v @@> ), IsStatic=true)) + + rootType.AddMember(ProvidedProperty("Assembly_FullName", typeof, GetterCode = (fun args -> let v = ty.Assembly.FullName in <@@ v @@> ), IsStatic=true)) + rootType.AddMember(ProvidedProperty("Assembly_EntryPoint_isNull", typeof, GetterCode = (fun args -> let v = isNull ty.Assembly.EntryPoint in <@@ v @@> ), IsStatic=true)) + // TODO - more here + rootType.AddMember(ProvidedProperty("GUID", typeof, GetterCode = (fun args -> let v = ty.GUID.ToString() in <@@ v @@> ), IsStatic=true)) rootType - let paramType = ProvidedTypeDefinition(runtimeAssembly, ns, "TypePassingTP", Some(typeof), HideObjectMethods = true) + let paramType = ProvidedTypeDefinition(runtimeAssembly, ns, "Summarize", Some(typeof), HideObjectMethods = true) do paramType.DefineStaticParameters( [ diff --git a/tests/fsharp/typeProviders/samples/TypePassing/Erasing/type_passing_tp.fsproj b/tests/fsharp/typeProviders/samples/TypePassing/Erasing/type_passing_tp.fsproj index ead6aa18982..e0c97661235 100644 --- a/tests/fsharp/typeProviders/samples/TypePassing/Erasing/type_passing_tp.fsproj +++ b/tests/fsharp/typeProviders/samples/TypePassing/Erasing/type_passing_tp.fsproj @@ -1,6 +1,10 @@  + + $(MSBuildProjectDirectory)\..\..\..\..\..\..\src + + Debug AnyCPU @@ -9,9 +13,7 @@ Library type_passing_tp type_passing_tp - v4.6.1 true - 4.4.0.0 type_passing_tp @@ -33,696 +35,21 @@ 3 bin\$(Configuration)\$(AssemblyName).XML + + + {DED3BBD7-53F4-428A-8C9F-27968E768605} + FSharp.Core + - - + + - - 14 - - - - - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.FSharp.Targets - - - - - $(MSBuildExtensionsPath32)\..\Microsoft SDKs\F#\4.0\Framework\v4.0\Microsoft.FSharp.Targets - - - - - - - - - - ..\packages\FSharp.Core\lib\net20\FSharp.Core.dll - True - True - - - - - - - ..\packages\FSharp.Core\lib\net40\FSharp.Core.dll - True - True - - - - - - - ..\packages\FSharp.Core\lib\net45\FSharp.Core.dll - True - True - - - - - - - ..\packages\FSharp.Core\lib\netstandard1.6\FSharp.Core.dll - True - True - - - - - - - ..\packages\FSharp.Core\lib\portable-net45+monoandroid10+monotouch10+xamarinios10\FSharp.Core.dll - True - True - - - - - - - ..\packages\FSharp.Core\lib\portable-net45+netcore45\FSharp.Core.dll - True - True - - - - - - - ..\packages\FSharp.Core\lib\portable-net45+netcore45+wp8\FSharp.Core.dll - True - True - - - - - - - ..\packages\FSharp.Core\lib\portable-net45+netcore45+wpa81+wp8\FSharp.Core.dll - True - True - - - - - - - ..\packages\FSharp.Core\lib\portable-net45+sl5+netcore45\FSharp.Core.dll - True - True - - - - - - - - - ..\packages\System.Collections\ref\netstandard1.0\System.Collections.dll - False - True - - - - - - - ..\packages\System.Collections\ref\netstandard1.3\System.Collections.dll - False - True - - - - - - - - - ..\packages\System.Collections.Concurrent\lib\netstandard1.3\System.Collections.Concurrent.dll - True - True - - - - - - - - - ..\packages\System.Console\ref\netstandard1.3\System.Console.dll - False - True - - - - - - - - - ..\packages\System.Diagnostics.DiagnosticSource\lib\netstandard1.3\System.Diagnostics.DiagnosticSource.dll - True - True - - - - - - - - - ..\packages\System.Globalization\ref\netstandard1.0\System.Globalization.dll - False - True - - - - - - - ..\packages\System.Globalization\ref\netstandard1.3\System.Globalization.dll - False - True - - - - - - - - - ..\packages\System.Globalization.Calendars\ref\netstandard1.3\System.Globalization.Calendars.dll - False - True - - - - - - - - - ..\packages\System.Globalization.Extensions\ref\netstandard1.3\System.Globalization.Extensions.dll - False - True - - - - - - - - - ..\packages\System.IO\lib\net462\System.IO.dll - True - True - - - - - - - ..\packages\System.IO\ref\netstandard1.0\System.IO.dll - False - True - - - - - - - ..\packages\System.IO\ref\netstandard1.3\System.IO.dll - False - True - - - - - - - ..\packages\System.IO\ref\netstandard1.5\System.IO.dll - False - True - - - - - - - - - ..\packages\System.IO.FileSystem\ref\netstandard1.3\System.IO.FileSystem.dll - False - True - - - - - - - - - ..\packages\System.IO.FileSystem.Primitives\lib\netstandard1.3\System.IO.FileSystem.Primitives.dll - True - True - - - - - - - - - ..\packages\System.Linq\lib\netstandard1.6\System.Linq.dll - True - True - - - - - - - - - ..\packages\System.Linq.Expressions\lib\netstandard1.6\System.Linq.Expressions.dll - True - True - - - - - - - - - ..\packages\System.Linq.Queryable\lib\netstandard1.3\System.Linq.Queryable.dll - True - True - - - - - - - - - ..\packages\System.Net.WebHeaderCollection\lib\netstandard1.3\System.Net.WebHeaderCollection.dll - True - True - - - - - - - - - ..\packages\System.ObjectModel\lib\netstandard1.3\System.ObjectModel.dll - True - True - - - - - - - - - ..\packages\System.Reflection\lib\net462\System.Reflection.dll - True - True - - - - - - - ..\packages\System.Reflection\ref\netstandard1.0\System.Reflection.dll - False - True - - - - - - - ..\packages\System.Reflection\ref\netstandard1.3\System.Reflection.dll - False - True - - - - - - - ..\packages\System.Reflection\ref\netstandard1.5\System.Reflection.dll - False - True - - - - - - - - - ..\packages\System.Reflection.Emit\lib\netstandard1.3\System.Reflection.Emit.dll - True - True - - - - - - - - - ..\packages\System.Reflection.Emit.ILGeneration\lib\netstandard1.3\System.Reflection.Emit.ILGeneration.dll - True - True - - - - - - - - - ..\packages\System.Reflection.Emit.Lightweight\lib\netstandard1.3\System.Reflection.Emit.Lightweight.dll - True - True - - - - - - - - - ..\packages\System.Reflection.Primitives\ref\netstandard1.0\System.Reflection.Primitives.dll - False - True - - - - - - - - - ..\packages\System.Reflection.TypeExtensions\lib\netstandard1.5\System.Reflection.TypeExtensions.dll - True - True - - - - - - - - - True - - - - - - - True - - - ..\packages\System.Runtime\lib\net462\System.Runtime.dll - True - True - - - - - - - ..\packages\System.Runtime\ref\netstandard1.0\System.Runtime.dll - False - True - - - - - - - ..\packages\System.Runtime\ref\netstandard1.2\System.Runtime.dll - False - True - - - - - - - ..\packages\System.Runtime\ref\netstandard1.3\System.Runtime.dll - False - True - - - - - - - ..\packages\System.Runtime\ref\netstandard1.5\System.Runtime.dll - False - True - - - - - - - - - ..\packages\System.Runtime.Handles\ref\netstandard1.3\System.Runtime.Handles.dll - False - True - - - - - - - - - ..\packages\System.Runtime.Numerics\lib\netstandard1.3\System.Runtime.Numerics.dll - True - True - - - - - - - - - ..\packages\System.Security.Cryptography.Algorithms\ref\netstandard1.6\System.Security.Cryptography.Algorithms.dll - False - True - - - - - - - - - ..\packages\System.Security.Cryptography.Cng\ref\netstandard1.6\System.Security.Cryptography.Cng.dll - False - True - - - - - - - - - ..\packages\System.Security.Cryptography.Csp\ref\netstandard1.3\System.Security.Cryptography.Csp.dll - False - True - - - - - - - - - ..\packages\System.Security.Cryptography.Encoding\ref\netstandard1.3\System.Security.Cryptography.Encoding.dll - False - True - - - - - - - - - ..\packages\System.Security.Cryptography.OpenSsl\lib\netstandard1.6\System.Security.Cryptography.OpenSsl.dll - True - True - - - - - - - - - ..\packages\System.Security.Cryptography.Primitives\lib\netstandard1.3\System.Security.Cryptography.Primitives.dll - True - True - - - - - - - - - ..\packages\System.Security.Cryptography.X509Certificates\ref\netstandard1.4\System.Security.Cryptography.X509Certificates.dll - False - True - - - - - - - - - ..\packages\System.Text.Encoding\ref\netstandard1.0\System.Text.Encoding.dll - False - True - - - - - - - ..\packages\System.Text.Encoding\ref\netstandard1.3\System.Text.Encoding.dll - False - True - - - - - - - - - ..\packages\System.Text.RegularExpressions\lib\netstandard1.6\System.Text.RegularExpressions.dll - True - True - - - - - - - - - ..\packages\System.Threading\lib\netstandard1.3\System.Threading.dll - True - True - - - - - - - - - ..\packages\System.Threading.Tasks\ref\netstandard1.0\System.Threading.Tasks.dll - False - True - - - - - - - ..\packages\System.Threading.Tasks\ref\netstandard1.3\System.Threading.Tasks.dll - False - True - - - - - - - - - ..\packages\System.Threading.Tasks.Parallel\lib\netstandard1.3\System.Threading.Tasks.Parallel.dll - True - True - - - - - - - - - ..\packages\System.Threading.Thread\lib\netstandard1.3\System.Threading.Thread.dll - True - True - - - - - - - - - ..\packages\System.Threading.ThreadPool\lib\netstandard1.3\System.Threading.ThreadPool.dll - True - True - - - - - - - - - ..\packages\System.ValueTuple\lib\netstandard1.0\System.ValueTuple.dll - True - True - - - - - - - ..\packages\System.ValueTuple\lib\portable-net40+sl4+win8+wp8\System.ValueTuple.dll - True - True - - - - \ No newline at end of file