From c16203338a7bb8d2fd0cf59e24d784828b43ad50 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Thu, 4 Jan 2024 22:00:15 +0000 Subject: [PATCH 01/18] Update dependencies from https://github.com/dotnet/arcade build 20231220.2 Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Feed , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.SignTool , Microsoft.DotNet.SwaggerGenerator.MSBuild , Microsoft.DotNet.XUnitExtensions From Version 8.0.0-beta.23265.1 -> To Version 8.0.0-beta.23620.2 --- NuGet.config | 2 +- eng/Version.Details.xml | 24 ++-- eng/Versions.props | 2 +- eng/common/SetupNugetSources.ps1 | 2 +- eng/common/SetupNugetSources.sh | 2 +- eng/common/cross/toolchain.cmake | 2 +- eng/common/darc-init.ps1 | 2 +- eng/common/darc-init.sh | 2 +- eng/common/dotnet-install.sh | 4 + eng/common/loc/P22DotNetHtmlLocalization.lss | Bin 3810 -> 1876 bytes eng/common/native/init-compiler.sh | 2 +- eng/common/native/init-distro-rid.sh | 130 ++++++++++++++++++ eng/common/native/init-os-and-arch.sh | 80 +++++++++++ .../post-build/add-build-to-channel.ps1 | 2 +- eng/common/post-build/publish-using-darc.ps1 | 2 +- .../post-build/trigger-subscriptions.ps1 | 2 +- eng/common/sdk-task.ps1 | 2 +- eng/common/sdl/configure-sdl-tool.ps1 | 42 ++++-- eng/common/sdl/execute-all-sdl-tools.ps1 | 4 +- eng/common/sdl/extract-artifact-packages.ps1 | 20 +-- eng/common/sdl/trim-assets-version.ps1 | 75 ++++++++++ eng/common/templates/job/execute-sdl.yml | 5 + eng/common/templates/job/job.yml | 14 +- .../templates/job/publish-build-assets.yml | 4 +- .../templates/post-build/common-variables.yml | 2 +- .../templates/post-build/post-build.yml | 4 +- eng/common/templates/steps/execute-sdl.yml | 2 +- eng/common/templates/steps/source-build.yml | 15 ++ eng/common/tools.ps1 | 12 +- global.json | 6 +- 30 files changed, 401 insertions(+), 66 deletions(-) create mode 100644 eng/common/native/init-distro-rid.sh create mode 100644 eng/common/native/init-os-and-arch.sh create mode 100644 eng/common/sdl/trim-assets-version.ps1 diff --git a/NuGet.config b/NuGet.config index eed95518c1..cf1fc2312f 100644 --- a/NuGet.config +++ b/NuGet.config @@ -1,4 +1,4 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 0ae3fc4712..7a4115c719 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -7,25 +7,25 @@ - + https://github.com/dotnet/arcade - 2d8d59065b5e090584a8e90c4371fc06ed60bdc5 + 84129325171e65373edef24019e1171feeb19cbc - + https://github.com/dotnet/arcade - 2d8d59065b5e090584a8e90c4371fc06ed60bdc5 + 84129325171e65373edef24019e1171feeb19cbc - + https://github.com/dotnet/arcade - 2d8d59065b5e090584a8e90c4371fc06ed60bdc5 + 84129325171e65373edef24019e1171feeb19cbc - + https://github.com/dotnet/arcade - 2d8d59065b5e090584a8e90c4371fc06ed60bdc5 + 84129325171e65373edef24019e1171feeb19cbc - + https://github.com/dotnet/arcade - 2d8d59065b5e090584a8e90c4371fc06ed60bdc5 + 84129325171e65373edef24019e1171feeb19cbc https://github.com/dotnet/arcade-services @@ -39,9 +39,9 @@ https://github.com/dotnet/xharness 89cb4b1d368e0f15b4df8e02a176dd1f1c33958b - + https://github.com/dotnet/arcade - 2d8d59065b5e090584a8e90c4371fc06ed60bdc5 + 84129325171e65373edef24019e1171feeb19cbc https://github.com/dotnet/roslyn diff --git a/eng/Versions.props b/eng/Versions.props index 74b5adf15b..c75e77f005 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -81,7 +81,7 @@ 8.0.0 5.10.2 1.1.2-beta1.23431.1 - 8.0.0-beta.23265.1 + 8.0.0-beta.23620.2 2.1.0 3.0.1 0.0.6-test diff --git a/eng/common/SetupNugetSources.ps1 b/eng/common/SetupNugetSources.ps1 index 6e99723945..6c65e81925 100644 --- a/eng/common/SetupNugetSources.ps1 +++ b/eng/common/SetupNugetSources.ps1 @@ -153,7 +153,7 @@ if ($dotnet31Source -ne $null) { AddPackageSource -Sources $sources -SourceName "dotnet3.1-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal-transport/nuget/v2" -Creds $creds -Username $userName -Password $Password } -$dotnetVersions = @('5','6','7') +$dotnetVersions = @('5','6','7','8') foreach ($dotnetVersion in $dotnetVersions) { $feedPrefix = "dotnet" + $dotnetVersion; diff --git a/eng/common/SetupNugetSources.sh b/eng/common/SetupNugetSources.sh index 8af7d899db..d387c7eac9 100755 --- a/eng/common/SetupNugetSources.sh +++ b/eng/common/SetupNugetSources.sh @@ -105,7 +105,7 @@ if [ "$?" == "0" ]; then PackageSources+=('dotnet3.1-internal-transport') fi -DotNetVersions=('5' '6' '7') +DotNetVersions=('5' '6' '7' '8') for DotNetVersion in ${DotNetVersions[@]} ; do FeedPrefix="dotnet${DotNetVersion}"; diff --git a/eng/common/cross/toolchain.cmake b/eng/common/cross/toolchain.cmake index a88d643c8a..0998e875e5 100644 --- a/eng/common/cross/toolchain.cmake +++ b/eng/common/cross/toolchain.cmake @@ -207,6 +207,7 @@ elseif(ILLUMOS) set(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES} -lssp") elseif(HAIKU) set(CMAKE_SYSROOT "${CROSS_ROOTFS}") + set(CMAKE_PROGRAM_PATH "${CMAKE_PROGRAM_PATH};${CROSS_ROOTFS}/cross-tools-x86_64/bin") set(TOOLSET_PREFIX ${TOOLCHAIN}-) function(locate_toolchain_exec exec var) @@ -217,7 +218,6 @@ elseif(HAIKU) endif() find_program(EXEC_LOCATION_${exec} - PATHS "${CROSS_ROOTFS}/cross-tools-x86_64/bin" NAMES "${TOOLSET_PREFIX}${exec}${CLR_CMAKE_COMPILER_FILE_NAME_VERSION}" "${TOOLSET_PREFIX}${exec}") diff --git a/eng/common/darc-init.ps1 b/eng/common/darc-init.ps1 index 435e764134..8fda30bdce 100644 --- a/eng/common/darc-init.ps1 +++ b/eng/common/darc-init.ps1 @@ -1,6 +1,6 @@ param ( $darcVersion = $null, - $versionEndpoint = 'https://maestro-prod.westus2.cloudapp.azure.com/api/assets/darc-version?api-version=2019-01-16', + $versionEndpoint = 'https://maestro.dot.net/api/assets/darc-version?api-version=2019-01-16', $verbosity = 'minimal', $toolpath = $null ) diff --git a/eng/common/darc-init.sh b/eng/common/darc-init.sh index 84c1d0cc2e..c305ae6bd7 100755 --- a/eng/common/darc-init.sh +++ b/eng/common/darc-init.sh @@ -2,7 +2,7 @@ source="${BASH_SOURCE[0]}" darcVersion='' -versionEndpoint='https://maestro-prod.westus2.cloudapp.azure.com/api/assets/darc-version?api-version=2019-01-16' +versionEndpoint='https://maestro.dot.net/api/assets/darc-version?api-version=2019-01-16' verbosity='minimal' while [[ $# > 0 ]]; do diff --git a/eng/common/dotnet-install.sh b/eng/common/dotnet-install.sh index abd045a324..7e69e3a9e2 100755 --- a/eng/common/dotnet-install.sh +++ b/eng/common/dotnet-install.sh @@ -54,6 +54,10 @@ cpuname=$(uname -m) case $cpuname in arm64|aarch64) buildarch=arm64 + if [ "$(getconf LONG_BIT)" -lt 64 ]; then + # This is 32-bit OS running on 64-bit CPU (for example Raspberry Pi OS) + buildarch=arm + fi ;; loongarch64) buildarch=loongarch64 diff --git a/eng/common/loc/P22DotNetHtmlLocalization.lss b/eng/common/loc/P22DotNetHtmlLocalization.lss index 6661fed566e49b0c206665bc21f135e06c9b89c4..5d892d619398f9feeac4cefc1c53ff18a807f732 100644 GIT binary patch literal 1876 zcmd5-O>Y`85WVMDO!tse0|`=3Kq5qFvJwFroLr(PGHdUyD`QjJ8$y14$Ln3lZW2{J zwGs!I&o^(Lhrz|mTEa6oR%kVh&N`>j#re@-x_nwr2#IG`%ct-0baH+K&@f(3mgC!a zLE`z$`_TL4VSG6vqld@GGPwJ;L@RorHxAn^xdXw5(R4X4f7_@k)pTF-lorz22$--N zNp~~4=EJDUfxSBovWjDy#&0y*A$Y%{951Lgf#O!hPmkZU}#I!)Wng z1f<%)R3}u5SL$^NOII+VJC!`W+V>zz0i%$|xtEKJRoWJsS2-4>j6oFy0;9}2)ZXS? z!4+5B;BS?^g*W;n#c6Okuah`~R7l#LlUM`Wwgi;X`GgRCXg2Aj93+p!!wlyufdm#b2J0d!FWGIX~B#Nn{?*T z-%qWy16eI?CAp^@t!rT|vicQ-vsH(!kP=oLa9cnNr~Mvq*K+4!SBpR#0ixlQVLn!4 z_-b`9x-gH#c?z0gti{WerraQ#kQ%)%r?a{+35PnWsUFnNN^8lf0v68Oy&oSBa0E$V ze5J~88to5MDZA?699~0Him^%vH|v?chtS*Ws!BWhyEn^bjuBh5M+wg@h`3AQ cw&^?j6MgS4IM#l5)SHHef6(}&EB`Bh1GJK71^@s6 literal 3810 zcmd^CT~8BH5S?ce|HG9Bo&v?0;P_m6l= znU-wb=}VLT7UH{>{5H;0M4iLmRE8QeBRr|>&k=uV*L;heKY+dq>B$0^=0I}|x`)s{ zht4t9zaiEh5Fe>E-;zVT;c4G?v;9N0G=rWwo~*(Cs`OS6ZL`HL;vsL0J@I%$+0YvE zx{9ukK|FtFx1PlPD5M;6ZM>f;1BhCf?`8y6QH*?RT9T>XwF z#~m_N+i^UKE^j{e;KdNW`kH9Rbj{G8tDY}mafCgG+m3H`I@_PhrDmcIzxD&IX@s083kV|lLUE^0(h6wWRPN0QN1n^PU5eX8r6OZ*s^g)tt77#SZCB}znxye#U$Dtinr6lnVu z!LzA{A}0~no7p$thFGJAnI}oSW||9H=Bz}I7kD#2MLg7WfrlE5o9sQjePc>qmv+6iQCmdp(y}(Vr diff --git a/eng/common/native/init-compiler.sh b/eng/common/native/init-compiler.sh index 517401b688..f5c1ec7eaf 100644 --- a/eng/common/native/init-compiler.sh +++ b/eng/common/native/init-compiler.sh @@ -63,7 +63,7 @@ if [ -z "$CLR_CC" ]; then # Set default versions if [ -z "$majorVersion" ]; then # note: gcc (all versions) and clang versions higher than 6 do not have minor version in file name, if it is zero. - if [ "$compiler" = "clang" ]; then versions="16 15 14 13 12 11 10 9 8 7 6.0 5.0 4.0 3.9 3.8 3.7 3.6 3.5" + if [ "$compiler" = "clang" ]; then versions="17 16 15 14 13 12 11 10 9 8 7 6.0 5.0 4.0 3.9 3.8 3.7 3.6 3.5" elif [ "$compiler" = "gcc" ]; then versions="13 12 11 10 9 8 7 6 5 4.9"; fi for version in $versions; do diff --git a/eng/common/native/init-distro-rid.sh b/eng/common/native/init-distro-rid.sh new file mode 100644 index 0000000000..de1687b2cc --- /dev/null +++ b/eng/common/native/init-distro-rid.sh @@ -0,0 +1,130 @@ +#!/usr/bin/env bash + +# getNonPortableDistroRid +# +# Input: +# targetOs: (str) +# targetArch: (str) +# rootfsDir: (str) +# +# Return: +# non-portable rid +getNonPortableDistroRid() +{ + local targetOs="$1" + local targetArch="$2" + local rootfsDir="$3" + local nonPortableRid="" + + if [ "$targetOs" = "linux" ]; then + if [ -e "${rootfsDir}/etc/os-release" ]; then + source "${rootfsDir}/etc/os-release" + + if [[ "${ID}" == "rhel" || "${ID}" == "rocky" || "${ID}" == "alpine" ]]; then + # remove the last version digit + VERSION_ID="${VERSION_ID%.*}" + fi + + if [[ "${VERSION_ID:-}" =~ ^([[:digit:]]|\.)+$ ]]; then + nonPortableRid="${ID}.${VERSION_ID}-${targetArch}" + else + # Rolling release distros either do not set VERSION_ID, set it as blank or + # set it to non-version looking string (such as TEMPLATE_VERSION_ID on ArchLinux); + # so omit it here to be consistent with everything else. + nonPortableRid="${ID}-${targetArch}" + fi + + elif [ -e "${rootfsDir}/android_platform" ]; then + source "$rootfsDir"/android_platform + nonPortableRid="$RID" + fi + fi + + if [ "$targetOs" = "freebsd" ]; then + # $rootfsDir can be empty. freebsd-version is shell script and it should always work. + __freebsd_major_version=$($rootfsDir/bin/freebsd-version | { read v; echo "${v%%.*}"; }) + nonPortableRid="freebsd.$__freebsd_major_version-${targetArch}" + elif command -v getprop && getprop ro.product.system.model 2>&1 | grep -qi android; then + __android_sdk_version=$(getprop ro.build.version.sdk) + nonPortableRid="android.$__android_sdk_version-${targetArch}" + elif [ "$targetOs" = "illumos" ]; then + __uname_version=$(uname -v) + case "$__uname_version" in + omnios-*) + __omnios_major_version=$(echo "${__uname_version:8:2}") + nonPortableRid=omnios."$__omnios_major_version"-"$targetArch" + ;; + joyent_*) + __smartos_major_version=$(echo "${__uname_version:7:4}") + nonPortableRid=smartos."$__smartos_major_version"-"$targetArch" + ;; + illumos_*) + nonPortableRid=openindiana-"$targetArch" + ;; + esac + elif [ "$targetOs" = "solaris" ]; then + __uname_version=$(uname -v) + __solaris_major_version=$(echo "${__uname_version%.*}") + nonPortableRid=solaris."$__solaris_major_version"-"$targetArch" + elif [ "$targetOs" = "haiku" ]; then + __uname_release=$(uname -r) + nonPortableRid=haiku.r"$__uname_release"-"$targetArch" + fi + + echo "$(echo $nonPortableRid | tr '[:upper:]' '[:lower:]')" +} + +# initDistroRidGlobal +# +# Input: +# os: (str) +# arch: (str) +# rootfsDir?: (nullable:string) +# +# Return: +# None +# +# Notes: +# +# It is important to note that the function does not return anything, but it +# exports the following variables on success: +# +# __DistroRid : Non-portable rid of the target platform. +# __PortableTargetOS : OS-part of the portable rid that corresponds to the target platform. +# +initDistroRidGlobal() +{ + local targetOs="$1" + local targetArch="$2" + local rootfsDir="" + if [ "$#" -ge 3 ]; then + rootfsDir="$3" + fi + + if [ -n "${rootfsDir}" ]; then + # We may have a cross build. Check for the existence of the rootfsDir + if [ ! -e "${rootfsDir}" ]; then + echo "Error rootfsDir has been passed, but the location is not valid." + exit 1 + fi + fi + + __DistroRid=$(getNonPortableDistroRid "${targetOs}" "${targetArch}" "${rootfsDir}") + + if [ -z "${__PortableTargetOS:-}" ]; then + __PortableTargetOS="$targetOs" + + STRINGS="$(command -v strings || true)" + if [ -z "$STRINGS" ]; then + STRINGS="$(command -v llvm-strings || true)" + fi + + # Check for musl-based distros (e.g Alpine Linux, Void Linux). + if "${rootfsDir}/usr/bin/ldd" --version 2>&1 | grep -q musl || + ( [ -n "$STRINGS" ] && "$STRINGS" "${rootfsDir}/usr/bin/ldd" 2>&1 | grep -q musl ); then + __PortableTargetOS="linux-musl" + fi + fi + + export __DistroRid __PortableTargetOS +} diff --git a/eng/common/native/init-os-and-arch.sh b/eng/common/native/init-os-and-arch.sh new file mode 100644 index 0000000000..e693617a6c --- /dev/null +++ b/eng/common/native/init-os-and-arch.sh @@ -0,0 +1,80 @@ +#!/usr/bin/env bash + +# Use uname to determine what the OS is. +OSName=$(uname -s | tr '[:upper:]' '[:lower:]') + +if command -v getprop && getprop ro.product.system.model 2>&1 | grep -qi android; then + OSName="android" +fi + +case "$OSName" in +freebsd|linux|netbsd|openbsd|sunos|android|haiku) + os="$OSName" ;; +darwin) + os=osx ;; +*) + echo "Unsupported OS $OSName detected!" + exit 1 ;; +esac + +# On Solaris, `uname -m` is discouraged, see https://docs.oracle.com/cd/E36784_01/html/E36870/uname-1.html +# and `uname -p` returns processor type (e.g. i386 on amd64). +# The appropriate tool to determine CPU is isainfo(1) https://docs.oracle.com/cd/E36784_01/html/E36870/isainfo-1.html. +if [ "$os" = "sunos" ]; then + if uname -o 2>&1 | grep -q illumos; then + os="illumos" + else + os="solaris" + fi + CPUName=$(isainfo -n) +else + # For the rest of the operating systems, use uname(1) to determine what the CPU is. + CPUName=$(uname -m) +fi + +case "$CPUName" in + arm64|aarch64) + arch=arm64 + ;; + + loongarch64) + arch=loongarch64 + ;; + + riscv64) + arch=riscv64 + ;; + + amd64|x86_64) + arch=x64 + ;; + + armv7l|armv8l) + if (NAME=""; . /etc/os-release; test "$NAME" = "Tizen"); then + arch=armel + else + arch=arm + fi + ;; + + armv6l) + arch=armv6 + ;; + + i[3-6]86) + echo "Unsupported CPU $CPUName detected, build might not succeed!" + arch=x86 + ;; + + s390x) + arch=s390x + ;; + + ppc64le) + arch=ppc64le + ;; + *) + echo "Unknown CPU $CPUName detected!" + exit 1 + ;; +esac diff --git a/eng/common/post-build/add-build-to-channel.ps1 b/eng/common/post-build/add-build-to-channel.ps1 index de2d957922..49938f0c89 100644 --- a/eng/common/post-build/add-build-to-channel.ps1 +++ b/eng/common/post-build/add-build-to-channel.ps1 @@ -2,7 +2,7 @@ param( [Parameter(Mandatory=$true)][int] $BuildId, [Parameter(Mandatory=$true)][int] $ChannelId, [Parameter(Mandatory=$true)][string] $MaestroApiAccessToken, - [Parameter(Mandatory=$false)][string] $MaestroApiEndPoint = 'https://maestro-prod.westus2.cloudapp.azure.com', + [Parameter(Mandatory=$false)][string] $MaestroApiEndPoint = 'https://maestro.dot.net', [Parameter(Mandatory=$false)][string] $MaestroApiVersion = '2019-01-16' ) diff --git a/eng/common/post-build/publish-using-darc.ps1 b/eng/common/post-build/publish-using-darc.ps1 index 8508397d77..1e779fec4d 100644 --- a/eng/common/post-build/publish-using-darc.ps1 +++ b/eng/common/post-build/publish-using-darc.ps1 @@ -3,7 +3,7 @@ param( [Parameter(Mandatory=$true)][int] $PublishingInfraVersion, [Parameter(Mandatory=$true)][string] $AzdoToken, [Parameter(Mandatory=$true)][string] $MaestroToken, - [Parameter(Mandatory=$false)][string] $MaestroApiEndPoint = 'https://maestro-prod.westus2.cloudapp.azure.com', + [Parameter(Mandatory=$false)][string] $MaestroApiEndPoint = 'https://maestro.dot.net', [Parameter(Mandatory=$true)][string] $WaitPublishingFinish, [Parameter(Mandatory=$false)][string] $ArtifactsPublishingAdditionalParameters, [Parameter(Mandatory=$false)][string] $SymbolPublishingAdditionalParameters diff --git a/eng/common/post-build/trigger-subscriptions.ps1 b/eng/common/post-build/trigger-subscriptions.ps1 index 55dea518ac..ac9a95778f 100644 --- a/eng/common/post-build/trigger-subscriptions.ps1 +++ b/eng/common/post-build/trigger-subscriptions.ps1 @@ -2,7 +2,7 @@ param( [Parameter(Mandatory=$true)][string] $SourceRepo, [Parameter(Mandatory=$true)][int] $ChannelId, [Parameter(Mandatory=$true)][string] $MaestroApiAccessToken, - [Parameter(Mandatory=$false)][string] $MaestroApiEndPoint = 'https://maestro-prod.westus2.cloudapp.azure.com', + [Parameter(Mandatory=$false)][string] $MaestroApiEndPoint = 'https://maestro.dot.net', [Parameter(Mandatory=$false)][string] $MaestroApiVersion = '2019-01-16' ) diff --git a/eng/common/sdk-task.ps1 b/eng/common/sdk-task.ps1 index e10a596879..73828dd30d 100644 --- a/eng/common/sdk-task.ps1 +++ b/eng/common/sdk-task.ps1 @@ -64,7 +64,7 @@ try { $GlobalJson.tools | Add-Member -Name "vs" -Value (ConvertFrom-Json "{ `"version`": `"16.5`" }") -MemberType NoteProperty } if( -not ($GlobalJson.tools.PSObject.Properties.Name -match "xcopy-msbuild" )) { - $GlobalJson.tools | Add-Member -Name "xcopy-msbuild" -Value "17.4.1" -MemberType NoteProperty + $GlobalJson.tools | Add-Member -Name "xcopy-msbuild" -Value "17.8.1-2" -MemberType NoteProperty } if ($GlobalJson.tools."xcopy-msbuild".Trim() -ine "none") { $xcopyMSBuildToolsFolder = InitializeXCopyMSBuild $GlobalJson.tools."xcopy-msbuild" -install $true diff --git a/eng/common/sdl/configure-sdl-tool.ps1 b/eng/common/sdl/configure-sdl-tool.ps1 index bdbf49e6c7..27f5a4115f 100644 --- a/eng/common/sdl/configure-sdl-tool.ps1 +++ b/eng/common/sdl/configure-sdl-tool.ps1 @@ -17,7 +17,9 @@ Param( # Optional: Additional params to add to any tool using PoliCheck. [string[]] $PoliCheckAdditionalRunConfigParams, # Optional: Additional params to add to any tool using CodeQL/Semmle. - [string[]] $CodeQLAdditionalRunConfigParams + [string[]] $CodeQLAdditionalRunConfigParams, + # Optional: Additional params to add to any tool using Binskim. + [string[]] $BinskimAdditionalRunConfigParams ) $ErrorActionPreference = 'Stop' @@ -69,22 +71,34 @@ try { $gdnConfigFile = Join-Path $gdnConfigPath "$toolConfigName-configure.gdnconfig" # For some tools, add default and automatic args. - if ($tool.Name -eq 'credscan') { - if ($targetDirectory) { - $tool.Args += "`"TargetDirectory < $TargetDirectory`"" + switch -Exact ($tool.Name) { + 'credscan' { + if ($targetDirectory) { + $tool.Args += "`"TargetDirectory < $TargetDirectory`"" + } + $tool.Args += "`"OutputType < pre`"" + $tool.Args += $CrScanAdditionalRunConfigParams } - $tool.Args += "`"OutputType < pre`"" - $tool.Args += $CrScanAdditionalRunConfigParams - } elseif ($tool.Name -eq 'policheck') { - if ($targetDirectory) { - $tool.Args += "`"Target < $TargetDirectory`"" + 'policheck' { + if ($targetDirectory) { + $tool.Args += "`"Target < $TargetDirectory`"" + } + $tool.Args += $PoliCheckAdditionalRunConfigParams } - $tool.Args += $PoliCheckAdditionalRunConfigParams - } elseif ($tool.Name -eq 'semmle' -or $tool.Name -eq 'codeql') { - if ($targetDirectory) { - $tool.Args += "`"SourceCodeDirectory < $TargetDirectory`"" + {$_ -in 'semmle', 'codeql'} { + if ($targetDirectory) { + $tool.Args += "`"SourceCodeDirectory < $TargetDirectory`"" + } + $tool.Args += $CodeQLAdditionalRunConfigParams + } + 'binskim' { + if ($targetDirectory) { + # Binskim crashes due to specific PDBs. GitHub issue: https://github.com/microsoft/binskim/issues/924. + # We are excluding all `_.pdb` files from the scan. + $tool.Args += "`"Target < $TargetDirectory\**;-:file|$TargetDirectory\**\_.pdb`"" + } + $tool.Args += $BinskimAdditionalRunConfigParams } - $tool.Args += $CodeQLAdditionalRunConfigParams } # Create variable pointing to the args array directly so we can use splat syntax later. diff --git a/eng/common/sdl/execute-all-sdl-tools.ps1 b/eng/common/sdl/execute-all-sdl-tools.ps1 index 4797e012c7..4715d75e97 100644 --- a/eng/common/sdl/execute-all-sdl-tools.ps1 +++ b/eng/common/sdl/execute-all-sdl-tools.ps1 @@ -35,6 +35,7 @@ Param( [string[]] $CrScanAdditionalRunConfigParams, # Optional: Additional Params to custom build a CredScan run config in the format @("xyz:abc","sdf:1") [string[]] $PoliCheckAdditionalRunConfigParams, # Optional: Additional Params to custom build a Policheck run config in the format @("xyz:abc","sdf:1") [string[]] $CodeQLAdditionalRunConfigParams, # Optional: Additional Params to custom build a Semmle/CodeQL run config in the format @("xyz < abc","sdf < 1") + [string[]] $BinskimAdditionalRunConfigParams, # Optional: Additional Params to custom build a Binskim run config in the format @("xyz < abc","sdf < 1") [bool] $BreakOnFailure=$False # Optional: Fail the build if there were errors during the run ) @@ -107,7 +108,8 @@ try { -GuardianLoggerLevel $GuardianLoggerLevel ` -CrScanAdditionalRunConfigParams $CrScanAdditionalRunConfigParams ` -PoliCheckAdditionalRunConfigParams $PoliCheckAdditionalRunConfigParams ` - -CodeQLAdditionalRunConfigParams $CodeQLAdditionalRunConfigParams + -CodeQLAdditionalRunConfigParams $CodeQLAdditionalRunConfigParams ` + -BinskimAdditionalRunConfigParams $BinskimAdditionalRunConfigParams if ($BreakOnFailure) { Exit-IfNZEC "Sdl" } diff --git a/eng/common/sdl/extract-artifact-packages.ps1 b/eng/common/sdl/extract-artifact-packages.ps1 index 7f28d9c59e..f031ed5b25 100644 --- a/eng/common/sdl/extract-artifact-packages.ps1 +++ b/eng/common/sdl/extract-artifact-packages.ps1 @@ -35,31 +35,33 @@ try { param( [string] $PackagePath # Full path to a NuGet package ) - + if (!(Test-Path $PackagePath)) { Write-PipelineTelemetryError -Category 'Build' -Message "Input file does not exist: $PackagePath" ExitWithExitCode 1 } - + $RelevantExtensions = @('.dll', '.exe', '.pdb') Write-Host -NoNewLine 'Extracting ' ([System.IO.Path]::GetFileName($PackagePath)) '...' - + $PackageId = [System.IO.Path]::GetFileNameWithoutExtension($PackagePath) $ExtractPath = Join-Path -Path $using:ExtractPath -ChildPath $PackageId - + Add-Type -AssemblyName System.IO.Compression.FileSystem - + [System.IO.Directory]::CreateDirectory($ExtractPath); - + try { $zip = [System.IO.Compression.ZipFile]::OpenRead($PackagePath) $zip.Entries | Where-Object {$RelevantExtensions -contains [System.IO.Path]::GetExtension($_.Name)} | ForEach-Object { - $TargetFile = Join-Path -Path $ExtractPath -ChildPath $_.Name - - [System.IO.Compression.ZipFileExtensions]::ExtractToFile($_, $TargetFile, $true) + $TargetPath = Join-Path -Path $ExtractPath -ChildPath (Split-Path -Path $_.FullName) + [System.IO.Directory]::CreateDirectory($TargetPath); + + $TargetFile = Join-Path -Path $ExtractPath -ChildPath $_.FullName + [System.IO.Compression.ZipFileExtensions]::ExtractToFile($_, $TargetFile) } } catch { diff --git a/eng/common/sdl/trim-assets-version.ps1 b/eng/common/sdl/trim-assets-version.ps1 new file mode 100644 index 0000000000..a2e0048770 --- /dev/null +++ b/eng/common/sdl/trim-assets-version.ps1 @@ -0,0 +1,75 @@ +<# +.SYNOPSIS +Install and run the 'Microsoft.DotNet.VersionTools.Cli' tool with the 'trim-artifacts-version' command to trim the version from the NuGet assets file name. + +.PARAMETER InputPath +Full path to directory where artifact packages are stored + +.PARAMETER Recursive +Search for NuGet packages recursively + +#> + +Param( + [string] $InputPath, + [bool] $Recursive = $true +) + +$CliToolName = "Microsoft.DotNet.VersionTools.Cli" + +function Install-VersionTools-Cli { + param( + [Parameter(Mandatory=$true)][string]$Version + ) + + Write-Host "Installing the package '$CliToolName' with a version of '$version' ..." + $feed = "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json" + + $argumentList = @("tool", "install", "--local", "$CliToolName", "--add-source $feed", "--no-cache", "--version $Version", "--create-manifest-if-needed") + Start-Process "$dotnet" -Verbose -ArgumentList $argumentList -NoNewWindow -Wait +} + +# ------------------------------------------------------------------- + +if (!(Test-Path $InputPath)) { + Write-Host "Input Path '$InputPath' does not exist" + ExitWithExitCode 1 +} + +$ErrorActionPreference = 'Stop' +Set-StrictMode -Version 2.0 + +$disableConfigureToolsetImport = $true +$global:LASTEXITCODE = 0 + +# `tools.ps1` checks $ci to perform some actions. Since the SDL +# scripts don't necessarily execute in the same agent that run the +# build.ps1/sh script this variable isn't automatically set. +$ci = $true +. $PSScriptRoot\..\tools.ps1 + +try { + $dotnetRoot = InitializeDotNetCli -install:$true + $dotnet = "$dotnetRoot\dotnet.exe" + + $toolsetVersion = Read-ArcadeSdkVersion + Install-VersionTools-Cli -Version $toolsetVersion + + $cliToolFound = (& "$dotnet" tool list --local | Where-Object {$_.Split(' ')[0] -eq $CliToolName}) + if ($null -eq $cliToolFound) { + Write-PipelineTelemetryError -Force -Category 'Sdl' -Message "The '$CliToolName' tool is not installed." + ExitWithExitCode 1 + } + + Exec-BlockVerbosely { + & "$dotnet" $CliToolName trim-assets-version ` + --assets-path $InputPath ` + --recursive $Recursive + Exit-IfNZEC "Sdl" + } +} +catch { + Write-Host $_ + Write-PipelineTelemetryError -Force -Category 'Sdl' -Message $_ + ExitWithExitCode 1 +} \ No newline at end of file diff --git a/eng/common/templates/job/execute-sdl.yml b/eng/common/templates/job/execute-sdl.yml index 7aabaa1801..7870f93bc1 100644 --- a/eng/common/templates/job/execute-sdl.yml +++ b/eng/common/templates/job/execute-sdl.yml @@ -105,6 +105,11 @@ jobs: downloadPath: $(Build.ArtifactStagingDirectory)\artifacts checkDownloadedFiles: true + - powershell: eng/common/sdl/trim-assets-version.ps1 + -InputPath $(Build.ArtifactStagingDirectory)\artifacts + displayName: Trim the version from the NuGet packages + continueOnError: ${{ parameters.sdlContinueOnError }} + - powershell: eng/common/sdl/extract-artifact-packages.ps1 -InputPath $(Build.ArtifactStagingDirectory)\artifacts\BlobArtifacts -ExtractPath $(Build.ArtifactStagingDirectory)\artifacts\BlobArtifacts diff --git a/eng/common/templates/job/job.yml b/eng/common/templates/job/job.yml index 44ad26abf5..e24ca2f46f 100644 --- a/eng/common/templates/job/job.yml +++ b/eng/common/templates/job/job.yml @@ -75,6 +75,10 @@ jobs: - ${{ if eq(parameters.enableRichCodeNavigation, 'true') }}: - name: EnableRichCodeNavigation value: 'true' + # Retry signature validation up to three times, waiting 2 seconds between attempts. + # See https://learn.microsoft.com/en-us/nuget/reference/errors-and-warnings/nu3028#retry-untrusted-root-failures + - name: NUGET_EXPERIMENTAL_CHAIN_BUILD_RETRY_POLICY + value: 3,2000 - ${{ each variable in parameters.variables }}: # handle name-value variable syntax # example: @@ -83,7 +87,7 @@ jobs: - ${{ if ne(variable.name, '') }}: - name: ${{ variable.name }} value: ${{ variable.value }} - + # handle variable groups - ${{ if ne(variable.group, '') }}: - group: ${{ variable.group }} @@ -132,7 +136,7 @@ jobs: condition: and(succeeded(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT')) - ${{ if and(eq(parameters.runAsPublic, 'false'), eq(variables['System.TeamProject'], 'internal')) }}: - - task: NuGetAuthenticate@0 + - task: NuGetAuthenticate@1 - ${{ if and(ne(parameters.artifacts.download, 'false'), ne(parameters.artifacts.download, '')) }}: - task: DownloadPipelineArtifact@2 @@ -169,7 +173,7 @@ jobs: - ${{ if eq(parameters.enableMicrobuild, 'true') }}: - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - task: MicroBuildCleanup@1 - displayName: Execute Microbuild cleanup tasks + displayName: Execute Microbuild cleanup tasks condition: and(always(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT')) continueOnError: ${{ parameters.continueOnError }} env: @@ -219,7 +223,7 @@ jobs: displayName: Publish XUnit Test Results inputs: testResultsFormat: 'xUnit' - testResultsFiles: '*.xml' + testResultsFiles: '*.xml' searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)' testRunTitle: ${{ coalesce(parameters.testRunTitle, parameters.name, '$(System.JobName)') }}-xunit mergeTestResults: ${{ parameters.mergeTestResults }} @@ -230,7 +234,7 @@ jobs: displayName: Publish TRX Test Results inputs: testResultsFormat: 'VSTest' - testResultsFiles: '*.trx' + testResultsFiles: '*.trx' searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)' testRunTitle: ${{ coalesce(parameters.testRunTitle, parameters.name, '$(System.JobName)') }}-trx mergeTestResults: ${{ parameters.mergeTestResults }} diff --git a/eng/common/templates/job/publish-build-assets.yml b/eng/common/templates/job/publish-build-assets.yml index 42017109f3..fa5446c093 100644 --- a/eng/common/templates/job/publish-build-assets.yml +++ b/eng/common/templates/job/publish-build-assets.yml @@ -72,7 +72,7 @@ jobs: condition: ${{ parameters.condition }} continueOnError: ${{ parameters.continueOnError }} - - task: NuGetAuthenticate@0 + - task: NuGetAuthenticate@1 - task: PowerShell@2 displayName: Publish Build Assets @@ -81,7 +81,7 @@ jobs: arguments: -task PublishBuildAssets -restore -msbuildEngine dotnet /p:ManifestsPath='$(Build.StagingDirectory)/Download/AssetManifests' /p:BuildAssetRegistryToken=$(MaestroAccessToken) - /p:MaestroApiEndpoint=https://maestro-prod.westus2.cloudapp.azure.com + /p:MaestroApiEndpoint=https://maestro.dot.net /p:PublishUsingPipelines=${{ parameters.publishUsingPipelines }} /p:OfficialBuildId=$(Build.BuildNumber) condition: ${{ parameters.condition }} diff --git a/eng/common/templates/post-build/common-variables.yml b/eng/common/templates/post-build/common-variables.yml index c24193acfc..173914f236 100644 --- a/eng/common/templates/post-build/common-variables.yml +++ b/eng/common/templates/post-build/common-variables.yml @@ -7,7 +7,7 @@ variables: # Default Maestro++ API Endpoint and API Version - name: MaestroApiEndPoint - value: "https://maestro-prod.westus2.cloudapp.azure.com" + value: "https://maestro.dot.net" - name: MaestroApiAccessToken value: $(MaestroAccessToken) - name: MaestroApiVersion diff --git a/eng/common/templates/post-build/post-build.yml b/eng/common/templates/post-build/post-build.yml index ef720f9d78..3f74abf7ce 100644 --- a/eng/common/templates/post-build/post-build.yml +++ b/eng/common/templates/post-build/post-build.yml @@ -169,7 +169,7 @@ stages: # This is necessary whenever we want to publish/restore to an AzDO private feed # Since sdk-task.ps1 tries to restore packages we need to do this authentication here # otherwise it'll complain about accessing a private feed. - - task: NuGetAuthenticate@0 + - task: NuGetAuthenticate@1 displayName: 'Authenticate to AzDO Feeds' # Signing validation will optionally work with the buildmanifest file which is downloaded from @@ -266,7 +266,7 @@ stages: BARBuildId: ${{ parameters.BARBuildId }} PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} - - task: NuGetAuthenticate@0 + - task: NuGetAuthenticate@1 - task: PowerShell@2 displayName: Publish Using Darc diff --git a/eng/common/templates/steps/execute-sdl.yml b/eng/common/templates/steps/execute-sdl.yml index 9dd5709f66..07426fde05 100644 --- a/eng/common/templates/steps/execute-sdl.yml +++ b/eng/common/templates/steps/execute-sdl.yml @@ -33,7 +33,7 @@ steps: - ${{ if ne(parameters.overrideParameters, '') }}: - powershell: ${{ parameters.executeAllSdlToolsScript }} ${{ parameters.overrideParameters }} - displayName: Execute SDL + displayName: Execute SDL (Overridden) continueOnError: ${{ parameters.sdlContinueOnError }} condition: ${{ parameters.condition }} diff --git a/eng/common/templates/steps/source-build.yml b/eng/common/templates/steps/source-build.yml index a97a185a36..41bbb91573 100644 --- a/eng/common/templates/steps/source-build.yml +++ b/eng/common/templates/steps/source-build.yml @@ -68,6 +68,11 @@ steps: runtimeOsArgs='/p:RuntimeOS=${{ parameters.platform.runtimeOS }}' fi + baseOsArgs= + if [ '${{ parameters.platform.baseOS }}' != '' ]; then + baseOsArgs='/p:BaseOS=${{ parameters.platform.baseOS }}' + fi + publishArgs= if [ '${{ parameters.platform.skipPublishValidation }}' != 'true' ]; then publishArgs='--publish' @@ -86,6 +91,7 @@ steps: $internalRestoreArgs \ $targetRidArgs \ $runtimeOsArgs \ + $baseOsArgs \ /p:SourceBuildNonPortable=${{ parameters.platform.nonPortable }} \ /p:ArcadeBuildFromSource=true \ /p:AssetManifestFileName=$assetManifestFileName @@ -112,3 +118,12 @@ steps: artifactName: BuildLogs_SourceBuild_${{ parameters.platform.name }}_Attempt$(System.JobAttempt) continueOnError: true condition: succeededOrFailed() + +# Manually inject component detection so that we can ignore the source build upstream cache, which contains +# a nupkg cache of input packages (a local feed). +# This path must match the upstream cache path in property 'CurrentRepoSourceBuiltNupkgCacheDir' +# in src\Microsoft.DotNet.Arcade.Sdk\tools\SourceBuild\SourceBuildArcade.targets +- task: ComponentGovernanceComponentDetection@0 + displayName: Component Detection (Exclude upstream cache) + inputs: + ignoreDirectories: '$(Build.SourcesDirectory)/artifacts/source-build/self/src/artifacts/obj/source-built-upstream-cache' diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1 index 38cf94ff88..fdd0cbb91f 100644 --- a/eng/common/tools.ps1 +++ b/eng/common/tools.ps1 @@ -379,13 +379,13 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements = } # Minimum VS version to require. - $vsMinVersionReqdStr = '16.8' + $vsMinVersionReqdStr = '17.7' $vsMinVersionReqd = [Version]::new($vsMinVersionReqdStr) # If the version of msbuild is going to be xcopied, # use this version. Version matches a package here: - # https://dev.azure.com/dnceng/public/_packaging?_a=package&feed=dotnet-eng&package=RoslynTools.MSBuild&protocolType=NuGet&version=17.4.1&view=overview - $defaultXCopyMSBuildVersion = '17.4.1' + # https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-eng/NuGet/RoslynTools.MSBuild/versions/17.8.1-2 + $defaultXCopyMSBuildVersion = '17.8.1-2' if (!$vsRequirements) { if (Get-Member -InputObject $GlobalJson.tools -Name 'vs') { @@ -671,6 +671,10 @@ function InitializeNativeTools() { } } +function Read-ArcadeSdkVersion() { + return $GlobalJson.'msbuild-sdks'.'Microsoft.DotNet.Arcade.Sdk' +} + function InitializeToolset() { if (Test-Path variable:global:_ToolsetBuildProj) { return $global:_ToolsetBuildProj @@ -678,7 +682,7 @@ function InitializeToolset() { $nugetCache = GetNuGetPackageCachePath - $toolsetVersion = $GlobalJson.'msbuild-sdks'.'Microsoft.DotNet.Arcade.Sdk' + $toolsetVersion = Read-ArcadeSdkVersion $toolsetLocationFile = Join-Path $ToolsetDir "$toolsetVersion.txt" if (Test-Path $toolsetLocationFile) { diff --git a/global.json b/global.json index 25df1701da..9e1f613689 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "tools": { - "dotnet": "8.0.100-preview.3.23178.7", + "dotnet": "8.0.100", "runtimes": { "dotnet/x64": [ "$(DotNetRuntime60Version)" @@ -11,8 +11,8 @@ } }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.23265.1", - "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23265.1", + "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.23620.2", + "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23620.2", "Microsoft.Build.Traversal": "3.2.0", "Microsoft.SourceLink.GitHub": "1.1.0-beta-20206-02", "Microsoft.SourceLink.Common": "1.1.0-beta-20206-02" From 7ec4d6734e61cc8ec40cede7fca92237ae2179fd Mon Sep 17 00:00:00 2001 From: Michael Sharp Date: Mon, 20 Nov 2023 20:32:22 -0700 Subject: [PATCH 02/18] Fixed version update breaks. --- eng/Versions.props | 2 +- .../ArrowIntegrationTests.cs | 4 +- .../DataFrameJoinTests.cs | 8 +- .../ColumnInferenceTests.cs | 4 +- .../SuggestedPipelineBuilderTests.cs | 2 +- .../UnitTests/ColumnTypes.cs | 20 ++--- test/Microsoft.ML.FSharp.Tests/SmokeTests.fs | 40 +++++----- .../IntrospectiveTraining.cs | 8 +- .../Harness/Configs.cs | 2 +- .../Microsoft.ML.Sweeper.Tests/TestSweeper.cs | 34 +++++---- .../Attributes/BenchmarkTheoryAttribute.cs | 2 +- .../DataPipe/TestDataPipe.cs | 2 +- test/Microsoft.ML.TestFramework/GlobalBase.cs | 2 +- .../RemoteExecutor.cs | 2 +- .../TestCommandBase.cs | 9 ++- .../Data/github-issues-train.tsv | 76 +++++++++---------- .../Scenarios/Api/TestApi.cs | 4 +- test/Microsoft.ML.Tests/TextLoaderTests.cs | 4 +- 18 files changed, 114 insertions(+), 111 deletions(-) diff --git a/eng/Versions.props b/eng/Versions.props index c75e77f005..d2fa981353 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -91,7 +91,7 @@ 4.8.5 1.0.118 1.2.7 - 2.4.2 + 2.5.3 false diff --git a/test/Microsoft.Data.Analysis.Tests/ArrowIntegrationTests.cs b/test/Microsoft.Data.Analysis.Tests/ArrowIntegrationTests.cs index 185ab835bb..8961b724d9 100644 --- a/test/Microsoft.Data.Analysis.Tests/ArrowIntegrationTests.cs +++ b/test/Microsoft.Data.Analysis.Tests/ArrowIntegrationTests.cs @@ -128,7 +128,7 @@ RecordBatch CreateRecordBatch(string prependColumnNamesWith = "") } [Fact] - public void TestEmptyDataFrameRecordBatch() + public async void TestEmptyDataFrameRecordBatch() { PrimitiveDataFrameColumn ageColumn = new PrimitiveDataFrameColumn("Age"); PrimitiveDataFrameColumn lengthColumn = new PrimitiveDataFrameColumn("CharCount"); @@ -142,7 +142,7 @@ public void TestEmptyDataFrameRecordBatch() foundARecordBatch = true; MemoryStream stream = new MemoryStream(); ArrowStreamWriter writer = new ArrowStreamWriter(stream, recordBatch.Schema); - writer.WriteRecordBatchAsync(recordBatch).GetAwaiter().GetResult(); + await writer.WriteRecordBatchAsync(recordBatch); stream.Position = 0; ArrowStreamReader reader = new ArrowStreamReader(stream); diff --git a/test/Microsoft.Data.Analysis.Tests/DataFrameJoinTests.cs b/test/Microsoft.Data.Analysis.Tests/DataFrameJoinTests.cs index a465ee70f5..2db6e75b50 100644 --- a/test/Microsoft.Data.Analysis.Tests/DataFrameJoinTests.cs +++ b/test/Microsoft.Data.Analysis.Tests/DataFrameJoinTests.cs @@ -24,7 +24,7 @@ public void DataFrameJoinTests_GetSortedListsIntersection_EmptyCollections_Empty // Assert - Assert.Equal(0, intersection.Count); + Assert.Empty(intersection); } [Fact] @@ -47,7 +47,7 @@ public void DataFrameJoinTests_GetSortedListsIntersection_EmptyCollections_First // Assert - Assert.Equal(0, intersection.Count); + Assert.Empty(intersection); } [Fact] @@ -70,7 +70,7 @@ public void DataFrameJoinTests_GetSortedListsIntersection_EmptyCollections_Secon // Assert - Assert.Equal(0, intersection.Count); + Assert.Empty(intersection); } [Fact] @@ -101,7 +101,7 @@ public void DataFrameJoinTests_GetSortedListsIntersection_SortedCollections_With // Assert - Assert.Equal(0, intersection.Count); + Assert.Empty(intersection); } [Fact] diff --git a/test/Microsoft.ML.AutoML.Tests/ColumnInferenceTests.cs b/test/Microsoft.ML.AutoML.Tests/ColumnInferenceTests.cs index 558e5d6788..09d0aaffd7 100644 --- a/test/Microsoft.ML.AutoML.Tests/ColumnInferenceTests.cs +++ b/test/Microsoft.ML.AutoML.Tests/ColumnInferenceTests.cs @@ -223,8 +223,8 @@ public void InferColumnsFromMultilineInputFile() // File has 3 columns: "id", "description" and "animal" Assert.NotNull(result.ColumnInformation.LabelColumnName); - Assert.Equal(1, result.ColumnInformation.TextColumnNames.Count); - Assert.Equal(1, result.ColumnInformation.CategoricalColumnNames.Count); + Assert.Single(result.ColumnInformation.TextColumnNames); + Assert.Single(result.ColumnInformation.CategoricalColumnNames); Assert.Equal("id", result.ColumnInformation.LabelColumnName); Assert.Equal("description", result.ColumnInformation.TextColumnNames.First()); diff --git a/test/Microsoft.ML.AutoML.Tests/SuggestedPipelineBuilderTests.cs b/test/Microsoft.ML.AutoML.Tests/SuggestedPipelineBuilderTests.cs index be8d75ff8a..63cca8f878 100644 --- a/test/Microsoft.ML.AutoML.Tests/SuggestedPipelineBuilderTests.cs +++ b/test/Microsoft.ML.AutoML.Tests/SuggestedPipelineBuilderTests.cs @@ -46,7 +46,7 @@ public void TrainerNeedsNormalization() public void TrainerNotNeedNormalization() { var pipeline = BuildSuggestedPipeline(BuildLightGbmTrainer()); - Assert.Equal(0, pipeline.Transforms.Count); + Assert.Empty(pipeline.Transforms); } private static void TestPipelineBuilderCaching( diff --git a/test/Microsoft.ML.Core.Tests/UnitTests/ColumnTypes.cs b/test/Microsoft.ML.Core.Tests/UnitTests/ColumnTypes.cs index e50fa4ddee..8b59faf6bf 100644 --- a/test/Microsoft.ML.Core.Tests/UnitTests/ColumnTypes.cs +++ b/test/Microsoft.ML.Core.Tests/UnitTests/ColumnTypes.cs @@ -32,19 +32,19 @@ public void TestEqualAndGetHashCode() { var tmp = type; if (dict.ContainsKey(tmp) && dict[tmp] != tmp.ToString()) - Assert.True(false, dict[tmp] + " and " + tmp.ToString() + " are duplicates."); + Assert.Fail(dict[tmp] + " and " + tmp.ToString() + " are duplicates."); dict[tmp] = tmp.ToString(); for (int size = 0; size < 5; size++) { tmp1 = new VectorDataViewType(tmp, size); if (dict.ContainsKey(tmp1) && dict[tmp1] != tmp1.ToString()) - Assert.True(false, dict[tmp1] + " and " + tmp1.ToString() + " are duplicates."); + Assert.Fail(dict[tmp1] + " and " + tmp1.ToString() + " are duplicates."); dict[tmp1] = tmp1.ToString(); for (int size1 = 0; size1 < 5; size1++) { tmp2 = new VectorDataViewType(tmp, size, size1); if (dict.ContainsKey(tmp2) && dict[tmp2] != tmp2.ToString()) - Assert.True(false, dict[tmp2] + " and " + tmp2.ToString() + " are duplicates."); + Assert.Fail(dict[tmp2] + " and " + tmp2.ToString() + " are duplicates."); dict[tmp2] = tmp2.ToString(); } } @@ -59,19 +59,19 @@ public void TestEqualAndGetHashCode() { tmp = new KeyDataViewType(rawType, count); if (dict.ContainsKey(tmp) && dict[tmp] != tmp.ToString()) - Assert.True(false, dict[tmp] + " and " + tmp.ToString() + " are duplicates."); + Assert.Fail(dict[tmp] + " and " + tmp.ToString() + " are duplicates."); dict[tmp] = tmp.ToString(); for (int size = 0; size < 5; size++) { tmp1 = new VectorDataViewType(tmp, size); if (dict.ContainsKey(tmp1) && dict[tmp1] != tmp1.ToString()) - Assert.True(false, dict[tmp1] + " and " + tmp1.ToString() + " are duplicates."); + Assert.Fail(dict[tmp1] + " and " + tmp1.ToString() + " are duplicates."); dict[tmp1] = tmp1.ToString(); for (int size1 = 0; size1 < 5; size1++) { tmp2 = new VectorDataViewType(tmp, size, size1); if (dict.ContainsKey(tmp2) && dict[tmp2] != tmp2.ToString()) - Assert.True(false, dict[tmp2] + " and " + tmp2.ToString() + " are duplicates."); + Assert.Fail(dict[tmp2] + " and " + tmp2.ToString() + " are duplicates."); dict[tmp2] = tmp2.ToString(); } } @@ -79,19 +79,19 @@ public void TestEqualAndGetHashCode() Assert.True(rawType.TryGetDataKind(out var kind)); tmp = new KeyDataViewType(rawType, kind.ToMaxInt()); if (dict.ContainsKey(tmp) && dict[tmp] != tmp.ToString()) - Assert.True(false, dict[tmp] + " and " + tmp.ToString() + " are duplicates."); + Assert.Fail(dict[tmp] + " and " + tmp.ToString() + " are duplicates."); dict[tmp] = tmp.ToString(); for (int size = 0; size < 5; size++) { tmp1 = new VectorDataViewType(tmp, size); if (dict.ContainsKey(tmp1) && dict[tmp1] != tmp1.ToString()) - Assert.True(false, dict[tmp1] + " and " + tmp1.ToString() + " are duplicates."); + Assert.Fail(dict[tmp1] + " and " + tmp1.ToString() + " are duplicates."); dict[tmp1] = tmp1.ToString(); for (int size1 = 0; size1 < 5; size1++) { tmp2 = new VectorDataViewType(tmp, size, size1); if (dict.ContainsKey(tmp2) && dict[tmp2] != tmp2.ToString()) - Assert.True(false, dict[tmp2] + " and " + tmp2.ToString() + " are duplicates."); + Assert.Fail(dict[tmp2] + " and " + tmp2.ToString() + " are duplicates."); dict[tmp2] = tmp2.ToString(); } } @@ -104,7 +104,7 @@ public void TestEqualAndGetHashCode() { var tmp4 = new ImageDataViewType(height, width); if (dict.ContainsKey(tmp4)) - Assert.True(false, dict[tmp4] + " and " + tmp4.ToString() + " are duplicates."); + Assert.Fail(dict[tmp4] + " and " + tmp4.ToString() + " are duplicates."); dict[tmp4] = tmp4.ToString(); } } diff --git a/test/Microsoft.ML.FSharp.Tests/SmokeTests.fs b/test/Microsoft.ML.FSharp.Tests/SmokeTests.fs index 7e186b13e0..0f129eacfc 100644 --- a/test/Microsoft.ML.FSharp.Tests/SmokeTests.fs +++ b/test/Microsoft.ML.FSharp.Tests/SmokeTests.fs @@ -11,31 +11,31 @@ // environment, for example, see https://github.com/isaacabraham/ml-test-experiment/, but // here we list them explicitly to avoid the dependency on a package loader, // -// You should build Microsoft.ML.FSharp.Tests in Debug mode for framework net461 +// You should build Microsoft.ML.FSharp.Tests in Debug mode for framework net462 // before running this as a script with F# Interactive by editing the project // file to have: -// net6.0; net461 +// net6.0; net462 #if INTERACTIVE #r "netstandard" -#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net461/Microsoft.ML.Core.dll" -#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net461/Google.Protobuf.dll" -#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net461/Newtonsoft.Json.dll" -#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net461/System.CodeDom.dll" -#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net461/Microsoft.ML.CpuMath.dll" -#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net461/Microsoft.ML.Data.dll" -#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net461/Microsoft.ML.Transforms.dll" -#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net461/Microsoft.ML.ResultProcessor.dll" -#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net461/Microsoft.ML.PCA.dll" -#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net461/Microsoft.ML.KMeansClustering.dll" -#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net461/Microsoft.ML.FastTree.dll" -#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net461/Microsoft.ML.Api.dll" -#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net461/Microsoft.ML.Sweeper.dll" -#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net461/Microsoft.ML.dll" -#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net461/Microsoft.ML.StandardTrainers.dll" -#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net461/Microsoft.ML.PipelineInference.dll" -#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net461/xunit.core.dll" -#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net461/xunit.assert.dll" +#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net462/Microsoft.ML.Core.dll" +#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net462/Google.Protobuf.dll" +#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net462/Newtonsoft.Json.dll" +#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net462/System.CodeDom.dll" +#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net462/Microsoft.ML.CpuMath.dll" +#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net462/Microsoft.ML.Data.dll" +#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net462/Microsoft.ML.Transforms.dll" +#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net462/Microsoft.ML.ResultProcessor.dll" +#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net462/Microsoft.ML.PCA.dll" +#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net462/Microsoft.ML.KMeansClustering.dll" +#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net462/Microsoft.ML.FastTree.dll" +#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net462/Microsoft.ML.Api.dll" +#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net462/Microsoft.ML.Sweeper.dll" +#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net462/Microsoft.ML.dll" +#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net462/Microsoft.ML.StandardTrainers.dll" +#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net462/Microsoft.ML.PipelineInference.dll" +#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net462/xunit.core.dll" +#r @"../../bin/AnyCPU.Debug/Microsoft.ML.FSharp.Tests/net462/xunit.assert.dll" #r "System" #r "System.Core" #r "System.Xml.Linq" diff --git a/test/Microsoft.ML.IntegrationTests/IntrospectiveTraining.cs b/test/Microsoft.ML.IntegrationTests/IntrospectiveTraining.cs index 018c75d046..16d0bfff76 100644 --- a/test/Microsoft.ML.IntegrationTests/IntrospectiveTraining.cs +++ b/test/Microsoft.ML.IntegrationTests/IntrospectiveTraining.cs @@ -59,8 +59,8 @@ public void InspectFastForestRegresionTrees() Assert.Equal(tree.SplitGains.Count, tree.NumberOfNodes); Assert.Equal(tree.NumericalSplitThresholds.Count, tree.NumberOfNodes); Assert.All(tree.CategoricalSplitFlags, flag => Assert.False(flag)); - Assert.Equal(0, tree.GetCategoricalSplitFeaturesAt(0).Count); - Assert.Equal(0, tree.GetCategoricalCategoricalSplitFeatureRangeAt(0).Count); + Assert.Empty(tree.GetCategoricalSplitFeaturesAt(0)); + Assert.Empty(tree.GetCategoricalCategoricalSplitFeatureRangeAt(0)); }); } @@ -103,8 +103,8 @@ public void InspectFastTreeModelParameters() Assert.Equal(tree.SplitGains.Count, tree.NumberOfNodes); Assert.Equal(tree.NumericalSplitThresholds.Count, tree.NumberOfNodes); Assert.All(tree.CategoricalSplitFlags, flag => Assert.False(flag)); - Assert.Equal(0, tree.GetCategoricalSplitFeaturesAt(0).Count); - Assert.Equal(0, tree.GetCategoricalCategoricalSplitFeatureRangeAt(0).Count); + Assert.Empty(tree.GetCategoricalSplitFeaturesAt(0)); + Assert.Empty(tree.GetCategoricalCategoricalSplitFeatureRangeAt(0)); }); // Add baselines for the model. diff --git a/test/Microsoft.ML.PerformanceTests/Harness/Configs.cs b/test/Microsoft.ML.PerformanceTests/Harness/Configs.cs index c7dd80c90b..8f069980d6 100644 --- a/test/Microsoft.ML.PerformanceTests/Harness/Configs.cs +++ b/test/Microsoft.ML.PerformanceTests/Harness/Configs.cs @@ -41,7 +41,7 @@ private IToolchain CreateToolchain() TimeSpan timeout = TimeSpan.FromMinutes(5); #if NETFRAMEWORK - var tfm = "net461"; + var tfm = "net462"; var csProj = CsProjClassicNetToolchain.From(tfm, timeout: timeout); #else var frameworkName = new FrameworkName(AppContext.TargetFrameworkName); diff --git a/test/Microsoft.ML.Sweeper.Tests/TestSweeper.cs b/test/Microsoft.ML.Sweeper.Tests/TestSweeper.cs index b9c8894584..b0abbc9086 100644 --- a/test/Microsoft.ML.Sweeper.Tests/TestSweeper.cs +++ b/test/Microsoft.ML.Sweeper.Tests/TestSweeper.cs @@ -120,14 +120,14 @@ public void TestRandomSweeper() } else { - Assert.True(false, "Wrong parameter"); + Assert.Fail("Wrong parameter"); } } } } [Fact] - public void TestSimpleSweeperAsync() + public async void TestSimpleSweeperAsync() { var random = new Random(42); var env = new MLContext(42); @@ -146,10 +146,11 @@ public void TestSimpleSweeperAsync() for (int i = 0; i < sweeps; i++) { var task = sweeper.ProposeAsync(); + var tResult = await task; Assert.True(task.IsCompleted); - paramSets.Add(task.Result.ParameterSet); - var result = new RunResult(task.Result.ParameterSet, random.NextDouble(), true); - sweeper.Update(task.Result.Id, result); + paramSets.Add(tResult.ParameterSet); + var result = new RunResult(tResult.ParameterSet, random.NextDouble(), true); + sweeper.Update(tResult.Id, result); } Assert.Equal(sweeps, paramSets.Count); CheckAsyncSweeperResult(paramSets); @@ -167,8 +168,9 @@ public void TestSimpleSweeperAsync() for (int i = 0; i < sweeps; i++) { var task = gridSweeper.ProposeAsync(); + var tResult = await task; Assert.True(task.IsCompleted); - paramSets.Add(task.Result.ParameterSet); + paramSets.Add(tResult.ParameterSet); } Assert.Equal(sweeps, paramSets.Count); CheckAsyncSweeperResult(paramSets); @@ -326,12 +328,12 @@ public void TestDeterministicSweeperAsyncParallel() int[] sleeps = new int[sweeps]; for (int i = 0; i < sleeps.Length; i++) sleeps[i] = random.Next(10, 100); - var r = Task.Run(() => Parallel.For(0, sweeps, options, (int i) => + var r = Task.Run(() => Parallel.For(0, sweeps, options, async (int i) => { var task = sweeper.ProposeAsync(); - task.Wait(); + var tResult = await task; Assert.Equal(TaskStatus.RanToCompletion, task.Status); - var paramWithId = task.Result; + var paramWithId = tResult; if (paramWithId == null) return; Thread.Sleep(sleeps[i]); @@ -417,7 +419,7 @@ private void CheckAsyncSweeperResult(List paramSets) } else { - Assert.True(false, "Wrong parameter"); + Assert.Fail("Wrong parameter"); } } } @@ -464,7 +466,7 @@ public void TestRandomGridSweeper() } else { - Assert.True(false, "Wrong parameter"); + Assert.Fail("Wrong parameter"); } } Assert.False(gridPoint[i][j]); @@ -491,7 +493,7 @@ public void TestRandomGridSweeper() } else { - Assert.True(false, "Wrong parameter"); + Assert.Fail("Wrong parameter"); } } Assert.False(gridPoint[i][j]); @@ -523,7 +525,7 @@ public void TestRandomGridSweeper() } else { - Assert.True(false, "Wrong parameter"); + Assert.Fail("Wrong parameter"); } } Assert.False(gridPoint[i][j]); @@ -577,7 +579,7 @@ public void TestNelderMeadSweeper() } else { - Assert.True(false, "Wrong parameter"); + Assert.Fail("Wrong parameter"); } } results.Add(new RunResult(parameterSet, random.NextDouble(), true)); @@ -625,7 +627,7 @@ public void TestNelderMeadSweeperWithDefaultFirstBatchSweeper() } else { - Assert.True(false, "Wrong parameter"); + Assert.Fail("Wrong parameter"); } } results.Add(new RunResult(parameterSet, random.NextDouble(), true)); @@ -676,7 +678,7 @@ public void TestSmacSweeper() } else { - Assert.True(false, "Wrong parameter"); + Assert.Fail("Wrong parameter"); } } results.Add(new RunResult(parameterSet, random.NextDouble(), true)); diff --git a/test/Microsoft.ML.TestFramework/Attributes/BenchmarkTheoryAttribute.cs b/test/Microsoft.ML.TestFramework/Attributes/BenchmarkTheoryAttribute.cs index 982ec4e580..018748e18c 100644 --- a/test/Microsoft.ML.TestFramework/Attributes/BenchmarkTheoryAttribute.cs +++ b/test/Microsoft.ML.TestFramework/Attributes/BenchmarkTheoryAttribute.cs @@ -12,7 +12,7 @@ public sealed class BenchmarkTheoryAttribute : EnvironmentSpecificTheoryAttribut #if DEBUG private const string SkipMessage = "BenchmarkDotNet does not allow running the benchmarks in Debug, so this test is disabled for DEBUG"; private readonly bool _isEnvironmentSupported = false; -#elif NET461 +#elif net462 private const string SkipMessage = "We are currently not running Benchmarks for FullFramework"; private readonly bool _isEnvironmentSupported = false; #else diff --git a/test/Microsoft.ML.TestFramework/DataPipe/TestDataPipe.cs b/test/Microsoft.ML.TestFramework/DataPipe/TestDataPipe.cs index 50281944d6..ee94efc676 100644 --- a/test/Microsoft.ML.TestFramework/DataPipe/TestDataPipe.cs +++ b/test/Microsoft.ML.TestFramework/DataPipe/TestDataPipe.cs @@ -1611,7 +1611,7 @@ public void TestLdaTransformerEmptyDocumentException() return; } - Assert.True(false, "The LDA transform does not throw expected error on empty documents."); + Assert.Fail("The LDA transform does not throw expected error on empty documents."); } } } diff --git a/test/Microsoft.ML.TestFramework/GlobalBase.cs b/test/Microsoft.ML.TestFramework/GlobalBase.cs index d1404e11ff..016e3dfd9b 100644 --- a/test/Microsoft.ML.TestFramework/GlobalBase.cs +++ b/test/Microsoft.ML.TestFramework/GlobalBase.cs @@ -77,7 +77,7 @@ private static void AssertHandler(string msg, IExceptionContext ectx) else #endif { - Assert.True(false, $"Assert failed: {msg}"); + Assert.Fail($"Assert failed: {msg}"); } } diff --git a/test/Microsoft.ML.TestFramework/RemoteExecutor.cs b/test/Microsoft.ML.TestFramework/RemoteExecutor.cs index 365ce0d7c4..097de7ad8e 100644 --- a/test/Microsoft.ML.TestFramework/RemoteExecutor.cs +++ b/test/Microsoft.ML.TestFramework/RemoteExecutor.cs @@ -155,7 +155,7 @@ private static void CheckProcess(Process process, RemoteInvokeOptions options) private sealed class RemoteExecutionException : XunitException { - internal RemoteExecutionException(string stackTrace) : base("Remote process failed with an unhandled exception.", stackTrace) { } + internal RemoteExecutionException(string stackTrace) : base($"Remote process failed with an unhandled exception. {stackTrace}") { } } private static MethodInfo GetMethodInfo(Delegate d) diff --git a/test/Microsoft.ML.TestFramework/TestCommandBase.cs b/test/Microsoft.ML.TestFramework/TestCommandBase.cs index d990aa673e..f0ba55340d 100644 --- a/test/Microsoft.ML.TestFramework/TestCommandBase.cs +++ b/test/Microsoft.ML.TestFramework/TestCommandBase.cs @@ -985,7 +985,7 @@ public void CommandCrossValidationAndSave() // FastTree internally fails if we try to run it simultaneously and if this happens we wouldn't get model file for training. [TestCategory(Cat)] [Fact] - public void CommandTrainFastTreeInDifferentThreads() + public async void CommandTrainFastTreeInDifferentThreads() { var dataPath = GetDataPath(TestDatasets.adult.testFilename); var firstModelOutPath = DeleteOutputPath("TreeTransform-model2.zip"); @@ -1001,10 +1001,11 @@ public void CommandTrainFastTreeInDifferentThreads() t[1] = new Task(() => MainForTest(secondTrainArgs)); t[0].Start(); t[1].Start(); - Task.WaitAll(t); + var t0 = await t[0]; + var t1 = await t[1]; - Assert.Equal(0, t[0].Result); - Assert.Equal(0, t[1].Result); + Assert.Equal(0, t0); + Assert.Equal(0, t1); } [TestCategory(Cat), TestCategory("FastTree")] diff --git a/test/Microsoft.ML.Tests/Data/github-issues-train.tsv b/test/Microsoft.ML.Tests/Data/github-issues-train.tsv index fece6f3f60..c5fc98c9e8 100644 --- a/test/Microsoft.ML.Tests/Data/github-issues-train.tsv +++ b/test/Microsoft.ML.Tests/Data/github-issues-train.tsv @@ -1542,7 +1542,7 @@ ID Area Title Description 4474 area-System.Diagnostics Debug.Assert throws System.Diagnostics.Debug+DebugAssertException Is this by designed for corefx ? because in .net, this should open a debugger instead. Our code currently depends a lot on Debug.Assert. Unfortunately Debug.Assert now throws Debug+DebugAssertException which causing inconsistent from the release mode I remember previously it throws a special uncatchable exception (Environment.FailFast()) which i think can be better instead of causing different behavior. 4475 area-System.IO Change ZLib Optimal CompressionLevel on Unix We currently have this comment and code in System.IO.Compression: ``` C# // Note that ZLib currently exactly correspond to the optimal values. // However, we have determined the optimal values by intependent measurements across // a range of all possible ZLib parameters and over a set of different data. // We stress that by using explicitly the values obtained by the measurements rather than // ZLib defaults even if they happened to be the same. // For ZLib 1.2.3 we have (copied from ZLibNative.cs): // ZLibNative.CompressionLevel.DefaultCompression = 6; // ZLibNative.Deflate_DefaultWindowBits = -15; // ZLibNative.Deflate_DefaultMemLevel = 8; case CompressionLevel.Optimal: zlibCompressionLevel = (ZLibNative.CompressionLevel)6; windowBits = -15; memLevel = 8; strategy = ZLibNative.CompressionStrategy.DefaultStrategy; break; ``` Since we are now using the “current” ZLib version on Unix, and because we are planning on changing which version we use on Windows, I don’t think this is the best approach anymore. It was probably correct when we were hard-coding a version, but since we don’t know which version will actually be used, I think we should be letting the zlib library figure out which is the best compression level to use. I have 2 separate options on how to address this: 1. On Unix, create a new shim method DeflateInit that only takes in the ZStream. The shim code will use the default values from the ZLib headers. Windows remains unchanged. https://github.com/eerhardt/corefx/commit/c1be54d6dfaf64098b42c186c041344e4378f083 2. Change both Windows and Unix code to always use the default compression level (-1) and let the zlib version pick. https://github.com/eerhardt/corefx/commit/38883e3df53153a9434dfc16696667279b18dd82 @ianhays @stephentoub - Do you guys agree this should be fixed? If so, do you have a preferred option - or an even better option than the 2 I've listed? 4476 area-System.Net Add support for custom validation of server SSL Certificate to HttpClient API This issue tracks the addition of new functionality to the HttpClient API. In order to implement certificate pinning and self-signed SSL certificate scenarios, developers need access to the SSL cert presented by the server, and the ability to do their own validation and then accept/reject the connection accordingly. Today, this ability is provided in .NET Framework by ServicePointManager.ServerCertificateValidationCallback and in ASP.NET 5 by WinHttpHandler.ServerCertificateValidationCallback. However, ServicePointManager is not in .NET Core, and WinHttpHandler is not available x-plat and on all app models. Hence, there is a need to add this API to the top-level HttpClient or HttpClientHandler types. If you have specific requirements around this scenario, please enter those here - we will track this issue in our backlog. -4477 area-System.Security Add missing X509ChainStatusFlags net461 added some new X509ChainStatusFlags values. While these are present already in the implementation library, they aren't in the ref library. GetChainStatusInformation was rewritten as a loop for net461, that change should also be ported over to corefx. +4477 area-System.Security Add missing X509ChainStatusFlags net462 added some new X509ChainStatusFlags values. While these are present already in the implementation library, they aren't in the ref library. GetChainStatusInformation was rewritten as a loop for net462, that change should also be ported over to corefx. 4478 area-System.Net Add System.Net.WebSockets.Client tests - Port some of the ToF ClientWebSocket tests that talk to a real websocket server - Cleanup naming of existing tests to conform to System.Net test method naming - Skip tests if not supported on platform. Specifically, these tests were failing on Win7 since Win7 does not support WinHttp WebSockets. We haven't really noticed this failing since the CI doesn't yet run Win7 tests (issue #4468) I plan to port the remainder of the ToF websocket related tests in a subsequent PR. 4479 area-System.Net Add Client certificate support to HttpClient API "The `HttpClientHandler` API has a `ClientCertificateOptions` enum that lets you pick between `Automatic` and `Manual` client cert option. Choosing `Automatic` lets the system choose the ""best"" client certificate for the user from among the installed and accessible ones. `Manual` means that the developer can explicitly pass in a client cert. However, `HttpClientHandler` does not have a `ClientCertificate` property, so you can't assign a certificate for the `Manual` option to use. This issue tracks the fix to address this gap. (`WinHttpHandler` has a `ClientCertificates` property for this purpose, but it is not x-plat and is not supported for all app models (e.g. UWP)) If you have specific requirements around this feature, please enter them here. " 4480 area-System.Net Interop.Ssl.SslShutdown crashes process during GC finalization A WCF test that attempts to write to an SslStream(https://github.com/dotnet/wcf/blob/master/src/System.Private.ServiceModel/tests/Scenarios/Security/TransportSecurity/Tcp/ClientCredentialTypeTests.cs) leaves SafeSslHandle in a closed state (which is correct). But when the next GC happens its finalizer is called and tries to Dispose it, causing an ObjectDisposedException. On Linux, this crashes the process. Unhandled Exception: System.ObjectDisposedException: Safe handle has been closed at System.Runtime.InteropServices.SafeHandle.DangerousAddRef(Boolean& success) at System.StubHelpers.StubHelpers.SafeHandleAddRef(SafeHandle pHandle, Boolean& success) at Interop.Ssl.SslShutdown(SafeSslHandle ssl) at Interop.OpenSsl.Disconnect(SafeSslHandle context) at System.Net.Security.SafeDeleteContext.ReleaseHandle() at System.Runtime.InteropServices.SafeHandle.InternalFinalize() at System.Runtime.InteropServices.SafeHandle.Dispose(Boolean disposing) at System.Runtime.InteropServices.SafeHandle.Finalize() @@ -3679,7 +3679,7 @@ ID Area Title Description 9838 area-System.Collections "BitArray.CopyTo copies also unused bits (""leaks data"")" `BitArray.CopyTo(...)` leaks internal data, if the data copied is shorter than the destination type. For instance, if set via `new BitArray(16, true)` (16 bits long, all on), then copy to an int array, all bits in the int are set (as if the `BitArray` is actually 32 bits long). [Demonstration tests](https://github.com/Clockwork-Muse/corefx/commit/19a67977e876aaa80eb42f7e04feae1fed1a815c) (although would need to be switched for regression tests). At the moment I had to verify the tests in a separate project - Something about the System.Collections is borked up when trying to run tests. I'm assuming that this is _not_ the desired behavior, given the data is automatically cleared when the length is increased. Granted, it's somewhat on the programmer for this, using a type shorter than there's officially data for... 9839 area-System.IO Can't use Path.GetFullPath in netstandard1.2 Hi, _Same issue/question as https://github.com/aspnet/Home/issues/1551 by @Sebosek_ How to get the full path of a given relative path in _netstandard1.2_? `Path.GetFullPath` seems to be available only for _netstandard1.3_ and above. Out of curiosity, why is that? Thanks 9842 area-System.IO Add IsolatedStorage types Bring back System.IO.IsolatedStorage, comprising these types ``` T:System.IO.IsolatedStorage.INormalizeForIsolatedStorage T:System.IO.IsolatedStorage.IsolatedStorage T:System.IO.IsolatedStorage.IsolatedStorageException T:System.IO.IsolatedStorage.IsolatedStorageFile T:System.IO.IsolatedStorage.IsolatedStorageFileStream T:System.IO.IsolatedStorage.IsolatedStorageScope T:System.IO.IsolatedStorage.IsolatedStorageSecurityOptions T:System.IO.IsolatedStorage.IsolatedStorageSecurityState ``` The most used types are ``` T:System.IO.IsolatedStorage.IsolatedStorageFile T:System.IO.IsolatedStorage.IsolatedStorageFileStream ``` and members in descending order ``` M:System.IO.IsolatedStorage.IsolatedStorageFile.FileExists(System.String) M:System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForApplication M:System.IO.IsolatedStorage.IsolatedStorageFile.DirectoryExists(System.String) M:System.IO.IsolatedStorage.IsolatedStorageFile.CreateDirectory(System.String) M:System.IO.IsolatedStorage.IsolatedStorageFile.OpenFile(System.String,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare) M:System.IO.IsolatedStorage.IsolatedStorageFile.OpenFile(System.String,System.IO.FileMode,System.IO.FileAccess)M:System.IO.IsolatedStorage.IsolatedStorageFile.GetLastWriteTime(System.String) M:System.IO.IsolatedStorage.IsolatedStorageFileStream.#ctor(System.String,System.IO.FileMode,System.IO.FileAccess,System.IO.IsolatedStorage.IsolatedStorageFile) M:System.IO.IsolatedStorage.IsolatedStorageFile.DeleteFile(System.String) M:System.IO.IsolatedStorage.IsolatedStorageFile.DeleteDirectory(System.String)M:System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForAssembly ``` -9846 area-System.Net .Net Plaform Standard implementation on .Net 4.6.1 has version inconsistency for System.Net.Http "I created a netstandard1.4 library (csproj) which uses System.Net.Http, and the highest available netstandard1.3 listed in NETStandard.Library meta package references System.Net.Http **v4.1.0**. I reference this library from a .Net Core console app which targets net461, and the latter has System.Net.Http **v4.0.0.0** in GAC. During build I get a warning regarding library versions conflict, and at run time get a FileNoFoundException: ""Could not load file or assembly 'System.Net.Http, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies."" Also, in project references (in solution explorer) System.Net.Http **v4.0.0** is shown. This looks pretty confusing, since I expect that once I referenced NETStandard.Library and target netstandard, I should not care about such versions consistency, since .NET Platform Standard docs claim that netstandard 1.4 is supported by net461 and higher, and netstandard 1.3 is supported by net46 and higher. UPDATE: I was also able to reproduce this problem when the library is xproj-based. [Here is the link to the sample project which reproduces the bug](https://1drv.ms/u/s!AuaAKPMkiTEAtvIeZ_3nHyiA2dUsqA) " +9846 area-System.Net .Net Plaform Standard implementation on .Net 4.6.1 has version inconsistency for System.Net.Http "I created a netstandard1.4 library (csproj) which uses System.Net.Http, and the highest available netstandard1.3 listed in NETStandard.Library meta package references System.Net.Http **v4.1.0**. I reference this library from a .Net Core console app which targets net462, and the latter has System.Net.Http **v4.0.0.0** in GAC. During build I get a warning regarding library versions conflict, and at run time get a FileNoFoundException: ""Could not load file or assembly 'System.Net.Http, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies."" Also, in project references (in solution explorer) System.Net.Http **v4.0.0** is shown. This looks pretty confusing, since I expect that once I referenced NETStandard.Library and target netstandard, I should not care about such versions consistency, since .NET Platform Standard docs claim that netstandard 1.4 is supported by net462 and higher, and netstandard 1.3 is supported by net46 and higher. UPDATE: I was also able to reproduce this problem when the library is xproj-based. [Here is the link to the sample project which reproduces the bug](https://1drv.ms/u/s!AuaAKPMkiTEAtvIeZ_3nHyiA2dUsqA) " 9848 area-System.Net UdpClient: Cancellation support for Async methods "In the current UdpClient methods, the `SendAsync` and `ReceiveAsync` method have no support for cancellation. A method could be in an `await RecieveAsync()`, which effectively never returns in a ""clean"" way. Instead, you have to call `Dispose()`/`Close()` on the `UdpClient` instance and catch `ObjectDisposedException` and `NullReferenceException`'s coming from that await. There's a race condition here: https://github.com/dotnet/corefx/blob/master/src/System.Net.Sockets/src/System/Net/Sockets/UDPClient.cs#L397 That that triggers the NRE -- the `FreeResources()` call could be called as part of a dispose while another thread hit's that `EndRecieve()` Rather than handling exceptions to end things, having a `CancellationToken` available in the async calls would enable a clean shutdown. " 9849 area-System.Net Make sure TcpClient properties do not throw when the underlying Socket is null Fixes #9762 9852 area-System.Net Fixing CookieCollection interface methods The Core version of CookieCollection modified the visibility of some interface methods. This PR updates our Reference Assembly to mimic that. cc: @weshaggard @danmosemsft @@ -3824,7 +3824,7 @@ ID Area Title Description 10325 area-System.Xml XPathItem constructor not public I have spent a little while attempting to port XmlPrime (XQuery 3.0, XSLT 2.0) library to .NET core. XPathItem's constructor is now internal. This means we cannot derive new XPathItem types. We rely on this to add XPathAtomicValue, XPathFunctionItem, XPathMap and XPathArray which are part of the XQuery 3.1 data model. This would essentially mean we would have to entirely abandon use of System.Xml.XPath. ``` // Constructor is internal because abstract member was removed and it might be back in some time. // If someone would have created derived class without that member and we would add it back // it would break his code. internal XPathItem() { } ``` 10330 area-Infrastructure Windows native arm64 toolset arm64 builds currently use a private toolset which has not been released publicly yet. There are a few spots in the Windows Native build that require a toolset directory be passed in manually. When the toolset is publicly released, we should modify the build to use that instead. arm64 workaround added in https://github.com/dotnet/corefx/pull/10043 10334 area-System.IO Add tests for newly added APM wrapper methods on System.IO and System.IO.Compression In dev/api branch we added some APM methods to System.IO and System.IO.Compression but we didn't add tests for them. This issue is to track the debt we have for them. related: #10181 -10335 area-Meta Remove boilerplate from test projects We should create some larger supports clauses to help reduce boiler-plate in our test projects. EG: `coreFx.Test.net46` should include tuples not just for net46, but also for net461, net462, etc. This is always the correct thing to do. We should also create some convenience supports clauses that allow tests to say they should apply to all the frameworks that support a particular netstandard version. EG: coreFx.Test.netstandard1.3 should include TFM/RID tuples for net46, netcore50, and netcoreap1.0 (as well as the future versions as stated above). This allows a test that can run everywhere to have minimal boilerplate in the project.json. Only if a test needs to hand-select frameworks does it need to use the more framework-granular clauses as mentioned above. We should also have some simple docs that explain the purpose of frameworks and supports in our test project.json's. /cc @ianhays +10335 area-Meta Remove boilerplate from test projects We should create some larger supports clauses to help reduce boiler-plate in our test projects. EG: `coreFx.Test.net46` should include tuples not just for net46, but also for net462, net462, etc. This is always the correct thing to do. We should also create some convenience supports clauses that allow tests to say they should apply to all the frameworks that support a particular netstandard version. EG: coreFx.Test.netstandard1.3 should include TFM/RID tuples for net46, netcore50, and netcoreap1.0 (as well as the future versions as stated above). This allows a test that can run everywhere to have minimal boilerplate in the project.json. Only if a test needs to hand-select frameworks does it need to use the more framework-granular clauses as mentioned above. We should also have some simple docs that explain the purpose of frameworks and supports in our test project.json's. /cc @ianhays 10338 area-Meta "Microsoft.NETCore.UniversalWindowsPlatform is missing some packages after ""exclude"": ""compile"" updates" "We updated all packages to hide their implementation dependencies with ""exclude"": ""compile"". We did this because implementation dependencies change regularly and aren't seen as part of the compatibility contract of a package. To ensure that folks don't rely on our packages for their implementation dependencies we use `""exclude"": ""compile""` in the packages. This transition caused at some package to be excluded entirely from the UWP meta-package since they were only referenced transitively. We should consider adding these back unless we specifically want to keep them out of the default reference set. /cc @weshaggard @terrajobst The dropped references are: - System.Collections.NonGeneric - System.Collections.Specialized - System.Threading.Overlapped - System.Xml.XmlDocument ## Workaround For folks that hit missing types from one of these packages after upgrading to Microsoft.NETCore.UniversalWindowsPlatform they can reference the packages directly as follows. ``` json ""System.Collections.NonGeneric"": ""4.0.1"", ""System.Collections.Specialized"": ""4.0.1"", ""System.Threading.Overlapped"": ""4.0.1"", ""System.Xml.XmlDocument"": ""4.0.1"" ``` " 10344 area-System.Net Hang in System.Net.Security.Tests (Windows debug) in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/3118/ Looking through the log, System.Net.Security.Tests is the only test that seems to have started, but not finished. This failed while testing PR #10309, which just changed an attribute on some Sockets tests, so isn't likely to have caused these tests to hang. 10345 area-System.Net Dns.GetHostEntryAsync(IPAddress.None) succeeds on macOS `await Dns.GetHostEntryAsync(IPAddress.None)` throws a SocketException on Windows, but doesn't on Unix. I don't know if the right answer here is that the failing test should be made platform-specific for Windows (i.e. this is expected behavior on Unix) or whether there's a bug in the Unix implementation we need to fix so that this case also fails. @@ -4107,7 +4107,7 @@ ID Area Title Description 11035 area-System.Runtime Expose serialization primitives on .NET Native Remove ApiCompatBaseline.netcore50aot.txt / ApiCompatBaseline.uap101aot.txt baselined errors once resolved, e.g. that CultureNotFoundException doesn't implement ISerializable in the implementation. - src\System.Globalization\src\ApiCompatBaseline.uap101aot.txt - src\System.Threading.Tasks\src\ApiCompatBaseline.uap101aot.txt - etc. 11036 area-System.Net .NET Core crashes when using HttpClient with HTTP/2 and Client Certificates "**Scenario** We have built an ASP.NET Core service which connects to Apple's HTTP/2-based APNS servers (in order to send push notifications from our ASP.NET Core-based platform to Apple devices). Unfortunately, .NET Core 1.0.0-rtm crashes hard in release mode when opening an HTTP/2 connection using a client certificate. In debug mode, it sometimes behaves better. **Result when running code in release mode (.NET Core 1.0.0-rtm, Ubuntu 16.04 Server)** Hard crash. After about 8 seconds of executing HttpClient.SendAsync(...), .NET Core 1.0.0-rtm crashes hard. Exception handlers do not execute. **Result when running code in debug mode (.NET Core 1.0.0-rtm, Ubuntu 16.04 Desktop, VSCode 1.4.0)** Inconsistent behavior, ranging from long delays to hard crashes. Sometimes .NET Core crashes, and sometimes the HttpClient.SendAsync(...) call times out and throws a catchable exception. And sometimes after a few debug cycles it mostly works, with a delay of around 8 seconds and then a successful response to the initial HTTP/2 request. In the last case, where the HttpClient request does succeed (in debug mode): once the HTTP/2 connection is open, sending additional messages in real-time to APNS servers (re-using the same HttpClient connection) works quickly and seemingly consistently. In our tests to date, the failure only occurs during the initial ""HTTP/2 client using client certificate"" connection attempt. As additional info: if we remove the client certificate from the request, the HTTP/2 secure connection goes through immediately (although APNS of course returns an ""unauthorized...missing certificate (sic)"" text reply). **Repro** 1. Install .NET Core 1.0 on Ubuntu 16.04 LTS 2. Compile libcurl from source to include HTTP/2 support (see next post in thread) 3. Save your APNS development certificate to disk, and fill in its path and password in the sample code. Also fill in your APNS bundle/deviceToken IDs in the sample code. 4. Drop the sample code inside Program.cs Main() and run the sample. 4a. In release mode, the HttpClient.SendAsync(...) line of code will run for about 8 seconds and then .NET Core will crash hard without raising an exception. 4b. In debug mode from VSCode, the HttpClient.SendAsync(...) line of code will exhibit intermittent hard crashes, intermittent exceptions, and/or ~8 second delays with successful connection. REPRO CODE FOLLOWS (sending a sample push notification through Apple's APNS servers) ``` // create our HTTP Client Handler (which will be reused across HTTP/2 requests) var clientHandler = new HttpClientHandler() { ClientCertificateOptions = ClientCertificateOption.Manual }; X509Certificate2 clientCertificate = new X509Certificate2(""/home/ubuntu/apns_devcert.pfx"", ""password""); // INFO: comment out the following line to see that HTTPS/2 is succeeding without a client certificate...APNS will simply return a ""please provide a client certificate"" message clientHandler.ClientCertificates.Add(clientCertificate); // var myClient = new System.Net.Http.HttpClient(clientHandler); // we will attempt to send five requests, 60 seconds apart, to ensure that HTTP/2 is working properly. for (int i = 1; i <= 5; i++) { Console.WriteLine(""Starting request #"" + i.ToString()); // create the push notification request string deviceToken = ""{device token from mac/ios device goes here}""; string appBundleId = ""{app bundle id goes here}""; string messageUuid = Guid.NewGuid().ToString(""D""); var myRequest = new System.Net.Http.HttpRequestMessage(System.Net.Http.HttpMethod.Post, ""https://api.development.push.apple.com:443/3/device/"" + deviceToken); // upgrade the HTTP request to HTTP/2 (required for .NET Core on Linux) myRequest.Version = new System.Version(2, 0); myRequest.Headers.Add(""apns-id"", messageUuid); myRequest.Headers.Add(""apns-expiration"", ""0""); myRequest.Headers.Add(""apns-priority"", ""10""); myRequest.Headers.Add(""apns-topic"", appBundleId); StringContent content = new StringContent(""{ \""aps\"" : { \""alert\"" : \"".NET Core (request #"" + i.ToString() + "") -- test message -- \"" } }""); myRequest.Content = content; try { // INFO: .NET Core crashes on the following line var response = myClient.SendAsync(myRequest).GetAwaiter().GetResult(); // print out response to console var responseString = response.Content.ReadAsStringAsync().GetAwaiter().GetResult(); Console.WriteLine(""Response: "" + responseString); // optionally, verify that the response is using HTTP/2 //Console.WriteLine(""Response protocol: HTTP/"" + response.Version.ToString()); } catch (System.Net.Http.HttpRequestException ex) { Console.Write(""HttpRequestException: "" + ex.Message); } catch (Exception ex) { Console.Write(""Exception: "" + ex.Message); } // wait 60 seconds between test requests Task.Delay(60000).GetAwaiter().GetResult(); } Console.WriteLine(""Done""); ``` " 11037 area-System.Runtime Add SuppressIldasmAttribute Add this, it's used in a few apps. It has no implementation. ``` T:System.Runtime.CompilerServices.SuppressIldasmAttribute M:System.Runtime.CompilerServices.SuppressIldasmAttribute.#ctor ``` -11038 area-System.Net HttpClient Exception on GetAsync method "Hi all, since I updated from RC1 to 1.0 I'm getting an exception using HttpClient.GetAsync method. Here the exception: Exception type System.TypeLoadException Exception message: Could not load type 'System.Collections.Concurrent.ConcurrentDictionary`2' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'. Stack trace: at System.Net.Http.Formatting.JsonMediaTypeFormatter..ctor() at System.Net.Http.Formatting.MediaTypeFormatterCollection.CreateDefaultFormatters() at System.Net.Http.HttpContentExtensions.get_DefaultMediaTypeFormatterCollection() at WebApi.Controllers.MyController.Get(String word) in C:\MyController.cs:line 30 at lambda_method(Closure , Object , Object[] ) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__28.MoveNext() It seems a conflict between .Net4.0 and .Net4.5, my project reference ""net461"", IIS tries to get the method from mscorlib (net45) and it fails because it's getting actually mscorlib (net40). This method doesnt exists in mscorlib(net40) but in mscorlib(net45). See: http://stackoverflow.com/questions/38375857/system-typeloadexception-could-not-load-type-system-reflection-runtimereflecti Here my project.json: { ""dependencies"": { ""Microsoft.NETCore.App"": { ""version"": ""1.0.0"", ""type"": ""platform"" }, ""Microsoft.AspNetCore.Mvc"": ""1.0.0"", ""Microsoft.AspNetCore.Server.IISIntegration"": ""1.0.0"", ""Microsoft.AspNetCore.Server.Kestrel"": ""1.0.0"", ""Microsoft.Extensions.Configuration.EnvironmentVariables"": ""1.0.0"", ""Microsoft.Extensions.Configuration.FileExtensions"": ""1.0.0"", ""Microsoft.Extensions.Configuration.Json"": ""1.0.0"", ""Microsoft.Extensions.Logging"": ""1.0.0"", ""Microsoft.Extensions.Logging.Console"": ""1.0.0"", ""Microsoft.Extensions.Logging.Debug"": ""1.0.0"", ""Microsoft.Extensions.Options.ConfigurationExtensions"": ""1.0.0"", ""Microsoft.NETCore.Portable.Compatibility"": ""1.0.1"", ""Microsoft.EntityFrameworkCore"": ""1.0.0"", ""Microsoft.EntityFrameworkCore.Relational"": ""1.0.0"", ""Microsoft.EntityFrameworkCore.SqlServer"": ""1.0.0"", ""Microsoft.EntityFrameworkCore.Design"": ""1.0.0-preview2-final"", ""Microsoft.Extensions.WebEncoders.Core"": ""1.0.0-rc1-final"", ""SapientGuardian.MySql.Data"": ""6.9.812"", ""Microsoft.AspNetCore.Mvc.Formatters.Xml"": ""1.0.0"", ""Microsoft.AspNetCore.StaticFiles"": ""1.0.0"", ""MimeKit"": ""1.4.1"", ""MailKit"": ""1.4.1"", ""System.Xml.XmlDocument"": ""4.0.1"", ""AspNet.Security.OAuth.Validation"": ""1.0.0-alpha2-final"", ""OpenIddict"": ""1.0.0-*"", ""Microsoft.AspNetCore.Authentication.JwtBearer"": ""1.0.0"", ""Serilog"": ""2.1.0"", ""Serilog.Sinks.File"": ""2.1.0"", ""Microsoft.AspNet.WebApi.Client"": ""5.2.3"" }, ""tools"": { ""Microsoft.AspNetCore.Server.IISIntegration.Tools"": ""1.0.0-preview2-final"", ""Microsoft.EntityFrameworkCore.Tools"": ""1.0.0-preview2-final"" }, ""frameworks"": { ``` ""netcoreapp1.0"": { ""imports"": [ ""dotnet5.6"", ""net461"" ] } ``` }, ""buildOptions"": { ""emitEntryPoint"": true, ""preserveCompilationContext"": true }, ""runtimeOptions"": { ""configProperties"": { ""System.GC.Server"": true } }, ""publishOptions"": { ""include"": [ ""wwwroot"", ""Views"", ""Areas/**/Views"", ""appsettings.json"", ""web.config"" ] }, ""scripts"": { ""postpublish"": [ ""dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%"" ] } } " +11038 area-System.Net HttpClient Exception on GetAsync method "Hi all, since I updated from RC1 to 1.0 I'm getting an exception using HttpClient.GetAsync method. Here the exception: Exception type System.TypeLoadException Exception message: Could not load type 'System.Collections.Concurrent.ConcurrentDictionary`2' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'. Stack trace: at System.Net.Http.Formatting.JsonMediaTypeFormatter..ctor() at System.Net.Http.Formatting.MediaTypeFormatterCollection.CreateDefaultFormatters() at System.Net.Http.HttpContentExtensions.get_DefaultMediaTypeFormatterCollection() at WebApi.Controllers.MyController.Get(String word) in C:\MyController.cs:line 30 at lambda_method(Closure , Object , Object[] ) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__28.MoveNext() It seems a conflict between .Net4.0 and .Net4.5, my project reference ""net462"", IIS tries to get the method from mscorlib (net45) and it fails because it's getting actually mscorlib (net40). This method doesnt exists in mscorlib(net40) but in mscorlib(net45). See: http://stackoverflow.com/questions/38375857/system-typeloadexception-could-not-load-type-system-reflection-runtimereflecti Here my project.json: { ""dependencies"": { ""Microsoft.NETCore.App"": { ""version"": ""1.0.0"", ""type"": ""platform"" }, ""Microsoft.AspNetCore.Mvc"": ""1.0.0"", ""Microsoft.AspNetCore.Server.IISIntegration"": ""1.0.0"", ""Microsoft.AspNetCore.Server.Kestrel"": ""1.0.0"", ""Microsoft.Extensions.Configuration.EnvironmentVariables"": ""1.0.0"", ""Microsoft.Extensions.Configuration.FileExtensions"": ""1.0.0"", ""Microsoft.Extensions.Configuration.Json"": ""1.0.0"", ""Microsoft.Extensions.Logging"": ""1.0.0"", ""Microsoft.Extensions.Logging.Console"": ""1.0.0"", ""Microsoft.Extensions.Logging.Debug"": ""1.0.0"", ""Microsoft.Extensions.Options.ConfigurationExtensions"": ""1.0.0"", ""Microsoft.NETCore.Portable.Compatibility"": ""1.0.1"", ""Microsoft.EntityFrameworkCore"": ""1.0.0"", ""Microsoft.EntityFrameworkCore.Relational"": ""1.0.0"", ""Microsoft.EntityFrameworkCore.SqlServer"": ""1.0.0"", ""Microsoft.EntityFrameworkCore.Design"": ""1.0.0-preview2-final"", ""Microsoft.Extensions.WebEncoders.Core"": ""1.0.0-rc1-final"", ""SapientGuardian.MySql.Data"": ""6.9.812"", ""Microsoft.AspNetCore.Mvc.Formatters.Xml"": ""1.0.0"", ""Microsoft.AspNetCore.StaticFiles"": ""1.0.0"", ""MimeKit"": ""1.4.1"", ""MailKit"": ""1.4.1"", ""System.Xml.XmlDocument"": ""4.0.1"", ""AspNet.Security.OAuth.Validation"": ""1.0.0-alpha2-final"", ""OpenIddict"": ""1.0.0-*"", ""Microsoft.AspNetCore.Authentication.JwtBearer"": ""1.0.0"", ""Serilog"": ""2.1.0"", ""Serilog.Sinks.File"": ""2.1.0"", ""Microsoft.AspNet.WebApi.Client"": ""5.2.3"" }, ""tools"": { ""Microsoft.AspNetCore.Server.IISIntegration.Tools"": ""1.0.0-preview2-final"", ""Microsoft.EntityFrameworkCore.Tools"": ""1.0.0-preview2-final"" }, ""frameworks"": { ``` ""netcoreapp1.0"": { ""imports"": [ ""dotnet5.6"", ""net462"" ] } ``` }, ""buildOptions"": { ""emitEntryPoint"": true, ""preserveCompilationContext"": true }, ""runtimeOptions"": { ""configProperties"": { ""System.GC.Server"": true } }, ""publishOptions"": { ""include"": [ ""wwwroot"", ""Views"", ""Areas/**/Views"", ""appsettings.json"", ""web.config"" ] }, ""scripts"": { ""postpublish"": [ ""dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%"" ] } } " 11042 area-System.Security X509Certificate2: Unclear error message when file does not exist "This issue is similar to #9402 An exception with an obscure error message is thrown when creating a `X509Certificate2` using a path to a file which does not exist. Consider the following code: ``` using System; using System.Security.Cryptography.X509Certificates; namespace ConsoleApplication { public class Program { public static void Main(string[] args) { new X509Certificate2(fileName: ""invalid.cer""); } } } ``` on Windows, the following exception is thrown: ``` Unhandled Exception: Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException: The system cannot find the file specified at Internal.Cryptography.Pal.CertificatePal.FromBlobOrFile(Byte[] rawData, String fileName, String password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(String fileName, String password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(String fileName) at ConsoleApplication.Program.Main(String[] args) ``` whereas the following exception is thrown on Linux and OS X: ``` nhandled Exception: Interop+Crypto+OpenSslCryptographicException: error:2006D080:BIO routines:BIO_new_file:no such file at Interop.Crypto.CheckValidOpenSslHandle(SafeHandle handle) at Internal.Cryptography.Pal.CertificatePal.FromFile(String fileName, String password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(String fileName, String password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(String fileName) at ConsoleApplication.Program.Main(String[] args) ``` As such, this confirms to the MSDN specifications of the `X509Certificate2` constructor because all it says is that a `CryptographicException` should be thrown - which is the case. It seems that the error message contains too much information - I'd argue it should only read ""no such file"" or a user-friendly string, and the underlying OpenSSL error code (2006D080) could go on a different property of the OpenSslCryptographicException class. " 11044 area-System.ComponentModel Cannot reset DisplayName on ValidationContext "I do a lot of work with console applications and I like to use validation attributes and `IValidatableObject` to take advantage of framework-supplied validations rather than reinventing the wheel or using a third-party library. When looping through an object's properties to validate them, I can set the context's `MemberName` property appropriately each run through, but any non-successful validation results may return a nonsensical message since the validators use the `DisplayName` property to format the message, and the `DisplayName` property getter caches its return value the first time it is used. In addition to this, the `DisplayName` property cannot be reset as the setter will throw an `ArgumentNullException`. I could envision any of the following approaches to resolve this: - Allow setting `DisplayName` to `null` or `""""` - Set the `_displayName` field to `null` whenever `MemberName`/`_memberName` are changed - Offer a method like `Reset(bool clearItems = true)` to be a bit more explicit " 11045 area-System.Xml XML .Save() method missing option to use filename It seems that System.IO.Stream, System.IO.TextWriter, and System.Xml.XmlWriter are still options, but using string filename has been removed. @@ -4304,7 +4304,7 @@ ID Area Title Description 11460 area-System.Linq Inspection / interception of IL generated by LambdaCompiler "IL generated by `LambdaCompiler` and `ILGen` turns out to be quite tricky to inspect. On desktop CLR, I used to emit IL to an assembly using `CompileToMethod` for offline inspection, or use SOS to `!dumpil`. While the latter still works, it's not an option at runtime, e.g. for testing purposes. In particular, when testing code emit optimizations, we don't have a good option to assert the output. One option is to perform private reflection on `DynamicMethod` to obtain the `byte[] m_iLStream` and use one of the decoders to print it as textual IL. Some code is around to do that on the MSDN blogs, so it's one option worth looking into. In fact, I've been using this over at https://github.com/bartdesmet/ExpressionFutures and it works ok-ish. There are some issues with visualizing some metadata tokens but it may be possible to work around that. It may suffice for testing purposes. An alternative which I've put in place in my https://github.com/bartdesmet/corefx/tree/CheaperClosures branch is an indirection of `ILGenerator` calls through an interface, currently only when a conditional compilation symbol is set. Unfortunately, one can't derive from `ILGenerator` because it only has `internal` constructors (and one of its `Emit` overloads is not `virtual` either), so an additional interface has to be put in place. My implementation logs all the calls made, so a `ToString` can be obtained. Note that the last option offers some benefits because one could implement e.g. an optimizing back-end by capturing the emitted instructions and run a post-process step on it (assuming we add one additional method call to ""bake"" the emitted IL, which could flush to the underlying emitter target after running post-process steps): ``` csharp interface IILGenerator { void Emit(OpCode opcode); // quite a lot more methods, see ILGenerator void Bake(); } ``` An interceptor for logging would implement `IILGenerator` and get passed an `IILGenerator` that's the target to emit to. Its `Bake` method can simply forward to the underlying generator; every other method forwards and logs to populate data structures that allow for pretty printing. An optimizer would implement `IILGenerator` but won't forward the `Emit` methods directly; it'd build up internal data structures that are used upon a call to `Bake` to run optimizations prior to making `Emit` calls to the underlying generator, followed by a `Bake` call. Of course, this would add a level of indirection with virtual calls, unless `ILGenerator` would implement such an interface (and make the `Emit(OpCode, sbyte)` overload `virtual`) so there's no additional cost if no wrapper is installed around the `ILGenerator` obtained from `DynamicMethod`. See https://github.com/dotnet/corefx/issues/11454 for a case where such a back-end could provide value. I got the last thing implemented (including an inspector and a basic optimizer) in an offline copy here in Bing, which is based on a fork of the expression API a few years back. I'll to port it to CoreFX as a proof of concept so the merits can be debated with some concrete piece of code to back it up. " 11462 area-System.Threading File version of DataFlow assembly changed from 4.6 to 1.0 in latest release on NuGet DataFlow 4.5.25 on NuGet has file version 4.6.23123.0 and DataFlow 4.6.0 has file version 1.0.24212.1. This breaks deployment using Windows Installer. Only files with a higher file version are replaced during upgrades. https://www.nuget.org/packages/System.Threading.Tasks.Dataflow/ 11463 area-System.Threading Blocking Task.Result design flaw leads to deadlock when called from ThreadPool thread "Run this application: https://gist.github.com/AqlaSolutions/f8c993bfad32dc9be11703fea4e01422 It simulates network engine receiving requests and calling synchronously `IConnection.OnRequestReceived`. This method calls async method and then synchronously processes the result retrieved with Task.Result. The async method may take up to 700 ms. Assume I can't use await, because external network engine provides synchronous interface and I need to check async call result before returning. During run the simulation will decrease time between requests until deadlock occurs - after that point currently awaiting requests will never be completed. I set TP to low threads number to show the problem. It will also happen on 200 and 1000 threads but it will just take more time and will require modifying the simulation code for more requests. In a real app you will never want to set max threads to big numbers because it will make your app very slow (context switching thing) and also each thread takes 1 MB RAM. This example proves that absolutely any blocking call to `Task.Result` or `Task.Wait` from `ThreadPool` thread will work for some time but will eventually deadlock your application in truly high load scenario. Using these methods from `ThreadPool` thread for waiting is always a mistake and should be disallowed (but I understand that it will not happen for compatibility reasons). Yes, we all know from docs that mixing async and blocking ""may cause deadlocks"" but previously I thought about this only in a way ""do not block with `.Result` thread which synchronization context may be required to complete the waited task itself"". TP deadlock is not obvious and many people will ""just use `.Result`"" without ever encountering it during testing. What do you think? May be some workarounds inside .NET TP? Prioritize continuations over new tasks? " -11464 area-System.Net CookieContainer.Add(Cookie cookie) CookieContainer.Add(Cookie cookie) method is no longer accessible because it's accessibility was downgraded which causes incompatibility between other .net versions. Is this intended or a mistake? Other definitions (net461): public void Add(Cookie cookie) Existing definition (netstandard1.6): internal void Add(Cookie cookie) +11464 area-System.Net CookieContainer.Add(Cookie cookie) CookieContainer.Add(Cookie cookie) method is no longer accessible because it's accessibility was downgraded which causes incompatibility between other .net versions. Is this intended or a mistake? Other definitions (net462): public void Add(Cookie cookie) Existing definition (netstandard1.6): internal void Add(Cookie cookie) 11465 area-System.Runtime DefaultValueAttribute missing unsigned int / unsigned long constructor ## Latest proposal ### Rationale and Usage As has already been explained, using `DefaultValueAttribute` with one of the problematic types (unsigned integer types and `sbyte`) in C# ends up using a widening conversion and so the boxed `Value` ends up with an unexpected type. The proposal is to add constructor overloads so that the conversions don't happen and `Value` gets the expected type. The usage stays the same as before, e.g. `[DefaultValue(UInt64.MaxValue)]`. Doing this would be technically a source breaking change, since recompiling existing code would end up with a different type for the boxed `Value`. (Arguably, it would be a better type, but that doesn't change the fact that someone could rely on the old behavior.) ### Proposed API ```c# public class DefaultValueAttribute : Attribute { // existing constructor overloads: public DefaultValueAttribute(Type type, string value); public DefaultValueAttribute(char value); public DefaultValueAttribute(byte value); public DefaultValueAttribute(short value); public DefaultValueAttribute(int value); public DefaultValueAttribute(long value); public DefaultValueAttribute(float value); public DefaultValueAttribute(double value); public DefaultValueAttribute(bool value); public DefaultValueAttribute(string value); public DefaultValueAttribute(object value); // added constructor overloads: public DefaultValueAttribute(sbyte value); public DefaultValueAttribute(ushort value); public DefaultValueAttribute(uint value); public DefaultValueAttribute(ulong value); } ``` ## Original proposal Most numeric types have their constructor but not the unsigned ones. As a result, if you write that code: `new DefaultValueAttribute(UInt64.MaxValue);` The float constructor will be called as the compiler seems to avoid the constructor that needs boxing. Removing all explicit constructor that takes numeric types solve the issue. They all points to the same code that will box the value anyway: ``` /// /// Initializes a new instance of the class using a Unicode /// character. /// public DefaultValueAttribute(char value) { this.value = value; } ``` 11467 area-System.Linq More optimizations for LINQ methods I've been raising a lot of issues about LINQ recently, so this is sort of an umbrella issue for all of the optimizations I think could be applied. - `Enumerable.Cast` is one of those functions that has a 1:1 mapping, so it should forego `yield` and instead implement a custom iterator class. Things like `x.Cast().ToArray()` are very common. - In `OfType`, if `TResult` is object or the source enumerable is of type `IEnumerable` *, we know that each is check will return true and therefore we will have a 1:1 mapping. We can forward to `CastIterator` for those cases and get special treatment for `ToArray`, `ToList`, etc. \* I don't know how often this optimization will happen. Though it will incur no runtime cost since `typeof(T) == typeof(U)` is jitted away, it's not very common for someone to call `OfType()` on something they _know_ is an `IEnumerable`. The only places where I think it can happen are if they accept an `IEnumerable` and use `OfType` to convert it to a generic one, or their method has multiple type parameters and they want to convert an `IEnumerable` to an `IEnumerable` and someone calls their method with `Method()`. # - `Enumerable.Concat(...).ToArray()` is wasteful since it does not attempt to specialize if the underlying enumerables are `ICollections`. It should instead call `GetEnumerable` on everything, and then specialize for `ICollection`. (potentially `IIListProvider` as well if #11455 is implemented) - It may be possible for the `Concat` iterators to implement certain `IPartition` methods as well. If the first/last collections are ILists/IPartitions, then `TryGetFirst` and `TryGetLast` could be implemented with relatively minimal overhead. (actually not in the case where you have a very long linked list of `Concat` iterators and you try to get the first item, but in that case calling `First()` would still be very slow anyway.) # - [`LongCount`](https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/Count.cs#L79) is not optimized for ICollection/IIListProvider? # - `DefaultIfEmpty` should just return a cached iterator if the enumerable is empty. We should also introduce something like a `WrapperIterator` class that just provides a view over an enumerable, and use that for the other case. I'm sure it could be useful in many other LINQ methods (for example, possibly `Skip(0)`). 11468 area-Meta Move master to netcoreapp1.2 move everything in master from netcoreapp1.1 to netcoreapp1.2, because netcoreap1.1 is shipping earlier @@ -5416,7 +5416,7 @@ ID Area Title Description 13345 area-System.Threading ReaderWriterLockSlim contention perf "When ReaderWriterLockSlim contends with itself, the perf seems to be really bad. ```c# public static void Main(string[] args) { Action threadWork = null; var threadWorkComplete = new AutoResetEvent(false); var threadWorkAvailable = new AutoResetEvent(false); var t = new Thread(() => { while (true) { threadWorkComplete.Set(); threadWorkAvailable.WaitOne(); if (threadWork == null) break; threadWork(); } }); t.IsBackground = true; t.Start(); threadWorkComplete.WaitOne(); Action BeginDoThreadWork = work => { threadWork = work; threadWorkAvailable.Set(); }; Action EndDoThreadWork = () => threadWorkComplete.WaitOne(); Action DoThreadWork = work => { BeginDoThreadWork(work); EndDoThreadWork(); }; var rw = new ReaderWriterLockSlim(); Action Test = () => { for (int i = 0; i < 10; ++i) { DoThreadWork(() => rw.EnterReadLock()); BeginDoThreadWork(() => rw.ExitReadLock()); rw.EnterWriteLock(); rw.ExitWriteLock(); EndDoThreadWork(); } }; //var rw = new ReaderWriterLock(); //Action Test = // () => // { // for (int i = 0; i < 10; ++i) // { // DoThreadWork(() => rw.AcquireReaderLock(-1)); // BeginDoThreadWork(() => rw.ReleaseReaderLock()); // rw.AcquireWriterLock(-1); // rw.ReleaseWriterLock(); // EndDoThreadWork(); // } // }; TimeSpan testDuration = TimeSpan.FromMilliseconds(200); while (true) { uint iterations = 0; var elapsed = TimeSpan.Zero; var start = DateTime.Now; while (true) { Test(); ++iterations; if ((iterations & 0xf) != 0) continue; Console.Write('.'); elapsed = DateTime.Now - start; if (elapsed >= testDuration) break; } var iterationsPerSecond = iterations / elapsed.TotalSeconds; Console.WriteLine(); Console.WriteLine(""iterationsPerSecond: {0:0.00}"", iterationsPerSecond); } } ``` ReaderWriterLockSlim: ``` . iterationsPerSecond: 7.26 . iterationsPerSecond: 6.83 . iterationsPerSecond: 7.47 . iterationsPerSecond: 15.28 . iterationsPerSecond: 6.92 . iterationsPerSecond: 7.59 . iterationsPerSecond: 8.06 . iterationsPerSecond: 6.78 ``` The numbers usually vary a lot, the ones above are on the lower end and are not infrequent. By comparison, ReaderWriterLock is about 100-1000 times as fast for the same test: ``` ............................................................. iterationsPerSecond: 4804.77 .......................................................... iterationsPerSecond: 4568.59 ................................................................ iterationsPerSecond: 5041.21 ....................................................... iterationsPerSecond: 4332.31 ........................................................... iterationsPerSecond: 4647.33 ....................................................... iterationsPerSecond: 4332.27 ..................................................... iterationsPerSecond: 4174.75 ``` I believe the issue is caused by deterministic unfairness in the spin lock. Usually, the main thread will enter its spin loop trying to acquire the write lock, before the background thread enters its spin loop trying to release the read lock. Both threads fight for the spin lock, but the main thread acquires it first. When the main thread relinquishes the spin lock to yield in the spin loop, most of the time the background thread is already in the process of yielding in-between spinning for the spin lock. So the main thread acquires the spin lock again, and so on until the spin count is maxed out. Finally, the main thread enters a wait state and releases the spin lock for long enough for the background thread to acquire the spin lock, release the read lock, and release the now-waiting main thread. One way to fix this could be to have the spin lock spin for a very short duration and fall back to a real lock." 13346 area-System.Net Dns.GetHostAddressesAsync(Dns.GetHostName()) not working on centos7 using Dns.GetHostAddressesAsync(Dns.GetHostName()) can't load local ip address on centos 7 system 13347 area-Meta Output Path not working correctly "Hey, I'm using Visual Studio 14 (VS 2015) Update 3 and I want to build a REST API based .Net Core 1, using Kestrel as the server. I want to be able to use a **.csproj** instead of the old **.xproj** in order to use MSBuild as I do in other projects. The problem is that when I define ""OutputPath"" as ""bin\Debug"" (for Debug mode, for instance), Visual Studio builds the project and sets build's results to ""bin\Debug\\bin\Debug\netcoreapp1.0\win7-x64"". If I use the *.xproj* and build, the results are stored at ""bin\Debug\netcoreapp1.0"", which is the expected behaviour. What is happening? .csproj: ``` $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) win7 .NETCoreApp v1.0 true $(NoWarn);1701 {D21ABA46-65F9-4B47-882C-F9C0765052DD} Exe Properties MyAPP MyAPP 512 true x64 true full false .\obj\Debug .\bin\Debug\ DEBUG;TRACE prompt 4 x64 pdbonly true .\bin\Release TRACE prompt 4 <_TargetFrameworkDirectories>$(MSBuildThisFileDirectory) <_FullFrameworkReferenceAssemblyPaths>$(MSBuildThisFileDirectory) true false Program $(TargetDir) {2E36F1D4-B23C-435D-AB41-18E608940038} ``` project.json: ``` { ""version"": ""1.0.0"", ""buildOptions"": { ""emitEntryPoint"": true, ""preserveCompilationContext"": true }, ""dependencies"": { ""Microsoft.NETCore.App"": { ""version"": ""1.0.0"", ""type"": ""build"" }, ""Microsoft.ApplicationInsights.AspNetCore"": ""1.0.0"", ""Microsoft.AspNetCore.Mvc"": ""1.0.0"", ""Microsoft.AspNetCore.Server.Kestrel"": ""1.0.0"", ""Microsoft.Extensions.Configuration.EnvironmentVariables"": ""1.0.0"", ""Microsoft.Extensions.Configuration.FileExtensions"": ""1.0.0"", ""Microsoft.Extensions.Configuration.Json"": ""1.0.0"", ""Microsoft.Extensions.Logging"": ""1.0.0"", ""Microsoft.Extensions.Logging.Console"": ""1.0.0"", ""Microsoft.Extensions.Logging.Debug"": ""1.0.0"", ""Microsoft.Extensions.Options.ConfigurationExtensions"": ""1.0.0"" }, ""runtimes"": { ""win7-x64"": {}, ""ubuntu.14.04-x64"": {}, ""osx.10.10-x64"": {} }, ""frameworks"": { ""netcoreapp1.0"": { ""imports"": [ ""dnxcore50"", ""portable-net452"" ] } }, ""runtimeOptions"": { ""configProperties"": { ""System.GC.Server"": true } }, ""publishOptions"": { ""include"": [ ""appsettings.json"", ""web.config"" ] }, ""scripts"": { ""postpublish"": [ ""dotnet publish --publish-folder ./bin"" ] } } ```" -13348 area-System.Numerics NullReferenceException when calling Vector.CopyTo in Release mode "I'm not sure if this is the right place to report this. I have this program: ```csharp using System; using System.Numerics; namespace ConsoleApp1 { public class Program { public static Vector ConvertToInt32(Vector input) { var count = Vector.Count; var inputs = new float[count]; var outputs = new int[count]; // swap input.CopyTo(inputs); // these for (int i = 0; i < count; i++) { outputs[i] = (int)inputs[i]; } return new Vector(outputs); } public static void Main(string[] args) { var v = new Vector(123.123f); var values = ConvertToInt32(v); Console.WriteLine(v); Console.WriteLine(values); } } } ``` project.json: ```javascript { ""version"": ""1.0.0-*"", ""buildOptions"": { ""emitEntryPoint"": true, ""optimize"": true }, ""runtimes"": { ""win7-x64"": {} }, ""dependencies"": { ""System.Numerics.Vectors"": ""4.1.1"" }, ""frameworks"": { ""net461"": {} } /* ""dependencies"": { ""Microsoft.NETCore.App"": { ""type"": ""platform"", ""version"": ""1.0.0"" }, ""System.Numerics.Vectors"": ""4.1.1"" }, ""frameworks"": { ""netcoreapp1.0"": {} } */ } ``` test cases: 1. targeting net461, compiling as shown, Release mode: null ref on `input.CopyTo(inputs);` 2. targeting net461, swapping indicated lines, Release mode: incorrect console output 3. targeting net461, as shown or swapped, Debug mode: no error, correct output 4. targeting netcoreapp1.0, either as shown or swapped, Debug or Release: no error, correct output version info: Microsoft Visual Studio Professional 2015 Version 14.0.25431.01 Update 3 " +13348 area-System.Numerics NullReferenceException when calling Vector.CopyTo in Release mode "I'm not sure if this is the right place to report this. I have this program: ```csharp using System; using System.Numerics; namespace ConsoleApp1 { public class Program { public static Vector ConvertToInt32(Vector input) { var count = Vector.Count; var inputs = new float[count]; var outputs = new int[count]; // swap input.CopyTo(inputs); // these for (int i = 0; i < count; i++) { outputs[i] = (int)inputs[i]; } return new Vector(outputs); } public static void Main(string[] args) { var v = new Vector(123.123f); var values = ConvertToInt32(v); Console.WriteLine(v); Console.WriteLine(values); } } } ``` project.json: ```javascript { ""version"": ""1.0.0-*"", ""buildOptions"": { ""emitEntryPoint"": true, ""optimize"": true }, ""runtimes"": { ""win7-x64"": {} }, ""dependencies"": { ""System.Numerics.Vectors"": ""4.1.1"" }, ""frameworks"": { ""net462"": {} } /* ""dependencies"": { ""Microsoft.NETCore.App"": { ""type"": ""platform"", ""version"": ""1.0.0"" }, ""System.Numerics.Vectors"": ""4.1.1"" }, ""frameworks"": { ""netcoreapp1.0"": {} } */ } ``` test cases: 1. targeting net462, compiling as shown, Release mode: null ref on `input.CopyTo(inputs);` 2. targeting net462, swapping indicated lines, Release mode: incorrect console output 3. targeting net462, as shown or swapped, Debug mode: no error, correct output 4. targeting netcoreapp1.0, either as shown or swapped, Debug or Release: no error, correct output version info: Microsoft Visual Studio Professional 2015 Version 14.0.25431.01 Update 3 " 13349 area-System.Net System.Net.Sockets.Async.Performance.Tests threw ObjectDisposedException (Windows, Linux and Mac) No results generated. https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161103.04/workItem/System.Net.Sockets.Async.Performance.Tests/details/ef1c1a72-3184-4848-9894-303a848b3635 ```2016-11-03 15:14:31,896: INFO: proc(65): run_and_log_output: Output: Starting: System.Net.Sockets.Async.Performance.Tests 2016-11-03 15:14:32,255: INFO: proc(65): run_and_log_output: Output: 2016-11-03 15:14:32,255: INFO: proc(65): run_and_log_output: Output: Unhandled Exception: System.ObjectDisposedException: Cannot access a disposed object. 2016-11-03 15:14:32,256: INFO: proc(65): run_and_log_output: Output: Object name: 'System.Net.Sockets.Socket'. 2016-11-03 15:14:32,256: INFO: proc(65): run_and_log_output: Output: at System.Net.Sockets.Socket.ReceiveAsync(SocketAsyncEventArgs e) 2016-11-03 15:14:32,256: INFO: proc(65): run_and_log_output: Output: at System.Net.Sockets.Performance.Tests.SocketTestClientAsync.Receive(Action`2 onReceiveCallback) 2016-11-03 15:14:32,256: INFO: proc(65): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 2016-11-03 15:14:32,256: INFO: proc(65): run_and_log_output: Output: at System.Net.Sockets.MultipleConnectAsync.Succeed() 2016-11-03 15:14:32,256: INFO: proc(65): run_and_log_output: Output: at System.Net.Sockets.MultipleConnectAsync.InternalConnectCallback(Object sender, SocketAsyncEventArgs args) 2016-11-03 15:14:32,257: INFO: proc(65): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 2016-11-03 15:14:32,257: INFO: proc(65): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 2016-11-03 15:14:32,257: INFO: proc(65): run_and_log_output: Output: at System.Threading.QueueUserWorkItemCallbackDefaultContext.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() 2016-11-03 15:14:32,257: INFO: proc(65): run_and_log_output: Output: at System.Threading.ThreadPoolWorkQueue.Dispatch() 2016-11-03 15:14:32,259: INFO: proc(65): run_and_log_output: Output: /Users/dotnet-bot/dotnetbuild/work/ef1c1a72-3184-4848-9894-303a848b3635/Work/4effeedc-b714-487c-9ce0-32e9cb61ae1b/Unzip/RunTests.sh: line 284: 29083 Abort trap: 6 ./corerun xunit.console.netcore.exe System.Net.Sockets.Async.Performance.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapp1.1tests -notrait category=requireselevation -notrait category=failing -notrait category=nonosxtests ``` I'm guessing this will need a local repro. 13351 area-System.Runtime Seg fault during Serialization unit tests on Ubuntu https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161104.53/workItem/System.Runtime.Serialization.Formatters.Tests/details/987bb27a-8616-44cd-99e2-5e12840da2f8 ``` 2016-11-04 01:36:01,603: INFO: proc(55): run_and_log_output: Output: /home/helixbot/dotnetbuild/work/987bb27a-8616-44cd-99e2-5e12840da2f8/Work/64d343ba-b793-4450-b356-79cdfeb514e3/Unzip/RunTests.sh: line 285: 2770 Segmentation fault (core dumped) ./corerun xunit.console.netcore.exe System.Runtime.Serialization.Formatters.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapp1.1tests -notrait category=requireselevation -notrait category=failing -notrait category=nonlinuxtests 2016-11-04 01:36:01,604: INFO: proc(55): run_and_log_output: Output: Finished running tests. End time=01:36:01. Return value was 139 2016-11-04 01:36:01,606: INFO: proc(55): run_and_log_output: Output: GDB was not found. Unable to print core file. 2016-11-04 01:36:01,608: INFO: proc(55): run_and_log_output: Output: Copying core file core to /tmp/coredumps ``` Finding out whether there's a way to get dumps from these machines. 13352 area-System.Data Adding Client hostname to Sql server connection While connecting to the Sql Server, the SqlClient was sending an empty hostname to the server. In this pull request we use using the Environment.MachineName to populate the hostname while connecting to SqlServer. Fixes #12627 cc @stephentoub @corivera @@ -5529,7 +5529,7 @@ ID Area Title Description 13500 area-System.Net Implement HttpWebRequest Timeout property Granular WinHttpHandler timeout properties are not exposed via the HttpClientHandler API , need timeout from HttpClientHandler to implement this. 13501 area-System.Security TestCopyConstructor_Lifetime_Cloned failed in ci - OpenCSP failed with error code 2148073494. this code seems to be [keyset does not exist](http://index/?query=0x80090016&rightProject=mscorlib&file=system%5Csecurity%5Ccryptography%5Cutils.cs&line=54) ``` 14:49:38 System.Security.Cryptography.X509Certificates.Tests.CtorTests.TestCopyConstructor_Lifetime_Cloned [FAIL] 14:49:38 System.Security.Cryptography.CryptographicException : OpenCSP failed with error code 2148073494. 14:49:38 Stack Trace: 14:49:38 at Internal.NativeCrypto.CapiHelper.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer) 14:49:38 at System.Security.Cryptography.RSACryptoServiceProvider.get_SafeProvHandle() 14:49:38 at System.Security.Cryptography.RSACryptoServiceProvider.get_SafeKeyHandle() 14:49:38 at System.Security.Cryptography.RSACryptoServiceProvider..ctor(Int32 keySize, CspParameters parameters, Boolean useDefaultKeySize) 14:49:38 D:\j\workspace\windows_nt_re---37265eab\src\System.Security.Cryptography.X509Certificates\src\Internal\Cryptography\Pal.Windows\CertificatePal.PrivateKey.cs(52,0): at Internal.Cryptography.Pal.CertificatePal.<>c.b__62_0(CspParameters csp) 14:49:38 D:\j\workspace\windows_nt_re---37265eab\src\System.Security.Cryptography.X509Certificates\src\Internal\Cryptography\Pal.Windows\CertificatePal.PrivateKey.cs(134,0): at Internal.Cryptography.Pal.CertificatePal.GetPrivateKey[T](Func`2 createCsp, Func`2 createCng) 14:49:38 D:\j\workspace\windows_nt_re---37265eab\src\System.Security.Cryptography.X509Certificates\src\Internal\Cryptography\CertificateExtensionsCommon.cs(52,0): at Internal.Cryptography.Pal.CertificateExtensionsCommon.GetPrivateKey[T](X509Certificate2 certificate, Predicate`1 matchesConstraints) 14:49:38 D:\j\workspace\windows_nt_re---37265eab\src\System.Security.Cryptography.X509Certificates\tests\CtorTests.cs(266,0): at System.Security.Cryptography.X509Certificates.Tests.CtorTests.TestPrivateKey(X509Certificate2 c, Boolean expectSuccess) 14:49:38 D:\j\workspace\windows_nt_re---37265eab\src\System.Security.Cryptography.X509Certificates\tests\CtorTests.cs(242,0): at System.Security.Cryptography.X509Certificates.Tests.CtorTests.TestCopyConstructor_Lifetime_Cloned() ``` https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_release_prtest/2797/consoleFull#184376521779fe3b83-f408-404c-b9e7-9207d232e5fc @steveharter 13502 area-System.Net Initial commit to System.Net.HttpListener This gets @ericeil PR #13287 in. Fixed merged conflicts. cc @stephentoub @davidsh @CIPop @geoffkizer @karelz -13504 area-Meta Publishing Core application targeting net461 "In order to use Oracle I'm targeting net461 in my Core application. After publishing IIS on win server 2012. I get this error: ![image](https://cloud.githubusercontent.com/assets/9387260/20122641/2cc1cd10-a5e7-11e6-8fed-c819c6e104d0.png) ``` Unhandled Exception: System.TypeInitializationException: The type initializer for 'Microsoft.Extensions.PlatformAbstractions.PlatformServices' threw an exception. ---> System.TypeLoadException: Could not load type 'System.AppContext' from assembly 'System.AppContext, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. at Microsoft.Extensions.PlatformAbstractions.ApplicationEnvironment.GetApplicationBasePath() at Microsoft.Extensions.PlatformAbstractions.ApplicationEnvironment..ctor() at Microsoft.Extensions.PlatformAbstractions.PlatformServices..ctor() at Microsoft.Extensions.PlatformAbstractions.PlatformServices..cctor() --- End of inner exception stack trace --- at Microsoft.AspNetCore.Hosting.WebHostBuilder.BuildHostingServices() at Microsoft.AspNetCore.Hosting.WebHostBuilder.Build() ``` my config file: `` after publishing looks like this: `` [project.json.txt](https://github.com/dotnet/corefx/files/579673/project.json.txt) However, if I target: ``` ""frameworks"": { ""netcoreapp1.0"": { ""imports"": [ ""dotnet5.6"", ""portable-net45+win8"" ] } }, ``` It works fine. How do I make it work with net461?" +13504 area-Meta Publishing Core application targeting net462 "In order to use Oracle I'm targeting net462 in my Core application. After publishing IIS on win server 2012. I get this error: ![image](https://cloud.githubusercontent.com/assets/9387260/20122641/2cc1cd10-a5e7-11e6-8fed-c819c6e104d0.png) ``` Unhandled Exception: System.TypeInitializationException: The type initializer for 'Microsoft.Extensions.PlatformAbstractions.PlatformServices' threw an exception. ---> System.TypeLoadException: Could not load type 'System.AppContext' from assembly 'System.AppContext, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. at Microsoft.Extensions.PlatformAbstractions.ApplicationEnvironment.GetApplicationBasePath() at Microsoft.Extensions.PlatformAbstractions.ApplicationEnvironment..ctor() at Microsoft.Extensions.PlatformAbstractions.PlatformServices..ctor() at Microsoft.Extensions.PlatformAbstractions.PlatformServices..cctor() --- End of inner exception stack trace --- at Microsoft.AspNetCore.Hosting.WebHostBuilder.BuildHostingServices() at Microsoft.AspNetCore.Hosting.WebHostBuilder.Build() ``` my config file: `` after publishing looks like this: `` [project.json.txt](https://github.com/dotnet/corefx/files/579673/project.json.txt) However, if I target: ``` ""frameworks"": { ""netcoreapp1.0"": { ""imports"": [ ""dotnet5.6"", ""portable-net45+win8"" ] } }, ``` It works fine. How do I make it work with net462?" 13505 area-System.Runtime Support for 64 bits array Is there a reason to limit arrays to 32 bit only addressable ones? Working around it might severely impact some HPC apps that manipulate large sets of data. I understand that .NetCore might run on some platforms that are not 64 bits and not many applications need such large arrays. But this seems a very limiting decision as we see more and more platforms going 64 bits and we are coming into the age of massive data. 13508 area-Infrastructure [ARM/CI] Change rootfs directories rootfs directory `/opt/linux-arm-emulator-root/` is still in use from coreclr ARM-CI so changing it to `/opt/linux-arm-emulator-root_{arm|arm-softfp}/`. 13509 area-System.Security Re-enable SecureString tests cc: @AlexGhiondea Fixes #13331 Fixes #13471 One thing to note: it looks like there was a discrepancy between SecureStringMarshal and Marshal in their handling of null SecureString inputs. SecureStringMarshal was returning IntPtr.Zero for a null input, whereas Marshal is throwing an ArgumentNullException. I've changed the tests to match the Marshal behavior, which is the same behavior that exists on desktop. We should confirm we're ok with this change from .NET Core 1.1, though, and address it subsequently in both the implementation and tests if we're not. @@ -5576,7 +5576,7 @@ ID Area Title Description 13562 area-System.Memory Portable (and thus slower) version of Span<> - Holding off on ReadOnlySpan<> until we're happy with Span so I don't have keep making fixes in two places. - Not too happy with the hoops DangerousGetPinnedReference has to go through: we are looking at an alternative that involves adding two new Unsafe apis: https://github.com/dotnet/corefx/issues/13426 I'll have to do some benchmarking to see which one's faster, though. In the meantime, there's plenty to review that won't be affected by that. 13563 area-System.IO Add Replace methods to System.IO.FileInfo Fixes #13490 cc @danmosemsft @joperezr @stephentoub 13564 area-Meta Fix warnings Fixes warnings and removes a few ToDos. @stephentoub @JeremyKuhne @weshaggard -13565 area-Infrastructure Add facades This adds the building of netstandard.dll facade as well as the net461 set of shim facades along with some APICompat checks. To accomplish this we are dependent on a flat layout that we can use for seeds so we are going to use the layout that we currently produce for indexing. The APICompat check is split between net461 and netstandard20 which will allow us to more easily track the remaining work for netstandard20. This PR also cleans up the older compat refs and src projects that we aren't going to use any longer. cc @ericstj @joperezr +13565 area-Infrastructure Add facades This adds the building of netstandard.dll facade as well as the net462 set of shim facades along with some APICompat checks. To accomplish this we are dependent on a flat layout that we can use for seeds so we are going to use the layout that we currently produce for indexing. The APICompat check is split between net462 and netstandard20 which will allow us to more easily track the remaining work for netstandard20. This PR also cleans up the older compat refs and src projects that we aren't going to use any longer. cc @ericstj @joperezr 13566 area-System.Runtime System.Runtime.InteropServices.RuntimeInformation fails when running on full .NET on Win7 The library PInvokes into an api-set which isn't present on Win7 and so when running on .NET Framework there it throws the following exception. ``` Unhandled Exception: System.TypeInitializationException: The type initializer fo r 'Microsoft.VisualStudio.TestPlatform.ObjectModel.Constants' threw an exception . ---> System.DllNotFoundException: Unable to load DLL 'api-ms-win-core-sysinfo- l1-2-0.dll': The specified module could not be found. (Exception from HRESULT: 0 x8007007E) at Interop.mincore.GetNativeSystemInfo(SYSTEM_INFO& lpSystemInfo) at System.Runtime.InteropServices.RuntimeInformation.get_OSArchitecture() at Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities.XmlRunSettingsUt ilities.get_OSArchitecture() at Microsoft.VisualStudio.TestPlatform.ObjectModel.Constants..cctor() --- End of inner exception stack trace --- at Microsoft.VisualStudio.TestPlatform.CommandLine.Processors.Utilities.RunSe ttingsUtilities.GetEffectiveRunSettings(String runSettings, CommandLineOptions c ommandLineOptions) at Microsoft.VisualStudio.TestPlatform.CommandLine.Processors.Utilities.RunSe ttingsUtilities.GetRunSettings(IRunSettingsProvider runSettingsProvider, Command LineOptions commandlineOptions) at Microsoft.VisualStudio.TestPlatform.CommandLine.Processors.RunTestsArgumen tExecutor.RunTests(IEnumerable`1 sources) at Microsoft.VisualStudio.TestPlatform.CommandLine.Processors.RunTestsArgumen tExecutor.Execute() at Microsoft.VisualStudio.TestPlatform.CommandLine.Executor.ExecuteArgumentPr ocessor(IArgumentProcessor processor, Int32& exitCode) at Microsoft.VisualStudio.TestPlatform.CommandLine.Executor.Execute(String[] args) at Microsoft.VisualStudio.TestPlatform.CommandLine.Program.Main(String[] args ) ``` To workaround people can deploy api-ms-win-core-sysinfo- l1-2-0.dll with their application similar to https://github.com/dotnet/corefx/issues/8091#issuecomment-225641743. My expectation is that this should no longer be an issue once @JohnChen0 finishes his work to move us off api-sets. 13567 area-System.Net Add baseclass to ServiceNameCollection Fixes https://github.com/dotnet/corefx/issues/13558 @stephentoub @joperezr 13568 area-System.Numerics System.Numerics.BigInteger causes StackOverflowException ![Screenshot](http://archive.org/download/Fsharp-StackOverflowException/fsi.png) The F# code first defines a custom power function, then tetration function based on it and then two operators so I don't have to type 'I' next to every number I want to work with and hide the superfluous BigInteger members from the console. It worked fine for 3rd tetration of 4 [4 ^ (4 ^ 4) = 4 ^ 256] and returned over 150 digits, but something went wrong on calculating the **5th tetration of 2**, which **is supposed to be almost 20,000 digits**, btw; the program crashes before bigint value gets close to what float can handle (~310 digits), let alone 20,000 digits. What am I missing? ``` let rec exponentiation (x:bigint) (y:bigint) : bigint = match y with | y when y.IsZero -> 1I | y when y.IsOne -> x | y -> x * exponentiation x (y-1I) let rec tetration (x:bigint) (y:bigint) : bigint = match y with | y when y.IsZero -> 1I | y when y.IsOne -> x | y -> exponentiation x (tetration x (y-1I)) let (^) (x:int) (y:int) = System.Console.WriteLine (exponentiation (bigint x) (bigint y)) let (^^) (x:int) (y:int) = System.Console.WriteLine (tetration (bigint x) (bigint y)) ``` I've been dabbling with F# lately, it's the only programming language I am familiar with. I know an unhelpful smattering of JavaScript, and remember a couple of keywords from C# that I tried years ago for a few days on Unity (yeah, absolutely no .NET knowledge) * Windows 10 for Education x64 * .NET Framework 4.5.1 * Visual F# 4.0 * Visual Studio Code 1.7 with Ionide suite of extensions @@ -5611,7 +5611,7 @@ ID Area Title Description 13613 area-System.Net DNS client and custom DNS queries Hi, I was looking for this for some time now and it seems either the feature is hiding pretty well or is missing. System.Net has basic name resolution and network information now. But what about a DNS client which can query any kind of DNS server? I'm currently trying to implement services with the new aspnet core stack. One common scenario with Microservices is service discovery. And one common solution for this is to use DNS. An example would be to query the consul DNS endpoint for service discovery. And this is not really easily doable today. There are certain implementations available for the .NET world, but those are pretty basic and mostly not maintained repositories and/or they are not supporting netstandart. Are there any plans to add something like that? Or, if I'm just missing something, any hint? Thanks a lot! 13614 area-System.Security Add missing RSA members Fixes https://github.com/dotnet/corefx/issues/12366 @bartonjs @steveharter 13618 area-System.Net Add more test coverage for System.Net.HttpListener. -13619 area-Infrastructure Full framework test csproj referencing netstandard csproj using HttpClient fails at runtime I have a net461 test project that uses a netstandard 1.3 csproj. The netstandard project uses HttpClient. When I run the tests, some with HTTP gets and some with HTTPS, they fail with this: ``` System.IO.FileLoadException : Could not load file or assembly 'System.Security.Cryptography.X509Certificates, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) at System.Net.Http.WinHttpHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.HttpClientHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.HttpMessageInvoker.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.HttpClient.SendAsync(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancellationToken) at System.Net.Http.HttpClient.GetAsync(Uri requestUri, HttpCompletionOption completionOption, CancellationToken cancellationToken) ``` What can I do about this? There are no warnings or other hints to point me in any direction, and Google searches have left me more confused than ever. Windows 10 x64 AU Microsoft Visual Studio Professional 2015 Version 14.0.25431.01 Update 3 Microsoft .NET Framework Version 4.6.01586 Microsoft .NET Core Tools (Preview 2) 14.1.20907.0 Don't know if this matters, dotnet: Version : 1.0.1 Build : cee57bf6c981237d80aa1631cfe83cb9ba329f12 +13619 area-Infrastructure Full framework test csproj referencing netstandard csproj using HttpClient fails at runtime I have a net462 test project that uses a netstandard 1.3 csproj. The netstandard project uses HttpClient. When I run the tests, some with HTTP gets and some with HTTPS, they fail with this: ``` System.IO.FileLoadException : Could not load file or assembly 'System.Security.Cryptography.X509Certificates, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) at System.Net.Http.WinHttpHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.HttpClientHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.HttpMessageInvoker.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.HttpClient.SendAsync(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancellationToken) at System.Net.Http.HttpClient.GetAsync(Uri requestUri, HttpCompletionOption completionOption, CancellationToken cancellationToken) ``` What can I do about this? There are no warnings or other hints to point me in any direction, and Google searches have left me more confused than ever. Windows 10 x64 AU Microsoft Visual Studio Professional 2015 Version 14.0.25431.01 Update 3 Microsoft .NET Framework Version 4.6.01586 Microsoft .NET Core Tools (Preview 2) 14.1.20907.0 Don't know if this matters, dotnet: Version : 1.0.1 Build : cee57bf6c981237d80aa1631cfe83cb9ba329f12 13622 area-System.Net Creating a Uri also allocates a string and a char[] "Constructing a Uri has a couple of allocations should that should be easily avoidable, at least in common cases. Here's a profile of an app that just does this a thousand times: ```new Uri(""http://test.com"")```: ![image](https://cloud.githubusercontent.com/assets/2642209/20239952/96b6b7bc-a8da-11e6-8b98-45fed7685072.png) As can be seen, in addition to the 1000 Uri allocations, there are also 1000 string allocations and 1000 char[] allocations. The string allocations are coming from https://github.com/dotnet/corefx/blob/9eaf364b8ca8180bace20aab188b1efe6a55835f/src/System.Private.Uri/src/System/Uri.cs#L3933 , where a string is being allocated purely to look up the value in a dictionary. We should be able to avoid that for common schemes by just comparing the data for common schemes (e.g. http, https, ws, wss, etc.) and getting the syntax object directly. In fact, it looks like this may already be done on 32-bit, just not on 64-bit: https://github.com/dotnet/corefx/blob/9eaf364b8ca8180bace20aab188b1efe6a55835f/src/System.Private.Uri/src/System/Uri.cs#L3639 . The char allocations are coming from https://github.com/dotnet/corefx/blob/2117bae3a6c9736033e6d1659821ff3a1069920b/src/System.Private.Uri/src/System/UriExt.cs#L195 , where the CheckForUnicode function is allocating a char array (at least one) in which to unescape the string data, then check to see if any of the characters are out of ASCII range. There are various ways this allocation could be avoided, e.g. at the expense of a pass through the string, checking to see whether anything needs unescaping, and only falling through to the allocation and the rest of the method if it does." 13624 area-System.Reflection HandleCollections should have an indexer I have a use case where I need to index into methods and fields on a `TypeDefinition`. `FieldDefinitionHandleCollection` and `MethodDefinitionHandleCollection` don't have an indexer, so the only option seems to be to get an enumerator and call `GetNext()` method *N* times to get *N*th member. `GenericParameterHandleCollection` or `GenericParameterConstraintHandleCollection` already have an indexer. This seems like an API inconsistency. Unless there's a particular reason why the other `HandleCollections` can't have it, the indexer should be added to all of them. We can make them implement `IReadOnlyList` while we're at it too. 13625 area-System.Collections Performance improvements in System.Collections.Generic.Dictionary Use local variable with size/length of buckets array in cleaning. I wrote simple test for for when i use local variable vs length with BenchmarkDotNet. Local variable is about 30-50% faster. This optimization is applying in Initialize and Resize. In this method is size already in local variable. It should be applying in Clear but here it must first assign to local variable and it's add one extra variable on stack. Second optimization is applying in Insert method where i reduce one local variable via reusing. @@ -6244,7 +6244,7 @@ ID Area Title Description 14494 area-Infrastructure Updating CoreClr dependencies to servicing-24814-01 14495 area-Meta After upgrading NetStandard.Library from 1.6.0 to 1.6.1, getting FileLoadException. "After upgrading my library's dependency on NetStandard.Library from 1.6.0 to 1.61, my unit tests fail: System.IO.FileLoadException: Could not load file or assembly 'System.Net.Sockets, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. My library's json: { ""supports"": {}, ""dependencies"": { ""Microsoft.Extensions.Logging"": ""1.1.0"", ""Microsoft.NETCore.Portable.Compatibility"": ""1.0.1"", ""NETStandard.Library"": ""1.6.1"", ""Portable.BouncyCastle"": ""1.8.1.2"", ""StyleCop.Analyzers"": ""1.0.0"", ""System.Threading.Tasks.Dataflow"": ""4.7.0"" }, ""frameworks"": { ""netstandard1.3"": {} } } My unit test's json: { ""dependencies"": {}, ""frameworks"": { "".NETFramework,Version=v4.6.1"": {} }, ""runtimes"": { ""win"": {}, ""win-x86"": {}, ""win-x64"": {}, ""win-arm"": {} } } The full project is at https://github.com/convertersystems/opc-ua-client. thanks, Andrew ps: Projects that use this library from a package work just fine. It's just the solution's unit tests with a problem. " 14496 area-System.Text Time to revisit need to register code pages provider? "I'm working on localization of dotnet/cli itself and I hit an issue where csc on .NET Core on Windows can give me garbled text if I'm on a non English machine with corresponding satellite assemblies present. The root cause is https://github.com/dotnet/corefx/issues/10054. I'm going to have to ensure that msbuild, cli, and roslyn all call Encoding.RegisterProvider(CodePagesEncodingProvider.Instance) before outputting anything to the console in non-English locales. I'm concerned that this pain point for .NET Core on Windows is not worth the benefit of making the code page data ""optional"". I say optional in quotes because the shared framework carries System.Text.Encoding.CodePages.dll and if I publish a standalone .NET Core app with our tools and the usual steps, System.Text.Encoding.CodePages is copied in to my app folder. Is anyone actually getting the benefit of not having System.Text.Encoding.CodePages? Given the high likelihood of System.Text.Encoding.CodePages.dll being present in practice, could System.Console light-up on it somehow? i.e. If it's there next to System.Console.dll, then use it regardless of whether register has been called whenever the console code page is not UTF8 and text outside ASCII range is written? @terrajobst @tarekgh @karelz FYI @piotrpMSFT @cdmihai @jaredpar " -14501 area-Infrastructure Update projects to netcoreapp2.0 / netstandard2.0 / net461 We need to update our projects to build against these new monikers and package as the same. Since netstandard2.0 is supported by net461 most desktop builds should be targeting this version rather than net463. +14501 area-Infrastructure Update projects to netcoreapp2.0 / netstandard2.0 / net462 We need to update our projects to build against these new monikers and package as the same. Since netstandard2.0 is supported by net462 most desktop builds should be targeting this version rather than net463. 14502 area-System.Collections Add IsEmpty property to ArraySegment ArraySegment can be created as empty by using `default(ArraySegment)` or using `ArraySegment.Empty` property. If we try execute any operation on such segment then it will throw invalid operation exception. To protect from calling such operations I suggest to add `IsEmpty` property to `ArraySegment`. Also most operation do nothing if segment has zero length. And user code can use `IsEmpty` property to improve performance for empty segment. As additional, structures `Span` and `ReadOnlySpan` have `IsEmpty` properties already. ```cs namespace System { public struct ArraySegment { public bool IsEmpty => Count == 0; } } ``` 14503 area-Infrastructure Packages threw exception '[Error 267] The directory name is invalid' & '[Error 2] The system cannot find the file specified' "No results generated. For win8 & win7: [Error 267] The directory name is invalid' ``` 2016-12-14 03:11:58,546: WARNING: proc(37): run_and_log_output: Could not find C:\dotnetbuild\work\6e004e14-ed1e-4b54-97ec-08d5c930039a\Work\7beb0736-c746-4508-9354-7277b7be03a8\Unzip\RunTests.cmd on disk. Execution may fail. 2016-12-14 03:11:58,551: ERROR: logs(86): _log_uncaught_exception: Unhandled error: [Error 2] The system cannot find the file specified [' File ""C:\\dotnetbuild\\work\\6e004e14-ed1e-4b54-97ec-08d5c930039a\\Payload\\RunnerScripts\\scriptrunner\\scriptrunner.py"", line 91, in \n sys.exit(main())\n', ' File ""C:\\dotnetbuild\\work\\6e004e14-ed1e-4b54-97ec-08d5c930039a\\Payload\\RunnerScripts\\scriptrunner\\scriptrunner.py"", line 87, in main\n return command_main(_main, [\'script=\'], args)\n', ' File ""C:\\dotnetbuild\\scripts\\helix\\cmdline.py"", line 47, in command_main\n return main_method(settings, optlist, args)\n', ' File ""C:\\dotnetbuild\\work\\6e004e14-ed1e-4b54-97ec-08d5c930039a\\Payload\\RunnerScripts\\scriptrunner\\scriptrunner.py"", line 44, in _main\n env=None\n', ' File ""C:\\dotnetbuild\\scripts\\helix\\proc.py"", line 46, in run_and_log_output\n shell=False)\n', ' File ""C:\\Python\\lib\\subprocess.py"", line 710, in __init__\n errread, errwrite)\n', ' File ""C:\\Python\\lib\\subprocess.py"", line 958, in _execute_child\n startupinfo)\n'] 2016-12-14 03:11:58,555: INFO: azure_storage(199): _upload: Uploading single blob: '4e0759f44fa245fc84ec7861ab2fe091.log' 2016-12-14 03:11:59,009: INFO: saferequests(90): request_with_retry: Response complete with status code '201' ``` For win10: [Error 2] The system cannot find the file specified ``` 2016-12-14 03:18:59,398: WARNING: proc(37): run_and_log_output: Could not find C:\dotnetbuild\work\d15e87c1-82b1-40b9-a105-2832e5527c53\Work\53280074-1a02-42e9-896a-59d31484f86e\Unzip\RunTests.cmd on disk. Execution may fail. 2016-12-14 03:18:59,398: ERROR: logs(86): _log_uncaught_exception: Unhandled error: [Error 2] The system cannot find the file specified [' File ""C:\\dotnetbuild\\work\\d15e87c1-82b1-40b9-a105-2832e5527c53\\Payload\\RunnerScripts\\scriptrunner\\scriptrunner.py"", line 91, in \n sys.exit(main())\n', ' File ""C:\\dotnetbuild\\work\\d15e87c1-82b1-40b9-a105-2832e5527c53\\Payload\\RunnerScripts\\scriptrunner\\scriptrunner.py"", line 87, in main\n return command_main(_main, [\'script=\'], args)\n', ' File ""C:\\dotnetbuild\\scripts\\helix\\cmdline.py"", line 47, in command_main\n return main_method(settings, optlist, args)\n', ' File ""C:\\dotnetbuild\\work\\d15e87c1-82b1-40b9-a105-2832e5527c53\\Payload\\RunnerScripts\\scriptrunner\\scriptrunner.py"", line 44, in _main\n env=None\n', ' File ""C:\\dotnetbuild\\scripts\\helix\\proc.py"", line 46, in run_and_log_output\n shell=False)\n', ' File ""C:\\Python\\lib\\subprocess.py"", line 710, in __init__\n errread, errwrite)\n', ' File ""C:\\Python\\lib\\subprocess.py"", line 958, in _execute_child\n startupinfo)\n'] 2016-12-14 03:18:59,398: INFO: azure_storage(199): _upload: Uploading single blob: 'f7e71ee5ee4f4089bfeffc987e84636d.log' ``` Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161214.01/workItem/Packages Build : Master - 20161214.01 (Core Tests) Failing configurations: Win81, Win7 & Win10" 14504 area-System.Net Test failure: System.Net.Security.Tests.ServerAllowNoEncryptionTest/ServerAllowNoEncryption_ClientRequireEncryption_ConnectWithEncryption Opened on behalf of @jiangzeng The test `System.Net.Security.Tests.ServerAllowNoEncryptionTest/ServerAllowNoEncryption_ClientRequireEncryption_ConnectWithEncryption` has failed. System.IO.IOException : Authentication failed because the remote party has closed the transport stream. Stack Trace: at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.PartialFrameCallback(AsyncProtocolRequest asyncRequest) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Security.Tests.ServerAllowNoEncryptionTest.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20161214.01 (Core Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161214.01/workItem/System.Net.Security.Tests/analysis/xunit/System.Net.Security.Tests.ServerAllowNoEncryptionTest~2FServerAllowNoEncryption_ClientRequireEncryption_ConnectWithEncryption @@ -6802,7 +6802,7 @@ ID Area Title Description 15404 area-System.Threading Task.Delay and optional parameter issue Hey everybody, I don´t know exactly where to post this issue. I have the following code. ```cs public class Constants { public const int constantDefault = 100; } public async Task GetOneImage(..., int millisecondsDelay = Constants.constantDefault ) { await Task.Delay(millisecondsDelay); return await GetOneImage(...); } // Called without touching the optional parameter await GetOneImage(); ``` Starting with the last Visual Studio 2015 Update, the Code never reaches the internal GetOneImage(...). It only works if called like ```cs await Task.Delay(Constants.constantDefault); // or await Task.Delay(100); // or calling the GetOneImage like await GetOneImage(Constants.constantDefault); ``` Also not working ```cs public async Task GetOneImage(..., int millisecondsDelay = 100) { await Task.Delay(millisecondsDelay ); .... } ``` The project is a WPF application targeting .NET 4.5. Developement platform is Win 10 and Visual Studio 2015 14.0.25431.01 Update 3. The config is *Debug* and *Any CPU* Greetings! 15406 area-System.Net Remove byte[] allocation from IPAddress.{Try}Parse IPAddress.Parse and TryParse both allocate a byte[] to store the parsed address bytes, only to then have those bytes turned into either a uint or an array of ushorts. This commit eliminates the allocation, for both IPv4 and IPv6. This is relevant to TryParse even when the string isn't an address, as the array is allocated regardless. cc: @davidsh, @cipop, @geoffkizer @Priya91 15407 area-Infrastructure Clean-up build.proj As part of https://github.com/dotnet/corefx/pull/15306 we moved the testing targets and properties into tests.builds we need to clean them out of build.proj. Things like https://github.com/dotnet/corefx/blob/master/build.proj#L74 -15408 area-Infrastructure Can't build CoreFx on Ubuntu 16.04.1 LTS - error during package restore "Hi, I tried to build CoreFx on Ubuntu 16.04.1 LTS (followed https://github.com/dotnet/corefx/blob/master/Documentation/building/unix-instructions.md) and got following errors: > Tools are already initialized > Running: /home/matekm/corefx/src/Native/build-native.sh x64 Debug Linux --numproc 1 toolSetDir=c:\tools\clr > Setting up directories for build > Checking pre-requisites... > Commencing build of corefx native components for Linux.x64.Debug > Invoking cmake with arguments: ""/home/matekm/corefx/src/Native/Unix"" DEBUG -DFEATURE_DISTRO_AGNOSTIC_SSL=0 -DCMAKE_STATIC_LIB_LINK=0 > -- Configuring done > -- Generating done > -- Build files have been written to: /home/matekm/corefx/bin/obj/Linux.x64.Debug/native > Executing make install -j 1 > [ 3%] Built target System.IO.Compression.Native > [ 27%] Built target System.Native > [ 51%] Built target System.Native-Static > [ 60%] Built target System.Net.Http.Native > [ 64%] Built target System.Net.Security.Native > [ 97%] Built target objlib > [ 98%] Built target System.Security.Cryptography.Native > [100%] Built target System.Security.Cryptography.Native.OpenSsl > Install the project... > -- Install configuration: ""DEBUG"" > -- Up-to-date: /home/matekm/corefx/src/Native/../../bin/Linux.x64.Debug/native/./System.IO.Compression.Native.so > -- Up-to-date: /home/matekm/corefx/src/Native/../../bin/Linux.x64.Debug/native/./System.Native.so > -- Up-to-date: /home/matekm/corefx/src/Native/../../bin/Linux.x64.Debug/native/./System.Native.a > -- Up-to-date: /home/matekm/corefx/src/Native/../../bin/Linux.x64.Debug/native/./System.Net.Http.Native.so > -- Up-to-date: /home/matekm/corefx/src/Native/../../bin/Linux.x64.Debug/native/./System.Net.Security.Native.so > -- Up-to-date: /home/matekm/corefx/src/Native/../../bin/Linux.x64.Debug/native/./System.Security.Cryptography.Native.so > -- Up-to-date: /home/matekm/corefx/src/Native/../../bin/Linux.x64.Debug/native/./System.Security.Cryptography.Native.OpenSsl.so > Copying native shims to vertical runtime folder. > Command execution succeeded. > Tools are already initialized > Running: /home/matekm/corefx/Tools/msbuild.sh /nologo /verbosity:minimal /clp:Summary /maxcpucount /l:BinClashLogger,Tools/Microsoft.DotNet.Build.Tasks.dll;LogFile=binclash.log /p:ConfigurationGroup=Debug /flp:v=normal /flp2:warningsonly;logfile=msbuild.wrn /flp3:errorsonly;logfile=msbuild.err > EXEC : error : Root element is missing. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/src/Tools/CoreFx.Tools/project.json"""" exited with code 1. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > EXEC : error : Root element is missing. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/src/Tools/CoreFx.Tools/project.json"""" exited with code 1. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > /home/matekm/corefx/src/Tools/GenerateProps/GenerateProps.proj(15,5): error MSB4062: The ""GenerateConfigurationProps"" task could not be loaded from the assembly /home/matekm/corefx/Tools/CoreFx.Tools.dll. The system cannot find the file specified. > /home/matekm/corefx/src/Tools/GenerateProps/GenerateProps.proj(15,5): error MSB4062: (Exception from HRESULT: 0x80070002) Confirm that the declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask. > /home/matekm/corefx/Tools/depProj.targets(79,5): error : Error no assets were resolved from NuGet packages. [/home/matekm/corefx/external/coreclr/coreclr.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/Tools/depProj.targets(79,5): error : Error no assets were resolved from NuGet packages. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net461/System.Core.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.Core.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net461/System.Drawing.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.Drawing.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net461/System.Numerics.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.Numerics.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net461/System.Runtime.Serialization.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.Runtime.Serialization.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net461/System.Web.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.Web.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net461/System.Xml.Linq.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.Xml.Linq.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net461/System.Xml.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.Xml.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net461/System.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net461/mscorlib.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> mscorlib.dll > EXEC : error : Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 supports: [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - netcore50 (.NETCore,Version=v5.0) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - uap10.1 (UAP,Version=v10.1) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : One or more packages are incompatible with .NETCoreApp,Version=v1.0. [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0) / -x64. Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 supports: [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - netcore50 (.NETCore,Version=v5.0) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - uap10.1 (UAP,Version=v10.1) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : One or more packages are incompatible with .NETCoreApp,Version=v1.0 (-x64). [/home/matekm/corefx/external/NETNative/NETNative.depproj] > > Errors in /home/matekm/corefx/bin/obj/Linux.AnyCPU.Debug/NETNative/netcoreapp/x64/project.json > Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 supports: > - netcore50 (.NETCore,Version=v5.0) > - uap10.1 (UAP,Version=v10.1) > One or more packages are incompatible with .NETCoreApp,Version=v1.0. > Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0) / -x64. Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 supports: > - netcore50 (.NETCore,Version=v5.0) > - uap10.1 (UAP,Version=v10.1) > One or more packages are incompatible with .NETCoreApp,Version=v1.0 (-x64). > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/bin/obj/Linux.AnyCPU.Debug/NETNative/netcoreapp/x64/project.json"""" exited with code 1. [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : Root element is missing. [/home/matekm/corefx/external/test-runtime/XUnit.Runtime.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/external/test-runtime/project.json"""" exited with code 1. [/home/matekm/corefx/external/test-runtime/XUnit.Runtime.depproj] > > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > EXEC : error : Root element is missing. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/src/Tools/CoreFx.Tools/project.json"""" exited with code 1. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > EXEC : error : Root element is missing. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/src/Tools/CoreFx.Tools/project.json"""" exited with code 1. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > /home/matekm/corefx/src/Tools/GenerateProps/GenerateProps.proj(15,5): error MSB4062: The ""GenerateConfigurationProps"" task could not be loaded from the assembly /home/matekm/corefx/Tools/CoreFx.Tools.dll. The system cannot find the file specified. > /home/matekm/corefx/src/Tools/GenerateProps/GenerateProps.proj(15,5): error MSB4062: (Exception from HRESULT: 0x80070002) Confirm that the declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask. > /home/matekm/corefx/Tools/depProj.targets(79,5): error : Error no assets were resolved from NuGet packages. [/home/matekm/corefx/external/coreclr/coreclr.depproj] > /home/matekm/corefx/Tools/depProj.targets(79,5): error : Error no assets were resolved from NuGet packages. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > EXEC : error : Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 supports: [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - netcore50 (.NETCore,Version=v5.0) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - uap10.1 (UAP,Version=v10.1) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : One or more packages are incompatible with .NETCoreApp,Version=v1.0. [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0) / -x64. Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 supports: [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - netcore50 (.NETCore,Version=v5.0) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - uap10.1 (UAP,Version=v10.1) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : One or more packages are incompatible with .NETCoreApp,Version=v1.0 (-x64). [/home/matekm/corefx/external/NETNative/NETNative.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/bin/obj/Linux.AnyCPU.Debug/NETNative/netcoreapp/x64/project.json"""" exited with code 1. [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : Root element is missing. [/home/matekm/corefx/external/test-runtime/XUnit.Runtime.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/external/test-runtime/project.json"""" exited with code 1. [/home/matekm/corefx/external/test-runtime/XUnit.Runtime.depproj] > Command execution failed with exit code 1. Ubuntu details: > Distributor ID: Ubuntu > Description: Ubuntu 16.04.1 LTS > Release: 16.04 > Codename: xenial > I know it's probably problem with me, not the corefx but I would appreciate some help;)" +15408 area-Infrastructure Can't build CoreFx on Ubuntu 16.04.1 LTS - error during package restore "Hi, I tried to build CoreFx on Ubuntu 16.04.1 LTS (followed https://github.com/dotnet/corefx/blob/master/Documentation/building/unix-instructions.md) and got following errors: > Tools are already initialized > Running: /home/matekm/corefx/src/Native/build-native.sh x64 Debug Linux --numproc 1 toolSetDir=c:\tools\clr > Setting up directories for build > Checking pre-requisites... > Commencing build of corefx native components for Linux.x64.Debug > Invoking cmake with arguments: ""/home/matekm/corefx/src/Native/Unix"" DEBUG -DFEATURE_DISTRO_AGNOSTIC_SSL=0 -DCMAKE_STATIC_LIB_LINK=0 > -- Configuring done > -- Generating done > -- Build files have been written to: /home/matekm/corefx/bin/obj/Linux.x64.Debug/native > Executing make install -j 1 > [ 3%] Built target System.IO.Compression.Native > [ 27%] Built target System.Native > [ 51%] Built target System.Native-Static > [ 60%] Built target System.Net.Http.Native > [ 64%] Built target System.Net.Security.Native > [ 97%] Built target objlib > [ 98%] Built target System.Security.Cryptography.Native > [100%] Built target System.Security.Cryptography.Native.OpenSsl > Install the project... > -- Install configuration: ""DEBUG"" > -- Up-to-date: /home/matekm/corefx/src/Native/../../bin/Linux.x64.Debug/native/./System.IO.Compression.Native.so > -- Up-to-date: /home/matekm/corefx/src/Native/../../bin/Linux.x64.Debug/native/./System.Native.so > -- Up-to-date: /home/matekm/corefx/src/Native/../../bin/Linux.x64.Debug/native/./System.Native.a > -- Up-to-date: /home/matekm/corefx/src/Native/../../bin/Linux.x64.Debug/native/./System.Net.Http.Native.so > -- Up-to-date: /home/matekm/corefx/src/Native/../../bin/Linux.x64.Debug/native/./System.Net.Security.Native.so > -- Up-to-date: /home/matekm/corefx/src/Native/../../bin/Linux.x64.Debug/native/./System.Security.Cryptography.Native.so > -- Up-to-date: /home/matekm/corefx/src/Native/../../bin/Linux.x64.Debug/native/./System.Security.Cryptography.Native.OpenSsl.so > Copying native shims to vertical runtime folder. > Command execution succeeded. > Tools are already initialized > Running: /home/matekm/corefx/Tools/msbuild.sh /nologo /verbosity:minimal /clp:Summary /maxcpucount /l:BinClashLogger,Tools/Microsoft.DotNet.Build.Tasks.dll;LogFile=binclash.log /p:ConfigurationGroup=Debug /flp:v=normal /flp2:warningsonly;logfile=msbuild.wrn /flp3:errorsonly;logfile=msbuild.err > EXEC : error : Root element is missing. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/src/Tools/CoreFx.Tools/project.json"""" exited with code 1. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > EXEC : error : Root element is missing. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/src/Tools/CoreFx.Tools/project.json"""" exited with code 1. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > /home/matekm/corefx/src/Tools/GenerateProps/GenerateProps.proj(15,5): error MSB4062: The ""GenerateConfigurationProps"" task could not be loaded from the assembly /home/matekm/corefx/Tools/CoreFx.Tools.dll. The system cannot find the file specified. > /home/matekm/corefx/src/Tools/GenerateProps/GenerateProps.proj(15,5): error MSB4062: (Exception from HRESULT: 0x80070002) Confirm that the declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask. > /home/matekm/corefx/Tools/depProj.targets(79,5): error : Error no assets were resolved from NuGet packages. [/home/matekm/corefx/external/coreclr/coreclr.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/Tools/depProj.targets(79,5): error : Error no assets were resolved from NuGet packages. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net462/System.Core.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.Core.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net462/System.Drawing.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.Drawing.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net462/System.Numerics.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.Numerics.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net462/System.Runtime.Serialization.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.Runtime.Serialization.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net462/System.Web.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.Web.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net462/System.Xml.Linq.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.Xml.Linq.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net462/System.Xml.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.Xml.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net462/System.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net462/mscorlib.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> mscorlib.dll > EXEC : error : Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 supports: [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - netcore50 (.NETCore,Version=v5.0) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - uap10.1 (UAP,Version=v10.1) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : One or more packages are incompatible with .NETCoreApp,Version=v1.0. [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0) / -x64. Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 supports: [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - netcore50 (.NETCore,Version=v5.0) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - uap10.1 (UAP,Version=v10.1) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : One or more packages are incompatible with .NETCoreApp,Version=v1.0 (-x64). [/home/matekm/corefx/external/NETNative/NETNative.depproj] > > Errors in /home/matekm/corefx/bin/obj/Linux.AnyCPU.Debug/NETNative/netcoreapp/x64/project.json > Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 supports: > - netcore50 (.NETCore,Version=v5.0) > - uap10.1 (UAP,Version=v10.1) > One or more packages are incompatible with .NETCoreApp,Version=v1.0. > Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0) / -x64. Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 supports: > - netcore50 (.NETCore,Version=v5.0) > - uap10.1 (UAP,Version=v10.1) > One or more packages are incompatible with .NETCoreApp,Version=v1.0 (-x64). > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/bin/obj/Linux.AnyCPU.Debug/NETNative/netcoreapp/x64/project.json"""" exited with code 1. [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : Root element is missing. [/home/matekm/corefx/external/test-runtime/XUnit.Runtime.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/external/test-runtime/project.json"""" exited with code 1. [/home/matekm/corefx/external/test-runtime/XUnit.Runtime.depproj] > > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > EXEC : error : Root element is missing. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/src/Tools/CoreFx.Tools/project.json"""" exited with code 1. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > EXEC : error : Root element is missing. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/src/Tools/CoreFx.Tools/project.json"""" exited with code 1. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > /home/matekm/corefx/src/Tools/GenerateProps/GenerateProps.proj(15,5): error MSB4062: The ""GenerateConfigurationProps"" task could not be loaded from the assembly /home/matekm/corefx/Tools/CoreFx.Tools.dll. The system cannot find the file specified. > /home/matekm/corefx/src/Tools/GenerateProps/GenerateProps.proj(15,5): error MSB4062: (Exception from HRESULT: 0x80070002) Confirm that the declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask. > /home/matekm/corefx/Tools/depProj.targets(79,5): error : Error no assets were resolved from NuGet packages. [/home/matekm/corefx/external/coreclr/coreclr.depproj] > /home/matekm/corefx/Tools/depProj.targets(79,5): error : Error no assets were resolved from NuGet packages. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > EXEC : error : Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 supports: [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - netcore50 (.NETCore,Version=v5.0) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - uap10.1 (UAP,Version=v10.1) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : One or more packages are incompatible with .NETCoreApp,Version=v1.0. [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0) / -x64. Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 supports: [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - netcore50 (.NETCore,Version=v5.0) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - uap10.1 (UAP,Version=v10.1) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : One or more packages are incompatible with .NETCoreApp,Version=v1.0 (-x64). [/home/matekm/corefx/external/NETNative/NETNative.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/bin/obj/Linux.AnyCPU.Debug/NETNative/netcoreapp/x64/project.json"""" exited with code 1. [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : Root element is missing. [/home/matekm/corefx/external/test-runtime/XUnit.Runtime.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/external/test-runtime/project.json"""" exited with code 1. [/home/matekm/corefx/external/test-runtime/XUnit.Runtime.depproj] > Command execution failed with exit code 1. Ubuntu details: > Distributor ID: Ubuntu > Description: Ubuntu 16.04.1 LTS > Release: 16.04 > Codename: xenial > I know it's probably problem with me, not the corefx but I would appreciate some help;)" 15409 area-System.Net Skip websocket testing on Windows 7. fixes #15380 cc @CIPop 15410 area-System.Collections SortedSetEqualityComparer seems to ignore the comparer from CreateSetComparer Discovered during #15376 [`SortedSetEqualityComparer`](https://github.com/dotnet/corefx/blob/adb0f13d7aafdbee95ae13f970c8ad25f77558c5/src/System.Collections/src/System/Collections/Generic/SortedSet.cs#L2631) has a `_comparer` field that is always set to the `Comparer.Default`. This is because although it has a constructor that allows a different comparer to be passed in, that constructor is never actually called. And during `Equals`, it uses that default comparer for comparing two sorted sets and leaves the equality comparer which was handed to it from `CreateSetComparer` completely out of the equation. The fix would be to remove the `_comparer` field and use the equality comparer for everything. 15411 area-Meta Cleanup: remove empty try's We have about 20 instances of `try { }` See https://github.com/dotnet/coreclr/issues/8924. The PR https://github.com/dotnet/coreclr/pull/8949 makes sure they are not represented in generated code so this is just minor code cleanup. @@ -7070,7 +7070,7 @@ ID Area Title Description 15887 area-System.Net Make socket tests more reliable under Unix There are several Sockets tests that regularly fail in Unix because the test listens to a specific socket:port that is expected to not have a server, however due to other tests that are running, there is a small chance another test created a server with that specific port, causing the test to fail. In Unix, ports are random while in Windows ports are incremental, thus the issues don't occur in Windows because by the time the ports roll around, the tests will be done. The odds of a port collision causing a Unix failure in a test run is small: say ~1:1,000 test runs fail due to this, but spread across all versions of Unix that are running tests it becomes more common. The proposed fix is to retry once when running under Unix; other options considered were to remove the tests or loop perhaps 3 times (instead of retrying once). This will change the odds to ~1:1,000,000 or so. A recent test failure: ```` System.Net.Sockets.Tests.DualModeConnectAsync.ConnectAsyncV4IPEndPointToV6Host_Fails MESSAGE: Assert.Throws() Failure\nExpected: typeof(System.Net.Sockets.SocketException)\nActual: (No exception was thrown) http://jdash.azurewebsites.net/builds/test?name=System.Net.Sockets.Tests.DualModeConnectAsync.ConnectAsyncV4IPEndPointToV6Host_Fails&viewName=dotnet_corefx&pr=False&limit=1000&startDate=2017-02-04 ```` cc @ianhays cc @Priya91 cc @davidsh cc @ericeil In reference to issue #14519 15891 area-System.IO Test issue: System.IO.MemoryMappedFiles.Tests.CrossProcessTests.DataShared crashes The cross-process memory-mapped file test below consistently crashes on my machine on Windows 10 Pro even on first build of a freshly cloned repo. Command line: ``` R:\corefx_ref\Tools\testdotnetcli\dotnet.exe xunit.console.netcore.exe System.IO.MemoryMappedFiles.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapp1.1tests -notrait category=OuterLoop -notrait category=failing -notrait category=nonwindowstests ``` Test output: ``` Exception from RemoteExecutorConsoleApp(System.IO.MemoryMappedFiles.Tests, Version=4.1.0.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb, System.IO.MemoryMappedFiles.Tests.CrossProcessTests, DataShared_OtherProcess, C:\Users\Dennis, Dietrich\AppData\Local\Temp\CrossProcessTests_xbfm5c1q.o5d\DataShared_16): Assembly: System.IO.MemoryMappedFiles.Tests, Version=4.1.0.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb Type: System.IO.MemoryMappedFiles.Tests.CrossProcessTests Method: Int32 DataShared_OtherProcess(System.String) Exception: System.Reflection.TargetParameterCountException: Parameter count mismatch. at System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) at RemoteExecutorConsoleApp.Program.Main(String[] args) in R:\corefx_ref\src\Common\tests\System\Diagnostics\RemoteExecutorConsoleApp\RemoteExecutorConsoleApp.cs:line 48 Unhandled Exception: System.Reflection.TargetParameterCountException: Parameter count mismatch. at RemoteExecutorConsoleApp.Program.Main(String[] args) in R:\corefx_ref\src\Common\tests\System\Diagnostics\RemoteExecutorConsoleApp\RemoteExecutorConsoleApp.cs:line 60 System.IO.MemoryMappedFiles.Tests.CrossProcessTests.DataShared [FAIL] Assert.Equal() Failure Expected: 42 Actual: -532462766 Stack Trace: R:\corefx_ref\src\Common\tests\System\Diagnostics\RemoteExecutorTestBase.cs(167,0): at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() R:\corefx_ref\src\System.IO.MemoryMappedFiles\tests\MemoryMappedFile.CrossProcess.cs(30,0): at System.IO.MemoryMappedFiles.Tests.CrossProcessTests.DataShared() ``` 15892 area-Serialization "Change ""#if NET_NATIVE"" to ""#if uapaot"" in S.P.DataContractSerialization " We need make changes to the following compilation directives, 1. Remove USE_REFEMIT as we do not use it. 2. Change NET_NATIVE to uapaot -15897 area-Meta Couple of tests should be [Theory] not [Fact] "Run tests by whatever means, then look in the log xml: ``` ```" +15897 area-Meta Couple of tests should be [Theory] not [Fact] "Run tests by whatever means, then look in the log xml: ``` ```" 15900 area-Infrastructure [ARM/CI] ARM CI script for arm and armel ARM CI for arm and armel. This CI script tests followings for ubuntu.14.04-arm, ubuntu.16.04-arm and tizen.4.0.0-armel. 1. Construct RootFS for ubuntu.14.04-arm, ubuntu.16.04-arm and tizen.4.0.0-armel. 2. Cross build corefx using RootFS for ubuntu.14.04-arm, ubuntu.16.04-arm and tizen.4.0.0-armel. Release and Debug build are available. 3. Above tasks are performed inside Docker image. Related issues: https://github.com/dotnet/coreclr/issues/9273 https://github.com/dotnet/core-setup/issues/790 15903 area-System.Linq Lighter compilation of <= and >= in S.L.Expressions Currently `<=` is compiled as the equivalent of `x <= y ? true : false` with a branch. Compile as `!(x > y)`, avoiding the branch. 15904 area-System.Linq Don't cast S.L.Expression arithmetic results to type they already fit For types smaller than 32 bit the 32-bit results of arithmetic operations are converted to ensure they fit that smaller size, with checks if appropriate. Several operations cannot produce a result that does not already fit (most obviously `x & y` can never overflow the size of `x` and `y`). `EmitUnaryOperator` already skips the conversion in some cases. Skip more there and skip some in `EmitBinaryOperator`. @@ -7743,7 +7743,7 @@ ID Area Title Description 16910 area-System.Linq Interpreting build of S.Linq.Expressions (for UAP) is broken "`` should be set in the csproj for uap/uapaot but the build is broken. The correct fix is not obvious without some investigation so for now I'm leaving it as ``` true false ```" 16911 area-System.Net Implement ReceiveMessageFromAsync with buffer list on Unix Fixes #16727 cc: @geoffkizer, @Priya91 16912 area-Infrastructure Inspect the files in .NET Core App and remove any unnecessary ones We are getting close to a preview release so we should inspect all the files in the shared framework (in particular the private netcoreapp package from corefx) and make sure there isn't anything that shouldn't be there. Some potential candidates for removal are: System.Security.Permissions System.Text.Encoding.CodePages. cc @ericstj @Petermarcu -16913 area-System.IO dotnet core 1.1.0 and net461 now gets System.IO.FileSystem System.TypeLoadException "@jeremyBass commented on [Thu Mar 09 2017](https://github.com/dotnet/coreclr/issues/10062) I hope this is the right place for this issue. I have been betting my head on the wall on this. I will say that I have this on [stackoverflow](http://stackoverflow.com/q/42693085/746758) as well, but believe it may be helpful to have it logged here. I realize there are a few other issues that seem related, but they are not 100% the same and I got no traction on a fix/workaround. I keep getting this error on the server [![enter image description here][1]][1] > Unhandled Exception: System.TypeLoadException: Could not load type 'System.IO.Di rectory' from assembly 'System.IO.FileSystem, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. at fais.printing_services.Program.Main(String[] args) I have done ever trick I can think of, followed all the newest issues to resolve with no luck. Here is my project file: { ""userSecretsId"": ""aspnet-fais.printing_services-6f6dbf21-da98-45d2-a187-08ae49d09d62"", ""dependencies"": { ""DataTables.AspNet.AspNetCore"": ""2.0.2"", ""Microsoft.ApplicationInsights.AspNetCore"": ""2.0.0"", ""Microsoft.AspNetCore.Authentication.Cookies"": ""1.1.0"", ""Microsoft.AspNetCore.Diagnostics"": ""1.1.0"", ""Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore"": ""1.1.0"", ""Microsoft.AspNetCore.Identity.EntityFrameworkCore"": ""1.1.0"", ""Microsoft.AspNetCore.Mvc"": ""1.1.1"", ""Microsoft.AspNetCore.Routing"": ""1.1.0"", ""Microsoft.AspNet.Session"": ""1.0.0-*"", ""Microsoft.AspNetCore.Server.IISIntegration"": ""1.1.0"", ""Microsoft.AspNetCore.Server.Kestrel"": ""1.1.0"", ""Microsoft.AspNetCore.StaticFiles"": ""1.1.0"", ""Microsoft.EntityFrameworkCore"": ""1.1.0"", ""Microsoft.EntityFrameworkCore.Design"": ""1.1.0"", ""Microsoft.EntityFrameworkCore.Relational.Design"": ""1.1.0"", ""Microsoft.EntityFrameworkCore.SqlServer"": ""1.1.0"", ""Microsoft.EntityFrameworkCore.SqlServer.Design"": ""1.1.0"", ""Microsoft.EntityFrameworkCore.Tools"": { ""type"": ""build"", ""version"": ""1.1.0-preview4-final"" }, ""Microsoft.Extensions.Caching.Memory"": ""1.1.0-*"", ""Microsoft.Extensions.Configuration.EnvironmentVariables"": ""1.1.0"", ""Microsoft.Extensions.Configuration.Json"": ""1.1.0"", ""Microsoft.Extensions.Configuration.UserSecrets"": ""1.1.0"", ""Microsoft.Extensions.Logging"": ""1.1.0"", ""Microsoft.Extensions.Logging.Console"": ""1.1.0"", ""Microsoft.Extensions.Logging.Debug"": ""1.1.0"", ""Microsoft.Extensions.Options.ConfigurationExtensions"": ""1.1.0"", ""Microsoft.VisualStudio.Web.BrowserLink.Loader"": ""14.1.0"", ""Microsoft.VisualStudio.Web.CodeGeneration"": ""1.1.0-preview4-final"", ""Microsoft.VisualStudio.Web.CodeGeneration.Tools"": ""1.1.0-preview4-final"", //""Microsoft.VisualStudio.Web.CodeGeneration.Design"": ""1.1.0-msbuild3-final"", ""Microsoft.VisualStudio.Web.CodeGenerators.Mvc"": ""1.1.0-preview4-final"", ""Microsoft.AspNetCore.Session"": ""1.1.0"", ""Microsoft.NETCore"": ""5.0.1-rc2-24027"", ""Microsoft.NETCore.Portable.Compatibility"": ""1.0.1-rc2-24027"", ""BundlerMinifier.Core"": ""2.4.337"", ""Microsoft.AspNetCore.ResponseCompression"": ""1.0.1"", ""Microsoft.AspNetCore.Cors"": ""1.1.1"", ""hiqpdf"": ""10.6.0"", ""Novell.Directory.Ldap.NETStandard"": ""2.3.6"" }, ""tools"": { ""Microsoft.EntityFrameworkCore.Tools"": { ""version"": ""1.1.0-preview4-final"", ""imports"": [ ""portable-net45+win8"" ] }, ""Microsoft.EntityFrameworkCore.Tools.DotNet"": ""1.1.0.0-preview4-final"", ""Microsoft.VisualStudio.Web.CodeGeneration.Tools"": { ""version"": ""1.1.0-msbuild3-final"", ""imports"": [ ""portable-net45+win8"" ] } }, ""frameworks"": { ""net461"": { ""dependencies"": { }, ""frameworkAssemblies"": { ""System.Drawing"": ""4.0.0.0"" } }, ""netcoreapp1.0"": { ""imports"": [ ""dotnet5.6"", ""portable-net45+win8"", ""net461"" ], ""dependencies"": { ""Microsoft.NETCore.App"": ""1.1.0"", ""CoreCompat.System.Configuration"": ""4.2.3-r4"" } } }, ""buildOptions"": { ""emitEntryPoint"": true, ""preserveCompilationContext"": true }, ""runtimeOptions"": { ""configProperties"": { ""System.GC.Server"": true } }, ""publishOptions"": { ""include"": [ ""wwwroot"", ""**/*.cshtml"", ""appsettings.json"", ""web.config"" ] }, ""runtimes"": { ""win10-x64"": {} }, ""scripts"": { ""prepublish"": [ ""bower install"", ""dotnet bundle"" ], ""postpublish"": [ ""dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%"" ] } } So the reason for `.net4.6.1` is `hiqpdf`, it is the only thing that is really the reason i had to load it. My app runs on IISExpress, but as soon as i publish it to the IIS box it gets as `HTTP Error 502.5 - Process Failure`. I run the exe in the command prompt as Microsoft asks as got what i put up here. I keep thinking i just have to move the right item in place and it will work on the server. What is the difference? Why does it would great locally but falls on it's face on the server? Can i include System.IO.FileSystem at a version that will fix this? (which i have tried and failed to). I know the project.json file needs some clean up again, but it is working in one spot so i figured I would keep it here. **Server Details:** [![enter image description here][2]][2] [![enter image description here][3]][3] [![enter image description here][4]][4] [1]: https://i.stack.imgur.com/gcg9a.png [2]: https://i.stack.imgur.com/dWgMs.png [3]: https://i.stack.imgur.com/HKSpG.png [4]: https://i.stack.imgur.com/c8NZj.png **Other information** I figured it would be worth noting thing i have done that wouldn't be known from this: - cleared out the nuget cache from the user path - cleared the bin - down graded what i thought i could - tried to include the `System.IO.File` directly at v. `4.3.0` but it downgrades to `4.0.0.1` I believe. " +16913 area-System.IO dotnet core 1.1.0 and net462 now gets System.IO.FileSystem System.TypeLoadException "@jeremyBass commented on [Thu Mar 09 2017](https://github.com/dotnet/coreclr/issues/10062) I hope this is the right place for this issue. I have been betting my head on the wall on this. I will say that I have this on [stackoverflow](http://stackoverflow.com/q/42693085/746758) as well, but believe it may be helpful to have it logged here. I realize there are a few other issues that seem related, but they are not 100% the same and I got no traction on a fix/workaround. I keep getting this error on the server [![enter image description here][1]][1] > Unhandled Exception: System.TypeLoadException: Could not load type 'System.IO.Di rectory' from assembly 'System.IO.FileSystem, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. at fais.printing_services.Program.Main(String[] args) I have done ever trick I can think of, followed all the newest issues to resolve with no luck. Here is my project file: { ""userSecretsId"": ""aspnet-fais.printing_services-6f6dbf21-da98-45d2-a187-08ae49d09d62"", ""dependencies"": { ""DataTables.AspNet.AspNetCore"": ""2.0.2"", ""Microsoft.ApplicationInsights.AspNetCore"": ""2.0.0"", ""Microsoft.AspNetCore.Authentication.Cookies"": ""1.1.0"", ""Microsoft.AspNetCore.Diagnostics"": ""1.1.0"", ""Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore"": ""1.1.0"", ""Microsoft.AspNetCore.Identity.EntityFrameworkCore"": ""1.1.0"", ""Microsoft.AspNetCore.Mvc"": ""1.1.1"", ""Microsoft.AspNetCore.Routing"": ""1.1.0"", ""Microsoft.AspNet.Session"": ""1.0.0-*"", ""Microsoft.AspNetCore.Server.IISIntegration"": ""1.1.0"", ""Microsoft.AspNetCore.Server.Kestrel"": ""1.1.0"", ""Microsoft.AspNetCore.StaticFiles"": ""1.1.0"", ""Microsoft.EntityFrameworkCore"": ""1.1.0"", ""Microsoft.EntityFrameworkCore.Design"": ""1.1.0"", ""Microsoft.EntityFrameworkCore.Relational.Design"": ""1.1.0"", ""Microsoft.EntityFrameworkCore.SqlServer"": ""1.1.0"", ""Microsoft.EntityFrameworkCore.SqlServer.Design"": ""1.1.0"", ""Microsoft.EntityFrameworkCore.Tools"": { ""type"": ""build"", ""version"": ""1.1.0-preview4-final"" }, ""Microsoft.Extensions.Caching.Memory"": ""1.1.0-*"", ""Microsoft.Extensions.Configuration.EnvironmentVariables"": ""1.1.0"", ""Microsoft.Extensions.Configuration.Json"": ""1.1.0"", ""Microsoft.Extensions.Configuration.UserSecrets"": ""1.1.0"", ""Microsoft.Extensions.Logging"": ""1.1.0"", ""Microsoft.Extensions.Logging.Console"": ""1.1.0"", ""Microsoft.Extensions.Logging.Debug"": ""1.1.0"", ""Microsoft.Extensions.Options.ConfigurationExtensions"": ""1.1.0"", ""Microsoft.VisualStudio.Web.BrowserLink.Loader"": ""14.1.0"", ""Microsoft.VisualStudio.Web.CodeGeneration"": ""1.1.0-preview4-final"", ""Microsoft.VisualStudio.Web.CodeGeneration.Tools"": ""1.1.0-preview4-final"", //""Microsoft.VisualStudio.Web.CodeGeneration.Design"": ""1.1.0-msbuild3-final"", ""Microsoft.VisualStudio.Web.CodeGenerators.Mvc"": ""1.1.0-preview4-final"", ""Microsoft.AspNetCore.Session"": ""1.1.0"", ""Microsoft.NETCore"": ""5.0.1-rc2-24027"", ""Microsoft.NETCore.Portable.Compatibility"": ""1.0.1-rc2-24027"", ""BundlerMinifier.Core"": ""2.4.337"", ""Microsoft.AspNetCore.ResponseCompression"": ""1.0.1"", ""Microsoft.AspNetCore.Cors"": ""1.1.1"", ""hiqpdf"": ""10.6.0"", ""Novell.Directory.Ldap.NETStandard"": ""2.3.6"" }, ""tools"": { ""Microsoft.EntityFrameworkCore.Tools"": { ""version"": ""1.1.0-preview4-final"", ""imports"": [ ""portable-net45+win8"" ] }, ""Microsoft.EntityFrameworkCore.Tools.DotNet"": ""1.1.0.0-preview4-final"", ""Microsoft.VisualStudio.Web.CodeGeneration.Tools"": { ""version"": ""1.1.0-msbuild3-final"", ""imports"": [ ""portable-net45+win8"" ] } }, ""frameworks"": { ""net462"": { ""dependencies"": { }, ""frameworkAssemblies"": { ""System.Drawing"": ""4.0.0.0"" } }, ""netcoreapp1.0"": { ""imports"": [ ""dotnet5.6"", ""portable-net45+win8"", ""net462"" ], ""dependencies"": { ""Microsoft.NETCore.App"": ""1.1.0"", ""CoreCompat.System.Configuration"": ""4.2.3-r4"" } } }, ""buildOptions"": { ""emitEntryPoint"": true, ""preserveCompilationContext"": true }, ""runtimeOptions"": { ""configProperties"": { ""System.GC.Server"": true } }, ""publishOptions"": { ""include"": [ ""wwwroot"", ""**/*.cshtml"", ""appsettings.json"", ""web.config"" ] }, ""runtimes"": { ""win10-x64"": {} }, ""scripts"": { ""prepublish"": [ ""bower install"", ""dotnet bundle"" ], ""postpublish"": [ ""dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%"" ] } } So the reason for `.net4.6.1` is `hiqpdf`, it is the only thing that is really the reason i had to load it. My app runs on IISExpress, but as soon as i publish it to the IIS box it gets as `HTTP Error 502.5 - Process Failure`. I run the exe in the command prompt as Microsoft asks as got what i put up here. I keep thinking i just have to move the right item in place and it will work on the server. What is the difference? Why does it would great locally but falls on it's face on the server? Can i include System.IO.FileSystem at a version that will fix this? (which i have tried and failed to). I know the project.json file needs some clean up again, but it is working in one spot so i figured I would keep it here. **Server Details:** [![enter image description here][2]][2] [![enter image description here][3]][3] [![enter image description here][4]][4] [1]: https://i.stack.imgur.com/gcg9a.png [2]: https://i.stack.imgur.com/dWgMs.png [3]: https://i.stack.imgur.com/HKSpG.png [4]: https://i.stack.imgur.com/c8NZj.png **Other information** I figured it would be worth noting thing i have done that wouldn't be known from this: - cleared out the nuget cache from the user path - cleared the bin - down graded what i thought i could - tried to include the `System.IO.File` directly at v. `4.3.0` but it downgrades to `4.0.0.1` I believe. " 16914 area-Serialization To Remove System.Xml.XmlSerializer.Tests.settings.targets We'd like to remove System.Xml.XmlSerializer.Tests.settings.targets so that the XmlSerializer test projects would have the same structure as others. As part of the issue, we would need to add ProjectReferences in System.Xml.XmlSerializer.Tests.csproj. /cc: @zhenlan 16916 area-System.Linq [NetFX compat]: EnumerableQuery((IEnumerable)null).GetEnumerator() difference in behavior The following code has a different behavior in NetFX: ```cs IQueryable query = new EnumerableQuery((IEnumerable)null); var enumerator = query.GetEnumerator(); ``` If we call `GetEnumerator` on an `IQueryable` instance that has a null `IEnumerable` in CoreFX we would throw an `InvalidOperationException`, but in NetFX as stated in the MSDN Documentation it will not throw: > Returns an enumerator that can iterate through the associated `IEnumerable` collection, or, if it is null, through the collection that results from rewriting the associated expression tree as a query on an `IEnumerable` data source and executing it. I've tried to execute the sample code I included before in a .NET 4.6.2 Console Application and it will cause an `StackOverflowException`. Also this is causing in one of our `System.Linq.Queryable` tests will cause it to hang forever. [Test source code](https://github.com/dotnet/corefx/blob/master/src/System.Linq.Queryable/tests/EnumerableQueryTests.cs#L23-L29) cc: @tarekgh @danmosemsft 16917 area-System.Security Add HashAlgorithmName overloads for Rfc2898DeriveBytes ctor This adds support for using (HMAC) SHA256, SHA384, SHA512 in PBKDF2. (HMAC)MD5 isn't being enabled at this time. We can re-evaluate that later, but since this API change is about letting newer algorithms in it doesn't seem like letting the older ones in is high-value. This is staying as a managed implementation in this change, switching to using native implementations can easily be done as a followup given the new tests. Fixes #9438. @@ -8105,7 +8105,7 @@ ID Area Title Description 17447 area-Serialization TypeScope.GetEnumeratorElementType Fails on Uapaot "[`System.Xml.Serialization.TypeScope.GetEnumeratorElementType`](https://github.com/dotnet/corefx/blob/master/src/System.Private.Xml/src/System/Xml/Serialization/Types.cs#L1292) is failing on uapaot as it does reflection on IEnumerable types but the metadata info for IEnumerable was reduced by UWP toolchain. 5 XmlSerializer tests failed on uapaot due to the issue. Here's the output of one of the failed tests, ``` (__Canon value, String baseline, Func$1<$XmlSerializer> serializerFactory, Boolean skipStringCompare, $XmlSerializerNamespaces xns) in D:\OSS\corefx-1\corefx\src\System.Private.Xml\tests\XmlSerializer\XmlSerializerTests.cs:line 3097 at XmlSerializerTests.Xml_SimpleCollectionDataContract() in D:\OSS\corefx-1\corefx\src\System.Private.Xml\tests\XmlSerializer\XmlSerializerTests.cs:line 992 at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean targetIsThisCall) at System.InvokeUtils.CalliIntrinsics.Call(IntPtr dynamicInvokeHelperMethod, Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean isTargetThisCall) at System.InvokeUtils.CallDynamicInvokeMethod(Object thisPtr, IntPtr methodToCall, Object thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object targetMethodOrDelegate, Object[] parameters, BinderBundle binderBundle, Boolean invokeMethodHelperIsThisCall, Boolean methodToCallIsThisCall) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\InvokeUtils.cs:line 400]]> ```" 17448 area-Serialization Fix TypeScope.GetEnumeratorElementType. [`System.Xml.Serialization.TypeScope.GetEnumeratorElementType`](https://github.com/dotnet/corefx/blob/master/src/System.Private.Xml/src/System/Xml/Serialization/Types.cs#L1292) is failing on uapaot as it does reflection on IEnumerable types but the metadata info for IEnumerable was reduced by UWP toolchain. 5 XmlSerializer tests failed on uapaot due to the issue. The fix is to modify System.Private.Xml's embedded rd.xml to keep the required metadata. Fixed #17447 17450 area-System.Runtime System.Runtime PointerFieldGetValue test is failfasting in Assert.IsType tests [Sort_Array_Array_NonGeneric](https://github.com/dotnet/corefx/blob/15b4f51c2f3cb924840e5407bb8d5fe03bb282ea/src/System.Runtime/tests/System/ArrayTests.cs#L2909) and [PointerFieldGetValue](https://github.com/dotnet/corefx/blob/7f6ac8bf97a84666ed3e7ef6b77c1a9470ae78c8/src/System.Runtime/tests/System/Reflection/PointerTests.cs#L118) are crashing the uapaot test execution when throwing a Debug.Assert. To get a repro locally, do the following: - Remove the `SkipOnTargetFramework` attribute on the tests - call `build.cmd -framework:uapaot` - `msbuild src\System.Runtime\tests\System.Runtime.Tests.csproj /p:TargetGroup=uapaot /t:rebuildAndTest /p:TestILCFolder=` -17452 area-System.Runtime API for performing framework checks at runtime "Provide an API that allows developers to check whether their code runs on a given .NET platform. ```C# // Assembly: System.Runtime.InteropServices.RuntimeInformation namespace System.Runtime.InteropServices { public partial class RuntimeInformation { public static bool FrameworkIsAtLeast(string targetFramework); } } ``` ### Usage ```C# if (RuntimeInformation.FrameworkIsAtLeast(""netcoreapp10"")) { DoStuffThatOnlyWorksInNetCore(); } else if (RuntimeInformation.FrameworkIsAtLeast(""net462"")) { DoStuffThatOnlyWorksInNetFramework(); } else { throw new PlatformNotSupportedException(); } ``` ### Requirements 1. Provide a robust API that allows developers to perform framework checks - In other words must not require parsing or comparisons by the developer. 2. Use terms the developer already uses when they do compile-time specialization using cross-targeting (""bait & switch"") - The strings passed to the API should be identical to the string used in project files and NuGet packages - In other words, we will not use the canonical TFM representation as it's wordy and generally not used by developers (e.g. `.NETFramework, Version=4.6.1`) 3. Design should allow for an API that we *can* put in-box - Our goal is to avoid having to ask library authors to depend on an extra NuGet package that they have to deploy just for light-up - Means we cannot have APIs that imply each time a new .NET platform (or version ships) all platforms have to update their implementation - In other words, an implementer should only have to correctly answer questions affecting itself, i.e. it shouldn't have to know how other platforms behave or what names they use. 4. API should work on .NET Framework 4.6.1 - That's the minimum platform we support with .NET Standard 2.0, so it will be a common target and hence needs to work 5. API should be addable to .NET Standard 2.0 - This makes (3) much nicer today - Effectively only means we cannot add members to a type that already exists in .NET Framework 6. The API must answer what the application *runs on* (as opposed to what the application is *built for*). - This is different from `AppContext.TargetFrameworkName` ### Decisions * Originally we considered having properties with well-known names (like `Net461`). Having those properties violates requirement (3). * We considered adding the API on a more-well-known type, such as `AppContext` or `Environment`. We believe this API to be quite specialized and should only be used as the last resort. As such, we don't want to overly emphasize its existence. Also, it would violate requirement (4) and (by extension) requirement (5). * We considered using `FrameworkName` instead of `string` but this would require `FrameworkName` to parse NuGet-style TFMs into their canonical representations, i.e. `FrameworkName.Parse(""net45)""` needs to be parsed into `FrameworkName { Identifier="".NETFramework"", Version=new Version(4, 5, 0, 0) }`. While that would be nice, it violates requirement (3). ### Context Today, we have the following APIs that return version numbers: ```C# namespace System { public static partial class AppContext { public static string TargetFrameworkName { get; } } public sealed partial class Environment { public static OperatingSystem OSVersion { get; } public static Version Version { get; } } } namespace System.Runtime.InteropServices { public static partial class RuntimeInformation { public static string FrameworkDescription { get; } public static Architecture OSArchitecture { get; } public static string OSDescription { get; } public static Architecture ProcessArchitecture { get; } public static bool IsOSPlatform(OSPlatform osPlatform); } } ``` Neither of them deal with concepts that the developer is familiar with when building the application, specifically the target framework names and version numbers (e.g. `net45` and `netcoreapp11`). Furthermore, their behavior is less than ideal. Here is the output from a .NET Core console app: ```C# Console.WriteLine(AppContext.TargetFrameworkName); // Console.WriteLine(RuntimeInformation.FrameworkDescription); // .NET Core 4.6.00001.0 ``` Our original design goal of `RuntimeInformation` was to provide developers with the diagnostic means to discover which .NET platform and operating system they are running on while not exposing version checking because it's a known area for creating fragile code. Unfortunately, the resulting API surface is now entirely insufficient for runtime light-up. For better or worse, we've have to accept that developers will have to write code that allows them to tweak the behavior at runtime. We need to expose APIs that make it easy for them to express framework checks." +17452 area-System.Runtime API for performing framework checks at runtime "Provide an API that allows developers to check whether their code runs on a given .NET platform. ```C# // Assembly: System.Runtime.InteropServices.RuntimeInformation namespace System.Runtime.InteropServices { public partial class RuntimeInformation { public static bool FrameworkIsAtLeast(string targetFramework); } } ``` ### Usage ```C# if (RuntimeInformation.FrameworkIsAtLeast(""netcoreapp10"")) { DoStuffThatOnlyWorksInNetCore(); } else if (RuntimeInformation.FrameworkIsAtLeast(""net462"")) { DoStuffThatOnlyWorksInNetFramework(); } else { throw new PlatformNotSupportedException(); } ``` ### Requirements 1. Provide a robust API that allows developers to perform framework checks - In other words must not require parsing or comparisons by the developer. 2. Use terms the developer already uses when they do compile-time specialization using cross-targeting (""bait & switch"") - The strings passed to the API should be identical to the string used in project files and NuGet packages - In other words, we will not use the canonical TFM representation as it's wordy and generally not used by developers (e.g. `.NETFramework, Version=4.6.1`) 3. Design should allow for an API that we *can* put in-box - Our goal is to avoid having to ask library authors to depend on an extra NuGet package that they have to deploy just for light-up - Means we cannot have APIs that imply each time a new .NET platform (or version ships) all platforms have to update their implementation - In other words, an implementer should only have to correctly answer questions affecting itself, i.e. it shouldn't have to know how other platforms behave or what names they use. 4. API should work on .NET Framework 4.6.1 - That's the minimum platform we support with .NET Standard 2.0, so it will be a common target and hence needs to work 5. API should be addable to .NET Standard 2.0 - This makes (3) much nicer today - Effectively only means we cannot add members to a type that already exists in .NET Framework 6. The API must answer what the application *runs on* (as opposed to what the application is *built for*). - This is different from `AppContext.TargetFrameworkName` ### Decisions * Originally we considered having properties with well-known names (like `net462`). Having those properties violates requirement (3). * We considered adding the API on a more-well-known type, such as `AppContext` or `Environment`. We believe this API to be quite specialized and should only be used as the last resort. As such, we don't want to overly emphasize its existence. Also, it would violate requirement (4) and (by extension) requirement (5). * We considered using `FrameworkName` instead of `string` but this would require `FrameworkName` to parse NuGet-style TFMs into their canonical representations, i.e. `FrameworkName.Parse(""net45)""` needs to be parsed into `FrameworkName { Identifier="".NETFramework"", Version=new Version(4, 5, 0, 0) }`. While that would be nice, it violates requirement (3). ### Context Today, we have the following APIs that return version numbers: ```C# namespace System { public static partial class AppContext { public static string TargetFrameworkName { get; } } public sealed partial class Environment { public static OperatingSystem OSVersion { get; } public static Version Version { get; } } } namespace System.Runtime.InteropServices { public static partial class RuntimeInformation { public static string FrameworkDescription { get; } public static Architecture OSArchitecture { get; } public static string OSDescription { get; } public static Architecture ProcessArchitecture { get; } public static bool IsOSPlatform(OSPlatform osPlatform); } } ``` Neither of them deal with concepts that the developer is familiar with when building the application, specifically the target framework names and version numbers (e.g. `net45` and `netcoreapp11`). Furthermore, their behavior is less than ideal. Here is the output from a .NET Core console app: ```C# Console.WriteLine(AppContext.TargetFrameworkName); // Console.WriteLine(RuntimeInformation.FrameworkDescription); // .NET Core 4.6.00001.0 ``` Our original design goal of `RuntimeInformation` was to provide developers with the diagnostic means to discover which .NET platform and operating system they are running on while not exposing version checking because it's a known area for creating fragile code. Unfortunately, the resulting API surface is now entirely insufficient for runtime light-up. For better or worse, we've have to accept that developers will have to write code that allows them to tweak the behavior at runtime. We need to expose APIs that make it easy for them to express framework checks." 17453 area-Microsoft.CSharp Teach the dynamic binder about tuple conversions "(Originally reported as part of https://github.com/dotnet/roslyn/issues/17851 and https://github.com/dotnet/roslyn/issues/12804) **Version Used**: Microsoft Visual Studio Community 2017 Version 15.0.26228.4 D15RTWSVC Microsoft .NET Framework Version 4.6.01586 **Steps to Reproduce**: Compile and run: ``` using System; class C { static void Foo((long, long) x, object y) => Console.WriteLine(x); static void Main() => Foo((0, 0), (dynamic) null); } ``` **Expected Behavior**: Program prints ""(0, 0)"". The target type (long, long) for the tuple literal (0, 0) is known at compile time, so the tuple literal should be converted to an instance of that type, rather than of (int, int), and dynamic invocation should succeed. It this kind of conversion is not feasible for some reason, then the compiler should issue a compile-time error, rather than allowing the program to fail at runtime. **Actual Behavior**: ``` Unhandled Exception: Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: The best overloaded method match for 'C.Foo(System.ValueTuple, object)' has some invalid arguments at CallSite.Target(Closure , CallSite , Type , ValueTuple`2 , Object ) at System.Dynamic.UpdateDelegates.UpdateAndExecuteVoid3[T0,T1,T2](CallSite site, T0 arg0, T1 arg1, T2 arg2) at C.Main() ``` FYI @VSadov " 17454 area-System.Runtime Question: Calling Mac OS X Native APIs from .NET Core Hello, I'd like to call Mac OS X native APIs from .NET Core. More specifically, I'm interested in calling the [IOPowerSource()](https://developer.apple.com/reference/iokit/iopowersources.h) API to get the battery charging status on a MacBook Pro running Mac OS X Sierra. http://stackoverflow.com/questions/5751132/mac-get-battery-charging-status-plugged-in-or-not **Edit**: The question is: How do I actually do this? Cheers, Trevor Sullivan 17455 area-Infrastructure Enable PortableRID packaging Enable Portable RID package generation for Windows, OSX and Linux. @@ -8359,14 +8359,14 @@ ID Area Title Description 17812 area-System.Net HttpWebRequest.SendRequest fails on UAP due to settting MaximumAutomaticRedirections to 50 The UAP specific code in https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/netcore50/System/Net/HttpClientHandler.cs will throw PlatformNotSupportedException if the MaximumAutomaticRedirections is to set anything but 10 (citing WinInet behavior). But the code in HttpWebRequest.SendAsync sets the property to the value from HttpHandlerDefaults which is 50. Basically any usage of the HttpWebRequest.SendAsync on UAP will fail due to this. 17815 area-Infrastructure Fix TestILC-related auto-upgrade config See https://github.com/dotnet/corefx/pull/17806 17817 area-System.Security NS2.0 members SHAxxxCSP missing from netcoreapp These were recently added to NS20. @steveharter they need implementing for Windows as well as [Unix](https://github.com/dotnet/corefx/issues/17163) ``` TypesMustExist : Type 'System.Security.Cryptography.SHA256CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.SHA384CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.SHA512CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. ``` -17819 area-Infrastructure Ensure we build packages for everything that's been impacted by `net461` > `netstandard2.0` remapping. See https://github.com/dotnet/standard/issues/282. We need to examine all the 1.1 packages to see if anything else is impacted in a similar way. +17819 area-Infrastructure Ensure we build packages for everything that's been impacted by `net462` > `netstandard2.0` remapping. See https://github.com/dotnet/standard/issues/282. We need to examine all the 1.1 packages to see if anything else is impacted in a similar way. 17820 area-System.Security Cryptography types in core and netstandard20 more restricted than in netfx These classes are marked as sealed (static) in core and netstandard but aren't in netfx: ``` System.Security.Cryptography.SHA1Managed System.Security.Cryptography.SHA256Managed System.Security.Cryptography.SHA384Managed System.Security.Cryptography.SHA512Managed ``` We are getting a few omission errors: - CannotRemoveBaseTypeOrInterface - CannotMakeMemberNonVirtual https://github.com/dotnet/corefx/issues/15255#issuecomment-291137517 Are these classes intentionally now more restrict than before (also in NS2.0)? Some members are also now not virtual anymore. Wouldn't that be a breaking change for netfx NS2.0 compatibility? cc: @bartonjs @danmosemsft 17821 area-System.Net Fix PNSE with HttpClientHandler.MaxAutomaticRedirections property This's a temporary fix for issue https://github.com/dotnet/corefx/issues/17812 to get us unblocked for ns2.0 UWP app-compact. 17825 area-Infrastructure Add ILLink to the build "This adds ILLink (a .NET Core build of the mono linker) to the build tools and uses it to trim non-public unreachable IL and metadata from our assemblies. This is enabled by default for any assembly that is part of NETCore.App. This can be disabled by setting ILLinkTrimAssembly=false. In some cases ILLink may trim too much, for example a runtime dependency via reflection on private or internal API. If we cannot update ILLink to understand this dependency via heuristic then we can manually ""root"" the private or internal API. This is done by adding an XML file next to the project with the name ILLinkTrim.xml that follows the format documented here: https://github.com/mono/linker/blob/master/linker/README Replaces https://github.com/dotnet/corefx/pull/17632 /cc @erozenfeld @sbomer @weshaggard " 17826 area-System.Runtime Fix registry enumeration. Key data (values and subkeys) can change while we're in the midst of enumerating. This is causing intermittent failures in tests as ERROR_NO_MORE_ITEMS surfaces as an exception as we try and iterate past removed data. In addition, allocating 32K to get value names causes 32K * number of items to get natively allocated on the heap. While these allocs are returned on each iteration it could potentially cause significant grief for large keys and concurrent heap allocations. Above and beyond this, allocating 64K for what are typically < 20 character names is a bit crazy, and as such we'll optimize for the common case. Related to #17037, #16961- **however** this doesn't directly fix those as there is another copy of the registry code in System.Private.Corelib that those issues are actually using. I'll be following up shortly with the SPCL fix. 17829 area-Serialization Fix DataContractSerializer ReflectionOnly tests The DataContractSerializer tests when in ReflectionOnly mode try to get `DataContractSerializer.Option` setter method through reflection which is not available in Desktop so when trying to run this tests in netfx we would get failures. Fixes: https://github.com/dotnet/corefx/issues/17774 cc: @danmosemsft 17830 area-System.Data Change command cancellation to use a specific cancellationOwner field, rather than the more generic Owner field "This change brings SqlClient cancellation in line with Framework. Currently, we use the Owner field in TdsParserStateObject to check the Cancel() caller, but overloading the Owner field with BulkCopy introduced some issues with the TdsParserStateObject not being disposed, since it was setting the Owner field to manage cancellation. This change introduces the ""StartSession"" behavior from framework, and uses a specific cancellationOwner field. (This field in Framework is represented as an int though, since it's an objectID also used with BID tracing.)" -17831 area-Infrastructure Add back package for System.Reflection.TypeExtensions Fixes #17819 System.Reflection.TypeExtensions is not part of NETStandard.Library. It's included in NetCore.App, but the package is required in order to ship the netstandard ref and desktop implementation. We must ship the higher version of API (4.1.x) on net461 now that net461 supports netstandard2.0. Previously this API was only supported starting with net462. /cc @weshaggard @pranavkm +17831 area-Infrastructure Add back package for System.Reflection.TypeExtensions Fixes #17819 System.Reflection.TypeExtensions is not part of NETStandard.Library. It's included in NetCore.App, but the package is required in order to ship the netstandard ref and desktop implementation. We must ship the higher version of API (4.1.x) on net462 now that net462 supports netstandard2.0. Previously this API was only supported starting with net462. /cc @weshaggard @pranavkm 17832 area-System.Security [Port to 1.1.x] Fix the P/Invoke target for System.Security.Cryptography.Algorithms.Tests The crypto shim got renamed, but a capabilities probe in the S.S.C.Algorithms test library didn't get the memo. This didn't matter much because the old shim name is still produced for compatibility, but it got highlighted in a test with packages change. This change removes the duplicate definition of the library name, and includes the Unix library names list, but leaves the individual targeted methods in place. Fixes #16047, by cherry-picking the commit from #13123. 17833 area-System.Data SqlDependency Class Support Does .Net Core/Entity Framework support SQL Dependancies and if not directly, is there a way in .Net Core to receive notifications when data changes in SQL Server? 17835 area-System.Net Move System.Net.Cookie to System.Net namespace Move Cookie to System.Net namespace for UAP since cookie is in ns2.0 public System.Net contract. @@ -9001,7 +9001,7 @@ ID Area Title Description 18733 area-System.Security why CngKey.Import is not supported on ubuntu? "Is there any workaround to make this code working? ``` var keyContent = System.IO.File.ReadAllText(""key.p8"").Split('\n')[1]; var secretKeyBlob = Convert.FromBase64String(keyContent); var key = CngKey.Import(secretKeyBlob, CngKeyBlobFormat.Pkcs8PrivateBlob); ```" 18734 area-System.Linq Disable on desktop LINQ tests that stack overflow LINQ's Concat implementation in core is optimized to better support chains of Concats, and there are several tests that stress this. These pass on core and stack overflow on desktop. Disabling on desktop. 18735 area-System.Security CreateChain_Hybrid test failed in CI on Unix https://ci.dot.net/job/dotnet_corefx/job/master/job/portablelinux_release_prtest/3919/consoleText ``` System.Security.Cryptography.X509Certificates.Tests.CertificateCreation.CertificateRequestChainTests.CreateChain_Hybrid [FAIL] System.ArgumentException : The provided key does not match the public key for this certificate. Parameter name: privateKey Stack Trace: at System.Security.Cryptography.X509Certificates.RSACertificateExtensions.CopyWithPrivateKey(X509Certificate2 certificate, RSA privateKey) at System.Security.Cryptography.X509Certificates.Tests.CertificateCreation.CertificateRequestChainTests.CreateAndTestChain(AsymmetricAlgorithm rootPrivKey, AsymmetricAlgorithm intermed1PrivKey, AsymmetricAlgorithm intermed2PrivKey, AsymmetricAlgorithm leafPubKey) at System.Security.Cryptography.X509Certificates.Tests.CertificateCreation.CertificateRequestChainTests.CreateChain_Hybrid() ``` -18736 area-Infrastructure Config system should model versionless targetgroups as aliases Today these are distinct nodes in the compatibility graph. As a result `netstandard` isn't considered to be compatible with `netstandard2.0`, nor is `net461` nor `net462`. This creates a maintainence problem. We have to *remember* to keep the graph mappings correct. This means that remapping the versionless targetgroups is not a simple task. I'd like to fix this by treating the versionless identifiers as an alias. This was my original intent with these, but we didn't do it because it required a code change rather than just props. +18736 area-Infrastructure Config system should model versionless targetgroups as aliases Today these are distinct nodes in the compatibility graph. As a result `netstandard` isn't considered to be compatible with `netstandard2.0`, nor is `net462` nor `net462`. This creates a maintainence problem. We have to *remember* to keep the graph mappings correct. This means that remapping the versionless targetgroups is not a simple task. I'd like to fix this by treating the versionless identifiers as an alias. This was my original intent with these, but we didn't do it because it required a code change rather than just props. 18738 area-System.Runtime Simple disambiguation of path test inputs XUnit logging seems to throw in extra slashes and these inputs vary with slashes. Trivial change to make it easier to decipher results like https://github.com/dotnet/corefx/issues/18717 18740 area-System.Net Allow HttpWebRequest.AllowReadStreamBuffering to be set to true While fixing various .NET Framework app-compat differences, PR #18163 changed the AllowReadStreamBuffering property to match .NET Framework. This resulted in having the property throw an exception when set to true. That behavior is what .NET Framework currently does. Historically, this property did not always exist in .NET Framework at all. Other portable versions of .NET (Windows Phone, Silverlight) for the HTTP stack were implemented differently and had this property which worked. When .NET Framework APIs were reconciled in 2015, this virtual property was added to .NET Framework but the functionality on Desktop was limited. This PR will put back this property's functionality for .NET Core which is also used for UWP apps. Fixes #18668. 18743 area-Serialization Disable soap encoded XmlSerialization tests on desktop System.Runtime.Serialization.Xml src and ref contracts are built against netfx not netstandard so the test need to be built against netfx as well to find its correct dependencies in runtime. Now since we are building them against netstandard and run them on netfx it will not find System dependencies as it doesn't have a reference to netstandard. So we should build them against netfx so that it loads it dependencies from mscorlib as it is the ones included from src and ref. Fixes: https://github.com/dotnet/corefx/issues/18660 Tracking issue: #18964 cc: @weshaggard @danmosemsft @@ -9080,7 +9080,7 @@ ID Area Title Description 18846 area-System.Security Desktop: System.Security.Cryptography.Rsa.Tests.ImportExport.ImportNoDP failing From @Jiayili1 in https://github.com/dotnet/corefx/issues/18476 Another test failed with the same issue, detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/29/testReport/System.Security.Cryptography.Rsa.Tests/ImportExport/ImportNoDP/ Failed test: System.Security.Cryptography.Rsa.Tests.ImportExport.ImportNoDP MESSAGE: ~~~ Assert.Throws() Failure Expected: typeof(System.Security.Cryptography.CryptographicException) Actual: (No exception was thrown) ~~~ STACK TRACE: ~~~ at System.Security.Cryptography.Rsa.Tests.ImportExport.ImportNoDP() in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\RSA\ImportExport.cs:line 277 ~~~ 18847 area-System.Collections Add ImmutableArray.AsReadOnlySpan() Can create a zero copy `ReadOnlySpan` over its internal array; would be a valid approach? 18848 area-System.Threading System.Threading Area Performance Tests This is a tracking issue describing the current performance tests we have in the System.Threading area, and what coverage is missing. The work items below can be completed independently, and they are all of different priority. When adding performance tests, please adhere to [the guidelines listed here](https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/performance-tests.md#adding-new-performance-tests). NOTE: System.Threading has types defined in several contracts. I'm listing everything in this single issue, but the tests themselves may go into different test projects, depending on how we feel the tests are best organized. ## Existing Coverage: There is a very small amount of existing coverage for two types. We should audit that these existing test cases are 1) valuable and 2) conform to the guidelines linked to above. It's likely that we should just focus on writing new tests and adding better coverage than spending much time on the two existing test cases. We currently have tests for: * ReaderWriterLockSlim * EventWaitHandle ## Missing Coverage: ### System.Threading.Thread * Thread ### System.Runtime * Task * TaskFactory * TaskScheduler * CancellationToken ### System.Threading * Interlocked * Monitor * Semaphore * Volatile * SpinLock, SpinWait * SynchronizationContext * Barrier * ExecutionContext * LazyInitializer * ManualResetEvent, AutoResetEvent ### System.Threading.Tasks * AsyncTaskMethodBuilder * TaskCompletionSource ### System.Threading.Tasks.Extensions * ValueTask -18849 area-Infrastructure Running MusicStore sample on NET461 fails with an exception **Repro:** - Clone https://github.com/aspnet/MusicStore - Checkout the branch `kichalla/net461` - cd `samples/MusicStore` - dotnet restore - dotnet build - Run `samples\MusicStore\bin\Debug\net461\MusicStore.exe` **Expected:** Application starts successfully and you can make a request successfully to `http://localhost:5000/` to see the home page. **Actual:** Application fails to start with an exception ``` Unhandled Exception: System.IO.FileLoadException: Could not load file or assembly 'System.Runtime.Loader, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) at Microsoft.AspNetCore.Hosting.WebHostExtensions.d__5.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) at Microsoft.AspNetCore.Hosting.WebHostExtensions.RunAsync(IWebHost host) at Microsoft.AspNetCore.Hosting.WebHostExtensions.Run(IWebHost host) at MusicStore.Program.Main(String[] args) ``` A pull request where discussion about this has been going on: https://github.com/aspnet/MusicStore/pull/775 cc @Eilon @pranavkm +18849 area-Infrastructure Running MusicStore sample on net462 fails with an exception **Repro:** - Clone https://github.com/aspnet/MusicStore - Checkout the branch `kichalla/net462` - cd `samples/MusicStore` - dotnet restore - dotnet build - Run `samples\MusicStore\bin\Debug\net462\MusicStore.exe` **Expected:** Application starts successfully and you can make a request successfully to `http://localhost:5000/` to see the home page. **Actual:** Application fails to start with an exception ``` Unhandled Exception: System.IO.FileLoadException: Could not load file or assembly 'System.Runtime.Loader, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) at Microsoft.AspNetCore.Hosting.WebHostExtensions.d__5.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) at Microsoft.AspNetCore.Hosting.WebHostExtensions.RunAsync(IWebHost host) at Microsoft.AspNetCore.Hosting.WebHostExtensions.Run(IWebHost host) at MusicStore.Program.Main(String[] args) ``` A pull request where discussion about this has been going on: https://github.com/aspnet/MusicStore/pull/775 cc @Eilon @pranavkm 18850 area-System.Net Change exception returned when serializing HttpWebRequest to match NETFX "Comments from PR #18801: From @safern ""Binary Serialization is now supported on .NET Core 2.0 but it wasn't in 1.1 or 1.0; so probably that is why we were throwing PNSE, so I think the same thing, it sounds reasonable to throw SE."" ```c# [Fact] public void HttpWebRequest_Serialize_Fails() { using (MemoryStream fs = new MemoryStream()) { BinaryFormatter formatter = new BinaryFormatter(); var hwr = HttpWebRequest.CreateHttp(""http://localhost""); if (PlatformDetection.IsFullFramework) { // .NET Framework throws a more detailed exception. // System.Runtime.Serialization.SerializationException): // Type 'System.Net.WebRequest+WebProxyWrapper' in Assembly 'System, Version=4.0.0. // 0, Culture=neutral, PublicKeyToken=b77a5c561934e089' is not marked as serializable. Assert.Throws(() => formatter.Serialize(fs, hwr)); } else { // TODO: Issue #18850. Change HttpWebRquest to throw SerializationException similar to .NET Framework. Assert.Throws(() => formatter.Serialize(fs, hwr)); } } } ```" 18851 area-System.Net Investigate behavior difference with NETFX with HttpWebResponse after closing stream "Comments from PR #18801 From @stephentoub ""Is the response Stream usable in this state in desktop? If so, seems like one we should fix in core."" ```c# [OuterLoop] [Fact] public async Task HttpWebResponse_Close_Success() { await LoopbackServer.CreateServerAsync(async (server, url) => { HttpWebRequest request = WebRequest.CreateHttp(url); request.Method = HttpMethod.Get.Method; Task getResponse = request.GetResponseAsync(); DateTimeOffset utcNow = DateTimeOffset.UtcNow; await LoopbackServer.ReadRequestAndSendResponseAsync(server, $""HTTP/1.1 200 OK\r\n"" + $""Date: {utcNow:R}\r\n"" + ""Content-Type: application/json;charset=UTF-8\r\n"" + ""Content-Length: 5\r\n"" + ""\r\n"" + ""12345""); WebResponse response = await getResponse; HttpWebResponse httpResponse = (HttpWebResponse)response; httpResponse.Close(); if (PlatformDetection.IsFullFramework) { Stream stream = httpResponse.GetResponseStream(); } else { // TODO: Issue #18851. Investigate .NET Core to see if it can // match .NET Framework. Assert.Throws(() => { httpResponse.GetResponseStream(); }); } }); ```" 18854 area-Serialization Add a test to verify using duration as the XmlQualifiedName for TimeSpan "#18761 ```c# AddNonXsdPrimitive(typeof(TimeSpan), ""TimeSpan"", UrtTypes.Namespace, ""TimeSpan"", new XmlQualifiedName(""**duration**"", XmlSchema.Namespace), new XmlSchemaFacet[0], TypeFlags.CanBeAttributeValue | TypeFlags.CanBeElementValue | TypeFlags.XmlEncodingNotRequired); ``` Verify the duration in this code." @@ -9214,7 +9214,7 @@ ID Area Title Description 19053 area-System.Security Stop producing System.Security.Cryptography.Native System.Security.Cryptography.Native.OpenSsl is the only version of the library in use, so let's be done building the older version. Fixes #13124. 19056 area-System.IO "Test: System.IO.Tests.DirectoryInfo_Create/CDriveCase failed with ""System.IO.DirectoryNotFoundException""" In behalf of @Jiayili1, moved from https://github.com/dotnet/corefx/issues/11687#issuecomment-297624327 This issue is repro on UWP F5 Tests, detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170427.01/workItem/System.IO.FileSystem.Tests/analysis/xunit/System.IO.Tests.DirectoryInfo_Create~2FCDriveCase Message : System.IO.DirectoryNotFoundException : Could not find a part of the path 'c:\'. Stack Trace : at System.IO.Win32FileSystem.CreateDirectory(String fullPath) at System.IO.Tests.DirectoryInfo_Create.Create(String path) at System.IO.Tests.Directory_CreateDirectory.CDriveCase() 19057 area-System.Data SqlClient: Exception is thrown with connection pooling with latest package (4.4.0-preview1) Working on a repro project. https://github.com/aspnet/EntityFramework/tree/sqlclient Clone the branch, run `build.cmd /t:Compile` Run test\EFCore.SqlServer.FunctionalTests on netcoreapp2.0 Stack traces Exception 1 happens when calling 'ClearAllPools` ``` Failed Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.SqlServerDatabaseCreatorEnsureCreatedTest.EnsureCreated_can_create_physical_database_with_filename_and_s chema Error Message: System.IO.IOException : Pipe is broken. Stack Trace: at System.IO.Pipes.PipeStream.CheckWriteOperations() at System.IO.Pipes.PipeStream.Flush() at System.Net.Security.AuthenticatedStream.Dispose(Boolean disposing) at System.Net.Security.SslStream.Dispose(Boolean disposing) at System.IO.Stream.Close() at System.Data.SqlClient.SNI.SNINpHandle.Dispose() at System.Data.SqlClient.SNI.TdsParserStateObjectManaged.Dispose() at System.Data.SqlClient.TdsParser.Disconnect() at System.Data.SqlClient.SqlInternalConnectionTds.Dispose() at System.Data.ProviderBase.DbConnectionPool.DestroyObject(DbConnectionInternal obj) at System.Data.ProviderBase.DbConnectionPool.Clear() at System.Data.ProviderBase.DbConnectionFactory.QueuePoolForRelease(DbConnectionPool pool, Boolean clearing) at System.Data.ProviderBase.DbConnectionPoolGroup.Clear() at System.Data.ProviderBase.DbConnectionFactory.ClearAllPools() at Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.Utilities.SqlServerTestStore.DeleteDatabase(String name) in D:\MergeBranch\EntityFramework\test\EFCore.SqlS erver.FunctionalTests\Utilities\SqlServerTestStore.cs:line 267 at Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.Utilities.SqlServerTestStore.Dispose() in D:\MergeBranch\EntityFramework\test\EFCore.SqlServer.FunctionalTe sts\Utilities\SqlServerTestStore.cs:line 445 at Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.SqlServerDatabaseCreatorEnsureCreatedTest.<>c.< b__9_0>d.MoveNext() in D:\MergeBranch\EntityFramework\test\EFCore.SqlServer.FunctionalTests\SqlServerDatabaseCreatorTest.cs:line 320 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.EntityFrameworkCore.ExecutionStrategyExtensions.<>c__7`1.<b__7_0>d.MoveNext() in D:\MergeBranch\EntityFramework\src\EFCore\Extensions\Execu tionStrategyExtensions.cs:line 169 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.SqlServerDatabaseCreatorEnsureCreatedTest.d__6.MoveNext() in D:\MergeBranch\EntityFramework\test\EFCore.SqlServer.FunctionalTests\SqlServerDatabaseCreatorTest.cs:line 294 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` Another one with same exception happens when calling `OpenAsync` ``` Failed Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.SqlServerDatabaseCreatorEnsureCreatedTest.EnsureCreatedAsync_can_create_physical_database_and_schema Error Message: System.IO.IOException : Pipe is broken. Stack Trace: at System.IO.Pipes.PipeStream.CheckWriteOperations() at System.IO.Pipes.PipeStream.Flush() at System.Net.Security.AuthenticatedStream.Dispose(Boolean disposing) at System.Net.Security.SslStream.Dispose(Boolean disposing) at System.IO.Stream.Close() at System.Data.SqlClient.SNI.SNINpHandle.Dispose() at System.Data.SqlClient.SNI.TdsParserStateObjectManaged.Dispose() at System.Data.SqlClient.TdsParser.Disconnect() at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, Boolean redirectedUserInstance) at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirec tedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPoo l pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPool Key poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneChe ckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.WaitForPendingOpen() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.d__36.MoveNext() in D:\MergeBranch\EntityFramework\src\EFCore.Relational\Storage\RelationalCo nnection.cs:line 410 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at Microsoft.EntityFrameworkCore.Storage.Internal.SqlServerDatabaseCreator.<>c__DisplayClass20_0.<b__0>d.MoveNext() in D:\MergeBranch\EntityFramework\src \EFCore.SqlServer\Storage\Internal\SqlServerDatabaseCreator.cs:line 162 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at Microsoft.EntityFrameworkCore.Storage.RelationalDatabaseCreator.d__18.MoveNext() in D:\MergeBranch\EntityFramework\src\EFCore.Relational\Storag e\RelationalDatabaseCreator.cs:line 244 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.SqlServerDatabaseCreatorEnsureCreatedTest.d__10.MoveNext() in D:\MergeBranch\Entit yFramework\test\EFCore.SqlServer.FunctionalTests\SqlServerDatabaseCreatorTest.cs:line 334 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.SqlServerDatabaseCreatorEnsureCreatedTest.<>c.< b__9_0>d.MoveNext() in D:\MergeBranch\EntityFramework\test\EFCore.SqlServer.FunctionalTests\SqlServerDatabaseCreatorTest.cs:line 319 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.EntityFrameworkCore.ExecutionStrategyExtensions.<>c__7`1.<b__7_0>d.MoveNext() in D:\MergeBranch\EntityFramework\src\EFCore\Extensions\Execu tionStrategyExtensions.cs:line 169 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.SqlServerDatabaseCreatorEnsureCreatedTest.d__7. MoveNext() in D:\MergeBranch\EntityFramework\test\EFCore.SqlServer.FunctionalTests\SqlServerDatabaseCreatorTest.cs:line 301 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) [xUnit.net 00:01:36.8622906] Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.SqlServerDatabaseCreatorEnsureDeletedTest.EnsureDeletedAsync_will_delete_databas e_with_opened_connections [FAIL] ``` MARS = true in both cases. Using package System.Data.SqlClient 4.4.0-preview1-25227-04 Dotnet ``` Product Information: Version: 2.0.0-preview1-005861 Commit SHA-1 hash: e0c0075ccd Runtime Environment: OS Name: Windows OS Version: 10.0.14393 OS Platform: Windows RID: win10-x64 Base Path: C:\Users\smpatel\.dotnet\x64\sdk\2.0.0-preview1-005861\ Microsoft .NET Core Shared Framework Host Version : 2.0.0-preview1-002088-00 Build : e264d929481c1713687bc79e862bae275861981c ``` -19058 area-Infrastructure Breaking changes in CoreFx packages due to net461 > ns2.0 mapping "The remapping can cause ref-def mismatches when a NS1.5 or higher library is consumed in net461. For example see https://github.com/aspnet/MusicStore/pull/775#issuecomment-295513922. We could mitigate this by shoving those into the NETStandard.Library.NETFramework package, effectively ""lifting"" the implementation assembly up to the higher version via conflict resolution. Alternatively we do nothing and document that folks should upgrade those packages. @weshaggard @terrajobst, thoughts?" +19058 area-Infrastructure Breaking changes in CoreFx packages due to net462 > ns2.0 mapping "The remapping can cause ref-def mismatches when a NS1.5 or higher library is consumed in net462. For example see https://github.com/aspnet/MusicStore/pull/775#issuecomment-295513922. We could mitigate this by shoving those into the NETStandard.Library.NETFramework package, effectively ""lifting"" the implementation assembly up to the higher version via conflict resolution. Alternatively we do nothing and document that folks should upgrade those packages. @weshaggard @terrajobst, thoughts?" 19059 area-System.Runtime Update RefEmit Test to expect LoadContext for DynamicAssemblies Test update accompanying fix for https://github.com/dotnet/coreclr/issues/11228 CC @jkotas 19060 area-System.Data Disable SqlClient named pipes exception tests when targeted against Framework, since Core throws exceptions with different messages Resolves failures in https://github.com/dotnet/corefx/issues/19039 and https://github.com/dotnet/corefx/pull/17566 19061 area-System.Security Allow empty authType for ClaimsIdentity This looks like an unintentional change made in porting that introcued a discrepancy between netcoreapp and desktop behavior. On desktop, an empty string as the authenticationtype is allowed. On netcoreapp before this change, authType was set instead null. resolves https://github.com/dotnet/corefx/issues/18814 After this change, all System.Security.Claims tests are passing on netfx and netcoreapp. cc: @bartonjs @krwq @@ -9435,7 +9435,7 @@ ID Area Title Description 19358 area-Meta Add nice messages to all auto generated PNSE For 2.0 we need to build on https://github.com/dotnet/buildtools/issues/1449 to add nice messages to all PNSE generated code. Talk to area owners to get nice strings. 19359 area-System.Net Skip DualMode localhost tests when it's not "Several DualMode tests assume that ""localhost"" maps to both IPv4 and IPv6 addresses, either because the test is verifying that a DualMode socket (such as one used by Socket.ConnectAsync) is able to connect to both IPv4 and IPv6 endpoints, or because the test is verifying that a DualMode socket listening at a given address can accept both IPv4 and IPv6 connections. but ""localhost"" doesn't always map to both IPv4 and IPv6. Change the tests to be conditional to only run when that assumption holds. Fixes https://github.com/dotnet/corefx/issues/4002 cc: @steveharter, @davidsh, @geoffkizer " 19361 area-System.Xml Remove duplicate Xml tests Resolves https://github.com/dotnet/corefx/issues/18810. Removes duplicate of XmlResolver tests from XmlSchema tests. The two versions: https://github.com/dotnet/corefx/blob/7e0170e0ce47ef07c987cdbf8716259d9054cd1d/src/System.Private.Xml/tests/XmlSchema/XmlSchemaSet/XmlSystemPathResolverTests.cs https://github.com/dotnet/corefx/blob/30e9fb02d048e88c71f772eed80ccff407f614d9/src/System.Private.Xml/tests/XmlReader/XmlResolver/XmlSystemPathResolverTests.cs cc: @krwq @danmosemsft -19362 area-System.Security Disable failing PKCS tests from =net462 is running, and the fix is non-quirked. These are the last tests failing in CI for the PKCS test assembly. Note that the `IsNetfx462OrNewer` function only checks the running framework version, not the highest framework version available on the system. This is somewhat problematic since the fix came in 462 and is non-quirked. The end result of this is that these tests will be ignored when the running TFM is =net462 is available even when they will actually pass. It's not perfect, but it at least absolutely disables the tests when they would fail (i.e. when 461 is the highest available framework version). cc: @bartonjs @krwq resolves https://github.com/dotnet/corefx/issues/19090 +19362 area-System.Security Disable failing PKCS tests from =net462 is running, and the fix is non-quirked. These are the last tests failing in CI for the PKCS test assembly. Note that the `IsNetfx462OrNewer` function only checks the running framework version, not the highest framework version available on the system. This is somewhat problematic since the fix came in 462 and is non-quirked. The end result of this is that these tests will be ignored when the running TFM is =net462 is available even when they will actually pass. It's not perfect, but it at least absolutely disables the tests when they would fail (i.e. when 461 is the highest available framework version). cc: @bartonjs @krwq resolves https://github.com/dotnet/corefx/issues/19090 19363 area-Infrastructure Source init-tools rather than execute Sourcing init-tools.sh rather than executing it, prevents it from spawning a new process. The ulimit that's set is only valid for the sub-process which means that it's parent won't be affected by it which results in build failures as mentioned in #19152. Sourcing it also means we no longer have to catch the exit code. 19364 area-System.Diagnostics Fix missing System.Diagnostics.StackTrace.StackTraceSymbols class Add ILLinkTrim.xml to keep illink from removing it. Issue #19319 19365 area-System.Globalization System.Globalization.Tests now at 3 failures. Moved some unicode strings out of InlineData to work around TFS 430084 (.Net Native mangling Unicode strings in custom attributes.) More .ParamName checking disabled. This test still fails because we optimize away the InvalidCultureName property. Not sure if we want to define that as intended behavior so leaving it alone for the time being. @@ -9476,7 +9476,7 @@ ID Area Title Description 19416 area-System.Runtime Add support for getting current stack into Exception When writing managed wrappers for native components, it's common to create an Exception in one location (e.g. in a callback from native that includes an error code) and to then pass that off to a completely different location (e.g. storing the Exception into a TaskCompletionSource, with its Task awaited somewhere else). In doing so, the created Exception object doesn't contain any stack trace information about the original location where it was created, sometimes making it difficult to track down where it came from. It would be very helpful if there were a way of storing the equivalent of Environment.StackTrace into an Exception object. It's possible to do: ```C# try { throw e; } catch { } ``` but that doesn't really help, as the stack trace will only include the calling frame, not the entire stack, since the stack will stop after the catching frame. It would be helpful to have an API like: ```C# public class Exception { ... public void AppendCurrentStackTrace(); ... } ``` or something like that. Alternatively it could live on ExceptionDispatchInfo, e.g. ```C# public static class ExceptionDispatchInfo { ... public static void AppendCurrentStackTrace(Exception source); ... } ``` Workarounds today involve using reflection to access privates of Exception, e.g. _remoteStackTraceString. cc: @gkhanna79, @jkotas 19418 area-Serialization Area-Serialization Sprint 118 The issue is for tracking issues to be done in sprint 118 (due by 5/26/2017) 19419 area-System.Net Ignore lack of CURLMOPT_MAX_HOST_CONNECTIONS in CurlHandler Versions before 7.30 don't have this option. Previously we would throw a PlatformNotSupportedException. As devs would generally use an option of this type to increase the limit (since historically such a limit was 2 or 10 in the .NET Framework) rather than decrease it, and since it's already effectively infinite by default in .NET Core, with this commit, now we just ignore it. This helps to avoid PNSEs on the few platforms that still ship with too old a version of libcurl. Fixes https://github.com/dotnet/corefx/issues/14614 cc: @geoffkizer, @Priya91, @davidsh -19420 area-System.Security System.Security.Cryptography.Xml conflicts System.Security when building for .NET Framework "The latest System.Security.Cryptography.Xml package causes compiler errors for .NET Framework projects. > error CS0433: The type 'EncryptedXml' exists in both 'System.Security.Cryptography.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' and 'System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' ### Repro Create a .NET Framework 4.6.1 project that references a .NET Standard 2.0 project. Example: TestApp --> TestLib #### TestApp ```xml Exe net461 ``` ```c# using System; using System.Security.Cryptography.Xml; namespace TestApp { class Program { static void Main(string[] args) { Console.WriteLine(typeof(EncryptedXml).AssemblyQualifiedName); } } } ``` #### TestLib ```xml netstandard2.0 true ``` #### Details Using dotnet-CLI 2.0.0-preview2-005905 [msbuild.log.txt](https://github.com/dotnet/corefx/files/980530/msbuild.log.txt) cc @krwq " +19420 area-System.Security System.Security.Cryptography.Xml conflicts System.Security when building for .NET Framework "The latest System.Security.Cryptography.Xml package causes compiler errors for .NET Framework projects. > error CS0433: The type 'EncryptedXml' exists in both 'System.Security.Cryptography.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' and 'System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' ### Repro Create a .NET Framework 4.6.1 project that references a .NET Standard 2.0 project. Example: TestApp --> TestLib #### TestApp ```xml Exe net462 ``` ```c# using System; using System.Security.Cryptography.Xml; namespace TestApp { class Program { static void Main(string[] args) { Console.WriteLine(typeof(EncryptedXml).AssemblyQualifiedName); } } } ``` #### TestLib ```xml netstandard2.0 true ``` #### Details Using dotnet-CLI 2.0.0-preview2-005905 [msbuild.log.txt](https://github.com/dotnet/corefx/files/980530/msbuild.log.txt) cc @krwq " 19421 area-System.Diagnostics Fix spurious EventSource test failures due to framework sources Some of the EventSource tests check to verify that EventSources have been properly shutdown and can no longer be found in EventSource.GetSources. But the framework itself has several event sources used by core types, and if the tests end up using these types, those sources can end up triggering a failure. As such, the test exempts known framework sources, but it missed SynchronizationEventSource (used by types like SpinWait). This just adds it to the list of sources to exempt. Fixes https://github.com/dotnet/corefx/issues/18805 cc: @vancem, @brianrob 19422 area-System.Security Fix compile assembly on netfx for crypto-xml Fixes: https://github.com/dotnet/corefx/issues/19420 19423 area-Infrastructure System.Net.Primitives.Functional.Tests.CookieTest.Value_PassNullToCtor_GetReturnsEmptyString_net46 fails consistently on all my dev machines "Running `msbuild /t:rebuild,test /p:Outerloop=true ""/p:XunitOptions=-showprogress""` in `\src\System.Net.Primitives\tests\FunctionalTests` ``` System.Net.Primitives.Functional.Tests.CookieTest.Value_PassNullToCtor_GetReturnsEmptyString_net46 [FAIL] Assert.Null() Failure Expected: (null) Actual: Stack Trace: S:\corefx\src\System.Net.Primitives\tests\FunctionalTests\CookieTest.cs(249,0): at System.Net.Primitives.Functional.Tests.CookieTest.Value_PassNullToCtor_GetReturnsEmptyString_net46() System.Net.Primitives.Functional.Tests.CookieTest.Value_PassNullToCtor_GetReturnsEmptyString_net46 [FINISHED] Time: 0.0016697s ``` " @@ -9876,7 +9876,7 @@ ID Area Title Description 19943 area-System.Net Fix Http Unit Tests Fixed the System.Net.Http Unit Tests so that they build and run properly for uap and uap-aot scenarios. Removed the ICloneable.cs file which is no longer needed now that master branch has ICloneable support in it. 19946 area-Infrastructure Changes required to get Linux Validation working CC: @weshaggard @ericstj @danmosemsft These are all of the changes required for the validation on non-Windows machines for non-Windows RIDs. After this, the only thing missing will be to add the APICompat runs in order to complete issue #18083 19947 area-System.Net Investigate WinHttpException: buffer too small For #7812. Not able to repro locally, want to get more info from CI -19949 area-Infrastructure Avoid having runtime specific assets when they aren't necessary. Due to an issue in nuget which will hopefully be address with https://github.com/NuGet/Home/issues/5192 some of our packages end up with the wrong asset being selected when we have both runtime and lib assets in the package. For some of our packages that isn't necessary. Example: System.Security.Permissions has a runtime\net461 asset and a lib\netstandard2.0 asset and when a netcoreapp2.0 project has a fallback of net461 we will prefer the net461 asset over the netstandard2.0 asset which will not work on netcoreapp2.0. See https://github.com/dotnet/corefx/issues/19929. We should do an audit of other packages in this situation to avoid it. +19949 area-Infrastructure Avoid having runtime specific assets when they aren't necessary. Due to an issue in nuget which will hopefully be address with https://github.com/NuGet/Home/issues/5192 some of our packages end up with the wrong asset being selected when we have both runtime and lib assets in the package. For some of our packages that isn't necessary. Example: System.Security.Permissions has a runtime\net462 asset and a lib\netstandard2.0 asset and when a netcoreapp2.0 project has a fallback of net462 we will prefer the net462 asset over the netstandard2.0 asset which will not work on netcoreapp2.0. See https://github.com/dotnet/corefx/issues/19929. We should do an audit of other packages in this situation to avoid it. 19952 area-System.Net Fix some Http tests for UAP Fixed some of the HttpRequestMessage tests for UAP. HttpRequestMessage has a different default value for the Version field on UAP platforms compared to netcore or netfx. Added PlatformDetection.IsUap to support this. Implementation of this property was based on investigations for #19907. This property is true on both 'uap' and 'uap-aot' platforms. Fixes #19907 19953 area-System.Data Review SqlClient tests on Desktop for scenarios missing from .Net Core Review SqlClient tests on Desktop for scenarios which do not satisfy the .Net Core surface area. The review will be targeted at identifying the usage of Data Structures like DataTable , DataRow etc which were added to System.Data.Common in 2.0 and should have related functionality in .Net Core. One of such scenarios was DataTable/TVP support in SqlClient SqlParameter 19954 area-Serialization Fix XmlUnknownElementAndEventHandlerTest. Fix XmlSerializerTests.XmlUnknownElementAndEventHandlerTest in ReflectionOnly mode. Fix #14259. @@ -10071,7 +10071,7 @@ ID Area Title Description 20188 area-System.Net release/2.0: Add more tracing to HttpClient on Unix Port https://github.com/dotnet/corefx/pull/20095 to release/2.0.0 20189 area-System.Net Remove asynchrony from many HttpListener tests Contributes to #20103 @stephentoub PTAL (best reviewed without whitespace for the first commit) 20190 area-Infrastructure Add win-arm and win-arm64 to RID graph. "Porting https://github.com/dotnet/corefx/pull/20187 to `release/2.0.0`. We don't have win-arm and win-arm64 ""portable"" RIDs in our graph. Thus, when trying to use RIDs like win10-arm in a self-contained app, no assets are getting selected. Fix dotnet/sdk#1239. @gkhanna79 @ericstj" -20191 area-System.Net ClientWebSocket client certificate not working with .NET Core "Using the ClientWebSocket to establish a secure WebSocket connection with client certificates. The project is targeting `netcoreapp1.1`. With the following code, the `ConnectAsync` throws an exception: `WinHttpException: A certificate is required to complete client authentication`. When changing the TFM to `net461` the connection is successfully established. I removed the template id of the certificate for security reasons. ```csharp ClientWebSocket client = new ClientWebSocket(); X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine); store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly); var cert = store.Certificates.Find(X509FindType.FindByTemplateName, """", true); client.Options.ClientCertificates = new X509CertificateCollection(); client.Options.ClientCertificates.Add(cert[0]); client.ConnectAsync(new Uri(""wss://localhost:44301/path""), CancellationToken.None).Wait(); ``` " +20191 area-System.Net ClientWebSocket client certificate not working with .NET Core "Using the ClientWebSocket to establish a secure WebSocket connection with client certificates. The project is targeting `netcoreapp1.1`. With the following code, the `ConnectAsync` throws an exception: `WinHttpException: A certificate is required to complete client authentication`. When changing the TFM to `net462` the connection is successfully established. I removed the template id of the certificate for security reasons. ```csharp ClientWebSocket client = new ClientWebSocket(); X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine); store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly); var cert = store.Certificates.Find(X509FindType.FindByTemplateName, """", true); client.Options.ClientCertificates = new X509CertificateCollection(); client.Options.ClientCertificates.Add(cert[0]); client.ConnectAsync(new Uri(""wss://localhost:44301/path""), CancellationToken.None).Wait(); ``` " 20192 area-Infrastructure Remove win10 jobs that depend on deprecated functionality The Win10 images are no longer working (they were a pre-release version of Win Server 2016). The Win10 functionality is now available in the new Portable builds. Remove these old jobs for now (they get queued and never run) See #20107 20193 area-System.Net Disable some System.Net.* tests for ILC Disables tests for: 1. API Not Implemented for Uap by design 2. Tests that do white box testing and reflect on internal type cc: @tijoytom 20195 area-Infrastructure Testing CI system for crashing a test actually failing CI Testing for https://github.com/dotnet/corefx/issues/20172 @@ -10140,7 +10140,7 @@ ID Area Title Description 20276 area-System.Runtime X-Plat: Environment.SetEnvironmentVariable(string, string) on Unix. More details later - just need an issue number for a TODO comment. 20277 area-System.Runtime X-Plat: Environment.GetEnvironmentVariables() on Unix More details later - just need an issue number now. 20278 area-Serialization Fix XmlSerializer(Type type, Types[] extraTypes) on UWP On UWP, if one used `XmlSerializer(Type type, Types[] extraTypes)` to create serializer for `type`, UWP toolchain would pre-generate the serializer for the type and make the `extraTypes` as the type's known types. To achieve the latter, UWP toolchain uses one `XmlReflectionImporter` to import *all types* (all types require serialization in the app) so that the `extraTypes` would be treated as known types. But there're some problems with this. 1. The type would have more known types than those included by `extraTypes`. 2. There might be type conflicts as the importer imports all types and the type scope grows. And etc. The fix is to make the constructor to always use reflection based serialization. Fix #19811 -20279 area-Infrastructure Test retargeting netframework project while using netstandard.library.netframework We should do this in both a netcore.sdk project as well as a legacy project using package reference. Packages.config is not interesting since retargeting has never been supported there. @davkean mentioned the design time build may not react well when retargeting changes targets imported. Interesting scenarios: 1. Reference an n 2.0 package that cross-compiles (like immutable) in net461. 2. Retargeting to net46. 3. Retargeting to net47. (Interesting in valuetuple case). There are others too. Filing this to ensure I don't forget to test this. +20279 area-Infrastructure Test retargeting netframework project while using netstandard.library.netframework We should do this in both a netcore.sdk project as well as a legacy project using package reference. Packages.config is not interesting since retargeting has never been supported there. @davkean mentioned the design time build may not react well when retargeting changes targets imported. Interesting scenarios: 1. Reference an n 2.0 package that cross-compiles (like immutable) in net462. 2. Retargeting to net46. 3. Retargeting to net47. (Interesting in valuetuple case). There are others too. Filing this to ensure I don't forget to test this. 20280 area-System.Net Several more HttpListener fixes on Unix Replaces https://github.com/dotnet/corefx/pull/20265, which was having CI issues. Fixes #20239 Fixes #20238 Fixes #20237 Fixes #20232 Fixes #20231 Fixes #20230 Fixes #20229 Fixes #20228 Fixes #20165 Fixes #20101 Fixes #20100 Fixes #20099 Fixes #19977 Fixes #19972 20283 area-System.Diagnostics "Test: System.Diagnostics.Tests.ProcessStartInfoTests/StartInfo_BadExe failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Diagnostics.Tests.ProcessStartInfoTests/StartInfo_BadExe(useShellExecute: False)` has failed. Assert.Equal() Failure\r Expected: 193\r Actual: 0 Stack Trace: at System.Diagnostics.Tests.ProcessStartInfoTests.StartInfo_BadExe(Boolean useShellExecute) Build : Master - 20170525.01 (Portable Core Tests) Failing configurations: - Windows.10.Nano.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170525.01/workItem/System.Diagnostics.Process.Tests/analysis/xunit/System.Diagnostics.Tests.ProcessStartInfoTests~2FStartInfo_BadExe(useShellExecute:%20False) 20284 area-System.Diagnostics "Test: System.Diagnostics.Tests.ProcessStartInfoTests/StartInfo_NotepadWithContent(useShellExecute: False) failed with ""System.ComponentModel.Win32Exception : The system cannot find the file specified""" Opened on behalf of @Jiayili1 The test `System.Diagnostics.Tests.ProcessStartInfoTests/StartInfo_NotepadWithContent(useShellExecute: False)` has failed. System.ComponentModel.Win32Exception : The system cannot find the file specified Stack Trace: at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo) at System.Diagnostics.Process.Start(ProcessStartInfo startInfo) at System.Diagnostics.Tests.ProcessStartInfoTests.StartInfo_NotepadWithContent(Boolean useShellExecute) Build : Master - 20170525.01 (Portable Core Tests) Failing configurations: - Windows.10.Nano.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170525.01/workItem/System.Diagnostics.Process.Tests/analysis/xunit/System.Diagnostics.Tests.ProcessStartInfoTests~2FStartInfo_NotepadWithContent(useShellExecute:%20False) @@ -10557,7 +10557,7 @@ ID Area Title Description 20903 area-System.Data Additional API for DbProviderFactories in .NET Core # Latest Proposal Copied from latest API approval: https://github.com/dotnet/corefx/issues/20903#issuecomment-342605350 ```C# public static class DbProviderFactories { // exiting members public static DbProviderFactory GetFactory(string providerInvariantName); public static DbProviderFactory GetFactory(DataRow providerRow); public static DbProviderFactory GetFactory(DbConnection connection); public static DataTable GetFactoryClasses(); // new members /// /// Registers a provider factory using the assembly qualified name of the factory and an /// invariant name /// public static void RegisterFactory(string providerInvariantName, string factoryTypeAssemblyQualifiedName); /// /// Registers a provider factory using the provider factory type and an invariant name /// public static void RegisterFactory(string providerInvariantName, Type factoryType); /// /// Extension method to register a provider factory using the provider factory instance and /// an invariant name /// public static void RegisterFactory(string providerInvariantName, DbProviderFactory factory); /// /// Returns the provider factory instance if one is registered for the given invariant name /// public static bool TryGetFactory(string providerInvariantName, out DbProviderFactory factory); /// /// Removes the provider factory registration for the given invariant name /// public static bool UnregisterFactory(string providerInvariantName); /// /// Returns the invariant names for all the factories registered /// public static IEnumerable GetProviderInvariantNames(); } ``` # Original proposal Issue #4571 is about porting the existing surface of `DbProviderFactories` into .NET Core. This new issue is specifically about new API that needs to be added in .NET Core that does not (yet) exist in .NET Framework. `DbProviderFactories` on .NET Framework can only be initialized from .config files, and in order to make the API usable without .config files the new API is needed. The proposal by @FransBouma can be found in https://github.com/dotnet/standard/issues/356#issuecomment-307552750 and is repeated below: I've refactored the code a bit, the new API now looks like: ```cs public static void ConfigureFactory(Type providerFactoryClass); public static void ConfigureFactory(Type providerFactoryClass, string providerInvariantName); public static void ConfigureFactory(Type providerFactoryClass, string providerInvariantName, string name, string description); public static void ConfigureFactory(DbConnection connection); public static void ConfigureFactory(DbConnection connection, string providerInvariantName); public static void ConfigureFactory(DbConnection connection, string providerInvariantName, string name, string description); ``` Two new overloads are added. They'll use the fallback code for the providerInvariantName, as it is also present in netfx' auto-init code: it will use the namespace of the type. I've added this to avoid people making a typo in the name as for most factories I know (I don't really know of a dbproviderfactory where this isn't the case) the invariant name is equal to the namespace. ### Method usage / purpose ```cs public static void ConfigureFactory(Type providerFactoryClass) ``` **Description**: This method will register the factory instance contained in the specified type, under invariant name equal to the namespace of the specified type. It will leave name and description empty. **Purpose:** This method is meant to be the easiest way to register a factory. Most (if not all) ADO.NET providers use as invariant name the namespace of the factory type. ```cs public static void ConfigureFactory(Type providerFactoryClass, string providerInvariantName) ``` **Description**: This method will register the factory instance contained in the specified type, under invariant name specified in providerInvariantName. It will leave name and description empty. **Purpose:**: This method can be used to register a factory for the ADO.NET providers which don't use the namespace as the invariant name, and it can also be used to register a different factory type under a well-known invariant name, e.g. in the case of a wrapping factory for ADO.NET profiling. ```cs public static void ConfigureFactory(Type providerFactoryClass, string providerInvariantName, string name, string description) ``` **Description**: This method will register the factory instance contained in the specified type, under invariant name specified in providerInvariantName and will fill in the name and description values for the factory. **Purpose:**: This method is equal to `ConfigureFactory(type, string)` and can be used to fill in the additional two columns in the factory table if a user requires that. ```cs public static void ConfigureFactory(DbConnection connection) ``` **Description**: This method will register the factory instance obtained from the specified connection, under invariant name equal to the namespace of the factory instance's type. It will leave name and description empty. **Purpose:** This method is meant to be the easiest way to register a factory if the user doesn't know the factory type but does know the connection type. As DbProviderFactory registration was mainly hidden for most users it can very well be they're not familiar with the factory types, so this method and its overloads make it easier for them to register a factory. Most (if not all) ADO.NET providers use as invariant name the namespace of the factory type. ```cs public static void ConfigureFactory(DbConnection connection, string providerInvariantName) ``` **Description**: This method will register the factory instance obtained from the specified connection, under invariant name specified. It will leave name and description empty. **Purpose:**: This method can be used to register a factory for the ADO.NET providers which don't use the namespace as the invariant name, and it can also be used to register a different factory type under a well-known invariant name, e.g. in the case of a wrapping factory for ADO.NET profiling. ```cs public static void ConfigureFactory(DbConnection connection, string providerInvariantName, string name, string description) ``` **Description**: This method will register the factory instance obtained from the specified connection, under invariant name specified in providerInvariantName and will fill in the name and description values for the factory. **Purpose:**: This method is equal to `ConfigureFactory(DbConnection, string)` and can be used to fill in the additional two columns in the factory table if a user requires that. 20904 area-Serialization Fixing BinaryFormatter member names of parent members to align with netfx @ericstj @stephentoub @danmosemsft @morganbr This is the fix to the offline discussion. After refactoring BinaryFormatter code it seems that we got rid of parent type names. This is now fixed and produces the same results as netfx. ---------- Issue description: Serializing the object “new System.ComponentModel.BindingList(new[] { 32, 45 });” creates the following results: Netfx: ``` ����������� [1]���ISystem, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089���System.ComponentModel.BindingList`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]��� addNewPosraiseListChangedEventsraiseItemChangedEventsallowNew allowEdit allowRemoveuserSetAllowNewCollection`1+items������� System.Int32[][1]����� ��� ���[1]��� ���-��� ``` NetCoreApp: ``` ����������� [1]���ISystem, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089���System.ComponentModel.BindingList`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]��� addNewPosraiseListChangedEventsraiseItemChangedEventsallowNew allowEdit allowRemoveuserSetAllowNewitems������� System.Int32[][1]����� ��� ���[1]��� ���-��� ``` The difference is that the serialized name of the items field of the parent class Collection isn’t serialized correctly. Core <-> Core and NetFx <-> Netfx serialization works with the respective blobs. ------------- cc @danmosemsft @morganbr 20906 area-System.Drawing Add Matrix tests Again, 50-50 mono cleanup and handwritten tests -20910 area-Serialization Not able to install System.Runtime.Serialization.Json and System.Runtime.Serialization.Xml both in a project I have visual studio 17. My project is targeting net461 and netstandard1.6 I want to use System.Runtime.Serialization.Json and System.Runtime.Serialization.Xml. but I am facing issues. Steps to reproduce: 1. Install nuget System.Runtime.Serialization.Xml - 4.3.0 2. Now install nuget System.Runtime.Serialization.Json - 4.3.0 But when I am trying step 2 it uninstall System.Runtime.Serialization.Xml . How to use both nuget in code. ![capture](https://user-images.githubusercontent.com/16220515/27013697-b38d5698-4f06-11e7-8f78-1bde87a1e1d1.JPG) +20910 area-Serialization Not able to install System.Runtime.Serialization.Json and System.Runtime.Serialization.Xml both in a project I have visual studio 17. My project is targeting net462 and netstandard1.6 I want to use System.Runtime.Serialization.Json and System.Runtime.Serialization.Xml. but I am facing issues. Steps to reproduce: 1. Install nuget System.Runtime.Serialization.Xml - 4.3.0 2. Now install nuget System.Runtime.Serialization.Json - 4.3.0 But when I am trying step 2 it uninstall System.Runtime.Serialization.Xml . How to use both nuget in code. ![capture](https://user-images.githubusercontent.com/16220515/27013697-b38d5698-4f06-11e7-8f78-1bde87a1e1d1.JPG) 20911 area-Infrastructure Publish regular alpha versions of vNext product "Goal: Provide great experience for early adopters to consume our vNext product. We should have regular (monthly-ish) alpha releases of vNext product. The idea is that every month we would publish last good build of tools, libraries, runtime, etc. that work ""well"" together. If something go south, we can delist it. Motivation: Consuming myget daily feed is painful -- too many builds, changing too often. It's sometimes hard to find working combo. It is likely mostly about perception. What is the right technical solution? 1. Special myget feed with just the alpha monthly-ish bits 2. Regular alpha-previews on nuget 3. Special download of the tools bundle (CLI) on a web site cc @benaadams @NickCraver cc @weshaggard @mellinoe @ericstj " 20913 area-System.Drawing Add Bitmap tests 50-50 cleanup from Mono and handwritten tests 20914 area-System.ComponentModel Move InvalidEnumArgumentException to System.ComponentModel.Primitives Lays the groundwork for #20897 Note: is System.ComponentModel.Primitives the right place to put this? I thought about System.ComponentModel, but that library looks like its for interfaces only. The reason why this is necessary is because we need use InvalidEnumArgumentException in System.Drawing.Common. This exception resides in System.ComponentModel.TypeConverter right now, but we want System.ComponentModel.TypeConverter to depend on System.Drawing.Common in the future. @@ -10961,7 +10961,7 @@ ID Area Title Description 21525 area-Infrastructure Dumpling can't find dumps on some Linux distros eg suse and fedora 25. It says ` (core dumped) ` but where is it? https://mc.dot.net/#/user/danmosemsft/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/575ab2eecbb50ef3f8978cc2d6bebc13ec045002/workItem/System.Runtime.InteropServices.Tests/wilogs ``` 2017-06-25 07:52:48,811: INFO: proc(54): run_and_log_output: Output: Finished: System.Runtime.InteropServices.Tests 2017-06-25 07:52:49,390: INFO: proc(54): run_and_log_output: Output: /home/helixbot/dotnetbuild/work/38645e04-4cb5-4a56-987c-36c2682a6c9e/Work/4fa60773-8fb6-4f40-939d-c70f19566fe6/Unzip/RunTests.sh: line 87: 23380 Segmentation fault (core dumped) $RUNTIME_PATH/dotnet xunit.console.netcore.exe System.Runtime.InteropServices.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapptests -notrait category=nonlinuxtests -notrait category=OuterLoop -notrait category=failing 2017-06-25 07:52:49,430: INFO: proc(54): run_and_log_output: Output: Trying to find crash dumps for project: System.Runtime.InteropServices.Tests 2017-06-25 07:52:49,431: INFO: proc(54): run_and_log_output: Output: No new dump file was found in /home/helixbot/dotnetbuild/work/38645e04-4cb5-4a56-987c-36c2682a6c9e/Work/4fa60773-8fb6-4f40-939d-c70f19566fe6/Unzip 2017-06-25 07:52:49,433: INFO: proc(54): run_and_log_output: Output: ~/dotnetbuild/work/38645e04-4cb5-4a56-987c-36c2682a6c9e/Work/4fa60773-8fb6-4f40-939d-c70f19566fe6/Unzip 2017-06-25 07:52:49,434: INFO: proc(54): run_and_log_output: Output: Finished running tests. End time=07:52:49. Return value was 139 2017-06-25 07:52:49,436: INFO: proc(58): run_and_log_output: Exit Code: 139 ``` @mellinoe 21526 area-System.Runtime System.Runtime.InteropServices.Tests segfaulting on some Linux So far Fedora 25 and Suse https://mc.dot.net/#/user/danmosemsft/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/575ab2eecbb50ef3f8978cc2d6bebc13ec045002/workItem/System.Runtime.InteropServices.Tests/wilogs Unfortunately we aren't getting dumps. But it's happened several times on one PR. ``` 2017-06-24 23:37:59,432: INFO: proc(54): run_and_log_output: Output: Starting: System.Runtime.InteropServices.Tests 2017-06-24 23:38:00,184: INFO: proc(54): run_and_log_output: Output: /home/helixbot/dotnetbuild/work/4f944e98-7c0d-4ef5-af27-296b5e3e76a7/Work/66044e6b-eaf9-4f01-97f9-f1ffbd73a701/Unzip/RunTests.sh: line 87: 3291 Segmentation fault (core dumped) $RUNTIME_PATH/dotnet xunit.console.netcore.exe System.Runtime.InteropServices.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapptests -notrait category=nonlinuxtests -notrait category=OuterLoop -notrait category=failing 2017-06-24 23:38:00,214: INFO: proc(54): run_and_log_output: Output: Trying to find crash dumps for project: System.Runtime.InteropServices.Tests 2017-06-24 23:38:00,214: INFO: proc(54): run_and_log_output: Output: No new dump file was found in /home/helixbot/dotnetbuild/work/4f944e98-7c0d-4ef5-af27-296b5e3e76a7/Work/66044e6b-eaf9-4f01-97f9-f1ffbd73a701/Unzip ``` 21528 area-System.Net HttpClienthandler code cleanup for UAP This file had never been formatted according to CoreFx style guidelines when the code was first ported into GitHub. Now that we are doing NETStandard2.0 work, I wanted to clean up this file to avoid distractions as I add features. -21530 area-System.Data Large performance gap in SqlCommand.ExecuteNonQuery between net461 and netcoreapp "Sharing the following code on a full framework net461 Console application and a netcoreapp Console app, I am seeing huge gaps in performance when executing `SqlCommand.ExecuteNonQuery` with `SqlConnection`. It doesn't matter if I use it within a transaction or not. public async Task AddDataWithADO(int id, string name) { SqlConnection connection = this.transaction.Connection; SqlCommand command = new SqlCommand(""INSERT INTO TestTable ( Id, Name ) VALUES ( @Id, @name )"", connection, this.transaction); command.Parameters.AddWithValue(""@id"", id); command.Parameters.AddWithValue(""@name"", name); await command.ExecuteNonQueryAsync(); } When I run this on my local machine against a LocalDb, I see an average insertion time of 19.89ms in netcoreapp1.0 and 1.1. When I run the same code in full framework net461, then I see insertion times of 0.83ms. It's a shared NetStandard1.4 class library with a reference to `System.Data.SqlClient` 4.3.1. My current .Net Core runtime is 1.1.0 I was moving my Azure Functions which ran on net461 over to ASP.net Core when I saw this gap. Why is there such a huge difference in performance? I have a repro repository that you can look at here (originally thought this was [a Dapper issue](https://github.com/StackExchange/Dapper/issues/810), turned out to be ADO.Net): https://github.com/scionwest/DapperRepro/tree/ADO_net_issue You can publish the Sql database project that's in the solution to a LocaLDb and then run the two console apps to see the difference." +21530 area-System.Data Large performance gap in SqlCommand.ExecuteNonQuery between net462 and netcoreapp "Sharing the following code on a full framework net462 Console application and a netcoreapp Console app, I am seeing huge gaps in performance when executing `SqlCommand.ExecuteNonQuery` with `SqlConnection`. It doesn't matter if I use it within a transaction or not. public async Task AddDataWithADO(int id, string name) { SqlConnection connection = this.transaction.Connection; SqlCommand command = new SqlCommand(""INSERT INTO TestTable ( Id, Name ) VALUES ( @Id, @name )"", connection, this.transaction); command.Parameters.AddWithValue(""@id"", id); command.Parameters.AddWithValue(""@name"", name); await command.ExecuteNonQueryAsync(); } When I run this on my local machine against a LocalDb, I see an average insertion time of 19.89ms in netcoreapp1.0 and 1.1. When I run the same code in full framework net462, then I see insertion times of 0.83ms. It's a shared NetStandard1.4 class library with a reference to `System.Data.SqlClient` 4.3.1. My current .Net Core runtime is 1.1.0 I was moving my Azure Functions which ran on net462 over to ASP.net Core when I saw this gap. Why is there such a huge difference in performance? I have a repro repository that you can look at here (originally thought this was [a Dapper issue](https://github.com/StackExchange/Dapper/issues/810), turned out to be ADO.Net): https://github.com/scionwest/DapperRepro/tree/ADO_net_issue You can publish the Sql database project that's in the solution to a LocaLDb and then run the two console apps to see the difference." 21531 area-System.Net Re-enable some System.Net.Mail tests for UAPAOT With the recent implementation of System.Net.NetworkInformation for UWP, we can re-enable some tests. Also, the latest plan of record for serialization support in .NET Core is such that serializing these exception types are not supported. So, removing the test for that. FYI, the actual implementation of the serialization overrides in the SmtpException class are already no-ops in the code and simply call the base method. Fixes #19604 21532 area-System.Net Disable WinHttpHandler tests on UAP/UAPAOT System.Net.Http.WinHttpHandler is only meant for use on .NET Framework and .NET Core but not for UWP apps. Fixes #21438 21533 area-System.Net Announcement: Networking stack - Technical roadmap See https://github.com/dotnet/designs/issues/9 @@ -11152,7 +11152,7 @@ ID Area Title Description 21808 area-System.Net Enable more ManagedHandler tests cc: @geoffkizer 21809 area-System.Runtime Proposal: CallerArgumentExpressionAttribute ## Rationale In order to facilitate the language feature at https://github.com/dotnet/csharplang/issues/287, which has been championed and discussed in the LDM, we should add `CallerArgumentExpressionAttribute` to the framework. The LDM notes seem to approve of getting this into the framework: see [here](https://github.com/dotnet/csharplang/blob/master/meetings/2017/LDM-2017-05-16.md#callerargumentexpression). ## Proposal ```cs namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)] public sealed class CallerArgumentExpressionAttribute : Attribute { public CallerArgumentExpressionAttribute(string parameterName); // Added in response to @svick's comment public string ParameterName { get; } } } ``` ## Notes - The name of the constructor argument is intentionally `parameterName` and not `argumentName`. Parameters refer to the variables declared inside the callee, while arguments are the values passed by the caller. ![image](https://user-images.githubusercontent.com/9159214/27773044-483c57ac-5f3e-11e7-9a87-50876915a518.png) 21810 area-Meta .NET Core should consider having the equivalent of Windows.Devices.* Filing based on feedback: https://docs.microsoft.com/en-us/uwp/api/ There are lots of basic device operations from GPIO, I2C, to Bluetooth that should be really easy to do on all devices when using .NET Core. -21811 area-System.Security DSA-SHA1 SignedXml issues .netcore 2.0 "I have a SAMLlibrary which I am trying to piece together on .net core 2.0, however I have hit an issue it some pre-existing tests. The tests pass fine on net461 but when using netcoreapp2.0 fail. All the test is doing is ```c# private static bool VerifySignature(XmlDocument assertion) { var signedXml = new SignedXml(assertion.DocumentElement); var nodeList = assertion.GetElementsByTagName(""Signature"", ""http://www.w3.org/2000/09/xmldsig#""); signedXml.LoadXml((XmlElement)nodeList[0]); Assert.NotNull(signedXml.Signature); return signedXml.CheckSignature(); } ``` The xml files that is being passed in is located in the tests here: [DSA-SHA1 Saml2Assertion_01](https://github.com/eByte23/SAMLSilly/blob/dev/2.0/tests/SAMLSilly.Tests/Assertions/Saml2Assertion_01) [DSA-SHA1 Saml2Assertion_02](https://github.com/eByte23/SAMLSilly/blob/dev/2.0/tests/SAMLSilly.Tests/Assertions/Saml2Assertion_01) All other non-DSA pass e.g. RSA1,RSA256 just these I believe to be completely valid XMLDSIGS validated online as well as on dotnet FF. Any help would be appreciated as this is a blocker for me/" +21811 area-System.Security DSA-SHA1 SignedXml issues .netcore 2.0 "I have a SAMLlibrary which I am trying to piece together on .net core 2.0, however I have hit an issue it some pre-existing tests. The tests pass fine on net462 but when using netcoreapp2.0 fail. All the test is doing is ```c# private static bool VerifySignature(XmlDocument assertion) { var signedXml = new SignedXml(assertion.DocumentElement); var nodeList = assertion.GetElementsByTagName(""Signature"", ""http://www.w3.org/2000/09/xmldsig#""); signedXml.LoadXml((XmlElement)nodeList[0]); Assert.NotNull(signedXml.Signature); return signedXml.CheckSignature(); } ``` The xml files that is being passed in is located in the tests here: [DSA-SHA1 Saml2Assertion_01](https://github.com/eByte23/SAMLSilly/blob/dev/2.0/tests/SAMLSilly.Tests/Assertions/Saml2Assertion_01) [DSA-SHA1 Saml2Assertion_02](https://github.com/eByte23/SAMLSilly/blob/dev/2.0/tests/SAMLSilly.Tests/Assertions/Saml2Assertion_01) All other non-DSA pass e.g. RSA1,RSA256 just these I believe to be completely valid XMLDSIGS validated online as well as on dotnet FF. Any help would be appreciated as this is a blocker for me/" 21813 area-System.Console "Test: System.ConsoleTests.Perf_Console/OpenStandardInput failed with ""System.IO.IOException"" Too many open files" Opened on behalf of @Jiayili1 The test `System.ConsoleTests.Perf_Console/OpenStandardInput` has failed. System.IO.IOException : Too many open files Stack Trace: at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter) at Interop.CheckIo[TSafeHandle](TSafeHandle handle, String path, Boolean isDirectory, Func`2 errorRewriter) at Microsoft.Win32.SafeHandles.SafeFileHandleHelper.Open(Func`1 fdFunc) at System.ConsolePal.OpenStandardInput() at System.ConsoleTests.Perf_Console.OpenStandardInput() Build : Master - 20170703.01 (Core Tests) Failing configurations: - OSX.1013.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170703.01/workItem/System.Console.Performance.Tests/analysis/xunit/System.ConsoleTests.Perf_Console~2FOpenStandardInput 21814 area-System.Net remove Linux SSL assert that's no longer true My previous change made this assert no longer valid. Remove it. @stephentoub 21815 area-System.Net FailFast: Expected offset 0 when decrypting in System.Net.Security.Tests Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170703.01/workItem/System.Net.Security.Tests/wilogs ~~~ 2017-07-02 17:29:52,725: INFO: proc(54): run_and_log_output: Output: Discovering: System.Net.Security.Tests 2017-07-02 17:29:52,959: INFO: proc(54): run_and_log_output: Output: Discovered: System.Net.Security.Tests 2017-07-02 17:29:53,105: INFO: proc(54): run_and_log_output: Output: Starting: System.Net.Security.Tests 2017-07-02 17:29:53,766: INFO: proc(54): run_and_log_output: Output: FailFast: Expected offset 0 when decrypting 2017-07-02 17:29:53,766: INFO: proc(54): run_and_log_output: Output: 2017-07-02 17:29:53,766: INFO: proc(54): run_and_log_output: Output: at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 2017-07-02 17:29:53,766: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamPal.EncryptDecryptHelper(SafeDeleteContext securityContext, Byte[] input, Int32 offset, Int32 size, Boolean encrypt, Byte[]& output, Int32& resultSize) in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslStreamPal.Unix.cs:line 157 2017-07-02 17:29:53,767: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamPal.DecryptMessage(SafeDeleteContext securityContext, Byte[] buffer, Int32& offset, Int32& count) in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslStreamPal.Unix.cs:line 64 2017-07-02 17:29:53,767: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SecureChannel.Decrypt(Byte[] payload, Int32& offset, Int32& count) in /root/corefx/src/System.Net.Security/src/System/Net/Security/SecureChannel.cs:line 972 2017-07-02 17:29:53,767: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslState.PrivateDecryptData(Byte[] buffer, Int32& offset, Int32& count) in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 501 2017-07-02 17:29:53,767: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslState.DecryptData(Byte[] buffer, Int32& offset, Int32& count) in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 496 2017-07-02 17:29:53,767: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.ProcessFrameBody(Int32 readBytes, Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslStreamInternal.cs:line 795 2017-07-02 17:29:53,767: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.StartFrameBody(Int32 readBytes, Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslStreamInternal.cs:line 776 2017-07-02 17:29:53,767: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.StartFrameHeader(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslStreamInternal.cs:line 747 2017-07-02 17:29:53,767: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.StartReading(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslStreamInternal.cs:line 733 2017-07-02 17:29:53,767: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.ProcessRead(Byte[] buffer, Int32 offset, Int32 count, BufferAsyncResult asyncResult) in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslStreamInternal.cs:line 675 2017-07-02 17:29:53,767: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.Read(Byte[] buffer, Int32 offset, Int32 count) in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslStreamInternal.cs:line 131 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.ReadByte() in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslStreamInternal.cs:line 124 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStream.ReadByte() in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslStream.cs:line 512 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.Tests.SslStreamStreamToStreamTest.SslStream_StreamToStream_Write_ReadByte_Success() in /root/corefx/src/System.Net.Security/tests/FunctionalTests/SslStreamStreamToStreamTest.cs:line 248 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.<b__1>d.MoveNext() 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.b__1() 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExecutionTimer.d__4.MoveNext() 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func`1 asyncAction) 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator.d__9.MoveNext() 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code) 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1.d__46.MoveNext() 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1.InvokeTestMethodAsync(Object testClassInstance) 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1.<b__45_0>d.MoveNext() 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1.b__45_0() 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.XunitTestRunner.d__4.MoveNext() 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.XunitTestRunner.InvokeTestAsync(ExceptionAggregator aggregator) 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestRunner`1.d__43.MoveNext() 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestRunner`1.RunAsync() 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCaseRunner`1.d__19.MoveNext() 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCaseRunner`1.RunAsync() 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestMethodRunner`1.d__32.MoveNext() 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestMethodRunner`1.RunTestCasesAsync() 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestMethodRunner`1.d__31.MoveNext() 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestMethodRunner`1.RunAsync() 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestClassRunner`1.d__38.MoveNext() 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestClassRunner`1.RunTestMethodsAsync() 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestClassRunner`1.d__37.MoveNext() 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestClassRunner`1.RunAsync() 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCollectionRunner`1.d__28.MoveNext() 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCollectionRunner`1.RunTestClassesAsync() 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCollectionRunner`1.d__27.MoveNext() 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCollectionRunner`1.RunAsync() 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task`1.InnerInvoke() 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task.ExecuteEntry() 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.SynchronizationContextTaskScheduler.<>c.<.cctor>b__8_0(Object s) 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext(SendOrPostCallback callback, Object state) 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.MaxConcurrencySyncContext.WorkerThreadProc() 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.XunitWorkerThread.<>c.b__5_0(Object _) 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at System.Environment.FailFast(System.String, System.Exception) 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamPal.EncryptDecryptHelper(System.Net.Security.SafeDeleteContext, Byte[], Int32, Int32, Boolean, Byte[] ByRef, Int32 ByRef) 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamPal.DecryptMessage(System.Net.Security.SafeDeleteContext, Byte[], Int32 ByRef, Int32 ByRef) 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SecureChannel.Decrypt(Byte[], Int32 ByRef, Int32 ByRef) 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslState.PrivateDecryptData(Byte[], Int32 ByRef, Int32 ByRef) 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslState.DecryptData(Byte[], Int32 ByRef, Int32 ByRef) 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.ProcessFrameBody(Int32, Byte[], Int32, Int32, System.Net.AsyncProtocolRequest) 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.StartFrameBody(Int32, Byte[], Int32, Int32, System.Net.AsyncProtocolRequest) 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.StartFrameHeader(Byte[], Int32, Int32, System.Net.AsyncProtocolRequest) 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.StartReading(Byte[], Int32, Int32, System.Net.AsyncProtocolRequest) 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.ProcessRead(Byte[], Int32, Int32, System.Net.BufferAsyncResult) 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.Read(Byte[], Int32, Int32) 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.ReadByte() 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStream.ReadByte() 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.Tests.SslStreamStreamToStreamTest.SslStream_StreamToStream_Write_ReadByte_Success() 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.RuntimeMethodHandle.InvokeMethod(System.Object, System.Object[], System.Signature, Boolean) 2017-07-02 17:29:53,774: INFO: proc(54): run_and_log_output: Output: at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(System.Object, System.Object[], System.Object[]) 2017-07-02 17:29:53,774: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1+<>c__DisplayClass46_1+<b__1>d[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,774: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Xunit.Sdk.TestInvoker`1+<>c__DisplayClass46_1+<b__1>d[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](<b__1>d ByRef) 2017-07-02 17:29:53,774: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1+<>c__DisplayClass46_1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].b__1() 2017-07-02 17:29:53,774: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExecutionTimer+d__4.MoveNext() 2017-07-02 17:29:53,774: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Xunit.Sdk.ExecutionTimer+d__4, xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__4 ByRef) 2017-07-02 17:29:53,774: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExecutionTimer.AggregateAsync(System.Func`1) 2017-07-02 17:29:53,774: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator+d__9.MoveNext() 2017-07-02 17:29:53,775: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Xunit.Sdk.ExceptionAggregator+d__9, xunit.core, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__9 ByRef) 2017-07-02 17:29:53,775: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator.RunAsync(System.Func`1) 2017-07-02 17:29:53,775: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1+d__46[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,775: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.Decimal, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.TestInvoker`1+d__46[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__46 ByRef) 2017-07-02 17:29:53,775: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].InvokeTestMethodAsync(System.Object) 2017-07-02 17:29:53,775: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1+<b__45_0>d[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,775: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.Decimal, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.TestInvoker`1+<b__45_0>d[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](<b__45_0>d ByRef) 2017-07-02 17:29:53,775: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].b__45_0() 2017-07-02 17:29:53,776: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator+d__10`1[[System.Decimal, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,776: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.Decimal, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.ExceptionAggregator+d__10`1[[System.Decimal, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.core, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__10`1 ByRef) 2017-07-02 17:29:53,776: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator.RunAsync[[System.Decimal, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.Func`1>) 2017-07-02 17:29:53,776: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.XunitTestRunner+d__4.MoveNext() 2017-07-02 17:29:53,776: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.XunitTestRunner+d__4, xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__4 ByRef) 2017-07-02 17:29:53,776: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.XunitTestRunner.InvokeTestAsync(Xunit.Sdk.ExceptionAggregator) 2017-07-02 17:29:53,776: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator+d__10`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,776: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.ExceptionAggregator+d__10`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.core, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__10`1 ByRef) 2017-07-02 17:29:53,776: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator.RunAsync[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.Func`1>) 2017-07-02 17:29:53,777: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestRunner`1+d__43[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,777: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.TestRunner`1+d__43[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__43 ByRef) 2017-07-02 17:29:53,777: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestRunner`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].RunAsync() 2017-07-02 17:29:53,777: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCaseRunner`1+d__19[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,777: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.TestCaseRunner`1+d__19[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__19 ByRef) 2017-07-02 17:29:53,777: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCaseRunner`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].RunAsync() 2017-07-02 17:29:53,777: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestMethodRunner`1+d__32[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,777: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.TestMethodRunner`1+d__32[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__32 ByRef) 2017-07-02 17:29:53,778: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestMethodRunner`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].RunTestCasesAsync() 2017-07-02 17:29:53,778: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestMethodRunner`1+d__31[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,778: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.TestMethodRunner`1+d__31[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__31 ByRef) 2017-07-02 17:29:53,778: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestMethodRunner`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].RunAsync() 2017-07-02 17:29:53,778: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestClassRunner`1+d__38[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,778: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.TestClassRunner`1+d__38[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__38 ByRef) 2017-07-02 17:29:53,778: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestClassRunner`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].RunTestMethodsAsync() 2017-07-02 17:29:53,778: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestClassRunner`1+d__37[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,779: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.TestClassRunner`1+d__37[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__37 ByRef) 2017-07-02 17:29:53,779: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestClassRunner`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].RunAsync() 2017-07-02 17:29:53,779: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCollectionRunner`1+d__28[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,779: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.TestCollectionRunner`1+d__28[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__28 ByRef) 2017-07-02 17:29:53,779: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCollectionRunner`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].RunTestClassesAsync() 2017-07-02 17:29:53,779: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCollectionRunner`1+d__27[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,779: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.TestCollectionRunner`1+d__27[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__27 ByRef) 2017-07-02 17:29:53,779: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCollectionRunner`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].RunAsync() 2017-07-02 17:29:53,779: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].InnerInvoke() 2017-07-02 17:29:53,780: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) 2017-07-02 17:29:53,780: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef) 2017-07-02 17:29:53,780: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task.ExecuteEntry() 2017-07-02 17:29:53,780: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.SynchronizationContextTaskScheduler+<>c.<.cctor>b__8_0(System.Object) 2017-07-02 17:29:53,780: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext(System.Threading.SendOrPostCallback, System.Object) 2017-07-02 17:29:53,780: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) 2017-07-02 17:29:53,780: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.MaxConcurrencySyncContext.WorkerThreadProc() 2017-07-02 17:29:53,780: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.XunitWorkerThread+<>c.b__5_0(System.Object) 2017-07-02 17:29:53,780: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) 2017-07-02 17:29:53,780: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef) 2017-07-02 17:29:53,780: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) 2017-07-02 17:29:56,113: INFO: proc(54): run_and_log_output: Output: /home/helixbot/dotnetbuild/work/a76bb1e6-b59a-4474-b968-349a33a1a278/Work/c20f7718-b704-4573-a6fa-c26ee4c0a9ba/Unzip/RunTests.sh: line 91: 8147 Aborted (core dumped) $RUNTIME_PATH/dotnet xunit.console.netcore.exe System.Net.Security.Tests.dll -xml testResults.xml -notrait category=nonnetcoreapptests -notrait category=nonlinuxtests -notrait category=failing 2017-07-02 17:29:56,145: INFO: proc(54): run_and_log_output: Output: Trying to find crash dumps for project: System.Net.Security.Tests 2017-07-02 17:29:56,145: INFO: proc(54): run_and_log_output: Output: No new dump file was found in /home/helixbot/dotnetbuild/work/a76bb1e6-b59a-4474-b968-349a33a1a278/Work/c20f7718-b704-4573-a6fa-c26ee4c0a9ba/Unzip 2017-07-02 17:29:56,148: INFO: proc(54): run_and_log_output: Output: ~/dotnetbuild/work/a76bb1e6-b59a-4474-b968-349a33a1a278/Work/c20f7718-b704-4573-a6fa-c26ee4c0a9ba/Unzip 2017-07-02 17:29:56,149: INFO: proc(54): run_and_log_output: Output: Finished running tests. End time=17:29:56. Return value was 134 2017-07-02 17:29:56,151: INFO: proc(58): run_and_log_output: Exit Code: 134 2017-07-02 17:29:56,152: ERROR: scriptrunner(82): _main: Error: No exception thrown, but XUnit results not created 2017-07-02 17:29:56,152: ERROR: helix_test_execution(83): report_error: Error running xunit None ~~~ @@ -11782,7 +11782,7 @@ ID Area Title Description 22778 area-Serialization Serialization test case DCS_BasicPerSerializerRoundTripAndCompare_SampleTypes_FailedInuapaot_InheritedFromIList_CanPassInReflectionOnly failed when targeting uapaot This case is a part of test case DCS_BasicPerSerializerRoundTripAndCompare_SampleTypes , it failed when **targeting `uapaot`** , so we move these scenarios into a new case. **Detail** : the class in these scenarios inherit from **IList** will fail when serialization, but it can pass in project ReflectionOnly. **Error Message** : System.Runtime.Serialization.InvalidDataContractException : Collection type 'SerializationTestTypes.SampleListExplicitWithoutDC' does not have a valid Add method. **Note** : I checked the test classes they already implement interface **IList** explicitly and have a method named **IList.Add**. 22779 area-Serialization Serialization test case DCS_BasicPerSerializerRoundTripAndCompare_Collections_FailedInuapaot_InCollections failed when targeting uapaot "This case is a part of test case DCS_BasicPerSerializerRoundTripAndCompare_Collections , it failed when **targeting `uapaot`** , so we move these scenarios into a new case. **Detail** : the class in these scenarios has **DataMember attribute decorate Collections type** ,has different result with baseline when serialization. **Baseline** : … … **Actual**: …… **Missing assembly information of the List**." 22780 area-Serialization Cleanup serialization code in unsupported types Mainly test code but in a few cases also production code. E.g. https://github.com/dotnet/corefx/blob/master/src/System.Collections.Concurrent/src/System/Collections/Concurrent/ConcurrentBag.cs#L42 cc @morganbr @danmosemsft @stephentoub -22781 area-Infrastructure System.Net.Http package 4.3.2 - redirect to 4.2.0.0, assembly loading failure "I know there's been a few issues with System.Net.Http, but after some searching I couldn't find anything that seems to relate to, or remedy, my issue. I'll be happy to move this somewhere else, provide more details, etc, as necessary. I have some .NET Framework 4.6.1 class libraries and ASP.NET MVC projects which reference this package: When they run, I get: ``` System.BadImageFormatException : Could not load file or assembly 'System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058) ----> System.BadImageFormatException : Could not load file or assembly 'file:///C:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\ref\System.Net.Http.dll' or one of its dependencies. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058) ----> System.BadImageFormatException : Cannot load a reference assembly for execution. ``` My workaround is to manually overwrite the assembly redirects which seem to be automatically generated very frequently whenever I update a number of NuGet references, with this: ``` ``` I'd like to either be able to use this latest version of the package without manually doing this, to understand why 4.2.0.0 is not working by design, or do whatever reconfiguration is necessary to stop the workaround being overwritten. If it's a helpful clue, netfx.force.conflict also appears in my bin folder at certain time (nuget restore?). A clean does not clear it away, but manually deleting the bin folder lets the project run successfully. Most of all, I'd like to feel less helpless / have the tools or knowledge to work out why this is happening by a logical process of elimination / deduction. I've been using and trying to find a way to get us on board the .NET Core train for quite a while. This is our first production project and is utilising some new .NET Core / .NET Standard libraries we have for some parts, and .NET Framework for others. It's been a very difficult experience so far, specifically any time .NET Framework assemblies are referencing netstandard ones. Through bashing against this kind of error for several weeks, I am piecing together facts and workarounds for NuGet versioning, redirects, reference assemblies, type forwarding, build file flags and a myriad of other nuggets. However, my knowledge is still evidently full of gaps. Is there a single place - or even a recommended set of places - where I can learn everything I need to know to have a project set up in this way? The knowledge set required to diagnose build and runtime errors in this kind of scenario so far seems huge, but I/we need to build this expertise internally. (Visual Studio 2017 15.3 Preview 6)" +22781 area-Infrastructure System.Net.Http package 4.3.2 - redirect to 4.2.0.0, assembly loading failure "I know there's been a few issues with System.Net.Http, but after some searching I couldn't find anything that seems to relate to, or remedy, my issue. I'll be happy to move this somewhere else, provide more details, etc, as necessary. I have some .NET Framework 4.6.1 class libraries and ASP.NET MVC projects which reference this package: When they run, I get: ``` System.BadImageFormatException : Could not load file or assembly 'System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058) ----> System.BadImageFormatException : Could not load file or assembly 'file:///C:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net462\ref\System.Net.Http.dll' or one of its dependencies. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058) ----> System.BadImageFormatException : Cannot load a reference assembly for execution. ``` My workaround is to manually overwrite the assembly redirects which seem to be automatically generated very frequently whenever I update a number of NuGet references, with this: ``` ``` I'd like to either be able to use this latest version of the package without manually doing this, to understand why 4.2.0.0 is not working by design, or do whatever reconfiguration is necessary to stop the workaround being overwritten. If it's a helpful clue, netfx.force.conflict also appears in my bin folder at certain time (nuget restore?). A clean does not clear it away, but manually deleting the bin folder lets the project run successfully. Most of all, I'd like to feel less helpless / have the tools or knowledge to work out why this is happening by a logical process of elimination / deduction. I've been using and trying to find a way to get us on board the .NET Core train for quite a while. This is our first production project and is utilising some new .NET Core / .NET Standard libraries we have for some parts, and .NET Framework for others. It's been a very difficult experience so far, specifically any time .NET Framework assemblies are referencing netstandard ones. Through bashing against this kind of error for several weeks, I am piecing together facts and workarounds for NuGet versioning, redirects, reference assemblies, type forwarding, build file flags and a myriad of other nuggets. However, my knowledge is still evidently full of gaps. Is there a single place - or even a recommended set of places - where I can learn everything I need to know to have a project set up in this way? The knowledge set required to diagnose build and runtime errors in this kind of scenario so far seems huge, but I/we need to build this expertise internally. (Visual Studio 2017 15.3 Preview 6)" 22785 area-Serialization Remove unused serialization members Fixes https://github.com/dotnet/corefx/issues/22780 Not sure what the intent of those types is. Their sole purpose is to serialize something. What should be do about them? - https://github.com/dotnet/corefx/blob/master/src/System.Security.Claims/src/System/Security/Claims/ClaimsIdentity.cs - https://github.com/dotnet/corefx/blob/master/src/System.Security.Claims/src/System/Security/Claims/GenericPrincipal.cs - https://github.com/dotnet/corefx/blob/master/src/System.Security.Principal.Windows/src/System/Security/Principal/WindowsPrincipal.cs 22786 area-Infrastructure Converge root scripts for Unix and Windows This is intended to be more a question than an issue. Currently we have to the following scripts with each two flavors for Unix and Windows: - build-managed - build-native - build-packages - build-tests - build - clean - init-tools - publish-packages - (run-test.sh) - run - sync Are there any plans to converge them? If yes, will we use the dotnet-cli for that? If not, what about using cross-platform powershell scripts? @weshaggard @ericstj 22787 area-Meta Enable RHEL6 and CentOS 6 RID detection in build This change adds RHEL6 and CentOS 6 RID detection to src/Native/build-native.sh. These distros don't have the /etc/os-release file and so we need to use another source - the /etc/redhat-release file. It is an exact copy of the same change merged in for CoreCLR. @@ -12114,7 +12114,7 @@ ID Area Title Description 23303 area-Infrastructure Update CoreClr, CoreFx to servicing-25621-01, servicing-25621-01, respectively (release/2.0.0) 23304 area-Serialization Error running build-tests > CSC : error CS1504: Source file 'd:\dotnet\corefx\Microsoft.XmlSerializer.Generator.Tests.XmlSerializers.cs' could not be opened ('The system cannot find the file specified. ') [d:\dotnet\corefx\src\Microsoft.XmlSerializer.Generator\tests \Microsoft.XmlSerializer.Generator.Tests.csproj] 23305 area-Infrastructure Installation is not compatible with Windows 7 -23306 area-System.Net System.Net.Http redirect errors in VS 15.3.0 "As requested by @karelz a dedicated bug to the issue mistakingly reported in #22781. Story: - Existing .NET 4.6 application, including System.Threading.Tasks.Dataflow 4.7.0 nuget package and System.Net.Http 4.3.2 package, redirects for System.Net.Http are configured - Nuget offers update of Dataflow to V 4.8.0 - After update, redirects for System.Net.Http warn that I should redirect to V 4.2.0 Note: If I don't touch the nuget update at all, no build errors occur Steps to reproduce in a small repro: 1. Create .NET 4.6 project 2. Add reference to Nuget System.Net.Http (V 4.3.2) package 3. Add binding redirect to ```xml ``` 4. Compile (no warnings) 5. According to Project references the Assembly version of System.Net.Http.dll is 4.1.1.1 6. Add reference to one of (there are probably more packages) - System.Threading.Tasks.Dataflow nuget (V4.8.0) - System.Buffers (V4.4.0) 7. Compile Expected result: No warnings Actual result: Consider app.config remapping of assembly ""System.Net.Http, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"" from Version ""4.1.1.1"" [c:\users\tornhoof\documents\visual studio 2017\Projects\NetHttpRepro\NetHttpRepro\bin\Debug\System.Net.Http.dll] to Version ""4.2.0.0"" [C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\ref\System.Net.Http.dll] to solve conflict and get rid of warning. Workaround: - Do what it suggests and replace the redirect with ```xml ``` I don't know why the build suddenly uses a library from the VS program directory and not from the NuGet packages. Note: Of the packages released on August 11th, not all are affected, e.g. System.Diagnostics.DiagnosticSource V4.4.1 does not show the behaviour. [EDIT] Fixed bullet points formatting to improve readability by @karelz" +23306 area-System.Net System.Net.Http redirect errors in VS 15.3.0 "As requested by @karelz a dedicated bug to the issue mistakingly reported in #22781. Story: - Existing .NET 4.6 application, including System.Threading.Tasks.Dataflow 4.7.0 nuget package and System.Net.Http 4.3.2 package, redirects for System.Net.Http are configured - Nuget offers update of Dataflow to V 4.8.0 - After update, redirects for System.Net.Http warn that I should redirect to V 4.2.0 Note: If I don't touch the nuget update at all, no build errors occur Steps to reproduce in a small repro: 1. Create .NET 4.6 project 2. Add reference to Nuget System.Net.Http (V 4.3.2) package 3. Add binding redirect to ```xml ``` 4. Compile (no warnings) 5. According to Project references the Assembly version of System.Net.Http.dll is 4.1.1.1 6. Add reference to one of (there are probably more packages) - System.Threading.Tasks.Dataflow nuget (V4.8.0) - System.Buffers (V4.4.0) 7. Compile Expected result: No warnings Actual result: Consider app.config remapping of assembly ""System.Net.Http, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"" from Version ""4.1.1.1"" [c:\users\tornhoof\documents\visual studio 2017\Projects\NetHttpRepro\NetHttpRepro\bin\Debug\System.Net.Http.dll] to Version ""4.2.0.0"" [C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net462\ref\System.Net.Http.dll] to solve conflict and get rid of warning. Workaround: - Do what it suggests and replace the redirect with ```xml ``` I don't know why the build suddenly uses a library from the VS program directory and not from the NuGet packages. Note: Of the packages released on August 11th, not all are affected, e.g. System.Diagnostics.DiagnosticSource V4.4.1 does not show the behaviour. [EDIT] Fixed bullet points formatting to improve readability by @karelz" 23307 area-System.Runtime Test Failure: UnloadingAndProcessExitTests on UAP not firing unloading events "Discovered failing test case in UWP CoreCLR x64 Debug Build (https://mc.dot.net/#/user/nchikanov/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/eea80bba9af50534e761788810fef3c3335cff4f/workItem/System.Runtime.Extensions.Tests/analysis/xunit/System.Tests.UnloadingAndProcessExitTests~2FUnloadingEventMustHappenBeforeProcessExitEvent) ` Xunit.Sdk.EqualException Windows.10.Amd64.ClientRS2.Open-Debug-x64 Unhandled Exception of Type Xunit.Sdk.EqualException Message : Assert.Equal() Failure\r\n ? (pos 0)\r\nExpected: \r\nActual: u0u1e0e1\r\n ? (pos 0) Stack Trace : at System.Tests.UnloadingAndProcessExitTests.UnloadingEventMustHappenBeforeProcessExitEvent() in D:\j\workspace\windows-TGrou---33cbf18b\src\System.Runtime.Extensions\tests\System\UnloadingAndProcessExitTests.netcoreapp.cs:line 34` **This test can be improved to help narrow down a repro:** 1. The Assert is backwards - expected is u0u1e0e1 2. Should dump ""s"" to the file before hooking the events and ""h"" after hooking- that way we could see if the events simply aren't firing. e.g. result should be ""shu0u1e0e1"" That will make it easier to follow up on continued failures" 23308 area-System.Data The type 'SqlDbType' is defined in both System.Data.SqlClient and netstandard 2.0 Noticed this while updating a library which uses Dapper (which is compatible with .NET standard 1.3+) Steps to reproduce: - Create library targeting .NET standard 2.0 - Reference Dapper - Add ``private SqlDbType _Type = SqlDbType.BigInt;`` to class in library Expected result: - No errors Actual result: CS0433 The type 'SqlDbType' exists in both 'System.Data.SqlClient, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' and 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' As far as I understand I should be able to reference any .NET standard library with a lower version number from 2.0. In this case Dapper. Dapper uses System.Data.SqlClient, but in 2.0 the SQL types moved into .NET Standard 2.0. I guess the ``System.Data.SqlClient`` nuget package is missing .NET standard 2.0 type forwards. 23310 area-Infrastructure Update CoreClr, CoreFx, CoreSetup, ProjectNTfs, ProjectNTfsTestILC, Standard to preview1-25616-02, preview1-25619-01, preview1-25618-02, rel-25618-00, rel-25618-00, preview1-25618-01, respectively (release/uwp6.0) @@ -12131,7 +12131,7 @@ ID Area Title Description 23328 area-System.Collections "Test: System.Collections.Tests.CaseInsensitiveHashCodeProviderTests/Default_Compare_TurkishI failed with ""Xunit.Sdk.TrueException""" Opened on behalf of @Jiayili1 The test `System.Collections.Tests.CaseInsensitiveHashCodeProviderTests/Default_Compare_TurkishI` has failed. Assert.True() Failure\r Expected: True\r Actual: False Stack Trace: at System.Collections.Tests.CaseInsensitiveHashCodeProviderTests.Default_Compare_TurkishI() in E:\A\_work\394\s\corefx\src\System.Collections.NonGeneric\tests\CaseInsensitiveHashCodeProviderTests.cs:line 190 Build : Master - 20170817.01 (UWP F5 Tests) Failing configurations: - Windows.10.Arm64-arm - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170817.01/workItem/System.Collections.NonGeneric.Tests/analysis/xunit/System.Collections.Tests.CaseInsensitiveHashCodeProviderTests~2FDefault_Compare_TurkishI 23329 area-System.Net avoid async overhead in ReadNextLineAsync Updated version of #23210 @stephentoub I'm blocked on getting perf data here for now, but I expect it to be similar to the previous PR. 23331 area-Infrastructure Cannot reference Foo(HttpResponseMessage) implemented in .NET Standard 2.0 library from .NET Framework 4.7 unit test library Create a .NET Standard 2.0 library with the following code: ```cs public static class Class1 { public static void Foo(HttpResponseMessage response) { } } ``` Then create a .NET Framework 4.7 unit test library with the following code: ```cs [TestClass] public class UnitTest1 { [TestMethod] public void TestMethod1() { Class1.Foo(new HttpResponseMessage(System.Net.HttpStatusCode.OK)); } } ``` Expected result: test passes. Actual result: `Message: Test method UnitTestProject2.UnitTest1.TestMethod1 threw exception: System.MissingMethodException: Method not found: 'Void ClassLibrary1.Class1.Foo(System.Net.Http.HttpResponseMessage)'.` -23332 area-System.Net SslStream AuthenticateAsClientAsync throws when running under netcoreapp2.0 I have an app that I've been porting from net461 to netcoreapp2.0 over the last few days and I've come across a problem when using SslStream. If I run the ported application as netcoreapp2.0 I get the following exception when running on Windows 7 x64 A call to SSPI failed, see inner exception. at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslStream.BeginAuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) at System.Net.Security.SslStream.BeginAuthenticateAsClient(String targetHost, AsyncCallback asyncCallback, Object asyncState) at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl[TArg1](Func`4 beginMethod, Func`2 endFunction, Action`1 endAction, TArg1 arg1, Object state, TaskCreationOptions creationOptions) at System.Threading.Tasks.TaskFactory.FromAsync[TArg1](Func`4 beginMethod, Action`1 endMethod, TArg1 arg1, Object state, TaskCreationOptions creationOptions) at System.Threading.Tasks.TaskFactory.FromAsync[TArg1](Func`4 beginMethod, Action`1 endMethod, TArg1 arg1, Object state) at System.Net.Security.SslStream.AuthenticateAsClientAsync(String targetHost) Inner exception details System.Security.Authentication.AuthenticationException occurred HResult=0x80131501 Message=A call to SSPI failed, see inner exception. Source= StackTrace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() Inner Exception 1: Win32Exception: The function requested is not supported If I then run the same app on an linux-arm board I get the following exception Unable to transfer data on the transport connection: Connection reset by peer. at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Net.FixedSizeReader.d__1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() If I run the app on Windows 7 as net461 it all works as excepted. On my Windows 7 machine I have OpenSSL installed and on path. It's version 1.0.2h On the Linux board I have version 1.0.2d In summary if I run the code as netcoreapp2.0 on linux-arm or Windows 7 I get an exception, if I run the same code but as net461 on Windows 7 everything works fine. I'm using the official release of the tooling from dot.net +23332 area-System.Net SslStream AuthenticateAsClientAsync throws when running under netcoreapp2.0 I have an app that I've been porting from net462 to netcoreapp2.0 over the last few days and I've come across a problem when using SslStream. If I run the ported application as netcoreapp2.0 I get the following exception when running on Windows 7 x64 A call to SSPI failed, see inner exception. at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslStream.BeginAuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) at System.Net.Security.SslStream.BeginAuthenticateAsClient(String targetHost, AsyncCallback asyncCallback, Object asyncState) at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl[TArg1](Func`4 beginMethod, Func`2 endFunction, Action`1 endAction, TArg1 arg1, Object state, TaskCreationOptions creationOptions) at System.Threading.Tasks.TaskFactory.FromAsync[TArg1](Func`4 beginMethod, Action`1 endMethod, TArg1 arg1, Object state, TaskCreationOptions creationOptions) at System.Threading.Tasks.TaskFactory.FromAsync[TArg1](Func`4 beginMethod, Action`1 endMethod, TArg1 arg1, Object state) at System.Net.Security.SslStream.AuthenticateAsClientAsync(String targetHost) Inner exception details System.Security.Authentication.AuthenticationException occurred HResult=0x80131501 Message=A call to SSPI failed, see inner exception. Source= StackTrace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() Inner Exception 1: Win32Exception: The function requested is not supported If I then run the same app on an linux-arm board I get the following exception Unable to transfer data on the transport connection: Connection reset by peer. at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Net.FixedSizeReader.d__1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() If I run the app on Windows 7 as net462 it all works as excepted. On my Windows 7 machine I have OpenSSL installed and on path. It's version 1.0.2h On the Linux board I have version 1.0.2d In summary if I run the code as netcoreapp2.0 on linux-arm or Windows 7 I get an exception, if I run the same code but as net462 on Windows 7 everything works fine. I'm using the official release of the tooling from dot.net 23333 area-System.Net Managed Handler: add some basic protocol tests for status line handling @stephentoub @Priya91 @wfurt 23334 area-Serialization Warnings on compiling Microsoft.XmlSerializer.Generator.Tests.csproj On compiling the project directly, several CS0219 warnings. On compiling from `build-tests`: ``` CSC : warning CS1691: 'false' is not a valid warning number [d:\dotnet\corefx\src\Microsoft.XmlSerializer.Generator\tes ts\Microsoft.XmlSerializer.Generator.Tests.csproj] CSC : warning CS1691: 'true' is not a valid warning number [d:\dotnet\corefx\src\Microsoft.XmlSerializer.Generator\test s\Microsoft.XmlSerializer.Generator.Tests.csproj] 23335 area-Serialization WarningsAsErrors and DisabledWarnings are not boolean. Remove `WarningsAsErrors` and set `DisabledWarnings` to `219` as that warning is given in several places. Fixes #23334 @@ -12189,7 +12189,7 @@ ID Area Title Description 23400 area-Serialization Workaround sgen automation errors. The negative test will cause the CI failure. So just remove this test. And on some local machine, the CSC command will try to find the generated code from a root location. Still need understand why it happen. To workaround, just ignore the csc build error, and make the tests work without the generator. #23390 & #23304 @shmao @zhenlan @mconnew 23401 area-System.Net HttpClient Performance Slow Compared to .NET 4.7 "I have conducted a basic performance test of `HttpClient` in .NET Core 2.0 versus `HttpClient` in .NET Framework 4.7 and have noticed a gap in performance. The .NET Framework 4.7 `HttpClient/WebClient` outperforms .NET Core's `HttpClient` by ~1.5-2x in terms of how long it takes to complete a batch of _n_ requests. ### Testing The test is a console app (run in release mode on Windows 7 16GB 3.5GHz) with identical code for .NET Core/Framework that follows this sequence: 1. Create a single, shared HttpClient instance with a maximum of _n_ (for testing _n_=10,100) connections. ``` // .NET Core 2.0 var httpClient = new HttpClient(new HttpClientHandler { MaxConnectionsPerServer = 100 }); // .NET Framework 4.7 ServicePointManager.DefaultConnectionLimit = 100; var httpClient = new HttpClient(); // .NET Framework 4.7 - WebClient instance is created ONCE PER REQUEST ServicePointManager.DefaultConnectionLimit = 100; var webClient = new WebClient(); ``` 2. Start 10,000 simulataneous requests and time how long each request takes to complete + how long all take to complete. Here is code demonstrating how requests are made / timed. ``` private void RunTest(int count) { // requests is a list of Request data structures used to store individual request latency / responses var requests = Enumerable.Range(0, count).Select(j => CreateRequest(j)).ToList(); // this stopwatch is for duration of all requests var stopwatch = Stopwatch.StartNew(); // start all requests and wait for completion var requestTasks = requests.Select(MakeRequest).ToArray(); Task.WaitAll(requestTasks); stopwatch.Stop(); // total run time = stopwatch.ElapsedMilliseconds } private Task MakeRequest(Request request) { var stopwatch = Stopwatch.StartNew(); var response = await httpClient.GetStringAsync(request.Url); stopwatch.Stop(); // save request duration and response request.DurationMs = stopwatch.ElapsedMilliseconds; request.ResponseId = ParseResponse(response); } ``` I am testing against a basic python server that is well under capacity to rule out any server side bottlenecks. The server returns a simple JSON response containing an `id` field which is used to validate the HttpClient responses. ``` { ""id"": ""some_identifier"" } ``` JSON deserialization / response validation is NOT included in performance stats. ### Results These are average statistics (in milliseconds) of 5 separate runs of 10,000 requests each. It is worth mentioning that the actual time spent on each request was much less with .NET Core's HttpClient, it's just that the batch of requests takes longer to complete as a whole vs .NET Framework. | framework | total run time (ms) | avg req time (ms) | median req time (ms) | total time spent on requests (s) | |---------------|---------------------|-------------------|----------------------|----------------------------------| | .NET Core 2.0 | 5614 | 216 | 282 | 777 | | .NET 4.7 | 3055 | 1355 | 1339 | 10,585 |" 23402 area-Microsoft.CSharp Fix duplicate types exception on WinRT interfaces For certain WinRT types like `Windows.Foundation.Collections.IPropertySet`, when using the dynamic C# binder and calling a method, for example `Add(key, value)`, the binder creates the type hierarchy and tries to bind the base method. The existing code tries to bind implemented interfaces both in the AggregateType's t ype hierarchy and WinRT interfaces, and ends up with duplicates, which results in: ```Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:The call is ambiguous between the following methods or properties: 'System.Collections.Generic.IDictionary.Add(string, object)' and 'System.Collections.Generic.IDictionary.Add(string, object)'``` The simple workaround for now is to use a `HashSet` to store these interfaces, so that we don't end up passing duplicates up the call chain. A smarter way of filtering out types that we know for sure are not applicable should be considered in the future. DevDiv #476163 -23404 area-System.Net FtpWebRequest on core does not reuse connections "FtpWebRequest on .net core connects and disconnects for every operation: ![image](https://user-images.githubusercontent.com/1697911/29480430-1aeaaf88-842d-11e7-8359-3e4f07b1e579.png) Eventually hitting connection rate limit: ![image](https://user-images.githubusercontent.com/1697911/29480440-2e2bbb6e-842d-11e7-99b9-0d55aebb2e35.png) Same code on net461 reuses connection: ![image](https://user-images.githubusercontent.com/1697911/29480455-43bcbcda-842d-11e7-8348-6b85efcc533a.png) Code: ``` c# var request = (FtpWebRequest) WebRequest.Create(address); request.Method = WebRequestMethods.Ftp.UploadFile; request.KeepAlive = true; request.UseBinary = true; request.Credentials = new NetworkCredential(publishingProfile.FtpUsername, publishingProfile.FtpPassword); request.ConnectionGroupName = ""group""; using (var fileStream = File.OpenRead(file.FullName)) { using (var requestStream = await request.GetRequestStreamAsync()) { await fileStream.CopyToAsync(requestStream); } } await request.GetResponseAsync(); ``` " +23404 area-System.Net FtpWebRequest on core does not reuse connections "FtpWebRequest on .net core connects and disconnects for every operation: ![image](https://user-images.githubusercontent.com/1697911/29480430-1aeaaf88-842d-11e7-8359-3e4f07b1e579.png) Eventually hitting connection rate limit: ![image](https://user-images.githubusercontent.com/1697911/29480440-2e2bbb6e-842d-11e7-99b9-0d55aebb2e35.png) Same code on net462 reuses connection: ![image](https://user-images.githubusercontent.com/1697911/29480455-43bcbcda-842d-11e7-8348-6b85efcc533a.png) Code: ``` c# var request = (FtpWebRequest) WebRequest.Create(address); request.Method = WebRequestMethods.Ftp.UploadFile; request.KeepAlive = true; request.UseBinary = true; request.Credentials = new NetworkCredential(publishingProfile.FtpUsername, publishingProfile.FtpPassword); request.ConnectionGroupName = ""group""; using (var fileStream = File.OpenRead(file.FullName)) { using (var requestStream = await request.GetRequestStreamAsync()) { await fileStream.CopyToAsync(requestStream); } } await request.GetResponseAsync(); ``` " 23405 area-Microsoft.CSharp Regression in dynamic method invocation in .NET Core 2.0 _From @DavidZidar on August 18, 2017 22:45_ I've discovered a regression where calling a generic method with a dynamic argument throws an exception in .NET Core 2.0 but not in previous versions. Here is a small program that cause the bug. https://github.com/DavidZidar/DynamicProblems/blob/ad51939ec05bd840bf441e9653d6fb608872e6ce/DynamicProblems/Program.cs#L7-L36 The problematic type signature is as follows `void HandleMessage(IQuery query)` As you can see in the example, invoking the method with TResult of `List<>` works fine but with `ImmutableList<>` the runtime binder throws the following exception. ``` Length cannot be less than zero. Parameter name: length at System.String.Substring(Int32 startIndex, Int32 length) at Microsoft.CSharp.RuntimeBinder.Syntax.NameTable.Add(String key, Int32 length) at Microsoft.CSharp.RuntimeBinder.Syntax.NameManager.Add(String key, Int32 length) at Microsoft.CSharp.RuntimeBinder.SymbolTable.GetName(Type type) at Microsoft.CSharp.RuntimeBinder.SymbolTable.LoadSymbolsFromType(Type originalType) at Microsoft.CSharp.RuntimeBinder.SymbolTable.GetConstructedType(Type type, AggregateSymbol agg) at Microsoft.CSharp.RuntimeBinder.SymbolTable.LoadSymbolsFromType(Type originalType) at Microsoft.CSharp.RuntimeBinder.SymbolTable.GetCTypeArrayFromTypes(IList`1 types) at Microsoft.CSharp.RuntimeBinder.SymbolTable.SetInterfacesOnAggregate(AggregateSymbol aggregate, Type type) at Microsoft.CSharp.RuntimeBinder.SymbolTable.AddAggregateToSymbolTable(NamespaceOrAggregateSymbol parent, Type type) at Microsoft.CSharp.RuntimeBinder.SymbolTable.LoadSymbolsFromType(Type originalType) at Microsoft.CSharp.RuntimeBinder.SymbolTable.GetConstructedType(Type type, AggregateSymbol agg) at Microsoft.CSharp.RuntimeBinder.SymbolTable.LoadSymbolsFromType(Type originalType) at Microsoft.CSharp.RuntimeBinder.SymbolTable.GetCTypeArrayFromTypes(IList`1 types) at Microsoft.CSharp.RuntimeBinder.SymbolTable.SetInterfacesOnAggregate(AggregateSymbol aggregate, Type type) at Microsoft.CSharp.RuntimeBinder.SymbolTable.AddAggregateToSymbolTable(NamespaceOrAggregateSymbol parent, Type type) at Microsoft.CSharp.RuntimeBinder.SymbolTable.LoadSymbolsFromType(Type originalType) at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.GetArgumentType(ICSharpBinder p, CSharpArgumentInfo argInfo, Expression param, DynamicMetaObject arg, Int32 index) at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.CreateArgumentArray(ICSharpBinder payload, Expression[] parameters, DynamicMetaObject[] args) at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.BindCore(ICSharpBinder payload, Expression[] parameters, DynamicMetaObject[] args, DynamicMetaObject& deferredBinding) at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.Bind(DynamicMetaObjectBinder payload, Expression[] parameters, DynamicMetaObject[] args, DynamicMetaObject& deferredBinding) at Microsoft.CSharp.RuntimeBinder.BinderHelper.Bind(DynamicMetaObjectBinder action, RuntimeBinder binder, DynamicMetaObject[] args, IEnumerable`1 arginfos, DynamicMetaObject onBindingError) at Microsoft.CSharp.RuntimeBinder.CSharpInvokeMemberBinder.FallbackInvokeMember(DynamicMetaObject target, DynamicMetaObject[] args, DynamicMetaObject errorSuggestion) at System.Dynamic.DynamicMetaObject.BindInvokeMember(InvokeMemberBinder binder, DynamicMetaObject[] args) at System.Dynamic.InvokeMemberBinder.Bind(DynamicMetaObject target, DynamicMetaObject[] args) at System.Dynamic.DynamicMetaObjectBinder.Bind(Object[] args, ReadOnlyCollection`1 parameters, LabelTarget returnLabel) at System.Runtime.CompilerServices.CallSiteBinder.BindCore[T](CallSite`1 site, Object[] args) at System.Dynamic.UpdateDelegates.UpdateAndExecuteVoid2[T0,T1](CallSite site, T0 arg0, T1 arg1) at DynamicProblems.Program.Main(String[] args) in c:\code\test\DynamicProblems\DynamicProblems\Program.cs:line 27 ``` If you change TargetFramework to netcoreapp1.1 in the csproj file then everything works as expected. _Copied from original issue: dotnet/coreclr#13478_ 23406 area-System.Memory Enable System.Runtime.CompilerServices.Unsafe and System.Memory tests for UAP We need to get targeted unit test for Span enabled. They are very likely uncover bugs that will be hard to track down otherwise (e.g. #23073). 23407 area-System.Data System.Data.DataSetExtensions Test Failures with Unbox Tests fail fast / crash when running ILCBuildType=ret in System.Data.DataSetExtensions on UapAot. Test do not fail when ILCBuildType=chk. This is likely a code gen bug. **Failure Location**: (One of many) https://github.com/dotnet/corefx/blob/73f62d06803d086ee7f6745b55dfde63e27be779/src/System.Data.DataSetExtensions/tests/Mono/EnumerableRowCollectionTest.cs#L99-L102 Then Field calls UnboxT, where there is a failure: `Exception Unhandled: Unhandled exception at 0x00007FFA233500A0 (xunit.console.netcore.dll) in xunit.console.netcore.exe: 0x80004005: Unspecified error.` https://github.com/dotnet/corefx/blob/73f62d06803d086ee7f6745b55dfde63e27be779/src/System.Data.DataSetExtensions/src/System/Data/DataRowExtensions.cs#L146 **Execution failed on:** Windows.10.Amd64.ClientRS3-x64:Release Windows.10.Amd64.ClientRS3-x64:Debug Windows.10.Amd64.ClientRS3-x86:Debug Windows.10.Amd64.ClientRS3-x86:Release Windows.10.Amd64-x86:Debug **Error message**: `Access Violation: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. The application will be terminated since this platform does not support throwing an AccessViolationException.` **Call stack**: ``` xunit.console.netcore.dll!$14_System::Data::DataRowExtensions::UnboxT$1..cctor() Line 146 xunit.console.netcore.dll!System::Runtime::CompilerServices::ClassConstructorRunner.EnsureClassConstructorRun(System::Runtime::CompilerServices::StaticClassConstructionContext * pContext) Line 92 xunit.console.netcore.dll!System::Runtime::CompilerServices::ClassConstructorRunner.CheckStaticClassConstruction(void * returnValue, System::Runtime::CompilerServices::StaticClassConstructionContext * pContext) Line 38 xunit.console.netcore.dll!$14_System::Data::DataRowExtensions.Field($13_System::Data::DataRow & InstParam, System::String & row) Line 27 xunit.console.netcore.dll!$15_MonoTests::System::Data::EnumerableRowCollectionTest::<>c.b__3_2($13_System::Data::DataRow & line) Line 161 [Inline Frame] xunit.console.netcore.dll!System::Func$2::Invoke(System::__Canon &) Line 16707565 xunit.console.netcore.dll!$26_System::Linq::Enumerable::SelectEnumerableIterator$2.MoveNext() Line 131 xunit.console.netcore.dll!$15_MonoTests::System::Data::EnumerableRowCollectionTest.QueryWhereSelectOrderByDescending() Line 135 ``` cc: @danmosemsft @safern @@ -12365,13 +12365,13 @@ ID Area Title Description 23632 area-System.Drawing Disable System.Drawing.Tests flaky test failing in CI Relates to: #21886 cc: @danmosemsft @mellinoe 23633 area-Infrastructure Add BinPlaceConfiguration for test projects to have a working directory per BuildConfiguration This changes depends on: https://github.com/dotnet/buildtools/pull/1652 and a BuildTools update once that is merged. Fixes: https://github.com/dotnet/buildtools/issues/1587 ## New Behavior with this change With this change we will have the next behavior when building/running tests: - When building the tests we will still bin place the test assets to the `OutputDirectory` (`corefx\bin\OSGroup.Configuration\TestProject\TargetGroup\`) - When running the tests we will bin place the tests assets to this new [`TestPath`](https://github.com/dotnet/corefx/pull/23633/files#diff-4de71e7a0fd952be821f8af2768281dcR34) which will be the `TestPath`. This new path will be the test's working directory where we will bin place the RunTests.cmd and necessary dependencies in tests.targets. Also the `testResults.xml` will be found here after the test execution. - `TestPath` is set to be `bin/tests///` (i.e `corefx\bin\tests\System.Collections.Immutable.Tests\netcoreapp-Windows_NT-Debug-x64`) in `dir.props` - This `TestPath` will be added to the `BinPlaceDir` in `FrameworkTargeting.targets` when `BinPlaceTest` is set to true. - Then in the [`BinPlaceFiles`](https://github.com/safern/buildtools/blob/4d39247ff2c152ac50ade6128a44afc6f9993ca2/src/Microsoft.DotNet.Build.Tasks/PackageFiles/FrameworkTargeting.targets#L243) target the test assets will be hardlinked to the `TestPath`. This will isolate every test execution per build configuration and will allow people to run the same test project for all of the supported configurations on the same repo without having to clean the repo. cc: @weshaggard @ericstj @joperezr FYI: @danmosemsft 23636 area-System.Drawing System.Drawing: Consolidate the Brushes class Use the Windows implementation of the `Brushes` class for both Windows and Unix. Update the P/Invoke declarations accordingly. -23639 area-System.Net IPAddress.Parse incorrectly parsing invalid IPv6 addresses "Prior to upgrading to .NET Core 2.0, this would throw a FormatException (note the extra character in the final hextet): IPAddress.Parse(""3fff:ffff:ffff:ffff:ffff:ffff:ffff:abcde""); Following the upgrade, the code above parses as if the first character were not there i.e as equivalent to: IPAddress.Parse(""3fff:ffff:ffff:ffff:ffff:ffff:ffff:bcde""); Additional characters in any of the first seven hextets do still cause the expected FormatException to be thrown: IPAddress.Parse(""3fff:ffff:ffff:ffff:ffff:ffff:affff:ffff""); Is this an intentional change of behavior from NetCoreApp1.1 and Net461?" +23639 area-System.Net IPAddress.Parse incorrectly parsing invalid IPv6 addresses "Prior to upgrading to .NET Core 2.0, this would throw a FormatException (note the extra character in the final hextet): IPAddress.Parse(""3fff:ffff:ffff:ffff:ffff:ffff:ffff:abcde""); Following the upgrade, the code above parses as if the first character were not there i.e as equivalent to: IPAddress.Parse(""3fff:ffff:ffff:ffff:ffff:ffff:ffff:bcde""); Additional characters in any of the first seven hextets do still cause the expected FormatException to be thrown: IPAddress.Parse(""3fff:ffff:ffff:ffff:ffff:ffff:affff:ffff""); Is this an intentional change of behavior from NetCoreApp1.1 and net462?" 23640 area-System.Net Only strip initial ? in HttpUtility.ParseQueryString once. Fixes #23574 23641 area-Infrastructure CI Failure: error: libunwind.so.8: cannot open shared object file: No such file or directory The `Linux x64 Release Build` CI failed when I ran this PR: https://github.com/dotnet/corefx/pull/23596 ```sh 2017-08-29 08:59:09,715: INFO: proc(54): run_and_log_output: Output: total elapsed time 0:00:00.160024 2017-08-29 08:59:09,766: INFO: proc(54): run_and_log_output: Output: Failed to load �J!�, error: libunwind.so.8: cannot open shared object file: No such file or directory 2017-08-29 08:59:09,766: INFO: proc(54): run_and_log_output: Output: Failed to bind to CoreCLR at '/home/helixbot/dotnetbuild/work/ba5f7733-09d1-46b9-bf98-58f68a1b0b8e/Payload/shared/Microsoft.NETCore.App/9.9.9/libcoreclr.so' 2017-08-29 08:59:09,787: INFO: proc(54): run_and_log_output: Output: Trying to find crash dumps for project: System.Data.SqlClient.Tests ``` Full log can be found at https://mc.dot.net/#/user/mazong1123/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/edb0e549ee2d27b9496f4d09731171a38ff6cb29/workItem/Microsoft.CSharp.Tests/wilogs Seems like an environment issue. 23642 area-System.Runtime Replace span-based optional arguments with fixed overloads When I outlined what span-based {Try}Parse methods I thought we should have on primitive types (int, long, etc.), I tried to keep the list of overloads short by using optional parameters. For example, Int32 has these string-based Parse methods: ```C# public static int Parse(string s); public static int Parse(string s, NumberStyles style); public static int Parse(string s, NumberStyles style, IFormatProvider provider); public static int Parse(string s, IFormatProvider provider); ``` and I suggested (and we agreed on and we now have) adding just one span-based one to cover them all: ```C# public static int Parse(ReadOnlySpan s, NumberStyles style = NumberStyles.Integer, IFormatProvider provider = null); ``` For the most part, that’s seemed to work well, in terms of the experience I’ve had then consuming this in other code. However, it’s worked less well in my experience for TryParse. For TryParse, Int32 has: ```C# public static bool TryParse(string s, out int result); public static bool TryParse(string s, NumberStyles style, IFormatProvider provider, out int result); ``` and we’ve now added: ```C# public static bool TryParse(ReadOnlySpan s, out int result, NumberStyles style = NumberStyles.Integer, IFormatProvider provider = null); ``` The problem is in the order of the arguments. Because the optional parameters need to come at the end of the signature, the `out int result` argument is now in the middle, differing from the corresponding long overload that works with a string. When converting code from being string-based to span-based, for me at least this has been jarring and hasn’t been a pit of success. For example, let’s say you’ve got code like this: https://github.com/dotnet/corefx/blob/master/src/Common/src/Interop/Linux/procfs/Interop.ProcFsStat.cs#L133-L138 ```C# string startingString = s.Substring(start, pos); if (long.TryParse(startingString, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out startingAddress)) { string endingString = s.Substring(pos + 1, end - (pos + 1)); long.TryParse(endingString, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out endingAddress); } ``` It’s pretty straightforward to replace the `.Substring` with `.AsReadOnlySpan().Slice`: ```C# ReadOnlySpan startingString = s.AsReadOnlySpan().Slice(start, pos); if (long.TryParse(startingString, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out startingAddress)) { ReadOnlySpan endingString = s.AsReadOnlySpan().Slice(pos + 1, end - (pos + 1)); long.TryParse(endingString, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out endingAddress); } ``` but then that doesn’t compile because the arguments are in the wrong order, and the developer needs to realize the problem and take the extra step of changing the code to be: ```C# ReadOnlySpan startingString = s.AsReadOnlySpan().Slice(start, pos); if (long.TryParse(startingString, out startingAddress, NumberStyles.HexNumber, CultureInfo.InvariantCulture)) { ReadOnlySpan endingString = s.AsReadOnlySpan().Slice(pos + 1, end - (pos + 1)); long.TryParse(endingString, out endingAddress, NumberStyles.HexNumber, CultureInfo.InvariantCulture); } ``` We should back away from the optional parameters here for TryParse, and add the same set of overloads as we have for strings. In most cases, it should mean adding only one or two more methods. 23643 area-System.Console Wrong text encoding on console apps I have a console app made in dotnet core which, among other things, receive text input using Console.ReadLine. This works fine except when entering words using non english characters (áéíóúñ) I can write such text without problem using Console.WriteLine and debugging I can see the text received have the usual marker for invalid character. This is happening in dotnet core 1.1.0 -23645 area-System.Runtime Runtime error with [OnDeserialized] in netstandard2.0 library running in framework461 project 1. Create new Project 1. Create net461 app (A) 1. Create netstandard2.0 class library with the below code (B) 1. Reference (B) in (A) 1. Try and compile ```cs using System; using System.Runtime.Serialization; namespace ClassLibraryNetStandard20 { [Serializable] public class SerializableClass : ISerializable { private readonly string _value; public SerializableClass(string value) { _value = value; } public SerializableClass(SerializationInfo info, StreamingContext context) { _value = info.GetString(nameof(Value)); } public string Value => _value; public void GetObjectData(SerializationInfo info, StreamingContext context) { info.AddValue(nameof(Value), _value); } [OnDeserialized] private void OnDeserialized(StreamingContext context) { } } } ``` Runtime error of: > Type 'ClassLibraryNetStandard20.SerializableClass' in assembly 'ClassLibraryNetStandard20, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' has method 'OnDeserialized' with an incorrect signature for the serialization attribute that it is decorated with. ------ N.B. this works fine if (B) targets net461 -23646 area-System.Net System.ServiceModel.BasicHttpBinding throwing InvalidOperationException in dotnet core 2.0 I am getting an invalid operation exception calling an external web service when setting the proxy settings on the BasicHttpBinding class. The error is: When using a non-null Proxy, the WindowsProxyUsePolicy property must be set to WindowsProxyUsePolicy.UseCustomProxy. (Source: System.Net.Http.WinHttpHandler) My code: ```c# var binder1 = new BasicHttpBinding(); binder1.UseDefaultWebProxy = false; binder1.ProxyAddress = proxyAddress; ``` Removing these two lines (so it uses the machines default proxy settings) results in a successful web service call. From Dudod's comments in https://github.com/dotnet/wcf/issues/1592 it seems it may be related to the WinHttpHandler implementation. I'm using Visual Studio 2017 version 15.3.0, my dll is targeting netstandard2.0 and I am using version 2.0.0 of the sdk. I'm testing this code using xunit tests targeting netcoreapp2.0. FYI if I switch the unit test target from netcoreapp2.0 to net461 the above code works. [EDIT[ Fix C# syntax highlighting by @karelz +23645 area-System.Runtime Runtime error with [OnDeserialized] in netstandard2.0 library running in framework461 project 1. Create new Project 1. Create net462 app (A) 1. Create netstandard2.0 class library with the below code (B) 1. Reference (B) in (A) 1. Try and compile ```cs using System; using System.Runtime.Serialization; namespace ClassLibraryNetStandard20 { [Serializable] public class SerializableClass : ISerializable { private readonly string _value; public SerializableClass(string value) { _value = value; } public SerializableClass(SerializationInfo info, StreamingContext context) { _value = info.GetString(nameof(Value)); } public string Value => _value; public void GetObjectData(SerializationInfo info, StreamingContext context) { info.AddValue(nameof(Value), _value); } [OnDeserialized] private void OnDeserialized(StreamingContext context) { } } } ``` Runtime error of: > Type 'ClassLibraryNetStandard20.SerializableClass' in assembly 'ClassLibraryNetStandard20, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' has method 'OnDeserialized' with an incorrect signature for the serialization attribute that it is decorated with. ------ N.B. this works fine if (B) targets net462 +23646 area-System.Net System.ServiceModel.BasicHttpBinding throwing InvalidOperationException in dotnet core 2.0 I am getting an invalid operation exception calling an external web service when setting the proxy settings on the BasicHttpBinding class. The error is: When using a non-null Proxy, the WindowsProxyUsePolicy property must be set to WindowsProxyUsePolicy.UseCustomProxy. (Source: System.Net.Http.WinHttpHandler) My code: ```c# var binder1 = new BasicHttpBinding(); binder1.UseDefaultWebProxy = false; binder1.ProxyAddress = proxyAddress; ``` Removing these two lines (so it uses the machines default proxy settings) results in a successful web service call. From Dudod's comments in https://github.com/dotnet/wcf/issues/1592 it seems it may be related to the WinHttpHandler implementation. I'm using Visual Studio 2017 version 15.3.0, my dll is targeting netstandard2.0 and I am using version 2.0.0 of the sdk. I'm testing this code using xunit tests targeting netcoreapp2.0. FYI if I switch the unit test target from netcoreapp2.0 to net462 the above code works. [EDIT[ Fix C# syntax highlighting by @karelz 23650 area-System.Drawing CopyFromScreen tests causing intermittent failures ``` System.Drawing.Tests.GraphicsTests.CopyFromScreen_ValidRange_AffectsGraphics(sourceX: 1, sourceY: 1, destinationX: 2, destinationY: 2, width: 3, height: 3) [FAIL] 20:39:03 System.ComponentModel.Win32Exception : The handle is invalid 20:39:03 Stack Trace: 20:39:03 at System.Drawing.Graphics.CopyFromScreen(Int32 sourceX, Int32 sourceY, Int32 destinationX, Int32 destinationY, Size blockRegionSize, CopyPixelOperation copyPixelOperation) 20:39:03 at System.Drawing.Graphics.CopyFromScreen(Int32 sourceX, Int32 sourceY, Int32 destinationX, Int32 destinationY, Size blockRegionSize) ``` I believe these tests are invalid, given that they are failing against the .NET Framework. We should give them some scrutiny, and potentially remove them. 23653 area-System.Net Add minimal handling for HTTP 1.0 requests to ManagedHandler More work may need to be done but this at least fixes issues covered by existing tests. We may add more checks to disable 1.1 extensions for 1.0 requests. fixes #23132 23654 area-Infrastructure Blocking: Package restore failing with nuget errors. "As of this morning, any attempt to ""sync -p"" (master branch, synced to current bits, ""git clean -xdf"" done), aborts with this set of error messages (which seems to me like they should be warnings.) ``` c:\dd\CoreFx\external\test-runtime\XUnit.Runtime.depproj : error NU1603: Microsoft.xunit.netcore.extensions 1.0.1-prerelease-01911-02 depends on System.Linq.Expressions (>= 4.0.11) but System.Linq.Expressions 4.0.11 was not found. An approximate best match of System.Linq.Expressions 4.1.0 was resolved. c:\dd\CoreFx\external\test-runtime\XUnit.Runtime.depproj : error NU1603: Microsoft.xunit.netcore.extensions 1.0.1-prerelease-01911-02 depends on System.Text.RegularExpressions (>= 4.0.12) but System.Text.RegularExpressions 4.0.12 was not found. An approximate best match of System.Text.RegularExpressions 4.1.0 was resolved. c:\dd\CoreFx\external\test-runtime\XUnit.Runtime.depproj : error NU1603: xunit.console.netcore 1.0.3-prerelease-00921-01 depends on System.Text.RegularExpressions (>= 4.0.12) but System.Text.RegularExpressions 4.0.12 was not found. An approximate best match of System.Text.RegularExpressions 4.1.0 was resolved. c:\dd\CoreFx\Tools\packageresolve.targets(42,5): error MSB3073: The command """"c:\dd\CoreFx\Tools/dotnetcli/dotnet.exe"" restore --packages ""c:\dd\CoreFx\packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json c:\dd\CoreFx\external\test-runtime\XUnit.Runtime.depproj /p:TargetGroup=netstandard /p:ConfigurationGroup=Debug /p:ArchGrou p=x64 /p:OSGroup=AnyOS /p:TargetFramework=netstandard2.0 -r win10-x64 "" exited with code 1. [c:\dd\CoreFx\external\test-runtime\XUnit.Runtime.depproj] ``` Syncing back to commits that I knew worked yesterday and retrying just produces other nuget errors. This looks like something changed nuget configuration on my box althought I thought corefx was supposed to be insulated from that. Can anybody assist. @ericstj ; @weshaggard " @@ -12510,7 +12510,7 @@ ID Area Title Description 23827 area-System.Net System.Net.Http httpClient ServerCertificateCustomValidationCallback does not include the intermediate certificates provided by the server "When we assign a callback to ServerCertificateCustomValidationCallback (SCCVC) (tested on Win7/Win8.1,) the passed ""chain"" arg only includes the server certificate but no intermediate certs passed by the server. The ""chain"" only has multiple ChainElements if the server cert is signed by a certificate, intermediate or root, that exists in the local store. If we have a cert signed by an intermediate CA and that cert is chained by the server, even if that CA cert is in turn signed by a root/intermediate CA that exists in the store, the chain will not include any of the intermediate certificates, and will show just the server certificate. In such a case where the root cert exists in the store and the intermediate cert is chained by the HTTPS server, the request will go through successfully when no callback is defined, yet show up in the callback with ChainElements.Count == 1 and SslPolicyErrors != none; which some might find a smidge ironic. The following are the current behaviors and the corresponding behavior in the ServerCertificateValidationCallback (SCVC) in .NET Framework which I assume should be the expected behavior here. 1) When the server passes a certificate chain and a given certificate is _different_ to the one in the store for the same CN/SAN, SCCVC gets the store cert, while SCVC (expected) gets the one passed by the server. 2) When the server passes a certificate chain which does not conflict with the store, SCCVC does not get any of the certificates passed to ""chain"" other than the server cert itself. Expected behavior per SCVC is to have the server intermediate certs passed along and ADDITIONAL certs, only if the final cert is not self-signed, added to the chain where appropriate. This is preventing us from using httpClient in production. We have our certs signed by an intermediate CA which we cannot install on target systems' local cert stores. Furthermore, we use an internal root CA for testing and we would prefer to compare the CA cert to the final cert in the chain in the validation callback, rather than installing and re-installing certs as test CAs pop in and out of existence." 23828 area-System.Threading Add CancellationTokenRegistration.Token property When registering with a CancellationToken, a common pattern is to then store the resulting CancellationTokenRegistration onto some object for later disposal when the associated asynchronous operation completes. It's also common to store the original CancellationToken, so that it can, for example, be passed to TaskCompletionSource.TrySetCanceled. But having to store the CancellationToken in addition to the CancellationTokenRegistration should be unnecessary, as the registration already knows with which CancellationToken it's associated... it just doesn't expose that information. We should expose it. ```C# public struct CancellationTokenRegistration { public CancellationToken Token { get; } ... } ``` This property now exists, it's just internal: https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/Threading/CancellationTokenRegistration.cs#L44 We should simply make it public. This will allow us to shrink by a reference-sized field several objects that store the CT in addition to the CTR. 23829 area-System.Net Disable default proxy test on Desktop HttpClient test `ProxyExplicitlyProvided_DefaultCredentials_Ignored` has started failing on Desktop due to build system changes. Disabling for now. #23702 -23830 area-Infrastructure [Release/2.0.0] Reduce desktop targeted reference assemblies in 2.0 release See https://github.com/dotnet/corefx/issues/23505. The use of reference assemblies in 2.0 for desktop-targeted packages and netstandard support targets has resulted in a number of tooling issues. To help relieve these, we can dial back the number of reference assemblies we use. 1. Don't use reference assemblies at all for the support package / targets. - https://github.com/dotnet/corefx/pull/23711 - Will need to be ingested into SDK 2. For packages which have reference facades which are full facades, don't set the reference assembly bit. - https://github.com/dotnet/buildtools/pull/1663 - Needs to be ported to release/2.0.0 - The following packages will benefit from this: - Microsoft.Win32.Registry - System.CodeDom - System.ComponentModel.Annotations - System.Configuration.ConfigurationManager - System.Data.SqlClient - System.IO.Packaging - System.IO.Ports - System.Security.AccessControl - System.Security.Cryptography.Cng - for all but net461 see below - System.Security.Cryptography.Pkcs - System.Security.Cryptography.ProtectedData - System.Security.Cryptography.Xml - System.Security.Principal.Windows - System.ServiceProcess.ServiceController - System.Threading.Tasks.Extensions 3. For the remaining packages, consider excluding the desktop reference and instead using the implementation assembly as the reference (as we did in 1.x). These are the packages we shipped in 2.0 that contained reference assemblies with typedefs for desktop: - System.Numerics.Vectors - System.IO.FileSystem.AccessControl - System.IO.Pipes.AccessControl - System.Reflection.TypeExtensions - System.Security.Cryptography.Cng - only on net461 as a result of the netstandard remapping. Fix here is to drop those types from the reference for the netfx build. - System.Threading.AccessControl 1 is a must-fix for 2.0. For 2 and 3 we'd need to ship the individual packages and for that I'd like a shiproom read. +23830 area-Infrastructure [Release/2.0.0] Reduce desktop targeted reference assemblies in 2.0 release See https://github.com/dotnet/corefx/issues/23505. The use of reference assemblies in 2.0 for desktop-targeted packages and netstandard support targets has resulted in a number of tooling issues. To help relieve these, we can dial back the number of reference assemblies we use. 1. Don't use reference assemblies at all for the support package / targets. - https://github.com/dotnet/corefx/pull/23711 - Will need to be ingested into SDK 2. For packages which have reference facades which are full facades, don't set the reference assembly bit. - https://github.com/dotnet/buildtools/pull/1663 - Needs to be ported to release/2.0.0 - The following packages will benefit from this: - Microsoft.Win32.Registry - System.CodeDom - System.ComponentModel.Annotations - System.Configuration.ConfigurationManager - System.Data.SqlClient - System.IO.Packaging - System.IO.Ports - System.Security.AccessControl - System.Security.Cryptography.Cng - for all but net462 see below - System.Security.Cryptography.Pkcs - System.Security.Cryptography.ProtectedData - System.Security.Cryptography.Xml - System.Security.Principal.Windows - System.ServiceProcess.ServiceController - System.Threading.Tasks.Extensions 3. For the remaining packages, consider excluding the desktop reference and instead using the implementation assembly as the reference (as we did in 1.x). These are the packages we shipped in 2.0 that contained reference assemblies with typedefs for desktop: - System.Numerics.Vectors - System.IO.FileSystem.AccessControl - System.IO.Pipes.AccessControl - System.Reflection.TypeExtensions - System.Security.Cryptography.Cng - only on net462 as a result of the netstandard remapping. Fix here is to drop those types from the reference for the netfx build. - System.Threading.AccessControl 1 is a must-fix for 2.0. For 2 and 3 we'd need to ship the individual packages and for that I'd like a shiproom read. 23831 area-Infrastructure Switch OSX CI runs to use Helix 23832 area-System.Xml Make Xunit detect tests from Xml custom test fx (no more outerloop tests in S.P.Xml) This improves debuggability of XML tests. Before this PR when one of the test cases failed you couldn't tell which one (one test case was a batch of hundreds to thousands tests). This PR makes it so that XML custom test framework is feeding Xunit's theory with inline data which is enough to execute test and show description of the test case - this way we can nicely see a failure Fixes https://github.com/dotnet/corefx/issues/14855 Contributes to https://github.com/dotnet/corefx/issues/3133 23833 area-System.Linq LINQ Concat.ToArray outputs null elements when it shouldn't From @markples at https://github.com/dotnet/corefx/issues/23680#issuecomment-326906526 --- Here is a repro (from @vuminhle). It seems very specific - reducing the list sizes or changing the construction in various ways loses the repro. ```cs using System; using System.Collections.Generic; using System.Linq; namespace repro { internal class Program { private static void Main(string[] args) { A[] list = List1().Concat(List2()).Concat(List3()).ToArray(); foreach (A a in list) { Console.WriteLine(a.Value); } } internal static IEnumerable List1() { for (var i = 0; i < 4; i++) { yield return new A(i); } } internal static IEnumerable List2() { return Enumerable.Range(0, 2).Select(v => new A(v)); } internal static IEnumerable List3() { for (var i = 0; i < 5; i++) { yield return new A(i); } } internal class A { public A(int v) { Value = v; } public int Value { get; } } } } ``` @@ -12875,7 +12875,7 @@ ID Area Title Description 24357 area-System.Diagnostics [System.Diagnostics.Process]::GetProcesses(computer) returns local processes "Repro in PowerShell Core 6 ```powershell [System.Diagnostics.Process]::GetProcesses(""not existing computer"") ``` Expected ```none error not able to connect to computer ``` Actual ```none local processes returned ``` " 24358 area-System.Net Test: System.Net.Tests.HttpRequestStreamTests / Read_NullBuffer_ThrowsArgumentNullException Opened on behalf of @Jiayili1 The test `System.Net.Tests.HttpRequestStreamTests/Read_NullBuffer_ThrowsArgumentNullException(chunked: True)` has failed. System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: at System.Net.Tests.HttpRequestStreamTests.d__17.MoveNext$fin$0() in E:\A\_work\327\s\corefx\src\System.Net.HttpListener\tests\HttpRequestStreamTests.cs:line 16707566 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 Build : Master - 20170930.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170930.01/workItem/System.Net.HttpListener.Tests/analysis/xunit/System.Net.Tests.HttpRequestStreamTests~2FRead_NullBuffer_ThrowsArgumentNullException(chunked:%20True) 24360 area-System.Xml XmlDocument The name 'debuggerDisplayProxy' does not exist in the current context When I create a new XmlDocument the local variable is showing the following error error CS0103: The name 'debuggerDisplayProxy' does not exist in the current context ![image](https://user-images.githubusercontent.com/7502746/31047927-f6ac56ee-a5d8-11e7-9123-d7342f1a1dcc.png) -24361 area-System.Net Problem with HttpClient after updating my project from net461 to netcoreapp2.0 I have a piece of code that makes a httpRequest in a page in a domain www.example.gr i am redirected in a page (auth.example.gr) to login. I post some data to login and get the right cookies, so i can use the admin page. This code works fine with .net framework 461. When i test it with netcore 2.0, when i post the data to Login i get this error. > **The operation has been canceled** > **The read operation failed, see inner exception.** > at System.Net.Http.WinHttpResponseStream.d__18.MoveNext() > --- End of stack trace from previous location where exception was thrown --- > at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() > at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) > at System.Net.Http.HttpContent.d__48.MoveNext() > **Error while copying content to a stream.** > at System.Net.Http.WinHttpResponseStream.d__18.MoveNext() > --- End of stack trace from previous location where exception was thrown --- > at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() > at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) > at System.Net.Http.HttpContent.d__48.MoveNext() I don't know what else to provide to help you more. Please inform me. Thank you. +24361 area-System.Net Problem with HttpClient after updating my project from net462 to netcoreapp2.0 I have a piece of code that makes a httpRequest in a page in a domain www.example.gr i am redirected in a page (auth.example.gr) to login. I post some data to login and get the right cookies, so i can use the admin page. This code works fine with .net framework 461. When i test it with netcore 2.0, when i post the data to Login i get this error. > **The operation has been canceled** > **The read operation failed, see inner exception.** > at System.Net.Http.WinHttpResponseStream.d__18.MoveNext() > --- End of stack trace from previous location where exception was thrown --- > at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() > at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) > at System.Net.Http.HttpContent.d__48.MoveNext() > **Error while copying content to a stream.** > at System.Net.Http.WinHttpResponseStream.d__18.MoveNext() > --- End of stack trace from previous location where exception was thrown --- > at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() > at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) > at System.Net.Http.HttpContent.d__48.MoveNext() I don't know what else to provide to help you more. Please inform me. Thank you. 24362 area-System.Linq release/2.0: Fix handling of empty inputs to TakeLast (#24328) Fixes #24327 Port https://github.com/dotnet/corefx/pull/24328 to release/2.0.0 branch. 24363 area-System.Net WinHttpHandler not respecting case sensitivity of request `Connection` header (`Keep-Alive`) "The `WinHttpHandler` class (and I'm assuming WinHTTP) has an issue when sending the `Connection` HTTP header. The problem is that any requests sent through `WinHttpHandler` that are intended to be keep-alive always emit a header that reads `Connection: Keep-Alive` (note the casing of the header value). I am also looking for a workaround / alternatives, as I have no control over the server I am sending requests to (the server chokes on `Connection: Keep-Alive` but not `Connection: keep-alive`). Setup: - Dotnet Core 2.0.0 - Windows 10 Creators Update Notes: - Dotnet Core 2.0.0 on Ubuntu 16.04.2 LTS with `CurlHandler` does not exhibit this problem Unit Test: ``` public sealed class WinHttpHandlerTests { [Theory] [InlineData(""keep-alive"")] [InlineData(""KEEP-ALIVE"")] [InlineData(""Keep-Alive"")] [InlineData(""KEEP_ALIVE"")] public async Task ShouldRespectConnectionCaseSensitivity(string expectedHeaderValue) { using (var listener = new EchoingHttpListener()) using (var request = new HttpRequestMessage(HttpMethod.Get, $""http://localhost:{listener.Port}"")) { request.Headers.TryAddWithoutValidation(""Connection"", expectedHeaderValue); using (var client = new HttpClient(new WinHttpHandler())) using (var response = await client.SendAsync(request)) { var body = await response.Content.ReadAsStringAsync(); var actualHeaderValue = Regex.Match(body, ""Connection: (.*)\r\n"").Groups[1].Value; Assert.Equal(expectedHeaderValue, actualHeaderValue); } } } } internal sealed class EchoingHttpListener : IDisposable { private readonly CancellationTokenSource _cts = new CancellationTokenSource(); private readonly TcpListener _listener = new TcpListener(IPAddress.Any, 0); private readonly Task _listenTask; public EchoingHttpListener() { _listener.Start(); Port = ((IPEndPoint) _listener.LocalEndpoint).Port; var token = _cts.Token; _listenTask = Task.Run(async () => await Listen(token)); } private async Task Listen(CancellationToken token) { while (!token.IsCancellationRequested) { using (var client = await _listener.AcceptTcpClientAsync()) { var stream = client.GetStream(); var encoding = new UTF8Encoding(false); using (var reader = new StreamReader(stream, encoding, false, 2048, true)) using (var writer = new StreamWriter(stream, encoding, 2048, true)) { var request = await ReadRequestAsync(reader); await writer.WriteLineAsync(""HTTP/1.1 200 OK""); await writer.WriteLineAsync(""Connection: close""); await writer.WriteLineAsync(""Content-Type: text/plain; charset=utf-8""); await writer.WriteLineAsync($""Content-Length: {encoding.GetByteCount(request)}""); await writer.WriteLineAsync(); await writer.WriteAsync(request); } } } } private static async Task ReadRequestAsync(TextReader reader) { var sb = new StringBuilder(); string line; do { line = await reader.ReadLineAsync(); sb.AppendLine(line); } while (line != string.Empty); return sb.ToString(); } public int Port { get; } public void Dispose() { _listener.Stop(); _cts.Cancel(); try { _listenTask.Wait(); } catch { // ignored } _cts.Dispose(); } } ```" 24364 area-System.Diagnostics Static PerformanceCounterLib.GetPerformanceCounterLib is not thread-safe Outside of any locks GetPerformanceCounterLib both reads and writes to a normal. static `Dictionary<>`. https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.Process/src/System/Diagnostics/PerformanceCounterLib.cs#L74-L78 @@ -12960,7 +12960,7 @@ ID Area Title Description 24477 area-System.Net .Net WebClient.DownloadData api result in different behavior in some kind of project @treeicnliu commented on [Sat May 27 2017](https://github.com/dotnet/core/issues/664) I got different http packages by fiddler4 when i call the same fucntion WebClient.DownloadData(string uri) api with the same param uri on web proj and console proj. I found that webclient will auto decode uri in web proj,and keep the origin uri in console proj. is it a .net issue ? The uri below can't access,but it can be used for test http://objstore.qa.nt.ctripcorp.com/smartemailstorage/2017%5C4%5C6%5Cf809530b-0ded-49b4-8532-002c7ad73b41%5C%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4Java%E5%BC%80%E5%8F%91%E6%89%8B%E5%86%8C.pdf?AWSAccessKeyId=D1NNJCXLEF0O7JIB2U3L&Expires=1511426288&Signature=iJjQCreO6F7avac86Tg2S4e4Miw%3D --- @karelz commented on [Sun Jun 11 2017](https://github.com/dotnet/core/issues/664#issuecomment-307703162) Do both of your projects use the same .NET Core 2.0-preview1 version? The class is in `System.Net` namespace, if you still have troubles, please file it in CoreFX repo. --- @richlander commented on [Sat Jul 01 2017](https://github.com/dotnet/core/issues/664#issuecomment-312471536) @treeicnliu can you share the before and after of the return value in both cases. Can you share how this property is set in both cases? https://docs.microsoft.com/en-us/dotnet/api/system.net.webclient.encoding?view=netcore-2.0#System_Net_WebClient_Encoding --- @richlander commented on [Mon Jul 03 2017](https://github.com/dotnet/core/issues/664#issuecomment-312734798) @treeicnliu can you share a repro? I'm not quite sure what to test based on your description. --- @treeicnliu commented on [Fri Aug 11 2017](https://github.com/dotnet/core/issues/664#issuecomment-321776665) [test.docx](https://github.com/dotnet/core/files/1217516/test.docx) @richlander , i want to dowdload data from the url(with fixed signature) in .net web proj ,it doesn't work since the url has changed(broke the signature),but worked in console proj. see the file test.docx i uploaded. btw, both proj based on .net 4 framework. 24478 area-System.Drawing The type initializer for 'System.Drawing.KnownColors' threw an exception @lianggx commented on [Mon Apr 17 2017](https://github.com/dotnet/core/issues/594) debian.8.x.x64 if you throw The type initializer for 'System.Drawing.KnownColors' threw an exception to do:apt-get install libgdiplus I hope some one can fix it! --- @richlander commented on [Mon Jul 03 2017](https://github.com/dotnet/core/issues/594#issuecomment-312744247) @lianggx can you share a sample? --- @MeetOct commented on [Mon Jul 24 2017](https://github.com/dotnet/core/issues/594#issuecomment-317357160) i found this in docker images(microsoft/dotnet:1.1.2-runtime) when i used EPPlus.Core ``` The type initializer for 'System.Drawing.KnownColors' threw an exception. at System.Drawing.KnownColors.FromKnownColor(KnownColor kc) at System.Drawing.Color.get_White() ``` 24480 area-System.Data Toooooo slow interacting with MS sql server under Ubuntu 16.04 (both using EF or SQLDataReader) "@gorsand commented on [Fri Aug 11 2017](https://github.com/dotnet/core/issues/802) # Issue Title Toooooo slow interacting with MS sql server under Ubuntu 16.04 (either by EF or SQLDataReader) # General I have a web API application on dotnet under Core 2.0, Ubuntu 16.04, and an MS SQL server as data storage (totally < 1Gb of data there). Core i5 with 8 GB memory laptop, SSD 120 GB. Both the app and the server run on same machine (localhost). Under windows the same code requires about 2 sec (provided that the server is also running under windows). When loading a table of about 150 000 rows (about 10 columns) from sql server I get about 300 sec time! Smaller tables also loaded in such a big time (proportionally to the number of rows). All requests are sync (async versions never used). This happens for both the EF approach or with direct using of SQLDataReader, so the problem is NOT in the EF. As a workaround I simply run sqlcmd tool with the sql request as a separate process and parse its output as a cvs file. This takes about 2 sec (not 300 sec) for the same tables. MS SQL server was installed in a pretty ""normal"" way following the official instructions (https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-ubuntu). I use typical code for DB reading in C# by EF where-style request or just with SQLDataReader: using (var connection = new SqlConnection(DataConString)) { var command = new SqlCommand(query, connection); command.Connection.Open(); var reader = command.ExecuteReader(); while (reader.Read()) parse_the_line(reader); } My gues is that Core 2.0 handles the connection in some bad manner (eg. disconnects and connects on each row of table) or there's something in deserialization (though I think just any kind of deserialization woldn't be that bad) or maybe Core 2.0 switches to async methods under the hood (which in turn set a kind of timer and wakes on receiving each piece of data) or so on, but these are only my guesses. Maybe it's somehow connected with the well known MS SQL server bug (feature?) under linux: sqlcmd tool becomes toooo slow when the output is redirected to a file by '>' in the command line. (Note: I don't redirect the output when using sqlcmd tool as a workaround, just read the process output line by line.) So maybe Core 2.0 works with MS SQL server the same bad way as sqlcmd tool does when redirected to a file. But again these are only my guesses. **Upd:** The problem is on Core side, not with the SQL server. I just tried connecting to Windows-hosted server, the problem still remains (about 300 sec for 150K rows). Though the same code under Windows works fine (about 2-3 sec). --- @Ataden commented on [Sat Aug 12 2017](https://github.com/dotnet/core/issues/802#issuecomment-321964793) I confirm such an issue. On Windows EF Core and SQL library work great but on Linux they are way too slow. It is almost imposible to use them on Linux at all. --- @ayurjev commented on [Sat Aug 12 2017](https://github.com/dotnet/core/issues/802#issuecomment-321965303) I noticed the same slow performance while I was trying to use Core 2.0 on MacOS... It had been taking 40-50 seconds to execute simple query.... " -24481 area-System.Linq Strange generic expressions type check behavior "@chrbaeu commented on [Thu Aug 17 2017](https://github.com/dotnet/core/issues/856) The following code prints with netcoreapp1.0 and net461: ``` IsExpression: True IsExpression: True ``` And with netcoreapp2.0: ``` IsExpression: False IsExpression: True ``` I think netcoreapp2.0 should show the same results as the other. ``` namespace ExpressionBugTest { class Program { static void Main(string[] args) { Expression> predicate = x => x != null; Console.WriteLine(""IsExpression: "" + (predicate.GetType().GetGenericTypeDefinition() == typeof(Expression<>))); Console.WriteLine(""IsExpression: "" + (typeof(Expression>).GetGenericTypeDefinition() == typeof(Expression<>))); Console.ReadKey(); } } } ``` --- @svick commented on [Thu Aug 17 2017](https://github.com/dotnet/core/issues/856#issuecomment-323069527) As far as I can tell, the reason for this is that `predicate.GetType().GetGenericTypeDefinition()` returns the internal type [`Expression1`](https://github.com/dotnet/corefx/blob/43f78840284de81bfd1b5fe4deceedf95c673cf8/src/System.Linq.Expressions/src/System/Linq/Expressions/LambdaExpression.cs#L358), which inherits from `Expression` and was introduced as an optimization in https://github.com/dotnet/corefx/pull/13133. I'm not sure what is the best way to correctly check that a `Type` is an `Expression`. --- @stephentoub commented on [Thu Aug 17 2017](https://github.com/dotnet/core/issues/856#issuecomment-323075860) cc: @bartdesmet, @VSadov " +24481 area-System.Linq Strange generic expressions type check behavior "@chrbaeu commented on [Thu Aug 17 2017](https://github.com/dotnet/core/issues/856) The following code prints with netcoreapp1.0 and net462: ``` IsExpression: True IsExpression: True ``` And with netcoreapp2.0: ``` IsExpression: False IsExpression: True ``` I think netcoreapp2.0 should show the same results as the other. ``` namespace ExpressionBugTest { class Program { static void Main(string[] args) { Expression> predicate = x => x != null; Console.WriteLine(""IsExpression: "" + (predicate.GetType().GetGenericTypeDefinition() == typeof(Expression<>))); Console.WriteLine(""IsExpression: "" + (typeof(Expression>).GetGenericTypeDefinition() == typeof(Expression<>))); Console.ReadKey(); } } } ``` --- @svick commented on [Thu Aug 17 2017](https://github.com/dotnet/core/issues/856#issuecomment-323069527) As far as I can tell, the reason for this is that `predicate.GetType().GetGenericTypeDefinition()` returns the internal type [`Expression1`](https://github.com/dotnet/corefx/blob/43f78840284de81bfd1b5fe4deceedf95c673cf8/src/System.Linq.Expressions/src/System/Linq/Expressions/LambdaExpression.cs#L358), which inherits from `Expression` and was introduced as an optimization in https://github.com/dotnet/corefx/pull/13133. I'm not sure what is the best way to correctly check that a `Type` is an `Expression`. --- @stephentoub commented on [Thu Aug 17 2017](https://github.com/dotnet/core/issues/856#issuecomment-323075860) cc: @bartdesmet, @VSadov " 24482 area-System.Net HttpClient Coding problem "@tianmaoyu commented on [Mon Jul 31 2017](https://github.com/dotnet/core/issues/782) # HttpClient Coding problem Problems with Chinese Fonts # General ```c# var client = new HttpClient(); var multipartContent = new MultipartFormDataContent(""-------boundary""); var fileStream2 = File.Open(@""H:\开源的项目\新建文本文档.txt"", FileMode.Open); var streamContent2 = new StreamContent(fileStream2); multipartContent.Add(streamContent2, ""files"", ""新建文本文档.txt""); var output = new MemoryStream(); await multipartContent.CopyToAsync(output); output.Seek(0, SeekOrigin.Begin); string result = new StreamReader(output).ReadToEnd(); return result; ``` result string: ``` filename=""=?utf-8?B?5paw5bu65paH5pys5paH5qGjLnR4dA==?="" filename*=utf-8''%E6%96%B0%E5%BB%BA%E6%96%87%E6%9C%AC%E6%96%87%E6%A1%A3.txt ``` ``` ---------boundary Content-Disposition: form-data; name=files; filename=""=?utf-8?B?5paw5bu65paH5pys5paH5qGjLnR4dA==?=""; filename*=utf-8''%E6%96%B0%E5%BB%BA%E6%96%87%E6%9C%AC%E6%96%87%E6%A1%A3.txt ������ ---------boundary-- ``` @tianmaoyu commented on [Mon Jul 31 2017](https://github.com/dotnet/core/issues/782#issuecomment-318999778) ``` ---------boundary Content-Disposition: form-data; name=files; filename=""=?utf-8?B?5paw5bu65paH5pys5paH5qGjLnR4dA==?=""; filename*=utf-8''%E6%96%B0%E5%BB%BA%E6%96%87%E6%9C%AC%E6%96%87%E6%A1%A3.txt ������ ---------boundary-- ``` @karelz commented on [Mon Jul 31 2017](https://github.com/dotnet/core/issues/782#issuecomment-319013205) What is the key problem in your repro? Is it the Unicode file name? Is it the content of the file? Can you please clarify what is expected vs. current output? @tianmaoyu commented on [Mon Jul 31 2017](https://github.com/dotnet/core/issues/782#issuecomment-319125019) I want to use httpclient to upload files. When the name of the file is Chinese, the garbled code appears. I want to be able to upload Chinese files correctly. For example: filename=“新建文本文档.txt“ instead of: filename=""=?utf-8?B?5paw5bu65paH5pys5paH5qGjLnR4dA==?="" @tianmaoyu commented on [Mon Jul 31 2017](https://github.com/dotnet/core/issues/782#issuecomment-319131940) I want to encode the Content.header with UTF-8 and calculate the length instead of using DefaultHttpEncoding (Encoding.GetEncoding (28591)). The source code is: System.Net.Http.HttpRuleParser ```c# internal static readonly Encoding DefaultHttpEncoding = Encoding.GetEncoding(28591); ``` [EDIT] Changed code formatting for readability by @karelz" 24484 area-System.Security cannot import X509Certificate from file in .net core 2.0 "@xingzhougmu commented on [Sat Sep 02 2017](https://github.com/dotnet/core/issues/932) # Issue Title cannot import X509Certificate from file in .net core 2.0 # General The following code works perfectly in .net core 1.0, however, does not in .net core 2.0. `X509Certificate clientCert = new X509Certificate(Directory.GetCurrentDirectory() + ""/Certs/Production/CN_Certificate.crt"");` Under .net core 2.0, the exception is as below: > {Interop+AppleCrypto+AppleCommonCryptoCryptographicException: Unknown format in import. > at Interop.AppleCrypto.X509ImportCertificate(Byte[] bytes, X509ContentType contentType, SafePasswordHandle importPassword, SafeKeychainHandle keychain, Boolean exportable, SafeSecIdentityHandle& identityHandle) > at Internal.Cryptography.Pal.CertificatePal.FromBlob(Byte[] rawData, SafePasswordHandle password, X509KeyStorageFlags keyStorageFlags) > at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(String fileName, String password, X509KeyStorageFlags keyStorageFlags) > at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(String fileName) > at Test.Program.Main(String[] args) in /Users/xzhou/Projects/Test/Program.cs:line 40} > For some issues, you will get a quicker and better response if you file it at a more specific [.NET repo](https://github.com/dotnet/core/blob/master/Documentation/core-repos.md). For example, if the problem is with ASP.NET Core, you are encouraged to use the [aspnet/home repo](https://github.com/aspnet/home/issues). " 24485 area-System.Net SmtpClient throws NullReferenceException on Dispose() "@sibvic commented on [Wed Aug 30 2017](https://github.com/dotnet/core/issues/912) I'm using: netcoreapp2.0 The next code throws an exception: using (var client = new SmtpClient(""smtp.mail.ru"", 465)) { client.UseDefaultCredentials = false; client.Credentials = new NetworkCredential(Options.EmailSenderUser, Options.EmailSenderPassword); client.SendAsync(emailMessage, new object()); }//throws an exception here!!! NullReferenceException: Object reference not set to an instance of an object. System.Net.Mail.SmtpConnection.ReleaseConnection() System.Net.Mail.SmtpClient.Dispose(bool disposing) System.Net.Mail.SmtpClient.Dispose() --- @Petermarcu commented on [Wed Aug 30 2017](https://github.com/dotnet/core/issues/912#issuecomment-326046972) @Priya91, can you copy this over to corefx and maybe take a look? --- @shalaka198 commented on [Thu Sep 21 2017](https://github.com/dotnet/core/issues/912#issuecomment-331329224) Is there any update on this issue? I am facing the same. --- @msvprogs commented on [Sun Sep 24 2017](https://github.com/dotnet/core/issues/912#issuecomment-331741350) +1, I have the same problem. OS CentOS 7, .NET Core 2.0 " @@ -12997,7 +12997,7 @@ ID Area Title Description 24541 area-System.Net Add CipherSuite property to HttpClientHandler It's really nice to have opportunity to change CipherSuite per connection, when HttpClientHandler is using. At this time there is only possibility to define SslProtocol. I have read issues and this topic appeared few times. ## **Proposed API** ``` namespace System.Net.Http public class HttpClientHandler: HttpMessageHandler { // Other properties... public CipherSuite CipherSuite { get; } } ``` ## **Example Usage** ``` var handler = new HttpClientHandler { CipherSuite = CipherSuite.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA } ``` This API review is strongly connected with: https://github.com/dotnet/corefx/issues/21577 24542 area-System.Diagnostics System.Diagnostics.Process.StartTime can be improved in Windows When Process instance is created using Process.GetProcesses() , it calls GetProcessInfos method inside. In WIndows it calls to internal [NtQuerySystemInformation](https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.Process/src/System/Diagnostics/ProcessManager.Win32.cs) which returns process creation time. [ProcessInfo](https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.Process/src/System/Diagnostics/ProcessInfo.cs) can be initialized using this value and pass it into Process. This allows getting StartTime property without any exception thrown. 24547 area-System.Threading Can something be done about the Microsoft.Tpl.Dataflow package? "[The `Microsoft.Tpl.Dataflow` package](https://www.nuget.org/packages/Microsoft.Tpl.Dataflow/) is outdated and generally shouldn't be used anymore. The replacement is [the `System.Threading.Tasks.Dataflow` package](https://www.nuget.org/packages/System.Threading.Tasks.Dataflow/). But people keep using the old package (see e.g. https://github.com/dotnet/corefx/issues/202#issuecomment-335470737), not knowing they should switch to the new one. Is there something that can be done to help those people? Some options I considered: 1. Add an analyzer to [dotnet/platform-compat](https://github.com/dotnet/platform-compat) that will consider `Microsoft.Tpl.Dataflow` deprecated. 2. Release a new version of `Microsoft.Tpl.Dataflow` that will contain no code of its own and will ""redirect"" to `System.Threading.Tasks.Dataflow` by having a dependency on it. (And then keep releasing a new version every time `System.Threading.Tasks.Dataflow` updates?) cc: @stephentoub " -24548 area-Infrastructure Issues in CoreFx build and opening particular solution in VS 2017 community edition. "I am seeing following issue in build and opening System.Runtime.Extension solution in VS 2017 Community edition IDE. About three (plus) weeks back these issues were not seen. Last weekend, I sync'd my fork with latest code in dotnet/master and since then these issues have been happening consistently. Not only on my branch for #22409 but also on the master branch in my fork. I also recreated my local git repo, but no luck. Issues are, a. On firing ""build.cmd"" / ""build-managed.cmd"" execution is stuck at below line seen on console for about 10 - 15 mins and, at that time network activity kicks in. I see download at about 300kBps from the server ""blob.byaprdstr06a.store.core.windows.net"". Roughly 50MB of stuff is downloaded and then the build proceeds. The line on console after which download begins is as below: ```D:\WinCPP\corefx\packages\Microsoft.TargetingPack.NETFramework.v4.6.1\1.0.1\lib\net461\sysglobl.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> D:\WinCPP\corefx\bin\AnyOS.AnyCPU.Release\netfx\netcoreapp\sysglobl.dll``` b. On opening System.Runtime.Extension in VS 2017 Community edition IDE, it gets stuck at ""Preparing Solution"" for similar duration (10 - 15 mins). In this case too, network activity kicks in and devenv.exe appears to be downloading data from same server ""blob.byaprdstr06a.store.core.windows.net"". Alt+Tab into VS 2017 Community IDE at that point gives a pop up at lower right saying VS is busy and information has been sent to ""Visual Studio Experience Improvement Program""... Both the above issues repeat on each run of build command or each time the solution is opened in VS IDE. Primarily the problem is that 50MB per build (or even on opening VS) translates to 500 MB if I were to build / open VS for about 10 times during one coding session; a number that can be easily exceeded. Secondly, the 10-15 min delay holds up build / opening VS IDE. Kindly help. I am wondering if the download is not able to write some sort of "".complete"" file because of which the entire download is repeated every time I run build command or open the solution? This could very well be an issue with my setup that got introduced after I rebased about a month's data from dotnet/master. @karelz @weshaggard created this issue as per our discussion on gitter." +24548 area-Infrastructure Issues in CoreFx build and opening particular solution in VS 2017 community edition. "I am seeing following issue in build and opening System.Runtime.Extension solution in VS 2017 Community edition IDE. About three (plus) weeks back these issues were not seen. Last weekend, I sync'd my fork with latest code in dotnet/master and since then these issues have been happening consistently. Not only on my branch for #22409 but also on the master branch in my fork. I also recreated my local git repo, but no luck. Issues are, a. On firing ""build.cmd"" / ""build-managed.cmd"" execution is stuck at below line seen on console for about 10 - 15 mins and, at that time network activity kicks in. I see download at about 300kBps from the server ""blob.byaprdstr06a.store.core.windows.net"". Roughly 50MB of stuff is downloaded and then the build proceeds. The line on console after which download begins is as below: ```D:\WinCPP\corefx\packages\Microsoft.TargetingPack.NETFramework.v4.6.1\1.0.1\lib\net462\sysglobl.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> D:\WinCPP\corefx\bin\AnyOS.AnyCPU.Release\netfx\netcoreapp\sysglobl.dll``` b. On opening System.Runtime.Extension in VS 2017 Community edition IDE, it gets stuck at ""Preparing Solution"" for similar duration (10 - 15 mins). In this case too, network activity kicks in and devenv.exe appears to be downloading data from same server ""blob.byaprdstr06a.store.core.windows.net"". Alt+Tab into VS 2017 Community IDE at that point gives a pop up at lower right saying VS is busy and information has been sent to ""Visual Studio Experience Improvement Program""... Both the above issues repeat on each run of build command or each time the solution is opened in VS IDE. Primarily the problem is that 50MB per build (or even on opening VS) translates to 500 MB if I were to build / open VS for about 10 times during one coding session; a number that can be easily exceeded. Secondly, the 10-15 min delay holds up build / opening VS IDE. Kindly help. I am wondering if the download is not able to write some sort of "".complete"" file because of which the entire download is repeated every time I run build command or open the solution? This could very well be an issue with my setup that got introduced after I rebased about a month's data from dotnet/master. @karelz @weshaggard created this issue as per our discussion on gitter." 24550 area-System.Net HttpListener cannot recognize Websocket request from firefox "When establishing websocket connection, firefox sends such `Connection` header: `Connection: keep-alive, Upgrade` and `System.Net.HttpListener` can't recognize the `Upgrade` It can be tested with inserting this test case ```csharp [InlineData(""Connection: keep-alive, Upgrade\r\nUpgrade: websocket"", true)] ``` to the `IsWebSocketRequest_GetProperty_ReturnsExpected` test of `HttpListenerRequestTests.cs`" 24551 area-Infrastructure Need to build new 2.0.x Microsoft.NETCore.Platforms package We've made changes to the RID graph in the release/2.0.0 servicing branch. Specifically we [added support for RHEL 6](https://github.com/dotnet/corefx/pull/22970). However, we aren't producing a `2.0.x` version of the `Microsoft.NETCore.Platforms` package that contains these changes. In order to fully support RHEL 6, we need a new Platforms package with these changes in it. @weshaggard @Petermarcu @ericstj 24552 area-System.Security [debian9] libssl1.0.0 and libssl1.0.2 can end up loaded in same process causing crashes "On Debian 9, curl depends on libssl1.0.2. When the libssl1.0.0 and libssl1.0.2 packages are both installed on a machine, `System.Security.Cryptography.Native.Openssl` will preferentially load `libssl.so.1.0.0`. `System.Net.Http.Native`, however, loads `libcurl.so`, which in turn loads `libssl.so.1.0.2`. ### Repro Some combination (as yet undetermined; the repro is ""open PowerShell 6.0.0-beta.8, wait a while"") of interacting with the members of these assemblies, or of passing SSL contexts between System.Net.Http and System.Security.Cryptography.Openssl will trigger a segmentation violation and subsequent termination. ### Dependency Graph ``` * System.Net.Http.Native * libcurl.so.4 * libssl.so.1.0.2 * System.Security.Cryptography.Native.Openssl * libssl.so.1.0.0 ``` ### Resolution Not sure. * Probe for libssl symbols, fall back to dlopen if none are found? * Prefer `libssl.so.1.0.2`?" diff --git a/test/Microsoft.ML.Tests/Scenarios/Api/TestApi.cs b/test/Microsoft.ML.Tests/Scenarios/Api/TestApi.cs index d701aa9876..1e9410cf16 100644 --- a/test/Microsoft.ML.Tests/Scenarios/Api/TestApi.cs +++ b/test/Microsoft.ML.Tests/Scenarios/Api/TestApi.cs @@ -91,7 +91,7 @@ public void CursorChannelExposedInMapTransform() try { filter2.GetRowCursorForAllColumns().MoveNext(); - Assert.True(false, "Throw an error if attribute is applied to a field that is not an IChannel."); + Assert.Fail("Throw an error if attribute is applied to a field that is not an IChannel."); } catch (InvalidOperationException ex) { @@ -114,7 +114,7 @@ public void CursorChannelExposedInMapTransform() try { filter3.GetRowCursorForAllColumns().MoveNext(); - Assert.True(false, "Throw an error if attribute is applied to a field that is not an IChannel."); + Assert.Fail("Throw an error if attribute is applied to a field that is not an IChannel."); } catch (InvalidOperationException ex) { diff --git a/test/Microsoft.ML.Tests/TextLoaderTests.cs b/test/Microsoft.ML.Tests/TextLoaderTests.cs index 66e50efd9c..7242b69a8b 100644 --- a/test/Microsoft.ML.Tests/TextLoaderTests.cs +++ b/test/Microsoft.ML.Tests/TextLoaderTests.cs @@ -109,7 +109,7 @@ public void TestTextLoaderInvalidLongMin() return; } - Assert.True(false, "Test failed."); + Assert.Fail("Test failed."); } [Fact] @@ -133,7 +133,7 @@ public void TestTextLoaderInvalidLongMax() return; } - Assert.True(false, "Test failed."); + Assert.Fail("Test failed."); } } From 24699992bffc25fc010f0114fa6bec13f5b01b17 Mon Sep 17 00:00:00 2001 From: Eric StJohn Date: Tue, 19 Dec 2023 09:42:00 -0800 Subject: [PATCH 03/18] Update XUnitVersion --- eng/Versions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/Versions.props b/eng/Versions.props index d2fa981353..b016d515c0 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -91,7 +91,7 @@ 4.8.5 1.0.118 1.2.7 - 2.5.3 + 2.6.1 false From ede6c4b7029c43f2e98b3f3f0ea35a7cb70a9d2b Mon Sep 17 00:00:00 2001 From: Eric StJohn Date: Tue, 19 Dec 2023 09:49:06 -0800 Subject: [PATCH 04/18] Update MicrosoftMLOnnxRuntimeVersion to 1.16.3 --- eng/Versions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/Versions.props b/eng/Versions.props index b016d515c0..49c6b849c5 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -39,7 +39,7 @@ 3.3.0 3.9.0 1.0.0-beta.23509.3 - 1.14.0 + 1.16.3 0.0.0.12 + $(NoWarn);NETSDK1206 diff --git a/eng/Versions.props b/eng/Versions.props index 49c6b849c5..b016d515c0 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -39,7 +39,7 @@ 3.3.0 3.9.0 1.0.0-beta.23509.3 - 1.16.3 + 1.14.0 0.0.0.12 false From dc205c134371952fff031c2655a1d8b12d8d9a82 Mon Sep 17 00:00:00 2001 From: Eric StJohn Date: Tue, 19 Dec 2023 12:38:05 -0800 Subject: [PATCH 07/18] Update Centos docker containers --- .vsts-dotnet-ci.yml | 2 +- build/.night-build.yml | 2 +- build/.outer-loop-build.yml | 2 +- build/vsts-ci.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.vsts-dotnet-ci.yml b/.vsts-dotnet-ci.yml index cd05b1802e..eb67c72804 100644 --- a/.vsts-dotnet-ci.yml +++ b/.vsts-dotnet-ci.yml @@ -19,7 +19,7 @@ trigger: resources: containers: - container: CentosContainer - image: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-7-mlnet + image: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream8-mlnet - container: UbuntuContainer image: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-18.04-mlnet diff --git a/build/.night-build.yml b/build/.night-build.yml index 83c7645cee..d17393bc46 100644 --- a/build/.night-build.yml +++ b/build/.night-build.yml @@ -22,7 +22,7 @@ schedules: resources: containers: - container: CentosContainer - image: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-7-mlnet + image: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream8-mlnet - container: UbuntuContainer image: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-18.04-mlnet diff --git a/build/.outer-loop-build.yml b/build/.outer-loop-build.yml index 27f1b935ab..2c58e6aacd 100644 --- a/build/.outer-loop-build.yml +++ b/build/.outer-loop-build.yml @@ -23,7 +23,7 @@ schedules: resources: containers: - container: CentosContainer - image: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-7-mlnet + image: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream8-mlnet - container: UbuntuContainer image: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-18.04-mlnet diff --git a/build/vsts-ci.yml b/build/vsts-ci.yml index 9487484d14..85d6cfc5ff 100644 --- a/build/vsts-ci.yml +++ b/build/vsts-ci.yml @@ -5,7 +5,7 @@ resources: containers: - container: CentosContainer - image: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-7-mlnet + image: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream8-mlnet - container: UbuntuCrossArmContainer image: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-18.04-mlnet-cross-arm From e25a86fbfec65aa2af70dfb7f85051f210b70103 Mon Sep 17 00:00:00 2001 From: Eric StJohn Date: Tue, 19 Dec 2023 13:13:46 -0800 Subject: [PATCH 08/18] Fix packaging step --- Directory.Build.props | 3 +-- src/Microsoft.ML.Mkl.Redist/CompatibilitySuppressions.xml | 8 -------- 2 files changed, 1 insertion(+), 10 deletions(-) delete mode 100644 src/Microsoft.ML.Mkl.Redist/CompatibilitySuppressions.xml diff --git a/Directory.Build.props b/Directory.Build.props index 19aaa1b11f..1fe944cfee 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -57,8 +57,7 @@ true - + true - snupkg diff --git a/src/Microsoft.ML.Mkl.Redist/CompatibilitySuppressions.xml b/src/Microsoft.ML.Mkl.Redist/CompatibilitySuppressions.xml deleted file mode 100644 index 90523af626..0000000000 --- a/src/Microsoft.ML.Mkl.Redist/CompatibilitySuppressions.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - PKV006 - .NETStandard,Version=v2.0 - - \ No newline at end of file From 57c03ecc5ef3c40c81f8681d31a01c094672b653 Mon Sep 17 00:00:00 2001 From: Eric StJohn Date: Tue, 19 Dec 2023 13:23:35 -0800 Subject: [PATCH 09/18] Try including stdint.h to fix missing uint8_t on centos --- src/Native/Stdafx.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Native/Stdafx.h b/src/Native/Stdafx.h index 4008ebd012..e1b37c7092 100644 --- a/src/Native/Stdafx.h +++ b/src/Native/Stdafx.h @@ -7,6 +7,7 @@ #include #include #include +#include #define UNUSED(x) (void)(x) #define DEBUG_ONLY(x) (void)(x) From b3bc5ec834e0a479a3ac57de28c61c07c48aba77 Mon Sep 17 00:00:00 2001 From: Eric StJohn Date: Tue, 19 Dec 2023 14:29:34 -0800 Subject: [PATCH 10/18] Update Centos test queue --- .vsts-dotnet-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.vsts-dotnet-ci.yml b/.vsts-dotnet-ci.yml index eb67c72804..93d629d6b6 100644 --- a/.vsts-dotnet-ci.yml +++ b/.vsts-dotnet-ci.yml @@ -86,7 +86,7 @@ jobs: pool: name: NetCore-Public demands: ImageOverride -equals build.ubuntu.1804.amd64.open - helixQueue: Ubuntu.1804.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:centos-7-mlnet-helix + helixQueue: Ubuntu.1804.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream8-mlnet - template: /build/ci/job-template.yml parameters: From c63b05af4e86111bab3f5208ee7e09f0d350cb6f Mon Sep 17 00:00:00 2001 From: Eric StJohn Date: Tue, 19 Dec 2023 17:24:01 -0800 Subject: [PATCH 11/18] Attempt to use runtime centos-stream8-helix container for tests --- .vsts-dotnet-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.vsts-dotnet-ci.yml b/.vsts-dotnet-ci.yml index 93d629d6b6..a10270aba7 100644 --- a/.vsts-dotnet-ci.yml +++ b/.vsts-dotnet-ci.yml @@ -86,7 +86,7 @@ jobs: pool: name: NetCore-Public demands: ImageOverride -equals build.ubuntu.1804.amd64.open - helixQueue: Ubuntu.1804.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream8-mlnet + helixQueue: Ubuntu.1804.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream8-helix - template: /build/ci/job-template.yml parameters: From 3947e179e913dd0da807c9473429b9b5a8684685 Mon Sep 17 00:00:00 2001 From: Eric StJohn Date: Wed, 20 Dec 2023 11:25:14 -0800 Subject: [PATCH 12/18] Use centos-stream8-mlnet-helix container for testing --- .vsts-dotnet-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.vsts-dotnet-ci.yml b/.vsts-dotnet-ci.yml index a10270aba7..9ad25d0b1a 100644 --- a/.vsts-dotnet-ci.yml +++ b/.vsts-dotnet-ci.yml @@ -86,7 +86,7 @@ jobs: pool: name: NetCore-Public demands: ImageOverride -equals build.ubuntu.1804.amd64.open - helixQueue: Ubuntu.1804.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream8-helix + helixQueue: Ubuntu.1804.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream8-mlnet-helix - template: /build/ci/job-template.yml parameters: From e928db58c609ccf5cee19e7e40e5274a3c103af7 Mon Sep 17 00:00:00 2001 From: Eric StJohn Date: Fri, 22 Dec 2023 14:18:08 -0800 Subject: [PATCH 13/18] Undo changes to test data --- .../Data/github-issues-train.tsv | 76 +++++++++---------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/test/Microsoft.ML.Tests/Data/github-issues-train.tsv b/test/Microsoft.ML.Tests/Data/github-issues-train.tsv index c5fc98c9e8..fece6f3f60 100644 --- a/test/Microsoft.ML.Tests/Data/github-issues-train.tsv +++ b/test/Microsoft.ML.Tests/Data/github-issues-train.tsv @@ -1542,7 +1542,7 @@ ID Area Title Description 4474 area-System.Diagnostics Debug.Assert throws System.Diagnostics.Debug+DebugAssertException Is this by designed for corefx ? because in .net, this should open a debugger instead. Our code currently depends a lot on Debug.Assert. Unfortunately Debug.Assert now throws Debug+DebugAssertException which causing inconsistent from the release mode I remember previously it throws a special uncatchable exception (Environment.FailFast()) which i think can be better instead of causing different behavior. 4475 area-System.IO Change ZLib Optimal CompressionLevel on Unix We currently have this comment and code in System.IO.Compression: ``` C# // Note that ZLib currently exactly correspond to the optimal values. // However, we have determined the optimal values by intependent measurements across // a range of all possible ZLib parameters and over a set of different data. // We stress that by using explicitly the values obtained by the measurements rather than // ZLib defaults even if they happened to be the same. // For ZLib 1.2.3 we have (copied from ZLibNative.cs): // ZLibNative.CompressionLevel.DefaultCompression = 6; // ZLibNative.Deflate_DefaultWindowBits = -15; // ZLibNative.Deflate_DefaultMemLevel = 8; case CompressionLevel.Optimal: zlibCompressionLevel = (ZLibNative.CompressionLevel)6; windowBits = -15; memLevel = 8; strategy = ZLibNative.CompressionStrategy.DefaultStrategy; break; ``` Since we are now using the “current” ZLib version on Unix, and because we are planning on changing which version we use on Windows, I don’t think this is the best approach anymore. It was probably correct when we were hard-coding a version, but since we don’t know which version will actually be used, I think we should be letting the zlib library figure out which is the best compression level to use. I have 2 separate options on how to address this: 1. On Unix, create a new shim method DeflateInit that only takes in the ZStream. The shim code will use the default values from the ZLib headers. Windows remains unchanged. https://github.com/eerhardt/corefx/commit/c1be54d6dfaf64098b42c186c041344e4378f083 2. Change both Windows and Unix code to always use the default compression level (-1) and let the zlib version pick. https://github.com/eerhardt/corefx/commit/38883e3df53153a9434dfc16696667279b18dd82 @ianhays @stephentoub - Do you guys agree this should be fixed? If so, do you have a preferred option - or an even better option than the 2 I've listed? 4476 area-System.Net Add support for custom validation of server SSL Certificate to HttpClient API This issue tracks the addition of new functionality to the HttpClient API. In order to implement certificate pinning and self-signed SSL certificate scenarios, developers need access to the SSL cert presented by the server, and the ability to do their own validation and then accept/reject the connection accordingly. Today, this ability is provided in .NET Framework by ServicePointManager.ServerCertificateValidationCallback and in ASP.NET 5 by WinHttpHandler.ServerCertificateValidationCallback. However, ServicePointManager is not in .NET Core, and WinHttpHandler is not available x-plat and on all app models. Hence, there is a need to add this API to the top-level HttpClient or HttpClientHandler types. If you have specific requirements around this scenario, please enter those here - we will track this issue in our backlog. -4477 area-System.Security Add missing X509ChainStatusFlags net462 added some new X509ChainStatusFlags values. While these are present already in the implementation library, they aren't in the ref library. GetChainStatusInformation was rewritten as a loop for net462, that change should also be ported over to corefx. +4477 area-System.Security Add missing X509ChainStatusFlags net461 added some new X509ChainStatusFlags values. While these are present already in the implementation library, they aren't in the ref library. GetChainStatusInformation was rewritten as a loop for net461, that change should also be ported over to corefx. 4478 area-System.Net Add System.Net.WebSockets.Client tests - Port some of the ToF ClientWebSocket tests that talk to a real websocket server - Cleanup naming of existing tests to conform to System.Net test method naming - Skip tests if not supported on platform. Specifically, these tests were failing on Win7 since Win7 does not support WinHttp WebSockets. We haven't really noticed this failing since the CI doesn't yet run Win7 tests (issue #4468) I plan to port the remainder of the ToF websocket related tests in a subsequent PR. 4479 area-System.Net Add Client certificate support to HttpClient API "The `HttpClientHandler` API has a `ClientCertificateOptions` enum that lets you pick between `Automatic` and `Manual` client cert option. Choosing `Automatic` lets the system choose the ""best"" client certificate for the user from among the installed and accessible ones. `Manual` means that the developer can explicitly pass in a client cert. However, `HttpClientHandler` does not have a `ClientCertificate` property, so you can't assign a certificate for the `Manual` option to use. This issue tracks the fix to address this gap. (`WinHttpHandler` has a `ClientCertificates` property for this purpose, but it is not x-plat and is not supported for all app models (e.g. UWP)) If you have specific requirements around this feature, please enter them here. " 4480 area-System.Net Interop.Ssl.SslShutdown crashes process during GC finalization A WCF test that attempts to write to an SslStream(https://github.com/dotnet/wcf/blob/master/src/System.Private.ServiceModel/tests/Scenarios/Security/TransportSecurity/Tcp/ClientCredentialTypeTests.cs) leaves SafeSslHandle in a closed state (which is correct). But when the next GC happens its finalizer is called and tries to Dispose it, causing an ObjectDisposedException. On Linux, this crashes the process. Unhandled Exception: System.ObjectDisposedException: Safe handle has been closed at System.Runtime.InteropServices.SafeHandle.DangerousAddRef(Boolean& success) at System.StubHelpers.StubHelpers.SafeHandleAddRef(SafeHandle pHandle, Boolean& success) at Interop.Ssl.SslShutdown(SafeSslHandle ssl) at Interop.OpenSsl.Disconnect(SafeSslHandle context) at System.Net.Security.SafeDeleteContext.ReleaseHandle() at System.Runtime.InteropServices.SafeHandle.InternalFinalize() at System.Runtime.InteropServices.SafeHandle.Dispose(Boolean disposing) at System.Runtime.InteropServices.SafeHandle.Finalize() @@ -3679,7 +3679,7 @@ ID Area Title Description 9838 area-System.Collections "BitArray.CopyTo copies also unused bits (""leaks data"")" `BitArray.CopyTo(...)` leaks internal data, if the data copied is shorter than the destination type. For instance, if set via `new BitArray(16, true)` (16 bits long, all on), then copy to an int array, all bits in the int are set (as if the `BitArray` is actually 32 bits long). [Demonstration tests](https://github.com/Clockwork-Muse/corefx/commit/19a67977e876aaa80eb42f7e04feae1fed1a815c) (although would need to be switched for regression tests). At the moment I had to verify the tests in a separate project - Something about the System.Collections is borked up when trying to run tests. I'm assuming that this is _not_ the desired behavior, given the data is automatically cleared when the length is increased. Granted, it's somewhat on the programmer for this, using a type shorter than there's officially data for... 9839 area-System.IO Can't use Path.GetFullPath in netstandard1.2 Hi, _Same issue/question as https://github.com/aspnet/Home/issues/1551 by @Sebosek_ How to get the full path of a given relative path in _netstandard1.2_? `Path.GetFullPath` seems to be available only for _netstandard1.3_ and above. Out of curiosity, why is that? Thanks 9842 area-System.IO Add IsolatedStorage types Bring back System.IO.IsolatedStorage, comprising these types ``` T:System.IO.IsolatedStorage.INormalizeForIsolatedStorage T:System.IO.IsolatedStorage.IsolatedStorage T:System.IO.IsolatedStorage.IsolatedStorageException T:System.IO.IsolatedStorage.IsolatedStorageFile T:System.IO.IsolatedStorage.IsolatedStorageFileStream T:System.IO.IsolatedStorage.IsolatedStorageScope T:System.IO.IsolatedStorage.IsolatedStorageSecurityOptions T:System.IO.IsolatedStorage.IsolatedStorageSecurityState ``` The most used types are ``` T:System.IO.IsolatedStorage.IsolatedStorageFile T:System.IO.IsolatedStorage.IsolatedStorageFileStream ``` and members in descending order ``` M:System.IO.IsolatedStorage.IsolatedStorageFile.FileExists(System.String) M:System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForApplication M:System.IO.IsolatedStorage.IsolatedStorageFile.DirectoryExists(System.String) M:System.IO.IsolatedStorage.IsolatedStorageFile.CreateDirectory(System.String) M:System.IO.IsolatedStorage.IsolatedStorageFile.OpenFile(System.String,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare) M:System.IO.IsolatedStorage.IsolatedStorageFile.OpenFile(System.String,System.IO.FileMode,System.IO.FileAccess)M:System.IO.IsolatedStorage.IsolatedStorageFile.GetLastWriteTime(System.String) M:System.IO.IsolatedStorage.IsolatedStorageFileStream.#ctor(System.String,System.IO.FileMode,System.IO.FileAccess,System.IO.IsolatedStorage.IsolatedStorageFile) M:System.IO.IsolatedStorage.IsolatedStorageFile.DeleteFile(System.String) M:System.IO.IsolatedStorage.IsolatedStorageFile.DeleteDirectory(System.String)M:System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForAssembly ``` -9846 area-System.Net .Net Plaform Standard implementation on .Net 4.6.1 has version inconsistency for System.Net.Http "I created a netstandard1.4 library (csproj) which uses System.Net.Http, and the highest available netstandard1.3 listed in NETStandard.Library meta package references System.Net.Http **v4.1.0**. I reference this library from a .Net Core console app which targets net462, and the latter has System.Net.Http **v4.0.0.0** in GAC. During build I get a warning regarding library versions conflict, and at run time get a FileNoFoundException: ""Could not load file or assembly 'System.Net.Http, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies."" Also, in project references (in solution explorer) System.Net.Http **v4.0.0** is shown. This looks pretty confusing, since I expect that once I referenced NETStandard.Library and target netstandard, I should not care about such versions consistency, since .NET Platform Standard docs claim that netstandard 1.4 is supported by net462 and higher, and netstandard 1.3 is supported by net46 and higher. UPDATE: I was also able to reproduce this problem when the library is xproj-based. [Here is the link to the sample project which reproduces the bug](https://1drv.ms/u/s!AuaAKPMkiTEAtvIeZ_3nHyiA2dUsqA) " +9846 area-System.Net .Net Plaform Standard implementation on .Net 4.6.1 has version inconsistency for System.Net.Http "I created a netstandard1.4 library (csproj) which uses System.Net.Http, and the highest available netstandard1.3 listed in NETStandard.Library meta package references System.Net.Http **v4.1.0**. I reference this library from a .Net Core console app which targets net461, and the latter has System.Net.Http **v4.0.0.0** in GAC. During build I get a warning regarding library versions conflict, and at run time get a FileNoFoundException: ""Could not load file or assembly 'System.Net.Http, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies."" Also, in project references (in solution explorer) System.Net.Http **v4.0.0** is shown. This looks pretty confusing, since I expect that once I referenced NETStandard.Library and target netstandard, I should not care about such versions consistency, since .NET Platform Standard docs claim that netstandard 1.4 is supported by net461 and higher, and netstandard 1.3 is supported by net46 and higher. UPDATE: I was also able to reproduce this problem when the library is xproj-based. [Here is the link to the sample project which reproduces the bug](https://1drv.ms/u/s!AuaAKPMkiTEAtvIeZ_3nHyiA2dUsqA) " 9848 area-System.Net UdpClient: Cancellation support for Async methods "In the current UdpClient methods, the `SendAsync` and `ReceiveAsync` method have no support for cancellation. A method could be in an `await RecieveAsync()`, which effectively never returns in a ""clean"" way. Instead, you have to call `Dispose()`/`Close()` on the `UdpClient` instance and catch `ObjectDisposedException` and `NullReferenceException`'s coming from that await. There's a race condition here: https://github.com/dotnet/corefx/blob/master/src/System.Net.Sockets/src/System/Net/Sockets/UDPClient.cs#L397 That that triggers the NRE -- the `FreeResources()` call could be called as part of a dispose while another thread hit's that `EndRecieve()` Rather than handling exceptions to end things, having a `CancellationToken` available in the async calls would enable a clean shutdown. " 9849 area-System.Net Make sure TcpClient properties do not throw when the underlying Socket is null Fixes #9762 9852 area-System.Net Fixing CookieCollection interface methods The Core version of CookieCollection modified the visibility of some interface methods. This PR updates our Reference Assembly to mimic that. cc: @weshaggard @danmosemsft @@ -3824,7 +3824,7 @@ ID Area Title Description 10325 area-System.Xml XPathItem constructor not public I have spent a little while attempting to port XmlPrime (XQuery 3.0, XSLT 2.0) library to .NET core. XPathItem's constructor is now internal. This means we cannot derive new XPathItem types. We rely on this to add XPathAtomicValue, XPathFunctionItem, XPathMap and XPathArray which are part of the XQuery 3.1 data model. This would essentially mean we would have to entirely abandon use of System.Xml.XPath. ``` // Constructor is internal because abstract member was removed and it might be back in some time. // If someone would have created derived class without that member and we would add it back // it would break his code. internal XPathItem() { } ``` 10330 area-Infrastructure Windows native arm64 toolset arm64 builds currently use a private toolset which has not been released publicly yet. There are a few spots in the Windows Native build that require a toolset directory be passed in manually. When the toolset is publicly released, we should modify the build to use that instead. arm64 workaround added in https://github.com/dotnet/corefx/pull/10043 10334 area-System.IO Add tests for newly added APM wrapper methods on System.IO and System.IO.Compression In dev/api branch we added some APM methods to System.IO and System.IO.Compression but we didn't add tests for them. This issue is to track the debt we have for them. related: #10181 -10335 area-Meta Remove boilerplate from test projects We should create some larger supports clauses to help reduce boiler-plate in our test projects. EG: `coreFx.Test.net46` should include tuples not just for net46, but also for net462, net462, etc. This is always the correct thing to do. We should also create some convenience supports clauses that allow tests to say they should apply to all the frameworks that support a particular netstandard version. EG: coreFx.Test.netstandard1.3 should include TFM/RID tuples for net46, netcore50, and netcoreap1.0 (as well as the future versions as stated above). This allows a test that can run everywhere to have minimal boilerplate in the project.json. Only if a test needs to hand-select frameworks does it need to use the more framework-granular clauses as mentioned above. We should also have some simple docs that explain the purpose of frameworks and supports in our test project.json's. /cc @ianhays +10335 area-Meta Remove boilerplate from test projects We should create some larger supports clauses to help reduce boiler-plate in our test projects. EG: `coreFx.Test.net46` should include tuples not just for net46, but also for net461, net462, etc. This is always the correct thing to do. We should also create some convenience supports clauses that allow tests to say they should apply to all the frameworks that support a particular netstandard version. EG: coreFx.Test.netstandard1.3 should include TFM/RID tuples for net46, netcore50, and netcoreap1.0 (as well as the future versions as stated above). This allows a test that can run everywhere to have minimal boilerplate in the project.json. Only if a test needs to hand-select frameworks does it need to use the more framework-granular clauses as mentioned above. We should also have some simple docs that explain the purpose of frameworks and supports in our test project.json's. /cc @ianhays 10338 area-Meta "Microsoft.NETCore.UniversalWindowsPlatform is missing some packages after ""exclude"": ""compile"" updates" "We updated all packages to hide their implementation dependencies with ""exclude"": ""compile"". We did this because implementation dependencies change regularly and aren't seen as part of the compatibility contract of a package. To ensure that folks don't rely on our packages for their implementation dependencies we use `""exclude"": ""compile""` in the packages. This transition caused at some package to be excluded entirely from the UWP meta-package since they were only referenced transitively. We should consider adding these back unless we specifically want to keep them out of the default reference set. /cc @weshaggard @terrajobst The dropped references are: - System.Collections.NonGeneric - System.Collections.Specialized - System.Threading.Overlapped - System.Xml.XmlDocument ## Workaround For folks that hit missing types from one of these packages after upgrading to Microsoft.NETCore.UniversalWindowsPlatform they can reference the packages directly as follows. ``` json ""System.Collections.NonGeneric"": ""4.0.1"", ""System.Collections.Specialized"": ""4.0.1"", ""System.Threading.Overlapped"": ""4.0.1"", ""System.Xml.XmlDocument"": ""4.0.1"" ``` " 10344 area-System.Net Hang in System.Net.Security.Tests (Windows debug) in CI http://dotnet-ci.cloudapp.net/job/dotnet_corefx/job/master/job/windows_nt_debug_prtest/3118/ Looking through the log, System.Net.Security.Tests is the only test that seems to have started, but not finished. This failed while testing PR #10309, which just changed an attribute on some Sockets tests, so isn't likely to have caused these tests to hang. 10345 area-System.Net Dns.GetHostEntryAsync(IPAddress.None) succeeds on macOS `await Dns.GetHostEntryAsync(IPAddress.None)` throws a SocketException on Windows, but doesn't on Unix. I don't know if the right answer here is that the failing test should be made platform-specific for Windows (i.e. this is expected behavior on Unix) or whether there's a bug in the Unix implementation we need to fix so that this case also fails. @@ -4107,7 +4107,7 @@ ID Area Title Description 11035 area-System.Runtime Expose serialization primitives on .NET Native Remove ApiCompatBaseline.netcore50aot.txt / ApiCompatBaseline.uap101aot.txt baselined errors once resolved, e.g. that CultureNotFoundException doesn't implement ISerializable in the implementation. - src\System.Globalization\src\ApiCompatBaseline.uap101aot.txt - src\System.Threading.Tasks\src\ApiCompatBaseline.uap101aot.txt - etc. 11036 area-System.Net .NET Core crashes when using HttpClient with HTTP/2 and Client Certificates "**Scenario** We have built an ASP.NET Core service which connects to Apple's HTTP/2-based APNS servers (in order to send push notifications from our ASP.NET Core-based platform to Apple devices). Unfortunately, .NET Core 1.0.0-rtm crashes hard in release mode when opening an HTTP/2 connection using a client certificate. In debug mode, it sometimes behaves better. **Result when running code in release mode (.NET Core 1.0.0-rtm, Ubuntu 16.04 Server)** Hard crash. After about 8 seconds of executing HttpClient.SendAsync(...), .NET Core 1.0.0-rtm crashes hard. Exception handlers do not execute. **Result when running code in debug mode (.NET Core 1.0.0-rtm, Ubuntu 16.04 Desktop, VSCode 1.4.0)** Inconsistent behavior, ranging from long delays to hard crashes. Sometimes .NET Core crashes, and sometimes the HttpClient.SendAsync(...) call times out and throws a catchable exception. And sometimes after a few debug cycles it mostly works, with a delay of around 8 seconds and then a successful response to the initial HTTP/2 request. In the last case, where the HttpClient request does succeed (in debug mode): once the HTTP/2 connection is open, sending additional messages in real-time to APNS servers (re-using the same HttpClient connection) works quickly and seemingly consistently. In our tests to date, the failure only occurs during the initial ""HTTP/2 client using client certificate"" connection attempt. As additional info: if we remove the client certificate from the request, the HTTP/2 secure connection goes through immediately (although APNS of course returns an ""unauthorized...missing certificate (sic)"" text reply). **Repro** 1. Install .NET Core 1.0 on Ubuntu 16.04 LTS 2. Compile libcurl from source to include HTTP/2 support (see next post in thread) 3. Save your APNS development certificate to disk, and fill in its path and password in the sample code. Also fill in your APNS bundle/deviceToken IDs in the sample code. 4. Drop the sample code inside Program.cs Main() and run the sample. 4a. In release mode, the HttpClient.SendAsync(...) line of code will run for about 8 seconds and then .NET Core will crash hard without raising an exception. 4b. In debug mode from VSCode, the HttpClient.SendAsync(...) line of code will exhibit intermittent hard crashes, intermittent exceptions, and/or ~8 second delays with successful connection. REPRO CODE FOLLOWS (sending a sample push notification through Apple's APNS servers) ``` // create our HTTP Client Handler (which will be reused across HTTP/2 requests) var clientHandler = new HttpClientHandler() { ClientCertificateOptions = ClientCertificateOption.Manual }; X509Certificate2 clientCertificate = new X509Certificate2(""/home/ubuntu/apns_devcert.pfx"", ""password""); // INFO: comment out the following line to see that HTTPS/2 is succeeding without a client certificate...APNS will simply return a ""please provide a client certificate"" message clientHandler.ClientCertificates.Add(clientCertificate); // var myClient = new System.Net.Http.HttpClient(clientHandler); // we will attempt to send five requests, 60 seconds apart, to ensure that HTTP/2 is working properly. for (int i = 1; i <= 5; i++) { Console.WriteLine(""Starting request #"" + i.ToString()); // create the push notification request string deviceToken = ""{device token from mac/ios device goes here}""; string appBundleId = ""{app bundle id goes here}""; string messageUuid = Guid.NewGuid().ToString(""D""); var myRequest = new System.Net.Http.HttpRequestMessage(System.Net.Http.HttpMethod.Post, ""https://api.development.push.apple.com:443/3/device/"" + deviceToken); // upgrade the HTTP request to HTTP/2 (required for .NET Core on Linux) myRequest.Version = new System.Version(2, 0); myRequest.Headers.Add(""apns-id"", messageUuid); myRequest.Headers.Add(""apns-expiration"", ""0""); myRequest.Headers.Add(""apns-priority"", ""10""); myRequest.Headers.Add(""apns-topic"", appBundleId); StringContent content = new StringContent(""{ \""aps\"" : { \""alert\"" : \"".NET Core (request #"" + i.ToString() + "") -- test message -- \"" } }""); myRequest.Content = content; try { // INFO: .NET Core crashes on the following line var response = myClient.SendAsync(myRequest).GetAwaiter().GetResult(); // print out response to console var responseString = response.Content.ReadAsStringAsync().GetAwaiter().GetResult(); Console.WriteLine(""Response: "" + responseString); // optionally, verify that the response is using HTTP/2 //Console.WriteLine(""Response protocol: HTTP/"" + response.Version.ToString()); } catch (System.Net.Http.HttpRequestException ex) { Console.Write(""HttpRequestException: "" + ex.Message); } catch (Exception ex) { Console.Write(""Exception: "" + ex.Message); } // wait 60 seconds between test requests Task.Delay(60000).GetAwaiter().GetResult(); } Console.WriteLine(""Done""); ``` " 11037 area-System.Runtime Add SuppressIldasmAttribute Add this, it's used in a few apps. It has no implementation. ``` T:System.Runtime.CompilerServices.SuppressIldasmAttribute M:System.Runtime.CompilerServices.SuppressIldasmAttribute.#ctor ``` -11038 area-System.Net HttpClient Exception on GetAsync method "Hi all, since I updated from RC1 to 1.0 I'm getting an exception using HttpClient.GetAsync method. Here the exception: Exception type System.TypeLoadException Exception message: Could not load type 'System.Collections.Concurrent.ConcurrentDictionary`2' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'. Stack trace: at System.Net.Http.Formatting.JsonMediaTypeFormatter..ctor() at System.Net.Http.Formatting.MediaTypeFormatterCollection.CreateDefaultFormatters() at System.Net.Http.HttpContentExtensions.get_DefaultMediaTypeFormatterCollection() at WebApi.Controllers.MyController.Get(String word) in C:\MyController.cs:line 30 at lambda_method(Closure , Object , Object[] ) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__28.MoveNext() It seems a conflict between .Net4.0 and .Net4.5, my project reference ""net462"", IIS tries to get the method from mscorlib (net45) and it fails because it's getting actually mscorlib (net40). This method doesnt exists in mscorlib(net40) but in mscorlib(net45). See: http://stackoverflow.com/questions/38375857/system-typeloadexception-could-not-load-type-system-reflection-runtimereflecti Here my project.json: { ""dependencies"": { ""Microsoft.NETCore.App"": { ""version"": ""1.0.0"", ""type"": ""platform"" }, ""Microsoft.AspNetCore.Mvc"": ""1.0.0"", ""Microsoft.AspNetCore.Server.IISIntegration"": ""1.0.0"", ""Microsoft.AspNetCore.Server.Kestrel"": ""1.0.0"", ""Microsoft.Extensions.Configuration.EnvironmentVariables"": ""1.0.0"", ""Microsoft.Extensions.Configuration.FileExtensions"": ""1.0.0"", ""Microsoft.Extensions.Configuration.Json"": ""1.0.0"", ""Microsoft.Extensions.Logging"": ""1.0.0"", ""Microsoft.Extensions.Logging.Console"": ""1.0.0"", ""Microsoft.Extensions.Logging.Debug"": ""1.0.0"", ""Microsoft.Extensions.Options.ConfigurationExtensions"": ""1.0.0"", ""Microsoft.NETCore.Portable.Compatibility"": ""1.0.1"", ""Microsoft.EntityFrameworkCore"": ""1.0.0"", ""Microsoft.EntityFrameworkCore.Relational"": ""1.0.0"", ""Microsoft.EntityFrameworkCore.SqlServer"": ""1.0.0"", ""Microsoft.EntityFrameworkCore.Design"": ""1.0.0-preview2-final"", ""Microsoft.Extensions.WebEncoders.Core"": ""1.0.0-rc1-final"", ""SapientGuardian.MySql.Data"": ""6.9.812"", ""Microsoft.AspNetCore.Mvc.Formatters.Xml"": ""1.0.0"", ""Microsoft.AspNetCore.StaticFiles"": ""1.0.0"", ""MimeKit"": ""1.4.1"", ""MailKit"": ""1.4.1"", ""System.Xml.XmlDocument"": ""4.0.1"", ""AspNet.Security.OAuth.Validation"": ""1.0.0-alpha2-final"", ""OpenIddict"": ""1.0.0-*"", ""Microsoft.AspNetCore.Authentication.JwtBearer"": ""1.0.0"", ""Serilog"": ""2.1.0"", ""Serilog.Sinks.File"": ""2.1.0"", ""Microsoft.AspNet.WebApi.Client"": ""5.2.3"" }, ""tools"": { ""Microsoft.AspNetCore.Server.IISIntegration.Tools"": ""1.0.0-preview2-final"", ""Microsoft.EntityFrameworkCore.Tools"": ""1.0.0-preview2-final"" }, ""frameworks"": { ``` ""netcoreapp1.0"": { ""imports"": [ ""dotnet5.6"", ""net462"" ] } ``` }, ""buildOptions"": { ""emitEntryPoint"": true, ""preserveCompilationContext"": true }, ""runtimeOptions"": { ""configProperties"": { ""System.GC.Server"": true } }, ""publishOptions"": { ""include"": [ ""wwwroot"", ""Views"", ""Areas/**/Views"", ""appsettings.json"", ""web.config"" ] }, ""scripts"": { ""postpublish"": [ ""dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%"" ] } } " +11038 area-System.Net HttpClient Exception on GetAsync method "Hi all, since I updated from RC1 to 1.0 I'm getting an exception using HttpClient.GetAsync method. Here the exception: Exception type System.TypeLoadException Exception message: Could not load type 'System.Collections.Concurrent.ConcurrentDictionary`2' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'. Stack trace: at System.Net.Http.Formatting.JsonMediaTypeFormatter..ctor() at System.Net.Http.Formatting.MediaTypeFormatterCollection.CreateDefaultFormatters() at System.Net.Http.HttpContentExtensions.get_DefaultMediaTypeFormatterCollection() at WebApi.Controllers.MyController.Get(String word) in C:\MyController.cs:line 30 at lambda_method(Closure , Object , Object[] ) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__28.MoveNext() It seems a conflict between .Net4.0 and .Net4.5, my project reference ""net461"", IIS tries to get the method from mscorlib (net45) and it fails because it's getting actually mscorlib (net40). This method doesnt exists in mscorlib(net40) but in mscorlib(net45). See: http://stackoverflow.com/questions/38375857/system-typeloadexception-could-not-load-type-system-reflection-runtimereflecti Here my project.json: { ""dependencies"": { ""Microsoft.NETCore.App"": { ""version"": ""1.0.0"", ""type"": ""platform"" }, ""Microsoft.AspNetCore.Mvc"": ""1.0.0"", ""Microsoft.AspNetCore.Server.IISIntegration"": ""1.0.0"", ""Microsoft.AspNetCore.Server.Kestrel"": ""1.0.0"", ""Microsoft.Extensions.Configuration.EnvironmentVariables"": ""1.0.0"", ""Microsoft.Extensions.Configuration.FileExtensions"": ""1.0.0"", ""Microsoft.Extensions.Configuration.Json"": ""1.0.0"", ""Microsoft.Extensions.Logging"": ""1.0.0"", ""Microsoft.Extensions.Logging.Console"": ""1.0.0"", ""Microsoft.Extensions.Logging.Debug"": ""1.0.0"", ""Microsoft.Extensions.Options.ConfigurationExtensions"": ""1.0.0"", ""Microsoft.NETCore.Portable.Compatibility"": ""1.0.1"", ""Microsoft.EntityFrameworkCore"": ""1.0.0"", ""Microsoft.EntityFrameworkCore.Relational"": ""1.0.0"", ""Microsoft.EntityFrameworkCore.SqlServer"": ""1.0.0"", ""Microsoft.EntityFrameworkCore.Design"": ""1.0.0-preview2-final"", ""Microsoft.Extensions.WebEncoders.Core"": ""1.0.0-rc1-final"", ""SapientGuardian.MySql.Data"": ""6.9.812"", ""Microsoft.AspNetCore.Mvc.Formatters.Xml"": ""1.0.0"", ""Microsoft.AspNetCore.StaticFiles"": ""1.0.0"", ""MimeKit"": ""1.4.1"", ""MailKit"": ""1.4.1"", ""System.Xml.XmlDocument"": ""4.0.1"", ""AspNet.Security.OAuth.Validation"": ""1.0.0-alpha2-final"", ""OpenIddict"": ""1.0.0-*"", ""Microsoft.AspNetCore.Authentication.JwtBearer"": ""1.0.0"", ""Serilog"": ""2.1.0"", ""Serilog.Sinks.File"": ""2.1.0"", ""Microsoft.AspNet.WebApi.Client"": ""5.2.3"" }, ""tools"": { ""Microsoft.AspNetCore.Server.IISIntegration.Tools"": ""1.0.0-preview2-final"", ""Microsoft.EntityFrameworkCore.Tools"": ""1.0.0-preview2-final"" }, ""frameworks"": { ``` ""netcoreapp1.0"": { ""imports"": [ ""dotnet5.6"", ""net461"" ] } ``` }, ""buildOptions"": { ""emitEntryPoint"": true, ""preserveCompilationContext"": true }, ""runtimeOptions"": { ""configProperties"": { ""System.GC.Server"": true } }, ""publishOptions"": { ""include"": [ ""wwwroot"", ""Views"", ""Areas/**/Views"", ""appsettings.json"", ""web.config"" ] }, ""scripts"": { ""postpublish"": [ ""dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%"" ] } } " 11042 area-System.Security X509Certificate2: Unclear error message when file does not exist "This issue is similar to #9402 An exception with an obscure error message is thrown when creating a `X509Certificate2` using a path to a file which does not exist. Consider the following code: ``` using System; using System.Security.Cryptography.X509Certificates; namespace ConsoleApplication { public class Program { public static void Main(string[] args) { new X509Certificate2(fileName: ""invalid.cer""); } } } ``` on Windows, the following exception is thrown: ``` Unhandled Exception: Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException: The system cannot find the file specified at Internal.Cryptography.Pal.CertificatePal.FromBlobOrFile(Byte[] rawData, String fileName, String password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(String fileName, String password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(String fileName) at ConsoleApplication.Program.Main(String[] args) ``` whereas the following exception is thrown on Linux and OS X: ``` nhandled Exception: Interop+Crypto+OpenSslCryptographicException: error:2006D080:BIO routines:BIO_new_file:no such file at Interop.Crypto.CheckValidOpenSslHandle(SafeHandle handle) at Internal.Cryptography.Pal.CertificatePal.FromFile(String fileName, String password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(String fileName, String password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(String fileName) at ConsoleApplication.Program.Main(String[] args) ``` As such, this confirms to the MSDN specifications of the `X509Certificate2` constructor because all it says is that a `CryptographicException` should be thrown - which is the case. It seems that the error message contains too much information - I'd argue it should only read ""no such file"" or a user-friendly string, and the underlying OpenSSL error code (2006D080) could go on a different property of the OpenSslCryptographicException class. " 11044 area-System.ComponentModel Cannot reset DisplayName on ValidationContext "I do a lot of work with console applications and I like to use validation attributes and `IValidatableObject` to take advantage of framework-supplied validations rather than reinventing the wheel or using a third-party library. When looping through an object's properties to validate them, I can set the context's `MemberName` property appropriately each run through, but any non-successful validation results may return a nonsensical message since the validators use the `DisplayName` property to format the message, and the `DisplayName` property getter caches its return value the first time it is used. In addition to this, the `DisplayName` property cannot be reset as the setter will throw an `ArgumentNullException`. I could envision any of the following approaches to resolve this: - Allow setting `DisplayName` to `null` or `""""` - Set the `_displayName` field to `null` whenever `MemberName`/`_memberName` are changed - Offer a method like `Reset(bool clearItems = true)` to be a bit more explicit " 11045 area-System.Xml XML .Save() method missing option to use filename It seems that System.IO.Stream, System.IO.TextWriter, and System.Xml.XmlWriter are still options, but using string filename has been removed. @@ -4304,7 +4304,7 @@ ID Area Title Description 11460 area-System.Linq Inspection / interception of IL generated by LambdaCompiler "IL generated by `LambdaCompiler` and `ILGen` turns out to be quite tricky to inspect. On desktop CLR, I used to emit IL to an assembly using `CompileToMethod` for offline inspection, or use SOS to `!dumpil`. While the latter still works, it's not an option at runtime, e.g. for testing purposes. In particular, when testing code emit optimizations, we don't have a good option to assert the output. One option is to perform private reflection on `DynamicMethod` to obtain the `byte[] m_iLStream` and use one of the decoders to print it as textual IL. Some code is around to do that on the MSDN blogs, so it's one option worth looking into. In fact, I've been using this over at https://github.com/bartdesmet/ExpressionFutures and it works ok-ish. There are some issues with visualizing some metadata tokens but it may be possible to work around that. It may suffice for testing purposes. An alternative which I've put in place in my https://github.com/bartdesmet/corefx/tree/CheaperClosures branch is an indirection of `ILGenerator` calls through an interface, currently only when a conditional compilation symbol is set. Unfortunately, one can't derive from `ILGenerator` because it only has `internal` constructors (and one of its `Emit` overloads is not `virtual` either), so an additional interface has to be put in place. My implementation logs all the calls made, so a `ToString` can be obtained. Note that the last option offers some benefits because one could implement e.g. an optimizing back-end by capturing the emitted instructions and run a post-process step on it (assuming we add one additional method call to ""bake"" the emitted IL, which could flush to the underlying emitter target after running post-process steps): ``` csharp interface IILGenerator { void Emit(OpCode opcode); // quite a lot more methods, see ILGenerator void Bake(); } ``` An interceptor for logging would implement `IILGenerator` and get passed an `IILGenerator` that's the target to emit to. Its `Bake` method can simply forward to the underlying generator; every other method forwards and logs to populate data structures that allow for pretty printing. An optimizer would implement `IILGenerator` but won't forward the `Emit` methods directly; it'd build up internal data structures that are used upon a call to `Bake` to run optimizations prior to making `Emit` calls to the underlying generator, followed by a `Bake` call. Of course, this would add a level of indirection with virtual calls, unless `ILGenerator` would implement such an interface (and make the `Emit(OpCode, sbyte)` overload `virtual`) so there's no additional cost if no wrapper is installed around the `ILGenerator` obtained from `DynamicMethod`. See https://github.com/dotnet/corefx/issues/11454 for a case where such a back-end could provide value. I got the last thing implemented (including an inspector and a basic optimizer) in an offline copy here in Bing, which is based on a fork of the expression API a few years back. I'll to port it to CoreFX as a proof of concept so the merits can be debated with some concrete piece of code to back it up. " 11462 area-System.Threading File version of DataFlow assembly changed from 4.6 to 1.0 in latest release on NuGet DataFlow 4.5.25 on NuGet has file version 4.6.23123.0 and DataFlow 4.6.0 has file version 1.0.24212.1. This breaks deployment using Windows Installer. Only files with a higher file version are replaced during upgrades. https://www.nuget.org/packages/System.Threading.Tasks.Dataflow/ 11463 area-System.Threading Blocking Task.Result design flaw leads to deadlock when called from ThreadPool thread "Run this application: https://gist.github.com/AqlaSolutions/f8c993bfad32dc9be11703fea4e01422 It simulates network engine receiving requests and calling synchronously `IConnection.OnRequestReceived`. This method calls async method and then synchronously processes the result retrieved with Task.Result. The async method may take up to 700 ms. Assume I can't use await, because external network engine provides synchronous interface and I need to check async call result before returning. During run the simulation will decrease time between requests until deadlock occurs - after that point currently awaiting requests will never be completed. I set TP to low threads number to show the problem. It will also happen on 200 and 1000 threads but it will just take more time and will require modifying the simulation code for more requests. In a real app you will never want to set max threads to big numbers because it will make your app very slow (context switching thing) and also each thread takes 1 MB RAM. This example proves that absolutely any blocking call to `Task.Result` or `Task.Wait` from `ThreadPool` thread will work for some time but will eventually deadlock your application in truly high load scenario. Using these methods from `ThreadPool` thread for waiting is always a mistake and should be disallowed (but I understand that it will not happen for compatibility reasons). Yes, we all know from docs that mixing async and blocking ""may cause deadlocks"" but previously I thought about this only in a way ""do not block with `.Result` thread which synchronization context may be required to complete the waited task itself"". TP deadlock is not obvious and many people will ""just use `.Result`"" without ever encountering it during testing. What do you think? May be some workarounds inside .NET TP? Prioritize continuations over new tasks? " -11464 area-System.Net CookieContainer.Add(Cookie cookie) CookieContainer.Add(Cookie cookie) method is no longer accessible because it's accessibility was downgraded which causes incompatibility between other .net versions. Is this intended or a mistake? Other definitions (net462): public void Add(Cookie cookie) Existing definition (netstandard1.6): internal void Add(Cookie cookie) +11464 area-System.Net CookieContainer.Add(Cookie cookie) CookieContainer.Add(Cookie cookie) method is no longer accessible because it's accessibility was downgraded which causes incompatibility between other .net versions. Is this intended or a mistake? Other definitions (net461): public void Add(Cookie cookie) Existing definition (netstandard1.6): internal void Add(Cookie cookie) 11465 area-System.Runtime DefaultValueAttribute missing unsigned int / unsigned long constructor ## Latest proposal ### Rationale and Usage As has already been explained, using `DefaultValueAttribute` with one of the problematic types (unsigned integer types and `sbyte`) in C# ends up using a widening conversion and so the boxed `Value` ends up with an unexpected type. The proposal is to add constructor overloads so that the conversions don't happen and `Value` gets the expected type. The usage stays the same as before, e.g. `[DefaultValue(UInt64.MaxValue)]`. Doing this would be technically a source breaking change, since recompiling existing code would end up with a different type for the boxed `Value`. (Arguably, it would be a better type, but that doesn't change the fact that someone could rely on the old behavior.) ### Proposed API ```c# public class DefaultValueAttribute : Attribute { // existing constructor overloads: public DefaultValueAttribute(Type type, string value); public DefaultValueAttribute(char value); public DefaultValueAttribute(byte value); public DefaultValueAttribute(short value); public DefaultValueAttribute(int value); public DefaultValueAttribute(long value); public DefaultValueAttribute(float value); public DefaultValueAttribute(double value); public DefaultValueAttribute(bool value); public DefaultValueAttribute(string value); public DefaultValueAttribute(object value); // added constructor overloads: public DefaultValueAttribute(sbyte value); public DefaultValueAttribute(ushort value); public DefaultValueAttribute(uint value); public DefaultValueAttribute(ulong value); } ``` ## Original proposal Most numeric types have their constructor but not the unsigned ones. As a result, if you write that code: `new DefaultValueAttribute(UInt64.MaxValue);` The float constructor will be called as the compiler seems to avoid the constructor that needs boxing. Removing all explicit constructor that takes numeric types solve the issue. They all points to the same code that will box the value anyway: ``` /// /// Initializes a new instance of the class using a Unicode /// character. /// public DefaultValueAttribute(char value) { this.value = value; } ``` 11467 area-System.Linq More optimizations for LINQ methods I've been raising a lot of issues about LINQ recently, so this is sort of an umbrella issue for all of the optimizations I think could be applied. - `Enumerable.Cast` is one of those functions that has a 1:1 mapping, so it should forego `yield` and instead implement a custom iterator class. Things like `x.Cast().ToArray()` are very common. - In `OfType`, if `TResult` is object or the source enumerable is of type `IEnumerable` *, we know that each is check will return true and therefore we will have a 1:1 mapping. We can forward to `CastIterator` for those cases and get special treatment for `ToArray`, `ToList`, etc. \* I don't know how often this optimization will happen. Though it will incur no runtime cost since `typeof(T) == typeof(U)` is jitted away, it's not very common for someone to call `OfType()` on something they _know_ is an `IEnumerable`. The only places where I think it can happen are if they accept an `IEnumerable` and use `OfType` to convert it to a generic one, or their method has multiple type parameters and they want to convert an `IEnumerable` to an `IEnumerable` and someone calls their method with `Method()`. # - `Enumerable.Concat(...).ToArray()` is wasteful since it does not attempt to specialize if the underlying enumerables are `ICollections`. It should instead call `GetEnumerable` on everything, and then specialize for `ICollection`. (potentially `IIListProvider` as well if #11455 is implemented) - It may be possible for the `Concat` iterators to implement certain `IPartition` methods as well. If the first/last collections are ILists/IPartitions, then `TryGetFirst` and `TryGetLast` could be implemented with relatively minimal overhead. (actually not in the case where you have a very long linked list of `Concat` iterators and you try to get the first item, but in that case calling `First()` would still be very slow anyway.) # - [`LongCount`](https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/Count.cs#L79) is not optimized for ICollection/IIListProvider? # - `DefaultIfEmpty` should just return a cached iterator if the enumerable is empty. We should also introduce something like a `WrapperIterator` class that just provides a view over an enumerable, and use that for the other case. I'm sure it could be useful in many other LINQ methods (for example, possibly `Skip(0)`). 11468 area-Meta Move master to netcoreapp1.2 move everything in master from netcoreapp1.1 to netcoreapp1.2, because netcoreap1.1 is shipping earlier @@ -5416,7 +5416,7 @@ ID Area Title Description 13345 area-System.Threading ReaderWriterLockSlim contention perf "When ReaderWriterLockSlim contends with itself, the perf seems to be really bad. ```c# public static void Main(string[] args) { Action threadWork = null; var threadWorkComplete = new AutoResetEvent(false); var threadWorkAvailable = new AutoResetEvent(false); var t = new Thread(() => { while (true) { threadWorkComplete.Set(); threadWorkAvailable.WaitOne(); if (threadWork == null) break; threadWork(); } }); t.IsBackground = true; t.Start(); threadWorkComplete.WaitOne(); Action BeginDoThreadWork = work => { threadWork = work; threadWorkAvailable.Set(); }; Action EndDoThreadWork = () => threadWorkComplete.WaitOne(); Action DoThreadWork = work => { BeginDoThreadWork(work); EndDoThreadWork(); }; var rw = new ReaderWriterLockSlim(); Action Test = () => { for (int i = 0; i < 10; ++i) { DoThreadWork(() => rw.EnterReadLock()); BeginDoThreadWork(() => rw.ExitReadLock()); rw.EnterWriteLock(); rw.ExitWriteLock(); EndDoThreadWork(); } }; //var rw = new ReaderWriterLock(); //Action Test = // () => // { // for (int i = 0; i < 10; ++i) // { // DoThreadWork(() => rw.AcquireReaderLock(-1)); // BeginDoThreadWork(() => rw.ReleaseReaderLock()); // rw.AcquireWriterLock(-1); // rw.ReleaseWriterLock(); // EndDoThreadWork(); // } // }; TimeSpan testDuration = TimeSpan.FromMilliseconds(200); while (true) { uint iterations = 0; var elapsed = TimeSpan.Zero; var start = DateTime.Now; while (true) { Test(); ++iterations; if ((iterations & 0xf) != 0) continue; Console.Write('.'); elapsed = DateTime.Now - start; if (elapsed >= testDuration) break; } var iterationsPerSecond = iterations / elapsed.TotalSeconds; Console.WriteLine(); Console.WriteLine(""iterationsPerSecond: {0:0.00}"", iterationsPerSecond); } } ``` ReaderWriterLockSlim: ``` . iterationsPerSecond: 7.26 . iterationsPerSecond: 6.83 . iterationsPerSecond: 7.47 . iterationsPerSecond: 15.28 . iterationsPerSecond: 6.92 . iterationsPerSecond: 7.59 . iterationsPerSecond: 8.06 . iterationsPerSecond: 6.78 ``` The numbers usually vary a lot, the ones above are on the lower end and are not infrequent. By comparison, ReaderWriterLock is about 100-1000 times as fast for the same test: ``` ............................................................. iterationsPerSecond: 4804.77 .......................................................... iterationsPerSecond: 4568.59 ................................................................ iterationsPerSecond: 5041.21 ....................................................... iterationsPerSecond: 4332.31 ........................................................... iterationsPerSecond: 4647.33 ....................................................... iterationsPerSecond: 4332.27 ..................................................... iterationsPerSecond: 4174.75 ``` I believe the issue is caused by deterministic unfairness in the spin lock. Usually, the main thread will enter its spin loop trying to acquire the write lock, before the background thread enters its spin loop trying to release the read lock. Both threads fight for the spin lock, but the main thread acquires it first. When the main thread relinquishes the spin lock to yield in the spin loop, most of the time the background thread is already in the process of yielding in-between spinning for the spin lock. So the main thread acquires the spin lock again, and so on until the spin count is maxed out. Finally, the main thread enters a wait state and releases the spin lock for long enough for the background thread to acquire the spin lock, release the read lock, and release the now-waiting main thread. One way to fix this could be to have the spin lock spin for a very short duration and fall back to a real lock." 13346 area-System.Net Dns.GetHostAddressesAsync(Dns.GetHostName()) not working on centos7 using Dns.GetHostAddressesAsync(Dns.GetHostName()) can't load local ip address on centos 7 system 13347 area-Meta Output Path not working correctly "Hey, I'm using Visual Studio 14 (VS 2015) Update 3 and I want to build a REST API based .Net Core 1, using Kestrel as the server. I want to be able to use a **.csproj** instead of the old **.xproj** in order to use MSBuild as I do in other projects. The problem is that when I define ""OutputPath"" as ""bin\Debug"" (for Debug mode, for instance), Visual Studio builds the project and sets build's results to ""bin\Debug\\bin\Debug\netcoreapp1.0\win7-x64"". If I use the *.xproj* and build, the results are stored at ""bin\Debug\netcoreapp1.0"", which is the expected behaviour. What is happening? .csproj: ``` $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) win7 .NETCoreApp v1.0 true $(NoWarn);1701 {D21ABA46-65F9-4B47-882C-F9C0765052DD} Exe Properties MyAPP MyAPP 512 true x64 true full false .\obj\Debug .\bin\Debug\ DEBUG;TRACE prompt 4 x64 pdbonly true .\bin\Release TRACE prompt 4 <_TargetFrameworkDirectories>$(MSBuildThisFileDirectory) <_FullFrameworkReferenceAssemblyPaths>$(MSBuildThisFileDirectory) true false Program $(TargetDir) {2E36F1D4-B23C-435D-AB41-18E608940038} ``` project.json: ``` { ""version"": ""1.0.0"", ""buildOptions"": { ""emitEntryPoint"": true, ""preserveCompilationContext"": true }, ""dependencies"": { ""Microsoft.NETCore.App"": { ""version"": ""1.0.0"", ""type"": ""build"" }, ""Microsoft.ApplicationInsights.AspNetCore"": ""1.0.0"", ""Microsoft.AspNetCore.Mvc"": ""1.0.0"", ""Microsoft.AspNetCore.Server.Kestrel"": ""1.0.0"", ""Microsoft.Extensions.Configuration.EnvironmentVariables"": ""1.0.0"", ""Microsoft.Extensions.Configuration.FileExtensions"": ""1.0.0"", ""Microsoft.Extensions.Configuration.Json"": ""1.0.0"", ""Microsoft.Extensions.Logging"": ""1.0.0"", ""Microsoft.Extensions.Logging.Console"": ""1.0.0"", ""Microsoft.Extensions.Logging.Debug"": ""1.0.0"", ""Microsoft.Extensions.Options.ConfigurationExtensions"": ""1.0.0"" }, ""runtimes"": { ""win7-x64"": {}, ""ubuntu.14.04-x64"": {}, ""osx.10.10-x64"": {} }, ""frameworks"": { ""netcoreapp1.0"": { ""imports"": [ ""dnxcore50"", ""portable-net452"" ] } }, ""runtimeOptions"": { ""configProperties"": { ""System.GC.Server"": true } }, ""publishOptions"": { ""include"": [ ""appsettings.json"", ""web.config"" ] }, ""scripts"": { ""postpublish"": [ ""dotnet publish --publish-folder ./bin"" ] } } ```" -13348 area-System.Numerics NullReferenceException when calling Vector.CopyTo in Release mode "I'm not sure if this is the right place to report this. I have this program: ```csharp using System; using System.Numerics; namespace ConsoleApp1 { public class Program { public static Vector ConvertToInt32(Vector input) { var count = Vector.Count; var inputs = new float[count]; var outputs = new int[count]; // swap input.CopyTo(inputs); // these for (int i = 0; i < count; i++) { outputs[i] = (int)inputs[i]; } return new Vector(outputs); } public static void Main(string[] args) { var v = new Vector(123.123f); var values = ConvertToInt32(v); Console.WriteLine(v); Console.WriteLine(values); } } } ``` project.json: ```javascript { ""version"": ""1.0.0-*"", ""buildOptions"": { ""emitEntryPoint"": true, ""optimize"": true }, ""runtimes"": { ""win7-x64"": {} }, ""dependencies"": { ""System.Numerics.Vectors"": ""4.1.1"" }, ""frameworks"": { ""net462"": {} } /* ""dependencies"": { ""Microsoft.NETCore.App"": { ""type"": ""platform"", ""version"": ""1.0.0"" }, ""System.Numerics.Vectors"": ""4.1.1"" }, ""frameworks"": { ""netcoreapp1.0"": {} } */ } ``` test cases: 1. targeting net462, compiling as shown, Release mode: null ref on `input.CopyTo(inputs);` 2. targeting net462, swapping indicated lines, Release mode: incorrect console output 3. targeting net462, as shown or swapped, Debug mode: no error, correct output 4. targeting netcoreapp1.0, either as shown or swapped, Debug or Release: no error, correct output version info: Microsoft Visual Studio Professional 2015 Version 14.0.25431.01 Update 3 " +13348 area-System.Numerics NullReferenceException when calling Vector.CopyTo in Release mode "I'm not sure if this is the right place to report this. I have this program: ```csharp using System; using System.Numerics; namespace ConsoleApp1 { public class Program { public static Vector ConvertToInt32(Vector input) { var count = Vector.Count; var inputs = new float[count]; var outputs = new int[count]; // swap input.CopyTo(inputs); // these for (int i = 0; i < count; i++) { outputs[i] = (int)inputs[i]; } return new Vector(outputs); } public static void Main(string[] args) { var v = new Vector(123.123f); var values = ConvertToInt32(v); Console.WriteLine(v); Console.WriteLine(values); } } } ``` project.json: ```javascript { ""version"": ""1.0.0-*"", ""buildOptions"": { ""emitEntryPoint"": true, ""optimize"": true }, ""runtimes"": { ""win7-x64"": {} }, ""dependencies"": { ""System.Numerics.Vectors"": ""4.1.1"" }, ""frameworks"": { ""net461"": {} } /* ""dependencies"": { ""Microsoft.NETCore.App"": { ""type"": ""platform"", ""version"": ""1.0.0"" }, ""System.Numerics.Vectors"": ""4.1.1"" }, ""frameworks"": { ""netcoreapp1.0"": {} } */ } ``` test cases: 1. targeting net461, compiling as shown, Release mode: null ref on `input.CopyTo(inputs);` 2. targeting net461, swapping indicated lines, Release mode: incorrect console output 3. targeting net461, as shown or swapped, Debug mode: no error, correct output 4. targeting netcoreapp1.0, either as shown or swapped, Debug or Release: no error, correct output version info: Microsoft Visual Studio Professional 2015 Version 14.0.25431.01 Update 3 " 13349 area-System.Net System.Net.Sockets.Async.Performance.Tests threw ObjectDisposedException (Windows, Linux and Mac) No results generated. https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161103.04/workItem/System.Net.Sockets.Async.Performance.Tests/details/ef1c1a72-3184-4848-9894-303a848b3635 ```2016-11-03 15:14:31,896: INFO: proc(65): run_and_log_output: Output: Starting: System.Net.Sockets.Async.Performance.Tests 2016-11-03 15:14:32,255: INFO: proc(65): run_and_log_output: Output: 2016-11-03 15:14:32,255: INFO: proc(65): run_and_log_output: Output: Unhandled Exception: System.ObjectDisposedException: Cannot access a disposed object. 2016-11-03 15:14:32,256: INFO: proc(65): run_and_log_output: Output: Object name: 'System.Net.Sockets.Socket'. 2016-11-03 15:14:32,256: INFO: proc(65): run_and_log_output: Output: at System.Net.Sockets.Socket.ReceiveAsync(SocketAsyncEventArgs e) 2016-11-03 15:14:32,256: INFO: proc(65): run_and_log_output: Output: at System.Net.Sockets.Performance.Tests.SocketTestClientAsync.Receive(Action`2 onReceiveCallback) 2016-11-03 15:14:32,256: INFO: proc(65): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 2016-11-03 15:14:32,256: INFO: proc(65): run_and_log_output: Output: at System.Net.Sockets.MultipleConnectAsync.Succeed() 2016-11-03 15:14:32,256: INFO: proc(65): run_and_log_output: Output: at System.Net.Sockets.MultipleConnectAsync.InternalConnectCallback(Object sender, SocketAsyncEventArgs args) 2016-11-03 15:14:32,257: INFO: proc(65): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 2016-11-03 15:14:32,257: INFO: proc(65): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 2016-11-03 15:14:32,257: INFO: proc(65): run_and_log_output: Output: at System.Threading.QueueUserWorkItemCallbackDefaultContext.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() 2016-11-03 15:14:32,257: INFO: proc(65): run_and_log_output: Output: at System.Threading.ThreadPoolWorkQueue.Dispatch() 2016-11-03 15:14:32,259: INFO: proc(65): run_and_log_output: Output: /Users/dotnet-bot/dotnetbuild/work/ef1c1a72-3184-4848-9894-303a848b3635/Work/4effeedc-b714-487c-9ce0-32e9cb61ae1b/Unzip/RunTests.sh: line 284: 29083 Abort trap: 6 ./corerun xunit.console.netcore.exe System.Net.Sockets.Async.Performance.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapp1.1tests -notrait category=requireselevation -notrait category=failing -notrait category=nonosxtests ``` I'm guessing this will need a local repro. 13351 area-System.Runtime Seg fault during Serialization unit tests on Ubuntu https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161104.53/workItem/System.Runtime.Serialization.Formatters.Tests/details/987bb27a-8616-44cd-99e2-5e12840da2f8 ``` 2016-11-04 01:36:01,603: INFO: proc(55): run_and_log_output: Output: /home/helixbot/dotnetbuild/work/987bb27a-8616-44cd-99e2-5e12840da2f8/Work/64d343ba-b793-4450-b356-79cdfeb514e3/Unzip/RunTests.sh: line 285: 2770 Segmentation fault (core dumped) ./corerun xunit.console.netcore.exe System.Runtime.Serialization.Formatters.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapp1.1tests -notrait category=requireselevation -notrait category=failing -notrait category=nonlinuxtests 2016-11-04 01:36:01,604: INFO: proc(55): run_and_log_output: Output: Finished running tests. End time=01:36:01. Return value was 139 2016-11-04 01:36:01,606: INFO: proc(55): run_and_log_output: Output: GDB was not found. Unable to print core file. 2016-11-04 01:36:01,608: INFO: proc(55): run_and_log_output: Output: Copying core file core to /tmp/coredumps ``` Finding out whether there's a way to get dumps from these machines. 13352 area-System.Data Adding Client hostname to Sql server connection While connecting to the Sql Server, the SqlClient was sending an empty hostname to the server. In this pull request we use using the Environment.MachineName to populate the hostname while connecting to SqlServer. Fixes #12627 cc @stephentoub @corivera @@ -5529,7 +5529,7 @@ ID Area Title Description 13500 area-System.Net Implement HttpWebRequest Timeout property Granular WinHttpHandler timeout properties are not exposed via the HttpClientHandler API , need timeout from HttpClientHandler to implement this. 13501 area-System.Security TestCopyConstructor_Lifetime_Cloned failed in ci - OpenCSP failed with error code 2148073494. this code seems to be [keyset does not exist](http://index/?query=0x80090016&rightProject=mscorlib&file=system%5Csecurity%5Ccryptography%5Cutils.cs&line=54) ``` 14:49:38 System.Security.Cryptography.X509Certificates.Tests.CtorTests.TestCopyConstructor_Lifetime_Cloned [FAIL] 14:49:38 System.Security.Cryptography.CryptographicException : OpenCSP failed with error code 2148073494. 14:49:38 Stack Trace: 14:49:38 at Internal.NativeCrypto.CapiHelper.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer) 14:49:38 at System.Security.Cryptography.RSACryptoServiceProvider.get_SafeProvHandle() 14:49:38 at System.Security.Cryptography.RSACryptoServiceProvider.get_SafeKeyHandle() 14:49:38 at System.Security.Cryptography.RSACryptoServiceProvider..ctor(Int32 keySize, CspParameters parameters, Boolean useDefaultKeySize) 14:49:38 D:\j\workspace\windows_nt_re---37265eab\src\System.Security.Cryptography.X509Certificates\src\Internal\Cryptography\Pal.Windows\CertificatePal.PrivateKey.cs(52,0): at Internal.Cryptography.Pal.CertificatePal.<>c.b__62_0(CspParameters csp) 14:49:38 D:\j\workspace\windows_nt_re---37265eab\src\System.Security.Cryptography.X509Certificates\src\Internal\Cryptography\Pal.Windows\CertificatePal.PrivateKey.cs(134,0): at Internal.Cryptography.Pal.CertificatePal.GetPrivateKey[T](Func`2 createCsp, Func`2 createCng) 14:49:38 D:\j\workspace\windows_nt_re---37265eab\src\System.Security.Cryptography.X509Certificates\src\Internal\Cryptography\CertificateExtensionsCommon.cs(52,0): at Internal.Cryptography.Pal.CertificateExtensionsCommon.GetPrivateKey[T](X509Certificate2 certificate, Predicate`1 matchesConstraints) 14:49:38 D:\j\workspace\windows_nt_re---37265eab\src\System.Security.Cryptography.X509Certificates\tests\CtorTests.cs(266,0): at System.Security.Cryptography.X509Certificates.Tests.CtorTests.TestPrivateKey(X509Certificate2 c, Boolean expectSuccess) 14:49:38 D:\j\workspace\windows_nt_re---37265eab\src\System.Security.Cryptography.X509Certificates\tests\CtorTests.cs(242,0): at System.Security.Cryptography.X509Certificates.Tests.CtorTests.TestCopyConstructor_Lifetime_Cloned() ``` https://ci.dot.net/job/dotnet_corefx/job/master/job/windows_nt_release_prtest/2797/consoleFull#184376521779fe3b83-f408-404c-b9e7-9207d232e5fc @steveharter 13502 area-System.Net Initial commit to System.Net.HttpListener This gets @ericeil PR #13287 in. Fixed merged conflicts. cc @stephentoub @davidsh @CIPop @geoffkizer @karelz -13504 area-Meta Publishing Core application targeting net462 "In order to use Oracle I'm targeting net462 in my Core application. After publishing IIS on win server 2012. I get this error: ![image](https://cloud.githubusercontent.com/assets/9387260/20122641/2cc1cd10-a5e7-11e6-8fed-c819c6e104d0.png) ``` Unhandled Exception: System.TypeInitializationException: The type initializer for 'Microsoft.Extensions.PlatformAbstractions.PlatformServices' threw an exception. ---> System.TypeLoadException: Could not load type 'System.AppContext' from assembly 'System.AppContext, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. at Microsoft.Extensions.PlatformAbstractions.ApplicationEnvironment.GetApplicationBasePath() at Microsoft.Extensions.PlatformAbstractions.ApplicationEnvironment..ctor() at Microsoft.Extensions.PlatformAbstractions.PlatformServices..ctor() at Microsoft.Extensions.PlatformAbstractions.PlatformServices..cctor() --- End of inner exception stack trace --- at Microsoft.AspNetCore.Hosting.WebHostBuilder.BuildHostingServices() at Microsoft.AspNetCore.Hosting.WebHostBuilder.Build() ``` my config file: `` after publishing looks like this: `` [project.json.txt](https://github.com/dotnet/corefx/files/579673/project.json.txt) However, if I target: ``` ""frameworks"": { ""netcoreapp1.0"": { ""imports"": [ ""dotnet5.6"", ""portable-net45+win8"" ] } }, ``` It works fine. How do I make it work with net462?" +13504 area-Meta Publishing Core application targeting net461 "In order to use Oracle I'm targeting net461 in my Core application. After publishing IIS on win server 2012. I get this error: ![image](https://cloud.githubusercontent.com/assets/9387260/20122641/2cc1cd10-a5e7-11e6-8fed-c819c6e104d0.png) ``` Unhandled Exception: System.TypeInitializationException: The type initializer for 'Microsoft.Extensions.PlatformAbstractions.PlatformServices' threw an exception. ---> System.TypeLoadException: Could not load type 'System.AppContext' from assembly 'System.AppContext, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. at Microsoft.Extensions.PlatformAbstractions.ApplicationEnvironment.GetApplicationBasePath() at Microsoft.Extensions.PlatformAbstractions.ApplicationEnvironment..ctor() at Microsoft.Extensions.PlatformAbstractions.PlatformServices..ctor() at Microsoft.Extensions.PlatformAbstractions.PlatformServices..cctor() --- End of inner exception stack trace --- at Microsoft.AspNetCore.Hosting.WebHostBuilder.BuildHostingServices() at Microsoft.AspNetCore.Hosting.WebHostBuilder.Build() ``` my config file: `` after publishing looks like this: `` [project.json.txt](https://github.com/dotnet/corefx/files/579673/project.json.txt) However, if I target: ``` ""frameworks"": { ""netcoreapp1.0"": { ""imports"": [ ""dotnet5.6"", ""portable-net45+win8"" ] } }, ``` It works fine. How do I make it work with net461?" 13505 area-System.Runtime Support for 64 bits array Is there a reason to limit arrays to 32 bit only addressable ones? Working around it might severely impact some HPC apps that manipulate large sets of data. I understand that .NetCore might run on some platforms that are not 64 bits and not many applications need such large arrays. But this seems a very limiting decision as we see more and more platforms going 64 bits and we are coming into the age of massive data. 13508 area-Infrastructure [ARM/CI] Change rootfs directories rootfs directory `/opt/linux-arm-emulator-root/` is still in use from coreclr ARM-CI so changing it to `/opt/linux-arm-emulator-root_{arm|arm-softfp}/`. 13509 area-System.Security Re-enable SecureString tests cc: @AlexGhiondea Fixes #13331 Fixes #13471 One thing to note: it looks like there was a discrepancy between SecureStringMarshal and Marshal in their handling of null SecureString inputs. SecureStringMarshal was returning IntPtr.Zero for a null input, whereas Marshal is throwing an ArgumentNullException. I've changed the tests to match the Marshal behavior, which is the same behavior that exists on desktop. We should confirm we're ok with this change from .NET Core 1.1, though, and address it subsequently in both the implementation and tests if we're not. @@ -5576,7 +5576,7 @@ ID Area Title Description 13562 area-System.Memory Portable (and thus slower) version of Span<> - Holding off on ReadOnlySpan<> until we're happy with Span so I don't have keep making fixes in two places. - Not too happy with the hoops DangerousGetPinnedReference has to go through: we are looking at an alternative that involves adding two new Unsafe apis: https://github.com/dotnet/corefx/issues/13426 I'll have to do some benchmarking to see which one's faster, though. In the meantime, there's plenty to review that won't be affected by that. 13563 area-System.IO Add Replace methods to System.IO.FileInfo Fixes #13490 cc @danmosemsft @joperezr @stephentoub 13564 area-Meta Fix warnings Fixes warnings and removes a few ToDos. @stephentoub @JeremyKuhne @weshaggard -13565 area-Infrastructure Add facades This adds the building of netstandard.dll facade as well as the net462 set of shim facades along with some APICompat checks. To accomplish this we are dependent on a flat layout that we can use for seeds so we are going to use the layout that we currently produce for indexing. The APICompat check is split between net462 and netstandard20 which will allow us to more easily track the remaining work for netstandard20. This PR also cleans up the older compat refs and src projects that we aren't going to use any longer. cc @ericstj @joperezr +13565 area-Infrastructure Add facades This adds the building of netstandard.dll facade as well as the net461 set of shim facades along with some APICompat checks. To accomplish this we are dependent on a flat layout that we can use for seeds so we are going to use the layout that we currently produce for indexing. The APICompat check is split between net461 and netstandard20 which will allow us to more easily track the remaining work for netstandard20. This PR also cleans up the older compat refs and src projects that we aren't going to use any longer. cc @ericstj @joperezr 13566 area-System.Runtime System.Runtime.InteropServices.RuntimeInformation fails when running on full .NET on Win7 The library PInvokes into an api-set which isn't present on Win7 and so when running on .NET Framework there it throws the following exception. ``` Unhandled Exception: System.TypeInitializationException: The type initializer fo r 'Microsoft.VisualStudio.TestPlatform.ObjectModel.Constants' threw an exception . ---> System.DllNotFoundException: Unable to load DLL 'api-ms-win-core-sysinfo- l1-2-0.dll': The specified module could not be found. (Exception from HRESULT: 0 x8007007E) at Interop.mincore.GetNativeSystemInfo(SYSTEM_INFO& lpSystemInfo) at System.Runtime.InteropServices.RuntimeInformation.get_OSArchitecture() at Microsoft.VisualStudio.TestPlatform.ObjectModel.Utilities.XmlRunSettingsUt ilities.get_OSArchitecture() at Microsoft.VisualStudio.TestPlatform.ObjectModel.Constants..cctor() --- End of inner exception stack trace --- at Microsoft.VisualStudio.TestPlatform.CommandLine.Processors.Utilities.RunSe ttingsUtilities.GetEffectiveRunSettings(String runSettings, CommandLineOptions c ommandLineOptions) at Microsoft.VisualStudio.TestPlatform.CommandLine.Processors.Utilities.RunSe ttingsUtilities.GetRunSettings(IRunSettingsProvider runSettingsProvider, Command LineOptions commandlineOptions) at Microsoft.VisualStudio.TestPlatform.CommandLine.Processors.RunTestsArgumen tExecutor.RunTests(IEnumerable`1 sources) at Microsoft.VisualStudio.TestPlatform.CommandLine.Processors.RunTestsArgumen tExecutor.Execute() at Microsoft.VisualStudio.TestPlatform.CommandLine.Executor.ExecuteArgumentPr ocessor(IArgumentProcessor processor, Int32& exitCode) at Microsoft.VisualStudio.TestPlatform.CommandLine.Executor.Execute(String[] args) at Microsoft.VisualStudio.TestPlatform.CommandLine.Program.Main(String[] args ) ``` To workaround people can deploy api-ms-win-core-sysinfo- l1-2-0.dll with their application similar to https://github.com/dotnet/corefx/issues/8091#issuecomment-225641743. My expectation is that this should no longer be an issue once @JohnChen0 finishes his work to move us off api-sets. 13567 area-System.Net Add baseclass to ServiceNameCollection Fixes https://github.com/dotnet/corefx/issues/13558 @stephentoub @joperezr 13568 area-System.Numerics System.Numerics.BigInteger causes StackOverflowException ![Screenshot](http://archive.org/download/Fsharp-StackOverflowException/fsi.png) The F# code first defines a custom power function, then tetration function based on it and then two operators so I don't have to type 'I' next to every number I want to work with and hide the superfluous BigInteger members from the console. It worked fine for 3rd tetration of 4 [4 ^ (4 ^ 4) = 4 ^ 256] and returned over 150 digits, but something went wrong on calculating the **5th tetration of 2**, which **is supposed to be almost 20,000 digits**, btw; the program crashes before bigint value gets close to what float can handle (~310 digits), let alone 20,000 digits. What am I missing? ``` let rec exponentiation (x:bigint) (y:bigint) : bigint = match y with | y when y.IsZero -> 1I | y when y.IsOne -> x | y -> x * exponentiation x (y-1I) let rec tetration (x:bigint) (y:bigint) : bigint = match y with | y when y.IsZero -> 1I | y when y.IsOne -> x | y -> exponentiation x (tetration x (y-1I)) let (^) (x:int) (y:int) = System.Console.WriteLine (exponentiation (bigint x) (bigint y)) let (^^) (x:int) (y:int) = System.Console.WriteLine (tetration (bigint x) (bigint y)) ``` I've been dabbling with F# lately, it's the only programming language I am familiar with. I know an unhelpful smattering of JavaScript, and remember a couple of keywords from C# that I tried years ago for a few days on Unity (yeah, absolutely no .NET knowledge) * Windows 10 for Education x64 * .NET Framework 4.5.1 * Visual F# 4.0 * Visual Studio Code 1.7 with Ionide suite of extensions @@ -5611,7 +5611,7 @@ ID Area Title Description 13613 area-System.Net DNS client and custom DNS queries Hi, I was looking for this for some time now and it seems either the feature is hiding pretty well or is missing. System.Net has basic name resolution and network information now. But what about a DNS client which can query any kind of DNS server? I'm currently trying to implement services with the new aspnet core stack. One common scenario with Microservices is service discovery. And one common solution for this is to use DNS. An example would be to query the consul DNS endpoint for service discovery. And this is not really easily doable today. There are certain implementations available for the .NET world, but those are pretty basic and mostly not maintained repositories and/or they are not supporting netstandart. Are there any plans to add something like that? Or, if I'm just missing something, any hint? Thanks a lot! 13614 area-System.Security Add missing RSA members Fixes https://github.com/dotnet/corefx/issues/12366 @bartonjs @steveharter 13618 area-System.Net Add more test coverage for System.Net.HttpListener. -13619 area-Infrastructure Full framework test csproj referencing netstandard csproj using HttpClient fails at runtime I have a net462 test project that uses a netstandard 1.3 csproj. The netstandard project uses HttpClient. When I run the tests, some with HTTP gets and some with HTTPS, they fail with this: ``` System.IO.FileLoadException : Could not load file or assembly 'System.Security.Cryptography.X509Certificates, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) at System.Net.Http.WinHttpHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.HttpClientHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.HttpMessageInvoker.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.HttpClient.SendAsync(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancellationToken) at System.Net.Http.HttpClient.GetAsync(Uri requestUri, HttpCompletionOption completionOption, CancellationToken cancellationToken) ``` What can I do about this? There are no warnings or other hints to point me in any direction, and Google searches have left me more confused than ever. Windows 10 x64 AU Microsoft Visual Studio Professional 2015 Version 14.0.25431.01 Update 3 Microsoft .NET Framework Version 4.6.01586 Microsoft .NET Core Tools (Preview 2) 14.1.20907.0 Don't know if this matters, dotnet: Version : 1.0.1 Build : cee57bf6c981237d80aa1631cfe83cb9ba329f12 +13619 area-Infrastructure Full framework test csproj referencing netstandard csproj using HttpClient fails at runtime I have a net461 test project that uses a netstandard 1.3 csproj. The netstandard project uses HttpClient. When I run the tests, some with HTTP gets and some with HTTPS, they fail with this: ``` System.IO.FileLoadException : Could not load file or assembly 'System.Security.Cryptography.X509Certificates, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) at System.Net.Http.WinHttpHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.HttpClientHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.HttpMessageInvoker.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.HttpClient.SendAsync(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancellationToken) at System.Net.Http.HttpClient.GetAsync(Uri requestUri, HttpCompletionOption completionOption, CancellationToken cancellationToken) ``` What can I do about this? There are no warnings or other hints to point me in any direction, and Google searches have left me more confused than ever. Windows 10 x64 AU Microsoft Visual Studio Professional 2015 Version 14.0.25431.01 Update 3 Microsoft .NET Framework Version 4.6.01586 Microsoft .NET Core Tools (Preview 2) 14.1.20907.0 Don't know if this matters, dotnet: Version : 1.0.1 Build : cee57bf6c981237d80aa1631cfe83cb9ba329f12 13622 area-System.Net Creating a Uri also allocates a string and a char[] "Constructing a Uri has a couple of allocations should that should be easily avoidable, at least in common cases. Here's a profile of an app that just does this a thousand times: ```new Uri(""http://test.com"")```: ![image](https://cloud.githubusercontent.com/assets/2642209/20239952/96b6b7bc-a8da-11e6-8b98-45fed7685072.png) As can be seen, in addition to the 1000 Uri allocations, there are also 1000 string allocations and 1000 char[] allocations. The string allocations are coming from https://github.com/dotnet/corefx/blob/9eaf364b8ca8180bace20aab188b1efe6a55835f/src/System.Private.Uri/src/System/Uri.cs#L3933 , where a string is being allocated purely to look up the value in a dictionary. We should be able to avoid that for common schemes by just comparing the data for common schemes (e.g. http, https, ws, wss, etc.) and getting the syntax object directly. In fact, it looks like this may already be done on 32-bit, just not on 64-bit: https://github.com/dotnet/corefx/blob/9eaf364b8ca8180bace20aab188b1efe6a55835f/src/System.Private.Uri/src/System/Uri.cs#L3639 . The char allocations are coming from https://github.com/dotnet/corefx/blob/2117bae3a6c9736033e6d1659821ff3a1069920b/src/System.Private.Uri/src/System/UriExt.cs#L195 , where the CheckForUnicode function is allocating a char array (at least one) in which to unescape the string data, then check to see if any of the characters are out of ASCII range. There are various ways this allocation could be avoided, e.g. at the expense of a pass through the string, checking to see whether anything needs unescaping, and only falling through to the allocation and the rest of the method if it does." 13624 area-System.Reflection HandleCollections should have an indexer I have a use case where I need to index into methods and fields on a `TypeDefinition`. `FieldDefinitionHandleCollection` and `MethodDefinitionHandleCollection` don't have an indexer, so the only option seems to be to get an enumerator and call `GetNext()` method *N* times to get *N*th member. `GenericParameterHandleCollection` or `GenericParameterConstraintHandleCollection` already have an indexer. This seems like an API inconsistency. Unless there's a particular reason why the other `HandleCollections` can't have it, the indexer should be added to all of them. We can make them implement `IReadOnlyList` while we're at it too. 13625 area-System.Collections Performance improvements in System.Collections.Generic.Dictionary Use local variable with size/length of buckets array in cleaning. I wrote simple test for for when i use local variable vs length with BenchmarkDotNet. Local variable is about 30-50% faster. This optimization is applying in Initialize and Resize. In this method is size already in local variable. It should be applying in Clear but here it must first assign to local variable and it's add one extra variable on stack. Second optimization is applying in Insert method where i reduce one local variable via reusing. @@ -6244,7 +6244,7 @@ ID Area Title Description 14494 area-Infrastructure Updating CoreClr dependencies to servicing-24814-01 14495 area-Meta After upgrading NetStandard.Library from 1.6.0 to 1.6.1, getting FileLoadException. "After upgrading my library's dependency on NetStandard.Library from 1.6.0 to 1.61, my unit tests fail: System.IO.FileLoadException: Could not load file or assembly 'System.Net.Sockets, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. My library's json: { ""supports"": {}, ""dependencies"": { ""Microsoft.Extensions.Logging"": ""1.1.0"", ""Microsoft.NETCore.Portable.Compatibility"": ""1.0.1"", ""NETStandard.Library"": ""1.6.1"", ""Portable.BouncyCastle"": ""1.8.1.2"", ""StyleCop.Analyzers"": ""1.0.0"", ""System.Threading.Tasks.Dataflow"": ""4.7.0"" }, ""frameworks"": { ""netstandard1.3"": {} } } My unit test's json: { ""dependencies"": {}, ""frameworks"": { "".NETFramework,Version=v4.6.1"": {} }, ""runtimes"": { ""win"": {}, ""win-x86"": {}, ""win-x64"": {}, ""win-arm"": {} } } The full project is at https://github.com/convertersystems/opc-ua-client. thanks, Andrew ps: Projects that use this library from a package work just fine. It's just the solution's unit tests with a problem. " 14496 area-System.Text Time to revisit need to register code pages provider? "I'm working on localization of dotnet/cli itself and I hit an issue where csc on .NET Core on Windows can give me garbled text if I'm on a non English machine with corresponding satellite assemblies present. The root cause is https://github.com/dotnet/corefx/issues/10054. I'm going to have to ensure that msbuild, cli, and roslyn all call Encoding.RegisterProvider(CodePagesEncodingProvider.Instance) before outputting anything to the console in non-English locales. I'm concerned that this pain point for .NET Core on Windows is not worth the benefit of making the code page data ""optional"". I say optional in quotes because the shared framework carries System.Text.Encoding.CodePages.dll and if I publish a standalone .NET Core app with our tools and the usual steps, System.Text.Encoding.CodePages is copied in to my app folder. Is anyone actually getting the benefit of not having System.Text.Encoding.CodePages? Given the high likelihood of System.Text.Encoding.CodePages.dll being present in practice, could System.Console light-up on it somehow? i.e. If it's there next to System.Console.dll, then use it regardless of whether register has been called whenever the console code page is not UTF8 and text outside ASCII range is written? @terrajobst @tarekgh @karelz FYI @piotrpMSFT @cdmihai @jaredpar " -14501 area-Infrastructure Update projects to netcoreapp2.0 / netstandard2.0 / net462 We need to update our projects to build against these new monikers and package as the same. Since netstandard2.0 is supported by net462 most desktop builds should be targeting this version rather than net463. +14501 area-Infrastructure Update projects to netcoreapp2.0 / netstandard2.0 / net461 We need to update our projects to build against these new monikers and package as the same. Since netstandard2.0 is supported by net461 most desktop builds should be targeting this version rather than net463. 14502 area-System.Collections Add IsEmpty property to ArraySegment ArraySegment can be created as empty by using `default(ArraySegment)` or using `ArraySegment.Empty` property. If we try execute any operation on such segment then it will throw invalid operation exception. To protect from calling such operations I suggest to add `IsEmpty` property to `ArraySegment`. Also most operation do nothing if segment has zero length. And user code can use `IsEmpty` property to improve performance for empty segment. As additional, structures `Span` and `ReadOnlySpan` have `IsEmpty` properties already. ```cs namespace System { public struct ArraySegment { public bool IsEmpty => Count == 0; } } ``` 14503 area-Infrastructure Packages threw exception '[Error 267] The directory name is invalid' & '[Error 2] The system cannot find the file specified' "No results generated. For win8 & win7: [Error 267] The directory name is invalid' ``` 2016-12-14 03:11:58,546: WARNING: proc(37): run_and_log_output: Could not find C:\dotnetbuild\work\6e004e14-ed1e-4b54-97ec-08d5c930039a\Work\7beb0736-c746-4508-9354-7277b7be03a8\Unzip\RunTests.cmd on disk. Execution may fail. 2016-12-14 03:11:58,551: ERROR: logs(86): _log_uncaught_exception: Unhandled error: [Error 2] The system cannot find the file specified [' File ""C:\\dotnetbuild\\work\\6e004e14-ed1e-4b54-97ec-08d5c930039a\\Payload\\RunnerScripts\\scriptrunner\\scriptrunner.py"", line 91, in \n sys.exit(main())\n', ' File ""C:\\dotnetbuild\\work\\6e004e14-ed1e-4b54-97ec-08d5c930039a\\Payload\\RunnerScripts\\scriptrunner\\scriptrunner.py"", line 87, in main\n return command_main(_main, [\'script=\'], args)\n', ' File ""C:\\dotnetbuild\\scripts\\helix\\cmdline.py"", line 47, in command_main\n return main_method(settings, optlist, args)\n', ' File ""C:\\dotnetbuild\\work\\6e004e14-ed1e-4b54-97ec-08d5c930039a\\Payload\\RunnerScripts\\scriptrunner\\scriptrunner.py"", line 44, in _main\n env=None\n', ' File ""C:\\dotnetbuild\\scripts\\helix\\proc.py"", line 46, in run_and_log_output\n shell=False)\n', ' File ""C:\\Python\\lib\\subprocess.py"", line 710, in __init__\n errread, errwrite)\n', ' File ""C:\\Python\\lib\\subprocess.py"", line 958, in _execute_child\n startupinfo)\n'] 2016-12-14 03:11:58,555: INFO: azure_storage(199): _upload: Uploading single blob: '4e0759f44fa245fc84ec7861ab2fe091.log' 2016-12-14 03:11:59,009: INFO: saferequests(90): request_with_retry: Response complete with status code '201' ``` For win10: [Error 2] The system cannot find the file specified ``` 2016-12-14 03:18:59,398: WARNING: proc(37): run_and_log_output: Could not find C:\dotnetbuild\work\d15e87c1-82b1-40b9-a105-2832e5527c53\Work\53280074-1a02-42e9-896a-59d31484f86e\Unzip\RunTests.cmd on disk. Execution may fail. 2016-12-14 03:18:59,398: ERROR: logs(86): _log_uncaught_exception: Unhandled error: [Error 2] The system cannot find the file specified [' File ""C:\\dotnetbuild\\work\\d15e87c1-82b1-40b9-a105-2832e5527c53\\Payload\\RunnerScripts\\scriptrunner\\scriptrunner.py"", line 91, in \n sys.exit(main())\n', ' File ""C:\\dotnetbuild\\work\\d15e87c1-82b1-40b9-a105-2832e5527c53\\Payload\\RunnerScripts\\scriptrunner\\scriptrunner.py"", line 87, in main\n return command_main(_main, [\'script=\'], args)\n', ' File ""C:\\dotnetbuild\\scripts\\helix\\cmdline.py"", line 47, in command_main\n return main_method(settings, optlist, args)\n', ' File ""C:\\dotnetbuild\\work\\d15e87c1-82b1-40b9-a105-2832e5527c53\\Payload\\RunnerScripts\\scriptrunner\\scriptrunner.py"", line 44, in _main\n env=None\n', ' File ""C:\\dotnetbuild\\scripts\\helix\\proc.py"", line 46, in run_and_log_output\n shell=False)\n', ' File ""C:\\Python\\lib\\subprocess.py"", line 710, in __init__\n errread, errwrite)\n', ' File ""C:\\Python\\lib\\subprocess.py"", line 958, in _execute_child\n startupinfo)\n'] 2016-12-14 03:18:59,398: INFO: azure_storage(199): _upload: Uploading single blob: 'f7e71ee5ee4f4089bfeffc987e84636d.log' ``` Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161214.01/workItem/Packages Build : Master - 20161214.01 (Core Tests) Failing configurations: Win81, Win7 & Win10" 14504 area-System.Net Test failure: System.Net.Security.Tests.ServerAllowNoEncryptionTest/ServerAllowNoEncryption_ClientRequireEncryption_ConnectWithEncryption Opened on behalf of @jiangzeng The test `System.Net.Security.Tests.ServerAllowNoEncryptionTest/ServerAllowNoEncryption_ClientRequireEncryption_ConnectWithEncryption` has failed. System.IO.IOException : Authentication failed because the remote party has closed the transport stream. Stack Trace: at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.PartialFrameCallback(AsyncProtocolRequest asyncRequest) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Security.Tests.ServerAllowNoEncryptionTest.d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Build : Master - 20161214.01 (Core Tests) Failing configurations: - Windows.10.Amd64 - AnyCPU-Release Details: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20161214.01/workItem/System.Net.Security.Tests/analysis/xunit/System.Net.Security.Tests.ServerAllowNoEncryptionTest~2FServerAllowNoEncryption_ClientRequireEncryption_ConnectWithEncryption @@ -6802,7 +6802,7 @@ ID Area Title Description 15404 area-System.Threading Task.Delay and optional parameter issue Hey everybody, I don´t know exactly where to post this issue. I have the following code. ```cs public class Constants { public const int constantDefault = 100; } public async Task GetOneImage(..., int millisecondsDelay = Constants.constantDefault ) { await Task.Delay(millisecondsDelay); return await GetOneImage(...); } // Called without touching the optional parameter await GetOneImage(); ``` Starting with the last Visual Studio 2015 Update, the Code never reaches the internal GetOneImage(...). It only works if called like ```cs await Task.Delay(Constants.constantDefault); // or await Task.Delay(100); // or calling the GetOneImage like await GetOneImage(Constants.constantDefault); ``` Also not working ```cs public async Task GetOneImage(..., int millisecondsDelay = 100) { await Task.Delay(millisecondsDelay ); .... } ``` The project is a WPF application targeting .NET 4.5. Developement platform is Win 10 and Visual Studio 2015 14.0.25431.01 Update 3. The config is *Debug* and *Any CPU* Greetings! 15406 area-System.Net Remove byte[] allocation from IPAddress.{Try}Parse IPAddress.Parse and TryParse both allocate a byte[] to store the parsed address bytes, only to then have those bytes turned into either a uint or an array of ushorts. This commit eliminates the allocation, for both IPv4 and IPv6. This is relevant to TryParse even when the string isn't an address, as the array is allocated regardless. cc: @davidsh, @cipop, @geoffkizer @Priya91 15407 area-Infrastructure Clean-up build.proj As part of https://github.com/dotnet/corefx/pull/15306 we moved the testing targets and properties into tests.builds we need to clean them out of build.proj. Things like https://github.com/dotnet/corefx/blob/master/build.proj#L74 -15408 area-Infrastructure Can't build CoreFx on Ubuntu 16.04.1 LTS - error during package restore "Hi, I tried to build CoreFx on Ubuntu 16.04.1 LTS (followed https://github.com/dotnet/corefx/blob/master/Documentation/building/unix-instructions.md) and got following errors: > Tools are already initialized > Running: /home/matekm/corefx/src/Native/build-native.sh x64 Debug Linux --numproc 1 toolSetDir=c:\tools\clr > Setting up directories for build > Checking pre-requisites... > Commencing build of corefx native components for Linux.x64.Debug > Invoking cmake with arguments: ""/home/matekm/corefx/src/Native/Unix"" DEBUG -DFEATURE_DISTRO_AGNOSTIC_SSL=0 -DCMAKE_STATIC_LIB_LINK=0 > -- Configuring done > -- Generating done > -- Build files have been written to: /home/matekm/corefx/bin/obj/Linux.x64.Debug/native > Executing make install -j 1 > [ 3%] Built target System.IO.Compression.Native > [ 27%] Built target System.Native > [ 51%] Built target System.Native-Static > [ 60%] Built target System.Net.Http.Native > [ 64%] Built target System.Net.Security.Native > [ 97%] Built target objlib > [ 98%] Built target System.Security.Cryptography.Native > [100%] Built target System.Security.Cryptography.Native.OpenSsl > Install the project... > -- Install configuration: ""DEBUG"" > -- Up-to-date: /home/matekm/corefx/src/Native/../../bin/Linux.x64.Debug/native/./System.IO.Compression.Native.so > -- Up-to-date: /home/matekm/corefx/src/Native/../../bin/Linux.x64.Debug/native/./System.Native.so > -- Up-to-date: /home/matekm/corefx/src/Native/../../bin/Linux.x64.Debug/native/./System.Native.a > -- Up-to-date: /home/matekm/corefx/src/Native/../../bin/Linux.x64.Debug/native/./System.Net.Http.Native.so > -- Up-to-date: /home/matekm/corefx/src/Native/../../bin/Linux.x64.Debug/native/./System.Net.Security.Native.so > -- Up-to-date: /home/matekm/corefx/src/Native/../../bin/Linux.x64.Debug/native/./System.Security.Cryptography.Native.so > -- Up-to-date: /home/matekm/corefx/src/Native/../../bin/Linux.x64.Debug/native/./System.Security.Cryptography.Native.OpenSsl.so > Copying native shims to vertical runtime folder. > Command execution succeeded. > Tools are already initialized > Running: /home/matekm/corefx/Tools/msbuild.sh /nologo /verbosity:minimal /clp:Summary /maxcpucount /l:BinClashLogger,Tools/Microsoft.DotNet.Build.Tasks.dll;LogFile=binclash.log /p:ConfigurationGroup=Debug /flp:v=normal /flp2:warningsonly;logfile=msbuild.wrn /flp3:errorsonly;logfile=msbuild.err > EXEC : error : Root element is missing. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/src/Tools/CoreFx.Tools/project.json"""" exited with code 1. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > EXEC : error : Root element is missing. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/src/Tools/CoreFx.Tools/project.json"""" exited with code 1. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > /home/matekm/corefx/src/Tools/GenerateProps/GenerateProps.proj(15,5): error MSB4062: The ""GenerateConfigurationProps"" task could not be loaded from the assembly /home/matekm/corefx/Tools/CoreFx.Tools.dll. The system cannot find the file specified. > /home/matekm/corefx/src/Tools/GenerateProps/GenerateProps.proj(15,5): error MSB4062: (Exception from HRESULT: 0x80070002) Confirm that the declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask. > /home/matekm/corefx/Tools/depProj.targets(79,5): error : Error no assets were resolved from NuGet packages. [/home/matekm/corefx/external/coreclr/coreclr.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/Tools/depProj.targets(79,5): error : Error no assets were resolved from NuGet packages. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net462/System.Core.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.Core.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net462/System.Drawing.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.Drawing.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net462/System.Numerics.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.Numerics.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net462/System.Runtime.Serialization.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.Runtime.Serialization.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net462/System.Web.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.Web.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net462/System.Xml.Linq.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.Xml.Linq.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net462/System.Xml.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.Xml.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net462/System.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net462/mscorlib.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> mscorlib.dll > EXEC : error : Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 supports: [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - netcore50 (.NETCore,Version=v5.0) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - uap10.1 (UAP,Version=v10.1) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : One or more packages are incompatible with .NETCoreApp,Version=v1.0. [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0) / -x64. Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 supports: [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - netcore50 (.NETCore,Version=v5.0) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - uap10.1 (UAP,Version=v10.1) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : One or more packages are incompatible with .NETCoreApp,Version=v1.0 (-x64). [/home/matekm/corefx/external/NETNative/NETNative.depproj] > > Errors in /home/matekm/corefx/bin/obj/Linux.AnyCPU.Debug/NETNative/netcoreapp/x64/project.json > Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 supports: > - netcore50 (.NETCore,Version=v5.0) > - uap10.1 (UAP,Version=v10.1) > One or more packages are incompatible with .NETCoreApp,Version=v1.0. > Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0) / -x64. Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 supports: > - netcore50 (.NETCore,Version=v5.0) > - uap10.1 (UAP,Version=v10.1) > One or more packages are incompatible with .NETCoreApp,Version=v1.0 (-x64). > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/bin/obj/Linux.AnyCPU.Debug/NETNative/netcoreapp/x64/project.json"""" exited with code 1. [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : Root element is missing. [/home/matekm/corefx/external/test-runtime/XUnit.Runtime.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/external/test-runtime/project.json"""" exited with code 1. [/home/matekm/corefx/external/test-runtime/XUnit.Runtime.depproj] > > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > EXEC : error : Root element is missing. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/src/Tools/CoreFx.Tools/project.json"""" exited with code 1. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > EXEC : error : Root element is missing. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/src/Tools/CoreFx.Tools/project.json"""" exited with code 1. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > /home/matekm/corefx/src/Tools/GenerateProps/GenerateProps.proj(15,5): error MSB4062: The ""GenerateConfigurationProps"" task could not be loaded from the assembly /home/matekm/corefx/Tools/CoreFx.Tools.dll. The system cannot find the file specified. > /home/matekm/corefx/src/Tools/GenerateProps/GenerateProps.proj(15,5): error MSB4062: (Exception from HRESULT: 0x80070002) Confirm that the declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask. > /home/matekm/corefx/Tools/depProj.targets(79,5): error : Error no assets were resolved from NuGet packages. [/home/matekm/corefx/external/coreclr/coreclr.depproj] > /home/matekm/corefx/Tools/depProj.targets(79,5): error : Error no assets were resolved from NuGet packages. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > EXEC : error : Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 supports: [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - netcore50 (.NETCore,Version=v5.0) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - uap10.1 (UAP,Version=v10.1) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : One or more packages are incompatible with .NETCoreApp,Version=v1.0. [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0) / -x64. Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 supports: [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - netcore50 (.NETCore,Version=v5.0) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - uap10.1 (UAP,Version=v10.1) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : One or more packages are incompatible with .NETCoreApp,Version=v1.0 (-x64). [/home/matekm/corefx/external/NETNative/NETNative.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/bin/obj/Linux.AnyCPU.Debug/NETNative/netcoreapp/x64/project.json"""" exited with code 1. [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : Root element is missing. [/home/matekm/corefx/external/test-runtime/XUnit.Runtime.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/external/test-runtime/project.json"""" exited with code 1. [/home/matekm/corefx/external/test-runtime/XUnit.Runtime.depproj] > Command execution failed with exit code 1. Ubuntu details: > Distributor ID: Ubuntu > Description: Ubuntu 16.04.1 LTS > Release: 16.04 > Codename: xenial > I know it's probably problem with me, not the corefx but I would appreciate some help;)" +15408 area-Infrastructure Can't build CoreFx on Ubuntu 16.04.1 LTS - error during package restore "Hi, I tried to build CoreFx on Ubuntu 16.04.1 LTS (followed https://github.com/dotnet/corefx/blob/master/Documentation/building/unix-instructions.md) and got following errors: > Tools are already initialized > Running: /home/matekm/corefx/src/Native/build-native.sh x64 Debug Linux --numproc 1 toolSetDir=c:\tools\clr > Setting up directories for build > Checking pre-requisites... > Commencing build of corefx native components for Linux.x64.Debug > Invoking cmake with arguments: ""/home/matekm/corefx/src/Native/Unix"" DEBUG -DFEATURE_DISTRO_AGNOSTIC_SSL=0 -DCMAKE_STATIC_LIB_LINK=0 > -- Configuring done > -- Generating done > -- Build files have been written to: /home/matekm/corefx/bin/obj/Linux.x64.Debug/native > Executing make install -j 1 > [ 3%] Built target System.IO.Compression.Native > [ 27%] Built target System.Native > [ 51%] Built target System.Native-Static > [ 60%] Built target System.Net.Http.Native > [ 64%] Built target System.Net.Security.Native > [ 97%] Built target objlib > [ 98%] Built target System.Security.Cryptography.Native > [100%] Built target System.Security.Cryptography.Native.OpenSsl > Install the project... > -- Install configuration: ""DEBUG"" > -- Up-to-date: /home/matekm/corefx/src/Native/../../bin/Linux.x64.Debug/native/./System.IO.Compression.Native.so > -- Up-to-date: /home/matekm/corefx/src/Native/../../bin/Linux.x64.Debug/native/./System.Native.so > -- Up-to-date: /home/matekm/corefx/src/Native/../../bin/Linux.x64.Debug/native/./System.Native.a > -- Up-to-date: /home/matekm/corefx/src/Native/../../bin/Linux.x64.Debug/native/./System.Net.Http.Native.so > -- Up-to-date: /home/matekm/corefx/src/Native/../../bin/Linux.x64.Debug/native/./System.Net.Security.Native.so > -- Up-to-date: /home/matekm/corefx/src/Native/../../bin/Linux.x64.Debug/native/./System.Security.Cryptography.Native.so > -- Up-to-date: /home/matekm/corefx/src/Native/../../bin/Linux.x64.Debug/native/./System.Security.Cryptography.Native.OpenSsl.so > Copying native shims to vertical runtime folder. > Command execution succeeded. > Tools are already initialized > Running: /home/matekm/corefx/Tools/msbuild.sh /nologo /verbosity:minimal /clp:Summary /maxcpucount /l:BinClashLogger,Tools/Microsoft.DotNet.Build.Tasks.dll;LogFile=binclash.log /p:ConfigurationGroup=Debug /flp:v=normal /flp2:warningsonly;logfile=msbuild.wrn /flp3:errorsonly;logfile=msbuild.err > EXEC : error : Root element is missing. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/src/Tools/CoreFx.Tools/project.json"""" exited with code 1. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > EXEC : error : Root element is missing. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/src/Tools/CoreFx.Tools/project.json"""" exited with code 1. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > /home/matekm/corefx/src/Tools/GenerateProps/GenerateProps.proj(15,5): error MSB4062: The ""GenerateConfigurationProps"" task could not be loaded from the assembly /home/matekm/corefx/Tools/CoreFx.Tools.dll. The system cannot find the file specified. > /home/matekm/corefx/src/Tools/GenerateProps/GenerateProps.proj(15,5): error MSB4062: (Exception from HRESULT: 0x80070002) Confirm that the declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask. > /home/matekm/corefx/Tools/depProj.targets(79,5): error : Error no assets were resolved from NuGet packages. [/home/matekm/corefx/external/coreclr/coreclr.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/Tools/depProj.targets(79,5): error : Error no assets were resolved from NuGet packages. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net461/System.Core.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.Core.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net461/System.Drawing.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.Drawing.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net461/System.Numerics.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.Numerics.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net461/System.Runtime.Serialization.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.Runtime.Serialization.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net461/System.Web.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.Web.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net461/System.Xml.Linq.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.Xml.Linq.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net461/System.Xml.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.Xml.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net461/System.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> System.dll > /home/matekm/corefx/packages/Microsoft.TargetingPack.NETFramework.v4.6.1/1.0.1/lib/net461/mscorlib.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> mscorlib.dll > EXEC : error : Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 supports: [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - netcore50 (.NETCore,Version=v5.0) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - uap10.1 (UAP,Version=v10.1) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : One or more packages are incompatible with .NETCoreApp,Version=v1.0. [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0) / -x64. Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 supports: [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - netcore50 (.NETCore,Version=v5.0) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - uap10.1 (UAP,Version=v10.1) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : One or more packages are incompatible with .NETCoreApp,Version=v1.0 (-x64). [/home/matekm/corefx/external/NETNative/NETNative.depproj] > > Errors in /home/matekm/corefx/bin/obj/Linux.AnyCPU.Debug/NETNative/netcoreapp/x64/project.json > Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 supports: > - netcore50 (.NETCore,Version=v5.0) > - uap10.1 (UAP,Version=v10.1) > One or more packages are incompatible with .NETCoreApp,Version=v1.0. > Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0) / -x64. Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 supports: > - netcore50 (.NETCore,Version=v5.0) > - uap10.1 (UAP,Version=v10.1) > One or more packages are incompatible with .NETCoreApp,Version=v1.0 (-x64). > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/bin/obj/Linux.AnyCPU.Debug/NETNative/netcoreapp/x64/project.json"""" exited with code 1. [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : Root element is missing. [/home/matekm/corefx/external/test-runtime/XUnit.Runtime.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/external/test-runtime/project.json"""" exited with code 1. [/home/matekm/corefx/external/test-runtime/XUnit.Runtime.depproj] > > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(79,5): warning : Your project is not referencing the "".NETCoreApp,Version=v1.0"" framework. Add a reference to "".NETCoreApp,Version=v1.0"" in the ""frameworks"" section of your project.json, and then re-run NuGet restore. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > EXEC : error : Root element is missing. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/src/Tools/CoreFx.Tools/project.json"""" exited with code 1. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > EXEC : error : Root element is missing. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/src/Tools/CoreFx.Tools/project.json"""" exited with code 1. [/home/matekm/corefx/src/Tools/CoreFx.Tools/CoreFx.Tools.csproj] > /home/matekm/corefx/src/Tools/GenerateProps/GenerateProps.proj(15,5): error MSB4062: The ""GenerateConfigurationProps"" task could not be loaded from the assembly /home/matekm/corefx/Tools/CoreFx.Tools.dll. The system cannot find the file specified. > /home/matekm/corefx/src/Tools/GenerateProps/GenerateProps.proj(15,5): error MSB4062: (Exception from HRESULT: 0x80070002) Confirm that the declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask. > /home/matekm/corefx/Tools/depProj.targets(79,5): error : Error no assets were resolved from NuGet packages. [/home/matekm/corefx/external/coreclr/coreclr.depproj] > /home/matekm/corefx/Tools/depProj.targets(79,5): error : Error no assets were resolved from NuGet packages. [/home/matekm/corefx/external/netstandard/netstandard.depproj] > EXEC : error : Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 supports: [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - netcore50 (.NETCore,Version=v5.0) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - uap10.1 (UAP,Version=v10.1) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : One or more packages are incompatible with .NETCoreApp,Version=v1.0. [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0) / -x64. Package Microsoft.TargetingPack.Private.NETNative 1.1.0-beta-24911-00 supports: [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - netcore50 (.NETCore,Version=v5.0) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : - uap10.1 (UAP,Version=v10.1) [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : One or more packages are incompatible with .NETCoreApp,Version=v1.0 (-x64). [/home/matekm/corefx/external/NETNative/NETNative.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/bin/obj/Linux.AnyCPU.Debug/NETNative/netcoreapp/x64/project.json"""" exited with code 1. [/home/matekm/corefx/external/NETNative/NETNative.depproj] > EXEC : error : Root element is missing. [/home/matekm/corefx/external/test-runtime/XUnit.Runtime.depproj] > /home/matekm/corefx/Tools/packageresolve.targets(35,5): error MSB3073: The command """"/home/matekm/corefx/Tools/dotnetcli/dotnet"" restore --no-cache --packages ""/home/matekm/corefx/packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json ""/home/matekm/corefx/external/test-runtime/project.json"""" exited with code 1. [/home/matekm/corefx/external/test-runtime/XUnit.Runtime.depproj] > Command execution failed with exit code 1. Ubuntu details: > Distributor ID: Ubuntu > Description: Ubuntu 16.04.1 LTS > Release: 16.04 > Codename: xenial > I know it's probably problem with me, not the corefx but I would appreciate some help;)" 15409 area-System.Net Skip websocket testing on Windows 7. fixes #15380 cc @CIPop 15410 area-System.Collections SortedSetEqualityComparer seems to ignore the comparer from CreateSetComparer Discovered during #15376 [`SortedSetEqualityComparer`](https://github.com/dotnet/corefx/blob/adb0f13d7aafdbee95ae13f970c8ad25f77558c5/src/System.Collections/src/System/Collections/Generic/SortedSet.cs#L2631) has a `_comparer` field that is always set to the `Comparer.Default`. This is because although it has a constructor that allows a different comparer to be passed in, that constructor is never actually called. And during `Equals`, it uses that default comparer for comparing two sorted sets and leaves the equality comparer which was handed to it from `CreateSetComparer` completely out of the equation. The fix would be to remove the `_comparer` field and use the equality comparer for everything. 15411 area-Meta Cleanup: remove empty try's We have about 20 instances of `try { }` See https://github.com/dotnet/coreclr/issues/8924. The PR https://github.com/dotnet/coreclr/pull/8949 makes sure they are not represented in generated code so this is just minor code cleanup. @@ -7070,7 +7070,7 @@ ID Area Title Description 15887 area-System.Net Make socket tests more reliable under Unix There are several Sockets tests that regularly fail in Unix because the test listens to a specific socket:port that is expected to not have a server, however due to other tests that are running, there is a small chance another test created a server with that specific port, causing the test to fail. In Unix, ports are random while in Windows ports are incremental, thus the issues don't occur in Windows because by the time the ports roll around, the tests will be done. The odds of a port collision causing a Unix failure in a test run is small: say ~1:1,000 test runs fail due to this, but spread across all versions of Unix that are running tests it becomes more common. The proposed fix is to retry once when running under Unix; other options considered were to remove the tests or loop perhaps 3 times (instead of retrying once). This will change the odds to ~1:1,000,000 or so. A recent test failure: ```` System.Net.Sockets.Tests.DualModeConnectAsync.ConnectAsyncV4IPEndPointToV6Host_Fails MESSAGE: Assert.Throws() Failure\nExpected: typeof(System.Net.Sockets.SocketException)\nActual: (No exception was thrown) http://jdash.azurewebsites.net/builds/test?name=System.Net.Sockets.Tests.DualModeConnectAsync.ConnectAsyncV4IPEndPointToV6Host_Fails&viewName=dotnet_corefx&pr=False&limit=1000&startDate=2017-02-04 ```` cc @ianhays cc @Priya91 cc @davidsh cc @ericeil In reference to issue #14519 15891 area-System.IO Test issue: System.IO.MemoryMappedFiles.Tests.CrossProcessTests.DataShared crashes The cross-process memory-mapped file test below consistently crashes on my machine on Windows 10 Pro even on first build of a freshly cloned repo. Command line: ``` R:\corefx_ref\Tools\testdotnetcli\dotnet.exe xunit.console.netcore.exe System.IO.MemoryMappedFiles.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapp1.1tests -notrait category=OuterLoop -notrait category=failing -notrait category=nonwindowstests ``` Test output: ``` Exception from RemoteExecutorConsoleApp(System.IO.MemoryMappedFiles.Tests, Version=4.1.0.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb, System.IO.MemoryMappedFiles.Tests.CrossProcessTests, DataShared_OtherProcess, C:\Users\Dennis, Dietrich\AppData\Local\Temp\CrossProcessTests_xbfm5c1q.o5d\DataShared_16): Assembly: System.IO.MemoryMappedFiles.Tests, Version=4.1.0.0, Culture=neutral, PublicKeyToken=9d77cc7ad39b68eb Type: System.IO.MemoryMappedFiles.Tests.CrossProcessTests Method: Int32 DataShared_OtherProcess(System.String) Exception: System.Reflection.TargetParameterCountException: Parameter count mismatch. at System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) at RemoteExecutorConsoleApp.Program.Main(String[] args) in R:\corefx_ref\src\Common\tests\System\Diagnostics\RemoteExecutorConsoleApp\RemoteExecutorConsoleApp.cs:line 48 Unhandled Exception: System.Reflection.TargetParameterCountException: Parameter count mismatch. at RemoteExecutorConsoleApp.Program.Main(String[] args) in R:\corefx_ref\src\Common\tests\System\Diagnostics\RemoteExecutorConsoleApp\RemoteExecutorConsoleApp.cs:line 60 System.IO.MemoryMappedFiles.Tests.CrossProcessTests.DataShared [FAIL] Assert.Equal() Failure Expected: 42 Actual: -532462766 Stack Trace: R:\corefx_ref\src\Common\tests\System\Diagnostics\RemoteExecutorTestBase.cs(167,0): at System.Diagnostics.RemoteExecutorTestBase.RemoteInvokeHandle.Dispose() R:\corefx_ref\src\System.IO.MemoryMappedFiles\tests\MemoryMappedFile.CrossProcess.cs(30,0): at System.IO.MemoryMappedFiles.Tests.CrossProcessTests.DataShared() ``` 15892 area-Serialization "Change ""#if NET_NATIVE"" to ""#if uapaot"" in S.P.DataContractSerialization " We need make changes to the following compilation directives, 1. Remove USE_REFEMIT as we do not use it. 2. Change NET_NATIVE to uapaot -15897 area-Meta Couple of tests should be [Theory] not [Fact] "Run tests by whatever means, then look in the log xml: ``` ```" +15897 area-Meta Couple of tests should be [Theory] not [Fact] "Run tests by whatever means, then look in the log xml: ``` ```" 15900 area-Infrastructure [ARM/CI] ARM CI script for arm and armel ARM CI for arm and armel. This CI script tests followings for ubuntu.14.04-arm, ubuntu.16.04-arm and tizen.4.0.0-armel. 1. Construct RootFS for ubuntu.14.04-arm, ubuntu.16.04-arm and tizen.4.0.0-armel. 2. Cross build corefx using RootFS for ubuntu.14.04-arm, ubuntu.16.04-arm and tizen.4.0.0-armel. Release and Debug build are available. 3. Above tasks are performed inside Docker image. Related issues: https://github.com/dotnet/coreclr/issues/9273 https://github.com/dotnet/core-setup/issues/790 15903 area-System.Linq Lighter compilation of <= and >= in S.L.Expressions Currently `<=` is compiled as the equivalent of `x <= y ? true : false` with a branch. Compile as `!(x > y)`, avoiding the branch. 15904 area-System.Linq Don't cast S.L.Expression arithmetic results to type they already fit For types smaller than 32 bit the 32-bit results of arithmetic operations are converted to ensure they fit that smaller size, with checks if appropriate. Several operations cannot produce a result that does not already fit (most obviously `x & y` can never overflow the size of `x` and `y`). `EmitUnaryOperator` already skips the conversion in some cases. Skip more there and skip some in `EmitBinaryOperator`. @@ -7743,7 +7743,7 @@ ID Area Title Description 16910 area-System.Linq Interpreting build of S.Linq.Expressions (for UAP) is broken "`` should be set in the csproj for uap/uapaot but the build is broken. The correct fix is not obvious without some investigation so for now I'm leaving it as ``` true false ```" 16911 area-System.Net Implement ReceiveMessageFromAsync with buffer list on Unix Fixes #16727 cc: @geoffkizer, @Priya91 16912 area-Infrastructure Inspect the files in .NET Core App and remove any unnecessary ones We are getting close to a preview release so we should inspect all the files in the shared framework (in particular the private netcoreapp package from corefx) and make sure there isn't anything that shouldn't be there. Some potential candidates for removal are: System.Security.Permissions System.Text.Encoding.CodePages. cc @ericstj @Petermarcu -16913 area-System.IO dotnet core 1.1.0 and net462 now gets System.IO.FileSystem System.TypeLoadException "@jeremyBass commented on [Thu Mar 09 2017](https://github.com/dotnet/coreclr/issues/10062) I hope this is the right place for this issue. I have been betting my head on the wall on this. I will say that I have this on [stackoverflow](http://stackoverflow.com/q/42693085/746758) as well, but believe it may be helpful to have it logged here. I realize there are a few other issues that seem related, but they are not 100% the same and I got no traction on a fix/workaround. I keep getting this error on the server [![enter image description here][1]][1] > Unhandled Exception: System.TypeLoadException: Could not load type 'System.IO.Di rectory' from assembly 'System.IO.FileSystem, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. at fais.printing_services.Program.Main(String[] args) I have done ever trick I can think of, followed all the newest issues to resolve with no luck. Here is my project file: { ""userSecretsId"": ""aspnet-fais.printing_services-6f6dbf21-da98-45d2-a187-08ae49d09d62"", ""dependencies"": { ""DataTables.AspNet.AspNetCore"": ""2.0.2"", ""Microsoft.ApplicationInsights.AspNetCore"": ""2.0.0"", ""Microsoft.AspNetCore.Authentication.Cookies"": ""1.1.0"", ""Microsoft.AspNetCore.Diagnostics"": ""1.1.0"", ""Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore"": ""1.1.0"", ""Microsoft.AspNetCore.Identity.EntityFrameworkCore"": ""1.1.0"", ""Microsoft.AspNetCore.Mvc"": ""1.1.1"", ""Microsoft.AspNetCore.Routing"": ""1.1.0"", ""Microsoft.AspNet.Session"": ""1.0.0-*"", ""Microsoft.AspNetCore.Server.IISIntegration"": ""1.1.0"", ""Microsoft.AspNetCore.Server.Kestrel"": ""1.1.0"", ""Microsoft.AspNetCore.StaticFiles"": ""1.1.0"", ""Microsoft.EntityFrameworkCore"": ""1.1.0"", ""Microsoft.EntityFrameworkCore.Design"": ""1.1.0"", ""Microsoft.EntityFrameworkCore.Relational.Design"": ""1.1.0"", ""Microsoft.EntityFrameworkCore.SqlServer"": ""1.1.0"", ""Microsoft.EntityFrameworkCore.SqlServer.Design"": ""1.1.0"", ""Microsoft.EntityFrameworkCore.Tools"": { ""type"": ""build"", ""version"": ""1.1.0-preview4-final"" }, ""Microsoft.Extensions.Caching.Memory"": ""1.1.0-*"", ""Microsoft.Extensions.Configuration.EnvironmentVariables"": ""1.1.0"", ""Microsoft.Extensions.Configuration.Json"": ""1.1.0"", ""Microsoft.Extensions.Configuration.UserSecrets"": ""1.1.0"", ""Microsoft.Extensions.Logging"": ""1.1.0"", ""Microsoft.Extensions.Logging.Console"": ""1.1.0"", ""Microsoft.Extensions.Logging.Debug"": ""1.1.0"", ""Microsoft.Extensions.Options.ConfigurationExtensions"": ""1.1.0"", ""Microsoft.VisualStudio.Web.BrowserLink.Loader"": ""14.1.0"", ""Microsoft.VisualStudio.Web.CodeGeneration"": ""1.1.0-preview4-final"", ""Microsoft.VisualStudio.Web.CodeGeneration.Tools"": ""1.1.0-preview4-final"", //""Microsoft.VisualStudio.Web.CodeGeneration.Design"": ""1.1.0-msbuild3-final"", ""Microsoft.VisualStudio.Web.CodeGenerators.Mvc"": ""1.1.0-preview4-final"", ""Microsoft.AspNetCore.Session"": ""1.1.0"", ""Microsoft.NETCore"": ""5.0.1-rc2-24027"", ""Microsoft.NETCore.Portable.Compatibility"": ""1.0.1-rc2-24027"", ""BundlerMinifier.Core"": ""2.4.337"", ""Microsoft.AspNetCore.ResponseCompression"": ""1.0.1"", ""Microsoft.AspNetCore.Cors"": ""1.1.1"", ""hiqpdf"": ""10.6.0"", ""Novell.Directory.Ldap.NETStandard"": ""2.3.6"" }, ""tools"": { ""Microsoft.EntityFrameworkCore.Tools"": { ""version"": ""1.1.0-preview4-final"", ""imports"": [ ""portable-net45+win8"" ] }, ""Microsoft.EntityFrameworkCore.Tools.DotNet"": ""1.1.0.0-preview4-final"", ""Microsoft.VisualStudio.Web.CodeGeneration.Tools"": { ""version"": ""1.1.0-msbuild3-final"", ""imports"": [ ""portable-net45+win8"" ] } }, ""frameworks"": { ""net462"": { ""dependencies"": { }, ""frameworkAssemblies"": { ""System.Drawing"": ""4.0.0.0"" } }, ""netcoreapp1.0"": { ""imports"": [ ""dotnet5.6"", ""portable-net45+win8"", ""net462"" ], ""dependencies"": { ""Microsoft.NETCore.App"": ""1.1.0"", ""CoreCompat.System.Configuration"": ""4.2.3-r4"" } } }, ""buildOptions"": { ""emitEntryPoint"": true, ""preserveCompilationContext"": true }, ""runtimeOptions"": { ""configProperties"": { ""System.GC.Server"": true } }, ""publishOptions"": { ""include"": [ ""wwwroot"", ""**/*.cshtml"", ""appsettings.json"", ""web.config"" ] }, ""runtimes"": { ""win10-x64"": {} }, ""scripts"": { ""prepublish"": [ ""bower install"", ""dotnet bundle"" ], ""postpublish"": [ ""dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%"" ] } } So the reason for `.net4.6.1` is `hiqpdf`, it is the only thing that is really the reason i had to load it. My app runs on IISExpress, but as soon as i publish it to the IIS box it gets as `HTTP Error 502.5 - Process Failure`. I run the exe in the command prompt as Microsoft asks as got what i put up here. I keep thinking i just have to move the right item in place and it will work on the server. What is the difference? Why does it would great locally but falls on it's face on the server? Can i include System.IO.FileSystem at a version that will fix this? (which i have tried and failed to). I know the project.json file needs some clean up again, but it is working in one spot so i figured I would keep it here. **Server Details:** [![enter image description here][2]][2] [![enter image description here][3]][3] [![enter image description here][4]][4] [1]: https://i.stack.imgur.com/gcg9a.png [2]: https://i.stack.imgur.com/dWgMs.png [3]: https://i.stack.imgur.com/HKSpG.png [4]: https://i.stack.imgur.com/c8NZj.png **Other information** I figured it would be worth noting thing i have done that wouldn't be known from this: - cleared out the nuget cache from the user path - cleared the bin - down graded what i thought i could - tried to include the `System.IO.File` directly at v. `4.3.0` but it downgrades to `4.0.0.1` I believe. " +16913 area-System.IO dotnet core 1.1.0 and net461 now gets System.IO.FileSystem System.TypeLoadException "@jeremyBass commented on [Thu Mar 09 2017](https://github.com/dotnet/coreclr/issues/10062) I hope this is the right place for this issue. I have been betting my head on the wall on this. I will say that I have this on [stackoverflow](http://stackoverflow.com/q/42693085/746758) as well, but believe it may be helpful to have it logged here. I realize there are a few other issues that seem related, but they are not 100% the same and I got no traction on a fix/workaround. I keep getting this error on the server [![enter image description here][1]][1] > Unhandled Exception: System.TypeLoadException: Could not load type 'System.IO.Di rectory' from assembly 'System.IO.FileSystem, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. at fais.printing_services.Program.Main(String[] args) I have done ever trick I can think of, followed all the newest issues to resolve with no luck. Here is my project file: { ""userSecretsId"": ""aspnet-fais.printing_services-6f6dbf21-da98-45d2-a187-08ae49d09d62"", ""dependencies"": { ""DataTables.AspNet.AspNetCore"": ""2.0.2"", ""Microsoft.ApplicationInsights.AspNetCore"": ""2.0.0"", ""Microsoft.AspNetCore.Authentication.Cookies"": ""1.1.0"", ""Microsoft.AspNetCore.Diagnostics"": ""1.1.0"", ""Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore"": ""1.1.0"", ""Microsoft.AspNetCore.Identity.EntityFrameworkCore"": ""1.1.0"", ""Microsoft.AspNetCore.Mvc"": ""1.1.1"", ""Microsoft.AspNetCore.Routing"": ""1.1.0"", ""Microsoft.AspNet.Session"": ""1.0.0-*"", ""Microsoft.AspNetCore.Server.IISIntegration"": ""1.1.0"", ""Microsoft.AspNetCore.Server.Kestrel"": ""1.1.0"", ""Microsoft.AspNetCore.StaticFiles"": ""1.1.0"", ""Microsoft.EntityFrameworkCore"": ""1.1.0"", ""Microsoft.EntityFrameworkCore.Design"": ""1.1.0"", ""Microsoft.EntityFrameworkCore.Relational.Design"": ""1.1.0"", ""Microsoft.EntityFrameworkCore.SqlServer"": ""1.1.0"", ""Microsoft.EntityFrameworkCore.SqlServer.Design"": ""1.1.0"", ""Microsoft.EntityFrameworkCore.Tools"": { ""type"": ""build"", ""version"": ""1.1.0-preview4-final"" }, ""Microsoft.Extensions.Caching.Memory"": ""1.1.0-*"", ""Microsoft.Extensions.Configuration.EnvironmentVariables"": ""1.1.0"", ""Microsoft.Extensions.Configuration.Json"": ""1.1.0"", ""Microsoft.Extensions.Configuration.UserSecrets"": ""1.1.0"", ""Microsoft.Extensions.Logging"": ""1.1.0"", ""Microsoft.Extensions.Logging.Console"": ""1.1.0"", ""Microsoft.Extensions.Logging.Debug"": ""1.1.0"", ""Microsoft.Extensions.Options.ConfigurationExtensions"": ""1.1.0"", ""Microsoft.VisualStudio.Web.BrowserLink.Loader"": ""14.1.0"", ""Microsoft.VisualStudio.Web.CodeGeneration"": ""1.1.0-preview4-final"", ""Microsoft.VisualStudio.Web.CodeGeneration.Tools"": ""1.1.0-preview4-final"", //""Microsoft.VisualStudio.Web.CodeGeneration.Design"": ""1.1.0-msbuild3-final"", ""Microsoft.VisualStudio.Web.CodeGenerators.Mvc"": ""1.1.0-preview4-final"", ""Microsoft.AspNetCore.Session"": ""1.1.0"", ""Microsoft.NETCore"": ""5.0.1-rc2-24027"", ""Microsoft.NETCore.Portable.Compatibility"": ""1.0.1-rc2-24027"", ""BundlerMinifier.Core"": ""2.4.337"", ""Microsoft.AspNetCore.ResponseCompression"": ""1.0.1"", ""Microsoft.AspNetCore.Cors"": ""1.1.1"", ""hiqpdf"": ""10.6.0"", ""Novell.Directory.Ldap.NETStandard"": ""2.3.6"" }, ""tools"": { ""Microsoft.EntityFrameworkCore.Tools"": { ""version"": ""1.1.0-preview4-final"", ""imports"": [ ""portable-net45+win8"" ] }, ""Microsoft.EntityFrameworkCore.Tools.DotNet"": ""1.1.0.0-preview4-final"", ""Microsoft.VisualStudio.Web.CodeGeneration.Tools"": { ""version"": ""1.1.0-msbuild3-final"", ""imports"": [ ""portable-net45+win8"" ] } }, ""frameworks"": { ""net461"": { ""dependencies"": { }, ""frameworkAssemblies"": { ""System.Drawing"": ""4.0.0.0"" } }, ""netcoreapp1.0"": { ""imports"": [ ""dotnet5.6"", ""portable-net45+win8"", ""net461"" ], ""dependencies"": { ""Microsoft.NETCore.App"": ""1.1.0"", ""CoreCompat.System.Configuration"": ""4.2.3-r4"" } } }, ""buildOptions"": { ""emitEntryPoint"": true, ""preserveCompilationContext"": true }, ""runtimeOptions"": { ""configProperties"": { ""System.GC.Server"": true } }, ""publishOptions"": { ""include"": [ ""wwwroot"", ""**/*.cshtml"", ""appsettings.json"", ""web.config"" ] }, ""runtimes"": { ""win10-x64"": {} }, ""scripts"": { ""prepublish"": [ ""bower install"", ""dotnet bundle"" ], ""postpublish"": [ ""dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%"" ] } } So the reason for `.net4.6.1` is `hiqpdf`, it is the only thing that is really the reason i had to load it. My app runs on IISExpress, but as soon as i publish it to the IIS box it gets as `HTTP Error 502.5 - Process Failure`. I run the exe in the command prompt as Microsoft asks as got what i put up here. I keep thinking i just have to move the right item in place and it will work on the server. What is the difference? Why does it would great locally but falls on it's face on the server? Can i include System.IO.FileSystem at a version that will fix this? (which i have tried and failed to). I know the project.json file needs some clean up again, but it is working in one spot so i figured I would keep it here. **Server Details:** [![enter image description here][2]][2] [![enter image description here][3]][3] [![enter image description here][4]][4] [1]: https://i.stack.imgur.com/gcg9a.png [2]: https://i.stack.imgur.com/dWgMs.png [3]: https://i.stack.imgur.com/HKSpG.png [4]: https://i.stack.imgur.com/c8NZj.png **Other information** I figured it would be worth noting thing i have done that wouldn't be known from this: - cleared out the nuget cache from the user path - cleared the bin - down graded what i thought i could - tried to include the `System.IO.File` directly at v. `4.3.0` but it downgrades to `4.0.0.1` I believe. " 16914 area-Serialization To Remove System.Xml.XmlSerializer.Tests.settings.targets We'd like to remove System.Xml.XmlSerializer.Tests.settings.targets so that the XmlSerializer test projects would have the same structure as others. As part of the issue, we would need to add ProjectReferences in System.Xml.XmlSerializer.Tests.csproj. /cc: @zhenlan 16916 area-System.Linq [NetFX compat]: EnumerableQuery((IEnumerable)null).GetEnumerator() difference in behavior The following code has a different behavior in NetFX: ```cs IQueryable query = new EnumerableQuery((IEnumerable)null); var enumerator = query.GetEnumerator(); ``` If we call `GetEnumerator` on an `IQueryable` instance that has a null `IEnumerable` in CoreFX we would throw an `InvalidOperationException`, but in NetFX as stated in the MSDN Documentation it will not throw: > Returns an enumerator that can iterate through the associated `IEnumerable` collection, or, if it is null, through the collection that results from rewriting the associated expression tree as a query on an `IEnumerable` data source and executing it. I've tried to execute the sample code I included before in a .NET 4.6.2 Console Application and it will cause an `StackOverflowException`. Also this is causing in one of our `System.Linq.Queryable` tests will cause it to hang forever. [Test source code](https://github.com/dotnet/corefx/blob/master/src/System.Linq.Queryable/tests/EnumerableQueryTests.cs#L23-L29) cc: @tarekgh @danmosemsft 16917 area-System.Security Add HashAlgorithmName overloads for Rfc2898DeriveBytes ctor This adds support for using (HMAC) SHA256, SHA384, SHA512 in PBKDF2. (HMAC)MD5 isn't being enabled at this time. We can re-evaluate that later, but since this API change is about letting newer algorithms in it doesn't seem like letting the older ones in is high-value. This is staying as a managed implementation in this change, switching to using native implementations can easily be done as a followup given the new tests. Fixes #9438. @@ -8105,7 +8105,7 @@ ID Area Title Description 17447 area-Serialization TypeScope.GetEnumeratorElementType Fails on Uapaot "[`System.Xml.Serialization.TypeScope.GetEnumeratorElementType`](https://github.com/dotnet/corefx/blob/master/src/System.Private.Xml/src/System/Xml/Serialization/Types.cs#L1292) is failing on uapaot as it does reflection on IEnumerable types but the metadata info for IEnumerable was reduced by UWP toolchain. 5 XmlSerializer tests failed on uapaot due to the issue. Here's the output of one of the failed tests, ``` (__Canon value, String baseline, Func$1<$XmlSerializer> serializerFactory, Boolean skipStringCompare, $XmlSerializerNamespaces xns) in D:\OSS\corefx-1\corefx\src\System.Private.Xml\tests\XmlSerializer\XmlSerializerTests.cs:line 3097 at XmlSerializerTests.Xml_SimpleCollectionDataContract() in D:\OSS\corefx-1\corefx\src\System.Private.Xml\tests\XmlSerializer\XmlSerializerTests.cs:line 992 at _$ILCT$.$ILT$ReflectionDynamicInvoke$.InvokeRetV(Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean targetIsThisCall) at System.InvokeUtils.CalliIntrinsics.Call(IntPtr dynamicInvokeHelperMethod, Object thisPtr, IntPtr methodToCall, ArgSetupState argSetupState, Boolean isTargetThisCall) at System.InvokeUtils.CallDynamicInvokeMethod(Object thisPtr, IntPtr methodToCall, Object thisPtrDynamicInvokeMethod, IntPtr dynamicInvokeHelperMethod, IntPtr dynamicInvokeHelperGenericDictionary, Object targetMethodOrDelegate, Object[] parameters, BinderBundle binderBundle, Boolean invokeMethodHelperIsThisCall, Boolean methodToCallIsThisCall) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\InvokeUtils.cs:line 400]]> ```" 17448 area-Serialization Fix TypeScope.GetEnumeratorElementType. [`System.Xml.Serialization.TypeScope.GetEnumeratorElementType`](https://github.com/dotnet/corefx/blob/master/src/System.Private.Xml/src/System/Xml/Serialization/Types.cs#L1292) is failing on uapaot as it does reflection on IEnumerable types but the metadata info for IEnumerable was reduced by UWP toolchain. 5 XmlSerializer tests failed on uapaot due to the issue. The fix is to modify System.Private.Xml's embedded rd.xml to keep the required metadata. Fixed #17447 17450 area-System.Runtime System.Runtime PointerFieldGetValue test is failfasting in Assert.IsType tests [Sort_Array_Array_NonGeneric](https://github.com/dotnet/corefx/blob/15b4f51c2f3cb924840e5407bb8d5fe03bb282ea/src/System.Runtime/tests/System/ArrayTests.cs#L2909) and [PointerFieldGetValue](https://github.com/dotnet/corefx/blob/7f6ac8bf97a84666ed3e7ef6b77c1a9470ae78c8/src/System.Runtime/tests/System/Reflection/PointerTests.cs#L118) are crashing the uapaot test execution when throwing a Debug.Assert. To get a repro locally, do the following: - Remove the `SkipOnTargetFramework` attribute on the tests - call `build.cmd -framework:uapaot` - `msbuild src\System.Runtime\tests\System.Runtime.Tests.csproj /p:TargetGroup=uapaot /t:rebuildAndTest /p:TestILCFolder=` -17452 area-System.Runtime API for performing framework checks at runtime "Provide an API that allows developers to check whether their code runs on a given .NET platform. ```C# // Assembly: System.Runtime.InteropServices.RuntimeInformation namespace System.Runtime.InteropServices { public partial class RuntimeInformation { public static bool FrameworkIsAtLeast(string targetFramework); } } ``` ### Usage ```C# if (RuntimeInformation.FrameworkIsAtLeast(""netcoreapp10"")) { DoStuffThatOnlyWorksInNetCore(); } else if (RuntimeInformation.FrameworkIsAtLeast(""net462"")) { DoStuffThatOnlyWorksInNetFramework(); } else { throw new PlatformNotSupportedException(); } ``` ### Requirements 1. Provide a robust API that allows developers to perform framework checks - In other words must not require parsing or comparisons by the developer. 2. Use terms the developer already uses when they do compile-time specialization using cross-targeting (""bait & switch"") - The strings passed to the API should be identical to the string used in project files and NuGet packages - In other words, we will not use the canonical TFM representation as it's wordy and generally not used by developers (e.g. `.NETFramework, Version=4.6.1`) 3. Design should allow for an API that we *can* put in-box - Our goal is to avoid having to ask library authors to depend on an extra NuGet package that they have to deploy just for light-up - Means we cannot have APIs that imply each time a new .NET platform (or version ships) all platforms have to update their implementation - In other words, an implementer should only have to correctly answer questions affecting itself, i.e. it shouldn't have to know how other platforms behave or what names they use. 4. API should work on .NET Framework 4.6.1 - That's the minimum platform we support with .NET Standard 2.0, so it will be a common target and hence needs to work 5. API should be addable to .NET Standard 2.0 - This makes (3) much nicer today - Effectively only means we cannot add members to a type that already exists in .NET Framework 6. The API must answer what the application *runs on* (as opposed to what the application is *built for*). - This is different from `AppContext.TargetFrameworkName` ### Decisions * Originally we considered having properties with well-known names (like `net462`). Having those properties violates requirement (3). * We considered adding the API on a more-well-known type, such as `AppContext` or `Environment`. We believe this API to be quite specialized and should only be used as the last resort. As such, we don't want to overly emphasize its existence. Also, it would violate requirement (4) and (by extension) requirement (5). * We considered using `FrameworkName` instead of `string` but this would require `FrameworkName` to parse NuGet-style TFMs into their canonical representations, i.e. `FrameworkName.Parse(""net45)""` needs to be parsed into `FrameworkName { Identifier="".NETFramework"", Version=new Version(4, 5, 0, 0) }`. While that would be nice, it violates requirement (3). ### Context Today, we have the following APIs that return version numbers: ```C# namespace System { public static partial class AppContext { public static string TargetFrameworkName { get; } } public sealed partial class Environment { public static OperatingSystem OSVersion { get; } public static Version Version { get; } } } namespace System.Runtime.InteropServices { public static partial class RuntimeInformation { public static string FrameworkDescription { get; } public static Architecture OSArchitecture { get; } public static string OSDescription { get; } public static Architecture ProcessArchitecture { get; } public static bool IsOSPlatform(OSPlatform osPlatform); } } ``` Neither of them deal with concepts that the developer is familiar with when building the application, specifically the target framework names and version numbers (e.g. `net45` and `netcoreapp11`). Furthermore, their behavior is less than ideal. Here is the output from a .NET Core console app: ```C# Console.WriteLine(AppContext.TargetFrameworkName); // Console.WriteLine(RuntimeInformation.FrameworkDescription); // .NET Core 4.6.00001.0 ``` Our original design goal of `RuntimeInformation` was to provide developers with the diagnostic means to discover which .NET platform and operating system they are running on while not exposing version checking because it's a known area for creating fragile code. Unfortunately, the resulting API surface is now entirely insufficient for runtime light-up. For better or worse, we've have to accept that developers will have to write code that allows them to tweak the behavior at runtime. We need to expose APIs that make it easy for them to express framework checks." +17452 area-System.Runtime API for performing framework checks at runtime "Provide an API that allows developers to check whether their code runs on a given .NET platform. ```C# // Assembly: System.Runtime.InteropServices.RuntimeInformation namespace System.Runtime.InteropServices { public partial class RuntimeInformation { public static bool FrameworkIsAtLeast(string targetFramework); } } ``` ### Usage ```C# if (RuntimeInformation.FrameworkIsAtLeast(""netcoreapp10"")) { DoStuffThatOnlyWorksInNetCore(); } else if (RuntimeInformation.FrameworkIsAtLeast(""net462"")) { DoStuffThatOnlyWorksInNetFramework(); } else { throw new PlatformNotSupportedException(); } ``` ### Requirements 1. Provide a robust API that allows developers to perform framework checks - In other words must not require parsing or comparisons by the developer. 2. Use terms the developer already uses when they do compile-time specialization using cross-targeting (""bait & switch"") - The strings passed to the API should be identical to the string used in project files and NuGet packages - In other words, we will not use the canonical TFM representation as it's wordy and generally not used by developers (e.g. `.NETFramework, Version=4.6.1`) 3. Design should allow for an API that we *can* put in-box - Our goal is to avoid having to ask library authors to depend on an extra NuGet package that they have to deploy just for light-up - Means we cannot have APIs that imply each time a new .NET platform (or version ships) all platforms have to update their implementation - In other words, an implementer should only have to correctly answer questions affecting itself, i.e. it shouldn't have to know how other platforms behave or what names they use. 4. API should work on .NET Framework 4.6.1 - That's the minimum platform we support with .NET Standard 2.0, so it will be a common target and hence needs to work 5. API should be addable to .NET Standard 2.0 - This makes (3) much nicer today - Effectively only means we cannot add members to a type that already exists in .NET Framework 6. The API must answer what the application *runs on* (as opposed to what the application is *built for*). - This is different from `AppContext.TargetFrameworkName` ### Decisions * Originally we considered having properties with well-known names (like `Net461`). Having those properties violates requirement (3). * We considered adding the API on a more-well-known type, such as `AppContext` or `Environment`. We believe this API to be quite specialized and should only be used as the last resort. As such, we don't want to overly emphasize its existence. Also, it would violate requirement (4) and (by extension) requirement (5). * We considered using `FrameworkName` instead of `string` but this would require `FrameworkName` to parse NuGet-style TFMs into their canonical representations, i.e. `FrameworkName.Parse(""net45)""` needs to be parsed into `FrameworkName { Identifier="".NETFramework"", Version=new Version(4, 5, 0, 0) }`. While that would be nice, it violates requirement (3). ### Context Today, we have the following APIs that return version numbers: ```C# namespace System { public static partial class AppContext { public static string TargetFrameworkName { get; } } public sealed partial class Environment { public static OperatingSystem OSVersion { get; } public static Version Version { get; } } } namespace System.Runtime.InteropServices { public static partial class RuntimeInformation { public static string FrameworkDescription { get; } public static Architecture OSArchitecture { get; } public static string OSDescription { get; } public static Architecture ProcessArchitecture { get; } public static bool IsOSPlatform(OSPlatform osPlatform); } } ``` Neither of them deal with concepts that the developer is familiar with when building the application, specifically the target framework names and version numbers (e.g. `net45` and `netcoreapp11`). Furthermore, their behavior is less than ideal. Here is the output from a .NET Core console app: ```C# Console.WriteLine(AppContext.TargetFrameworkName); // Console.WriteLine(RuntimeInformation.FrameworkDescription); // .NET Core 4.6.00001.0 ``` Our original design goal of `RuntimeInformation` was to provide developers with the diagnostic means to discover which .NET platform and operating system they are running on while not exposing version checking because it's a known area for creating fragile code. Unfortunately, the resulting API surface is now entirely insufficient for runtime light-up. For better or worse, we've have to accept that developers will have to write code that allows them to tweak the behavior at runtime. We need to expose APIs that make it easy for them to express framework checks." 17453 area-Microsoft.CSharp Teach the dynamic binder about tuple conversions "(Originally reported as part of https://github.com/dotnet/roslyn/issues/17851 and https://github.com/dotnet/roslyn/issues/12804) **Version Used**: Microsoft Visual Studio Community 2017 Version 15.0.26228.4 D15RTWSVC Microsoft .NET Framework Version 4.6.01586 **Steps to Reproduce**: Compile and run: ``` using System; class C { static void Foo((long, long) x, object y) => Console.WriteLine(x); static void Main() => Foo((0, 0), (dynamic) null); } ``` **Expected Behavior**: Program prints ""(0, 0)"". The target type (long, long) for the tuple literal (0, 0) is known at compile time, so the tuple literal should be converted to an instance of that type, rather than of (int, int), and dynamic invocation should succeed. It this kind of conversion is not feasible for some reason, then the compiler should issue a compile-time error, rather than allowing the program to fail at runtime. **Actual Behavior**: ``` Unhandled Exception: Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: The best overloaded method match for 'C.Foo(System.ValueTuple, object)' has some invalid arguments at CallSite.Target(Closure , CallSite , Type , ValueTuple`2 , Object ) at System.Dynamic.UpdateDelegates.UpdateAndExecuteVoid3[T0,T1,T2](CallSite site, T0 arg0, T1 arg1, T2 arg2) at C.Main() ``` FYI @VSadov " 17454 area-System.Runtime Question: Calling Mac OS X Native APIs from .NET Core Hello, I'd like to call Mac OS X native APIs from .NET Core. More specifically, I'm interested in calling the [IOPowerSource()](https://developer.apple.com/reference/iokit/iopowersources.h) API to get the battery charging status on a MacBook Pro running Mac OS X Sierra. http://stackoverflow.com/questions/5751132/mac-get-battery-charging-status-plugged-in-or-not **Edit**: The question is: How do I actually do this? Cheers, Trevor Sullivan 17455 area-Infrastructure Enable PortableRID packaging Enable Portable RID package generation for Windows, OSX and Linux. @@ -8359,14 +8359,14 @@ ID Area Title Description 17812 area-System.Net HttpWebRequest.SendRequest fails on UAP due to settting MaximumAutomaticRedirections to 50 The UAP specific code in https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/netcore50/System/Net/HttpClientHandler.cs will throw PlatformNotSupportedException if the MaximumAutomaticRedirections is to set anything but 10 (citing WinInet behavior). But the code in HttpWebRequest.SendAsync sets the property to the value from HttpHandlerDefaults which is 50. Basically any usage of the HttpWebRequest.SendAsync on UAP will fail due to this. 17815 area-Infrastructure Fix TestILC-related auto-upgrade config See https://github.com/dotnet/corefx/pull/17806 17817 area-System.Security NS2.0 members SHAxxxCSP missing from netcoreapp These were recently added to NS20. @steveharter they need implementing for Windows as well as [Unix](https://github.com/dotnet/corefx/issues/17163) ``` TypesMustExist : Type 'System.Security.Cryptography.SHA256CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.SHA384CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'System.Security.Cryptography.SHA512CryptoServiceProvider' does not exist in the implementation but it does exist in the contract. ``` -17819 area-Infrastructure Ensure we build packages for everything that's been impacted by `net462` > `netstandard2.0` remapping. See https://github.com/dotnet/standard/issues/282. We need to examine all the 1.1 packages to see if anything else is impacted in a similar way. +17819 area-Infrastructure Ensure we build packages for everything that's been impacted by `net461` > `netstandard2.0` remapping. See https://github.com/dotnet/standard/issues/282. We need to examine all the 1.1 packages to see if anything else is impacted in a similar way. 17820 area-System.Security Cryptography types in core and netstandard20 more restricted than in netfx These classes are marked as sealed (static) in core and netstandard but aren't in netfx: ``` System.Security.Cryptography.SHA1Managed System.Security.Cryptography.SHA256Managed System.Security.Cryptography.SHA384Managed System.Security.Cryptography.SHA512Managed ``` We are getting a few omission errors: - CannotRemoveBaseTypeOrInterface - CannotMakeMemberNonVirtual https://github.com/dotnet/corefx/issues/15255#issuecomment-291137517 Are these classes intentionally now more restrict than before (also in NS2.0)? Some members are also now not virtual anymore. Wouldn't that be a breaking change for netfx NS2.0 compatibility? cc: @bartonjs @danmosemsft 17821 area-System.Net Fix PNSE with HttpClientHandler.MaxAutomaticRedirections property This's a temporary fix for issue https://github.com/dotnet/corefx/issues/17812 to get us unblocked for ns2.0 UWP app-compact. 17825 area-Infrastructure Add ILLink to the build "This adds ILLink (a .NET Core build of the mono linker) to the build tools and uses it to trim non-public unreachable IL and metadata from our assemblies. This is enabled by default for any assembly that is part of NETCore.App. This can be disabled by setting ILLinkTrimAssembly=false. In some cases ILLink may trim too much, for example a runtime dependency via reflection on private or internal API. If we cannot update ILLink to understand this dependency via heuristic then we can manually ""root"" the private or internal API. This is done by adding an XML file next to the project with the name ILLinkTrim.xml that follows the format documented here: https://github.com/mono/linker/blob/master/linker/README Replaces https://github.com/dotnet/corefx/pull/17632 /cc @erozenfeld @sbomer @weshaggard " 17826 area-System.Runtime Fix registry enumeration. Key data (values and subkeys) can change while we're in the midst of enumerating. This is causing intermittent failures in tests as ERROR_NO_MORE_ITEMS surfaces as an exception as we try and iterate past removed data. In addition, allocating 32K to get value names causes 32K * number of items to get natively allocated on the heap. While these allocs are returned on each iteration it could potentially cause significant grief for large keys and concurrent heap allocations. Above and beyond this, allocating 64K for what are typically < 20 character names is a bit crazy, and as such we'll optimize for the common case. Related to #17037, #16961- **however** this doesn't directly fix those as there is another copy of the registry code in System.Private.Corelib that those issues are actually using. I'll be following up shortly with the SPCL fix. 17829 area-Serialization Fix DataContractSerializer ReflectionOnly tests The DataContractSerializer tests when in ReflectionOnly mode try to get `DataContractSerializer.Option` setter method through reflection which is not available in Desktop so when trying to run this tests in netfx we would get failures. Fixes: https://github.com/dotnet/corefx/issues/17774 cc: @danmosemsft 17830 area-System.Data Change command cancellation to use a specific cancellationOwner field, rather than the more generic Owner field "This change brings SqlClient cancellation in line with Framework. Currently, we use the Owner field in TdsParserStateObject to check the Cancel() caller, but overloading the Owner field with BulkCopy introduced some issues with the TdsParserStateObject not being disposed, since it was setting the Owner field to manage cancellation. This change introduces the ""StartSession"" behavior from framework, and uses a specific cancellationOwner field. (This field in Framework is represented as an int though, since it's an objectID also used with BID tracing.)" -17831 area-Infrastructure Add back package for System.Reflection.TypeExtensions Fixes #17819 System.Reflection.TypeExtensions is not part of NETStandard.Library. It's included in NetCore.App, but the package is required in order to ship the netstandard ref and desktop implementation. We must ship the higher version of API (4.1.x) on net462 now that net462 supports netstandard2.0. Previously this API was only supported starting with net462. /cc @weshaggard @pranavkm +17831 area-Infrastructure Add back package for System.Reflection.TypeExtensions Fixes #17819 System.Reflection.TypeExtensions is not part of NETStandard.Library. It's included in NetCore.App, but the package is required in order to ship the netstandard ref and desktop implementation. We must ship the higher version of API (4.1.x) on net461 now that net461 supports netstandard2.0. Previously this API was only supported starting with net462. /cc @weshaggard @pranavkm 17832 area-System.Security [Port to 1.1.x] Fix the P/Invoke target for System.Security.Cryptography.Algorithms.Tests The crypto shim got renamed, but a capabilities probe in the S.S.C.Algorithms test library didn't get the memo. This didn't matter much because the old shim name is still produced for compatibility, but it got highlighted in a test with packages change. This change removes the duplicate definition of the library name, and includes the Unix library names list, but leaves the individual targeted methods in place. Fixes #16047, by cherry-picking the commit from #13123. 17833 area-System.Data SqlDependency Class Support Does .Net Core/Entity Framework support SQL Dependancies and if not directly, is there a way in .Net Core to receive notifications when data changes in SQL Server? 17835 area-System.Net Move System.Net.Cookie to System.Net namespace Move Cookie to System.Net namespace for UAP since cookie is in ns2.0 public System.Net contract. @@ -9001,7 +9001,7 @@ ID Area Title Description 18733 area-System.Security why CngKey.Import is not supported on ubuntu? "Is there any workaround to make this code working? ``` var keyContent = System.IO.File.ReadAllText(""key.p8"").Split('\n')[1]; var secretKeyBlob = Convert.FromBase64String(keyContent); var key = CngKey.Import(secretKeyBlob, CngKeyBlobFormat.Pkcs8PrivateBlob); ```" 18734 area-System.Linq Disable on desktop LINQ tests that stack overflow LINQ's Concat implementation in core is optimized to better support chains of Concats, and there are several tests that stress this. These pass on core and stack overflow on desktop. Disabling on desktop. 18735 area-System.Security CreateChain_Hybrid test failed in CI on Unix https://ci.dot.net/job/dotnet_corefx/job/master/job/portablelinux_release_prtest/3919/consoleText ``` System.Security.Cryptography.X509Certificates.Tests.CertificateCreation.CertificateRequestChainTests.CreateChain_Hybrid [FAIL] System.ArgumentException : The provided key does not match the public key for this certificate. Parameter name: privateKey Stack Trace: at System.Security.Cryptography.X509Certificates.RSACertificateExtensions.CopyWithPrivateKey(X509Certificate2 certificate, RSA privateKey) at System.Security.Cryptography.X509Certificates.Tests.CertificateCreation.CertificateRequestChainTests.CreateAndTestChain(AsymmetricAlgorithm rootPrivKey, AsymmetricAlgorithm intermed1PrivKey, AsymmetricAlgorithm intermed2PrivKey, AsymmetricAlgorithm leafPubKey) at System.Security.Cryptography.X509Certificates.Tests.CertificateCreation.CertificateRequestChainTests.CreateChain_Hybrid() ``` -18736 area-Infrastructure Config system should model versionless targetgroups as aliases Today these are distinct nodes in the compatibility graph. As a result `netstandard` isn't considered to be compatible with `netstandard2.0`, nor is `net462` nor `net462`. This creates a maintainence problem. We have to *remember* to keep the graph mappings correct. This means that remapping the versionless targetgroups is not a simple task. I'd like to fix this by treating the versionless identifiers as an alias. This was my original intent with these, but we didn't do it because it required a code change rather than just props. +18736 area-Infrastructure Config system should model versionless targetgroups as aliases Today these are distinct nodes in the compatibility graph. As a result `netstandard` isn't considered to be compatible with `netstandard2.0`, nor is `net461` nor `net462`. This creates a maintainence problem. We have to *remember* to keep the graph mappings correct. This means that remapping the versionless targetgroups is not a simple task. I'd like to fix this by treating the versionless identifiers as an alias. This was my original intent with these, but we didn't do it because it required a code change rather than just props. 18738 area-System.Runtime Simple disambiguation of path test inputs XUnit logging seems to throw in extra slashes and these inputs vary with slashes. Trivial change to make it easier to decipher results like https://github.com/dotnet/corefx/issues/18717 18740 area-System.Net Allow HttpWebRequest.AllowReadStreamBuffering to be set to true While fixing various .NET Framework app-compat differences, PR #18163 changed the AllowReadStreamBuffering property to match .NET Framework. This resulted in having the property throw an exception when set to true. That behavior is what .NET Framework currently does. Historically, this property did not always exist in .NET Framework at all. Other portable versions of .NET (Windows Phone, Silverlight) for the HTTP stack were implemented differently and had this property which worked. When .NET Framework APIs were reconciled in 2015, this virtual property was added to .NET Framework but the functionality on Desktop was limited. This PR will put back this property's functionality for .NET Core which is also used for UWP apps. Fixes #18668. 18743 area-Serialization Disable soap encoded XmlSerialization tests on desktop System.Runtime.Serialization.Xml src and ref contracts are built against netfx not netstandard so the test need to be built against netfx as well to find its correct dependencies in runtime. Now since we are building them against netstandard and run them on netfx it will not find System dependencies as it doesn't have a reference to netstandard. So we should build them against netfx so that it loads it dependencies from mscorlib as it is the ones included from src and ref. Fixes: https://github.com/dotnet/corefx/issues/18660 Tracking issue: #18964 cc: @weshaggard @danmosemsft @@ -9080,7 +9080,7 @@ ID Area Title Description 18846 area-System.Security Desktop: System.Security.Cryptography.Rsa.Tests.ImportExport.ImportNoDP failing From @Jiayili1 in https://github.com/dotnet/corefx/issues/18476 Another test failed with the same issue, detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_netfx_windows_nt_debug/29/testReport/System.Security.Cryptography.Rsa.Tests/ImportExport/ImportNoDP/ Failed test: System.Security.Cryptography.Rsa.Tests.ImportExport.ImportNoDP MESSAGE: ~~~ Assert.Throws() Failure Expected: typeof(System.Security.Cryptography.CryptographicException) Actual: (No exception was thrown) ~~~ STACK TRACE: ~~~ at System.Security.Cryptography.Rsa.Tests.ImportExport.ImportNoDP() in D:\j\workspace\outerloop_net---903ddde6\src\Common\tests\System\Security\Cryptography\AlgorithmImplementations\RSA\ImportExport.cs:line 277 ~~~ 18847 area-System.Collections Add ImmutableArray.AsReadOnlySpan() Can create a zero copy `ReadOnlySpan` over its internal array; would be a valid approach? 18848 area-System.Threading System.Threading Area Performance Tests This is a tracking issue describing the current performance tests we have in the System.Threading area, and what coverage is missing. The work items below can be completed independently, and they are all of different priority. When adding performance tests, please adhere to [the guidelines listed here](https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/performance-tests.md#adding-new-performance-tests). NOTE: System.Threading has types defined in several contracts. I'm listing everything in this single issue, but the tests themselves may go into different test projects, depending on how we feel the tests are best organized. ## Existing Coverage: There is a very small amount of existing coverage for two types. We should audit that these existing test cases are 1) valuable and 2) conform to the guidelines linked to above. It's likely that we should just focus on writing new tests and adding better coverage than spending much time on the two existing test cases. We currently have tests for: * ReaderWriterLockSlim * EventWaitHandle ## Missing Coverage: ### System.Threading.Thread * Thread ### System.Runtime * Task * TaskFactory * TaskScheduler * CancellationToken ### System.Threading * Interlocked * Monitor * Semaphore * Volatile * SpinLock, SpinWait * SynchronizationContext * Barrier * ExecutionContext * LazyInitializer * ManualResetEvent, AutoResetEvent ### System.Threading.Tasks * AsyncTaskMethodBuilder * TaskCompletionSource ### System.Threading.Tasks.Extensions * ValueTask -18849 area-Infrastructure Running MusicStore sample on net462 fails with an exception **Repro:** - Clone https://github.com/aspnet/MusicStore - Checkout the branch `kichalla/net462` - cd `samples/MusicStore` - dotnet restore - dotnet build - Run `samples\MusicStore\bin\Debug\net462\MusicStore.exe` **Expected:** Application starts successfully and you can make a request successfully to `http://localhost:5000/` to see the home page. **Actual:** Application fails to start with an exception ``` Unhandled Exception: System.IO.FileLoadException: Could not load file or assembly 'System.Runtime.Loader, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) at Microsoft.AspNetCore.Hosting.WebHostExtensions.d__5.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) at Microsoft.AspNetCore.Hosting.WebHostExtensions.RunAsync(IWebHost host) at Microsoft.AspNetCore.Hosting.WebHostExtensions.Run(IWebHost host) at MusicStore.Program.Main(String[] args) ``` A pull request where discussion about this has been going on: https://github.com/aspnet/MusicStore/pull/775 cc @Eilon @pranavkm +18849 area-Infrastructure Running MusicStore sample on NET461 fails with an exception **Repro:** - Clone https://github.com/aspnet/MusicStore - Checkout the branch `kichalla/net461` - cd `samples/MusicStore` - dotnet restore - dotnet build - Run `samples\MusicStore\bin\Debug\net461\MusicStore.exe` **Expected:** Application starts successfully and you can make a request successfully to `http://localhost:5000/` to see the home page. **Actual:** Application fails to start with an exception ``` Unhandled Exception: System.IO.FileLoadException: Could not load file or assembly 'System.Runtime.Loader, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) at Microsoft.AspNetCore.Hosting.WebHostExtensions.d__5.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) at Microsoft.AspNetCore.Hosting.WebHostExtensions.RunAsync(IWebHost host) at Microsoft.AspNetCore.Hosting.WebHostExtensions.Run(IWebHost host) at MusicStore.Program.Main(String[] args) ``` A pull request where discussion about this has been going on: https://github.com/aspnet/MusicStore/pull/775 cc @Eilon @pranavkm 18850 area-System.Net Change exception returned when serializing HttpWebRequest to match NETFX "Comments from PR #18801: From @safern ""Binary Serialization is now supported on .NET Core 2.0 but it wasn't in 1.1 or 1.0; so probably that is why we were throwing PNSE, so I think the same thing, it sounds reasonable to throw SE."" ```c# [Fact] public void HttpWebRequest_Serialize_Fails() { using (MemoryStream fs = new MemoryStream()) { BinaryFormatter formatter = new BinaryFormatter(); var hwr = HttpWebRequest.CreateHttp(""http://localhost""); if (PlatformDetection.IsFullFramework) { // .NET Framework throws a more detailed exception. // System.Runtime.Serialization.SerializationException): // Type 'System.Net.WebRequest+WebProxyWrapper' in Assembly 'System, Version=4.0.0. // 0, Culture=neutral, PublicKeyToken=b77a5c561934e089' is not marked as serializable. Assert.Throws(() => formatter.Serialize(fs, hwr)); } else { // TODO: Issue #18850. Change HttpWebRquest to throw SerializationException similar to .NET Framework. Assert.Throws(() => formatter.Serialize(fs, hwr)); } } } ```" 18851 area-System.Net Investigate behavior difference with NETFX with HttpWebResponse after closing stream "Comments from PR #18801 From @stephentoub ""Is the response Stream usable in this state in desktop? If so, seems like one we should fix in core."" ```c# [OuterLoop] [Fact] public async Task HttpWebResponse_Close_Success() { await LoopbackServer.CreateServerAsync(async (server, url) => { HttpWebRequest request = WebRequest.CreateHttp(url); request.Method = HttpMethod.Get.Method; Task getResponse = request.GetResponseAsync(); DateTimeOffset utcNow = DateTimeOffset.UtcNow; await LoopbackServer.ReadRequestAndSendResponseAsync(server, $""HTTP/1.1 200 OK\r\n"" + $""Date: {utcNow:R}\r\n"" + ""Content-Type: application/json;charset=UTF-8\r\n"" + ""Content-Length: 5\r\n"" + ""\r\n"" + ""12345""); WebResponse response = await getResponse; HttpWebResponse httpResponse = (HttpWebResponse)response; httpResponse.Close(); if (PlatformDetection.IsFullFramework) { Stream stream = httpResponse.GetResponseStream(); } else { // TODO: Issue #18851. Investigate .NET Core to see if it can // match .NET Framework. Assert.Throws(() => { httpResponse.GetResponseStream(); }); } }); ```" 18854 area-Serialization Add a test to verify using duration as the XmlQualifiedName for TimeSpan "#18761 ```c# AddNonXsdPrimitive(typeof(TimeSpan), ""TimeSpan"", UrtTypes.Namespace, ""TimeSpan"", new XmlQualifiedName(""**duration**"", XmlSchema.Namespace), new XmlSchemaFacet[0], TypeFlags.CanBeAttributeValue | TypeFlags.CanBeElementValue | TypeFlags.XmlEncodingNotRequired); ``` Verify the duration in this code." @@ -9214,7 +9214,7 @@ ID Area Title Description 19053 area-System.Security Stop producing System.Security.Cryptography.Native System.Security.Cryptography.Native.OpenSsl is the only version of the library in use, so let's be done building the older version. Fixes #13124. 19056 area-System.IO "Test: System.IO.Tests.DirectoryInfo_Create/CDriveCase failed with ""System.IO.DirectoryNotFoundException""" In behalf of @Jiayili1, moved from https://github.com/dotnet/corefx/issues/11687#issuecomment-297624327 This issue is repro on UWP F5 Tests, detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170427.01/workItem/System.IO.FileSystem.Tests/analysis/xunit/System.IO.Tests.DirectoryInfo_Create~2FCDriveCase Message : System.IO.DirectoryNotFoundException : Could not find a part of the path 'c:\'. Stack Trace : at System.IO.Win32FileSystem.CreateDirectory(String fullPath) at System.IO.Tests.DirectoryInfo_Create.Create(String path) at System.IO.Tests.Directory_CreateDirectory.CDriveCase() 19057 area-System.Data SqlClient: Exception is thrown with connection pooling with latest package (4.4.0-preview1) Working on a repro project. https://github.com/aspnet/EntityFramework/tree/sqlclient Clone the branch, run `build.cmd /t:Compile` Run test\EFCore.SqlServer.FunctionalTests on netcoreapp2.0 Stack traces Exception 1 happens when calling 'ClearAllPools` ``` Failed Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.SqlServerDatabaseCreatorEnsureCreatedTest.EnsureCreated_can_create_physical_database_with_filename_and_s chema Error Message: System.IO.IOException : Pipe is broken. Stack Trace: at System.IO.Pipes.PipeStream.CheckWriteOperations() at System.IO.Pipes.PipeStream.Flush() at System.Net.Security.AuthenticatedStream.Dispose(Boolean disposing) at System.Net.Security.SslStream.Dispose(Boolean disposing) at System.IO.Stream.Close() at System.Data.SqlClient.SNI.SNINpHandle.Dispose() at System.Data.SqlClient.SNI.TdsParserStateObjectManaged.Dispose() at System.Data.SqlClient.TdsParser.Disconnect() at System.Data.SqlClient.SqlInternalConnectionTds.Dispose() at System.Data.ProviderBase.DbConnectionPool.DestroyObject(DbConnectionInternal obj) at System.Data.ProviderBase.DbConnectionPool.Clear() at System.Data.ProviderBase.DbConnectionFactory.QueuePoolForRelease(DbConnectionPool pool, Boolean clearing) at System.Data.ProviderBase.DbConnectionPoolGroup.Clear() at System.Data.ProviderBase.DbConnectionFactory.ClearAllPools() at Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.Utilities.SqlServerTestStore.DeleteDatabase(String name) in D:\MergeBranch\EntityFramework\test\EFCore.SqlS erver.FunctionalTests\Utilities\SqlServerTestStore.cs:line 267 at Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.Utilities.SqlServerTestStore.Dispose() in D:\MergeBranch\EntityFramework\test\EFCore.SqlServer.FunctionalTe sts\Utilities\SqlServerTestStore.cs:line 445 at Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.SqlServerDatabaseCreatorEnsureCreatedTest.<>c.< b__9_0>d.MoveNext() in D:\MergeBranch\EntityFramework\test\EFCore.SqlServer.FunctionalTests\SqlServerDatabaseCreatorTest.cs:line 320 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.EntityFrameworkCore.ExecutionStrategyExtensions.<>c__7`1.<b__7_0>d.MoveNext() in D:\MergeBranch\EntityFramework\src\EFCore\Extensions\Execu tionStrategyExtensions.cs:line 169 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.SqlServerDatabaseCreatorEnsureCreatedTest.d__6.MoveNext() in D:\MergeBranch\EntityFramework\test\EFCore.SqlServer.FunctionalTests\SqlServerDatabaseCreatorTest.cs:line 294 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ``` Another one with same exception happens when calling `OpenAsync` ``` Failed Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.SqlServerDatabaseCreatorEnsureCreatedTest.EnsureCreatedAsync_can_create_physical_database_and_schema Error Message: System.IO.IOException : Pipe is broken. Stack Trace: at System.IO.Pipes.PipeStream.CheckWriteOperations() at System.IO.Pipes.PipeStream.Flush() at System.Net.Security.AuthenticatedStream.Dispose(Boolean disposing) at System.Net.Security.SslStream.Dispose(Boolean disposing) at System.IO.Stream.Close() at System.Data.SqlClient.SNI.SNINpHandle.Dispose() at System.Data.SqlClient.SNI.TdsParserStateObjectManaged.Dispose() at System.Data.SqlClient.TdsParser.Disconnect() at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, Boolean redirectedUserInstance) at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirec tedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPoo l pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPool Key poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneChe ckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.WaitForPendingOpen() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.d__36.MoveNext() in D:\MergeBranch\EntityFramework\src\EFCore.Relational\Storage\RelationalCo nnection.cs:line 410 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at Microsoft.EntityFrameworkCore.Storage.Internal.SqlServerDatabaseCreator.<>c__DisplayClass20_0.<b__0>d.MoveNext() in D:\MergeBranch\EntityFramework\src \EFCore.SqlServer\Storage\Internal\SqlServerDatabaseCreator.cs:line 162 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at Microsoft.EntityFrameworkCore.Storage.RelationalDatabaseCreator.d__18.MoveNext() in D:\MergeBranch\EntityFramework\src\EFCore.Relational\Storag e\RelationalDatabaseCreator.cs:line 244 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.SqlServerDatabaseCreatorEnsureCreatedTest.d__10.MoveNext() in D:\MergeBranch\Entit yFramework\test\EFCore.SqlServer.FunctionalTests\SqlServerDatabaseCreatorTest.cs:line 334 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.SqlServerDatabaseCreatorEnsureCreatedTest.<>c.< b__9_0>d.MoveNext() in D:\MergeBranch\EntityFramework\test\EFCore.SqlServer.FunctionalTests\SqlServerDatabaseCreatorTest.cs:line 319 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.EntityFrameworkCore.ExecutionStrategyExtensions.<>c__7`1.<b__7_0>d.MoveNext() in D:\MergeBranch\EntityFramework\src\EFCore\Extensions\Execu tionStrategyExtensions.cs:line 169 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.SqlServerDatabaseCreatorEnsureCreatedTest.d__7. MoveNext() in D:\MergeBranch\EntityFramework\test\EFCore.SqlServer.FunctionalTests\SqlServerDatabaseCreatorTest.cs:line 301 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) [xUnit.net 00:01:36.8622906] Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests.SqlServerDatabaseCreatorEnsureDeletedTest.EnsureDeletedAsync_will_delete_databas e_with_opened_connections [FAIL] ``` MARS = true in both cases. Using package System.Data.SqlClient 4.4.0-preview1-25227-04 Dotnet ``` Product Information: Version: 2.0.0-preview1-005861 Commit SHA-1 hash: e0c0075ccd Runtime Environment: OS Name: Windows OS Version: 10.0.14393 OS Platform: Windows RID: win10-x64 Base Path: C:\Users\smpatel\.dotnet\x64\sdk\2.0.0-preview1-005861\ Microsoft .NET Core Shared Framework Host Version : 2.0.0-preview1-002088-00 Build : e264d929481c1713687bc79e862bae275861981c ``` -19058 area-Infrastructure Breaking changes in CoreFx packages due to net462 > ns2.0 mapping "The remapping can cause ref-def mismatches when a NS1.5 or higher library is consumed in net462. For example see https://github.com/aspnet/MusicStore/pull/775#issuecomment-295513922. We could mitigate this by shoving those into the NETStandard.Library.NETFramework package, effectively ""lifting"" the implementation assembly up to the higher version via conflict resolution. Alternatively we do nothing and document that folks should upgrade those packages. @weshaggard @terrajobst, thoughts?" +19058 area-Infrastructure Breaking changes in CoreFx packages due to net461 > ns2.0 mapping "The remapping can cause ref-def mismatches when a NS1.5 or higher library is consumed in net461. For example see https://github.com/aspnet/MusicStore/pull/775#issuecomment-295513922. We could mitigate this by shoving those into the NETStandard.Library.NETFramework package, effectively ""lifting"" the implementation assembly up to the higher version via conflict resolution. Alternatively we do nothing and document that folks should upgrade those packages. @weshaggard @terrajobst, thoughts?" 19059 area-System.Runtime Update RefEmit Test to expect LoadContext for DynamicAssemblies Test update accompanying fix for https://github.com/dotnet/coreclr/issues/11228 CC @jkotas 19060 area-System.Data Disable SqlClient named pipes exception tests when targeted against Framework, since Core throws exceptions with different messages Resolves failures in https://github.com/dotnet/corefx/issues/19039 and https://github.com/dotnet/corefx/pull/17566 19061 area-System.Security Allow empty authType for ClaimsIdentity This looks like an unintentional change made in porting that introcued a discrepancy between netcoreapp and desktop behavior. On desktop, an empty string as the authenticationtype is allowed. On netcoreapp before this change, authType was set instead null. resolves https://github.com/dotnet/corefx/issues/18814 After this change, all System.Security.Claims tests are passing on netfx and netcoreapp. cc: @bartonjs @krwq @@ -9435,7 +9435,7 @@ ID Area Title Description 19358 area-Meta Add nice messages to all auto generated PNSE For 2.0 we need to build on https://github.com/dotnet/buildtools/issues/1449 to add nice messages to all PNSE generated code. Talk to area owners to get nice strings. 19359 area-System.Net Skip DualMode localhost tests when it's not "Several DualMode tests assume that ""localhost"" maps to both IPv4 and IPv6 addresses, either because the test is verifying that a DualMode socket (such as one used by Socket.ConnectAsync) is able to connect to both IPv4 and IPv6 endpoints, or because the test is verifying that a DualMode socket listening at a given address can accept both IPv4 and IPv6 connections. but ""localhost"" doesn't always map to both IPv4 and IPv6. Change the tests to be conditional to only run when that assumption holds. Fixes https://github.com/dotnet/corefx/issues/4002 cc: @steveharter, @davidsh, @geoffkizer " 19361 area-System.Xml Remove duplicate Xml tests Resolves https://github.com/dotnet/corefx/issues/18810. Removes duplicate of XmlResolver tests from XmlSchema tests. The two versions: https://github.com/dotnet/corefx/blob/7e0170e0ce47ef07c987cdbf8716259d9054cd1d/src/System.Private.Xml/tests/XmlSchema/XmlSchemaSet/XmlSystemPathResolverTests.cs https://github.com/dotnet/corefx/blob/30e9fb02d048e88c71f772eed80ccff407f614d9/src/System.Private.Xml/tests/XmlReader/XmlResolver/XmlSystemPathResolverTests.cs cc: @krwq @danmosemsft -19362 area-System.Security Disable failing PKCS tests from =net462 is running, and the fix is non-quirked. These are the last tests failing in CI for the PKCS test assembly. Note that the `IsNetfx462OrNewer` function only checks the running framework version, not the highest framework version available on the system. This is somewhat problematic since the fix came in 462 and is non-quirked. The end result of this is that these tests will be ignored when the running TFM is =net462 is available even when they will actually pass. It's not perfect, but it at least absolutely disables the tests when they would fail (i.e. when 461 is the highest available framework version). cc: @bartonjs @krwq resolves https://github.com/dotnet/corefx/issues/19090 +19362 area-System.Security Disable failing PKCS tests from =net462 is running, and the fix is non-quirked. These are the last tests failing in CI for the PKCS test assembly. Note that the `IsNetfx462OrNewer` function only checks the running framework version, not the highest framework version available on the system. This is somewhat problematic since the fix came in 462 and is non-quirked. The end result of this is that these tests will be ignored when the running TFM is =net462 is available even when they will actually pass. It's not perfect, but it at least absolutely disables the tests when they would fail (i.e. when 461 is the highest available framework version). cc: @bartonjs @krwq resolves https://github.com/dotnet/corefx/issues/19090 19363 area-Infrastructure Source init-tools rather than execute Sourcing init-tools.sh rather than executing it, prevents it from spawning a new process. The ulimit that's set is only valid for the sub-process which means that it's parent won't be affected by it which results in build failures as mentioned in #19152. Sourcing it also means we no longer have to catch the exit code. 19364 area-System.Diagnostics Fix missing System.Diagnostics.StackTrace.StackTraceSymbols class Add ILLinkTrim.xml to keep illink from removing it. Issue #19319 19365 area-System.Globalization System.Globalization.Tests now at 3 failures. Moved some unicode strings out of InlineData to work around TFS 430084 (.Net Native mangling Unicode strings in custom attributes.) More .ParamName checking disabled. This test still fails because we optimize away the InvalidCultureName property. Not sure if we want to define that as intended behavior so leaving it alone for the time being. @@ -9476,7 +9476,7 @@ ID Area Title Description 19416 area-System.Runtime Add support for getting current stack into Exception When writing managed wrappers for native components, it's common to create an Exception in one location (e.g. in a callback from native that includes an error code) and to then pass that off to a completely different location (e.g. storing the Exception into a TaskCompletionSource, with its Task awaited somewhere else). In doing so, the created Exception object doesn't contain any stack trace information about the original location where it was created, sometimes making it difficult to track down where it came from. It would be very helpful if there were a way of storing the equivalent of Environment.StackTrace into an Exception object. It's possible to do: ```C# try { throw e; } catch { } ``` but that doesn't really help, as the stack trace will only include the calling frame, not the entire stack, since the stack will stop after the catching frame. It would be helpful to have an API like: ```C# public class Exception { ... public void AppendCurrentStackTrace(); ... } ``` or something like that. Alternatively it could live on ExceptionDispatchInfo, e.g. ```C# public static class ExceptionDispatchInfo { ... public static void AppendCurrentStackTrace(Exception source); ... } ``` Workarounds today involve using reflection to access privates of Exception, e.g. _remoteStackTraceString. cc: @gkhanna79, @jkotas 19418 area-Serialization Area-Serialization Sprint 118 The issue is for tracking issues to be done in sprint 118 (due by 5/26/2017) 19419 area-System.Net Ignore lack of CURLMOPT_MAX_HOST_CONNECTIONS in CurlHandler Versions before 7.30 don't have this option. Previously we would throw a PlatformNotSupportedException. As devs would generally use an option of this type to increase the limit (since historically such a limit was 2 or 10 in the .NET Framework) rather than decrease it, and since it's already effectively infinite by default in .NET Core, with this commit, now we just ignore it. This helps to avoid PNSEs on the few platforms that still ship with too old a version of libcurl. Fixes https://github.com/dotnet/corefx/issues/14614 cc: @geoffkizer, @Priya91, @davidsh -19420 area-System.Security System.Security.Cryptography.Xml conflicts System.Security when building for .NET Framework "The latest System.Security.Cryptography.Xml package causes compiler errors for .NET Framework projects. > error CS0433: The type 'EncryptedXml' exists in both 'System.Security.Cryptography.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' and 'System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' ### Repro Create a .NET Framework 4.6.1 project that references a .NET Standard 2.0 project. Example: TestApp --> TestLib #### TestApp ```xml Exe net462 ``` ```c# using System; using System.Security.Cryptography.Xml; namespace TestApp { class Program { static void Main(string[] args) { Console.WriteLine(typeof(EncryptedXml).AssemblyQualifiedName); } } } ``` #### TestLib ```xml netstandard2.0 true ``` #### Details Using dotnet-CLI 2.0.0-preview2-005905 [msbuild.log.txt](https://github.com/dotnet/corefx/files/980530/msbuild.log.txt) cc @krwq " +19420 area-System.Security System.Security.Cryptography.Xml conflicts System.Security when building for .NET Framework "The latest System.Security.Cryptography.Xml package causes compiler errors for .NET Framework projects. > error CS0433: The type 'EncryptedXml' exists in both 'System.Security.Cryptography.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' and 'System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' ### Repro Create a .NET Framework 4.6.1 project that references a .NET Standard 2.0 project. Example: TestApp --> TestLib #### TestApp ```xml Exe net461 ``` ```c# using System; using System.Security.Cryptography.Xml; namespace TestApp { class Program { static void Main(string[] args) { Console.WriteLine(typeof(EncryptedXml).AssemblyQualifiedName); } } } ``` #### TestLib ```xml netstandard2.0 true ``` #### Details Using dotnet-CLI 2.0.0-preview2-005905 [msbuild.log.txt](https://github.com/dotnet/corefx/files/980530/msbuild.log.txt) cc @krwq " 19421 area-System.Diagnostics Fix spurious EventSource test failures due to framework sources Some of the EventSource tests check to verify that EventSources have been properly shutdown and can no longer be found in EventSource.GetSources. But the framework itself has several event sources used by core types, and if the tests end up using these types, those sources can end up triggering a failure. As such, the test exempts known framework sources, but it missed SynchronizationEventSource (used by types like SpinWait). This just adds it to the list of sources to exempt. Fixes https://github.com/dotnet/corefx/issues/18805 cc: @vancem, @brianrob 19422 area-System.Security Fix compile assembly on netfx for crypto-xml Fixes: https://github.com/dotnet/corefx/issues/19420 19423 area-Infrastructure System.Net.Primitives.Functional.Tests.CookieTest.Value_PassNullToCtor_GetReturnsEmptyString_net46 fails consistently on all my dev machines "Running `msbuild /t:rebuild,test /p:Outerloop=true ""/p:XunitOptions=-showprogress""` in `\src\System.Net.Primitives\tests\FunctionalTests` ``` System.Net.Primitives.Functional.Tests.CookieTest.Value_PassNullToCtor_GetReturnsEmptyString_net46 [FAIL] Assert.Null() Failure Expected: (null) Actual: Stack Trace: S:\corefx\src\System.Net.Primitives\tests\FunctionalTests\CookieTest.cs(249,0): at System.Net.Primitives.Functional.Tests.CookieTest.Value_PassNullToCtor_GetReturnsEmptyString_net46() System.Net.Primitives.Functional.Tests.CookieTest.Value_PassNullToCtor_GetReturnsEmptyString_net46 [FINISHED] Time: 0.0016697s ``` " @@ -9876,7 +9876,7 @@ ID Area Title Description 19943 area-System.Net Fix Http Unit Tests Fixed the System.Net.Http Unit Tests so that they build and run properly for uap and uap-aot scenarios. Removed the ICloneable.cs file which is no longer needed now that master branch has ICloneable support in it. 19946 area-Infrastructure Changes required to get Linux Validation working CC: @weshaggard @ericstj @danmosemsft These are all of the changes required for the validation on non-Windows machines for non-Windows RIDs. After this, the only thing missing will be to add the APICompat runs in order to complete issue #18083 19947 area-System.Net Investigate WinHttpException: buffer too small For #7812. Not able to repro locally, want to get more info from CI -19949 area-Infrastructure Avoid having runtime specific assets when they aren't necessary. Due to an issue in nuget which will hopefully be address with https://github.com/NuGet/Home/issues/5192 some of our packages end up with the wrong asset being selected when we have both runtime and lib assets in the package. For some of our packages that isn't necessary. Example: System.Security.Permissions has a runtime\net462 asset and a lib\netstandard2.0 asset and when a netcoreapp2.0 project has a fallback of net462 we will prefer the net462 asset over the netstandard2.0 asset which will not work on netcoreapp2.0. See https://github.com/dotnet/corefx/issues/19929. We should do an audit of other packages in this situation to avoid it. +19949 area-Infrastructure Avoid having runtime specific assets when they aren't necessary. Due to an issue in nuget which will hopefully be address with https://github.com/NuGet/Home/issues/5192 some of our packages end up with the wrong asset being selected when we have both runtime and lib assets in the package. For some of our packages that isn't necessary. Example: System.Security.Permissions has a runtime\net461 asset and a lib\netstandard2.0 asset and when a netcoreapp2.0 project has a fallback of net461 we will prefer the net461 asset over the netstandard2.0 asset which will not work on netcoreapp2.0. See https://github.com/dotnet/corefx/issues/19929. We should do an audit of other packages in this situation to avoid it. 19952 area-System.Net Fix some Http tests for UAP Fixed some of the HttpRequestMessage tests for UAP. HttpRequestMessage has a different default value for the Version field on UAP platforms compared to netcore or netfx. Added PlatformDetection.IsUap to support this. Implementation of this property was based on investigations for #19907. This property is true on both 'uap' and 'uap-aot' platforms. Fixes #19907 19953 area-System.Data Review SqlClient tests on Desktop for scenarios missing from .Net Core Review SqlClient tests on Desktop for scenarios which do not satisfy the .Net Core surface area. The review will be targeted at identifying the usage of Data Structures like DataTable , DataRow etc which were added to System.Data.Common in 2.0 and should have related functionality in .Net Core. One of such scenarios was DataTable/TVP support in SqlClient SqlParameter 19954 area-Serialization Fix XmlUnknownElementAndEventHandlerTest. Fix XmlSerializerTests.XmlUnknownElementAndEventHandlerTest in ReflectionOnly mode. Fix #14259. @@ -10071,7 +10071,7 @@ ID Area Title Description 20188 area-System.Net release/2.0: Add more tracing to HttpClient on Unix Port https://github.com/dotnet/corefx/pull/20095 to release/2.0.0 20189 area-System.Net Remove asynchrony from many HttpListener tests Contributes to #20103 @stephentoub PTAL (best reviewed without whitespace for the first commit) 20190 area-Infrastructure Add win-arm and win-arm64 to RID graph. "Porting https://github.com/dotnet/corefx/pull/20187 to `release/2.0.0`. We don't have win-arm and win-arm64 ""portable"" RIDs in our graph. Thus, when trying to use RIDs like win10-arm in a self-contained app, no assets are getting selected. Fix dotnet/sdk#1239. @gkhanna79 @ericstj" -20191 area-System.Net ClientWebSocket client certificate not working with .NET Core "Using the ClientWebSocket to establish a secure WebSocket connection with client certificates. The project is targeting `netcoreapp1.1`. With the following code, the `ConnectAsync` throws an exception: `WinHttpException: A certificate is required to complete client authentication`. When changing the TFM to `net462` the connection is successfully established. I removed the template id of the certificate for security reasons. ```csharp ClientWebSocket client = new ClientWebSocket(); X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine); store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly); var cert = store.Certificates.Find(X509FindType.FindByTemplateName, """", true); client.Options.ClientCertificates = new X509CertificateCollection(); client.Options.ClientCertificates.Add(cert[0]); client.ConnectAsync(new Uri(""wss://localhost:44301/path""), CancellationToken.None).Wait(); ``` " +20191 area-System.Net ClientWebSocket client certificate not working with .NET Core "Using the ClientWebSocket to establish a secure WebSocket connection with client certificates. The project is targeting `netcoreapp1.1`. With the following code, the `ConnectAsync` throws an exception: `WinHttpException: A certificate is required to complete client authentication`. When changing the TFM to `net461` the connection is successfully established. I removed the template id of the certificate for security reasons. ```csharp ClientWebSocket client = new ClientWebSocket(); X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine); store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly); var cert = store.Certificates.Find(X509FindType.FindByTemplateName, """", true); client.Options.ClientCertificates = new X509CertificateCollection(); client.Options.ClientCertificates.Add(cert[0]); client.ConnectAsync(new Uri(""wss://localhost:44301/path""), CancellationToken.None).Wait(); ``` " 20192 area-Infrastructure Remove win10 jobs that depend on deprecated functionality The Win10 images are no longer working (they were a pre-release version of Win Server 2016). The Win10 functionality is now available in the new Portable builds. Remove these old jobs for now (they get queued and never run) See #20107 20193 area-System.Net Disable some System.Net.* tests for ILC Disables tests for: 1. API Not Implemented for Uap by design 2. Tests that do white box testing and reflect on internal type cc: @tijoytom 20195 area-Infrastructure Testing CI system for crashing a test actually failing CI Testing for https://github.com/dotnet/corefx/issues/20172 @@ -10140,7 +10140,7 @@ ID Area Title Description 20276 area-System.Runtime X-Plat: Environment.SetEnvironmentVariable(string, string) on Unix. More details later - just need an issue number for a TODO comment. 20277 area-System.Runtime X-Plat: Environment.GetEnvironmentVariables() on Unix More details later - just need an issue number now. 20278 area-Serialization Fix XmlSerializer(Type type, Types[] extraTypes) on UWP On UWP, if one used `XmlSerializer(Type type, Types[] extraTypes)` to create serializer for `type`, UWP toolchain would pre-generate the serializer for the type and make the `extraTypes` as the type's known types. To achieve the latter, UWP toolchain uses one `XmlReflectionImporter` to import *all types* (all types require serialization in the app) so that the `extraTypes` would be treated as known types. But there're some problems with this. 1. The type would have more known types than those included by `extraTypes`. 2. There might be type conflicts as the importer imports all types and the type scope grows. And etc. The fix is to make the constructor to always use reflection based serialization. Fix #19811 -20279 area-Infrastructure Test retargeting netframework project while using netstandard.library.netframework We should do this in both a netcore.sdk project as well as a legacy project using package reference. Packages.config is not interesting since retargeting has never been supported there. @davkean mentioned the design time build may not react well when retargeting changes targets imported. Interesting scenarios: 1. Reference an n 2.0 package that cross-compiles (like immutable) in net462. 2. Retargeting to net46. 3. Retargeting to net47. (Interesting in valuetuple case). There are others too. Filing this to ensure I don't forget to test this. +20279 area-Infrastructure Test retargeting netframework project while using netstandard.library.netframework We should do this in both a netcore.sdk project as well as a legacy project using package reference. Packages.config is not interesting since retargeting has never been supported there. @davkean mentioned the design time build may not react well when retargeting changes targets imported. Interesting scenarios: 1. Reference an n 2.0 package that cross-compiles (like immutable) in net461. 2. Retargeting to net46. 3. Retargeting to net47. (Interesting in valuetuple case). There are others too. Filing this to ensure I don't forget to test this. 20280 area-System.Net Several more HttpListener fixes on Unix Replaces https://github.com/dotnet/corefx/pull/20265, which was having CI issues. Fixes #20239 Fixes #20238 Fixes #20237 Fixes #20232 Fixes #20231 Fixes #20230 Fixes #20229 Fixes #20228 Fixes #20165 Fixes #20101 Fixes #20100 Fixes #20099 Fixes #19977 Fixes #19972 20283 area-System.Diagnostics "Test: System.Diagnostics.Tests.ProcessStartInfoTests/StartInfo_BadExe failed with ""Xunit.Sdk.EqualException""" Opened on behalf of @Jiayili1 The test `System.Diagnostics.Tests.ProcessStartInfoTests/StartInfo_BadExe(useShellExecute: False)` has failed. Assert.Equal() Failure\r Expected: 193\r Actual: 0 Stack Trace: at System.Diagnostics.Tests.ProcessStartInfoTests.StartInfo_BadExe(Boolean useShellExecute) Build : Master - 20170525.01 (Portable Core Tests) Failing configurations: - Windows.10.Nano.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170525.01/workItem/System.Diagnostics.Process.Tests/analysis/xunit/System.Diagnostics.Tests.ProcessStartInfoTests~2FStartInfo_BadExe(useShellExecute:%20False) 20284 area-System.Diagnostics "Test: System.Diagnostics.Tests.ProcessStartInfoTests/StartInfo_NotepadWithContent(useShellExecute: False) failed with ""System.ComponentModel.Win32Exception : The system cannot find the file specified""" Opened on behalf of @Jiayili1 The test `System.Diagnostics.Tests.ProcessStartInfoTests/StartInfo_NotepadWithContent(useShellExecute: False)` has failed. System.ComponentModel.Win32Exception : The system cannot find the file specified Stack Trace: at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo) at System.Diagnostics.Process.Start(ProcessStartInfo startInfo) at System.Diagnostics.Tests.ProcessStartInfoTests.StartInfo_NotepadWithContent(Boolean useShellExecute) Build : Master - 20170525.01 (Portable Core Tests) Failing configurations: - Windows.10.Nano.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fportable~2Fcli~2F/build/20170525.01/workItem/System.Diagnostics.Process.Tests/analysis/xunit/System.Diagnostics.Tests.ProcessStartInfoTests~2FStartInfo_NotepadWithContent(useShellExecute:%20False) @@ -10557,7 +10557,7 @@ ID Area Title Description 20903 area-System.Data Additional API for DbProviderFactories in .NET Core # Latest Proposal Copied from latest API approval: https://github.com/dotnet/corefx/issues/20903#issuecomment-342605350 ```C# public static class DbProviderFactories { // exiting members public static DbProviderFactory GetFactory(string providerInvariantName); public static DbProviderFactory GetFactory(DataRow providerRow); public static DbProviderFactory GetFactory(DbConnection connection); public static DataTable GetFactoryClasses(); // new members /// /// Registers a provider factory using the assembly qualified name of the factory and an /// invariant name /// public static void RegisterFactory(string providerInvariantName, string factoryTypeAssemblyQualifiedName); /// /// Registers a provider factory using the provider factory type and an invariant name /// public static void RegisterFactory(string providerInvariantName, Type factoryType); /// /// Extension method to register a provider factory using the provider factory instance and /// an invariant name /// public static void RegisterFactory(string providerInvariantName, DbProviderFactory factory); /// /// Returns the provider factory instance if one is registered for the given invariant name /// public static bool TryGetFactory(string providerInvariantName, out DbProviderFactory factory); /// /// Removes the provider factory registration for the given invariant name /// public static bool UnregisterFactory(string providerInvariantName); /// /// Returns the invariant names for all the factories registered /// public static IEnumerable GetProviderInvariantNames(); } ``` # Original proposal Issue #4571 is about porting the existing surface of `DbProviderFactories` into .NET Core. This new issue is specifically about new API that needs to be added in .NET Core that does not (yet) exist in .NET Framework. `DbProviderFactories` on .NET Framework can only be initialized from .config files, and in order to make the API usable without .config files the new API is needed. The proposal by @FransBouma can be found in https://github.com/dotnet/standard/issues/356#issuecomment-307552750 and is repeated below: I've refactored the code a bit, the new API now looks like: ```cs public static void ConfigureFactory(Type providerFactoryClass); public static void ConfigureFactory(Type providerFactoryClass, string providerInvariantName); public static void ConfigureFactory(Type providerFactoryClass, string providerInvariantName, string name, string description); public static void ConfigureFactory(DbConnection connection); public static void ConfigureFactory(DbConnection connection, string providerInvariantName); public static void ConfigureFactory(DbConnection connection, string providerInvariantName, string name, string description); ``` Two new overloads are added. They'll use the fallback code for the providerInvariantName, as it is also present in netfx' auto-init code: it will use the namespace of the type. I've added this to avoid people making a typo in the name as for most factories I know (I don't really know of a dbproviderfactory where this isn't the case) the invariant name is equal to the namespace. ### Method usage / purpose ```cs public static void ConfigureFactory(Type providerFactoryClass) ``` **Description**: This method will register the factory instance contained in the specified type, under invariant name equal to the namespace of the specified type. It will leave name and description empty. **Purpose:** This method is meant to be the easiest way to register a factory. Most (if not all) ADO.NET providers use as invariant name the namespace of the factory type. ```cs public static void ConfigureFactory(Type providerFactoryClass, string providerInvariantName) ``` **Description**: This method will register the factory instance contained in the specified type, under invariant name specified in providerInvariantName. It will leave name and description empty. **Purpose:**: This method can be used to register a factory for the ADO.NET providers which don't use the namespace as the invariant name, and it can also be used to register a different factory type under a well-known invariant name, e.g. in the case of a wrapping factory for ADO.NET profiling. ```cs public static void ConfigureFactory(Type providerFactoryClass, string providerInvariantName, string name, string description) ``` **Description**: This method will register the factory instance contained in the specified type, under invariant name specified in providerInvariantName and will fill in the name and description values for the factory. **Purpose:**: This method is equal to `ConfigureFactory(type, string)` and can be used to fill in the additional two columns in the factory table if a user requires that. ```cs public static void ConfigureFactory(DbConnection connection) ``` **Description**: This method will register the factory instance obtained from the specified connection, under invariant name equal to the namespace of the factory instance's type. It will leave name and description empty. **Purpose:** This method is meant to be the easiest way to register a factory if the user doesn't know the factory type but does know the connection type. As DbProviderFactory registration was mainly hidden for most users it can very well be they're not familiar with the factory types, so this method and its overloads make it easier for them to register a factory. Most (if not all) ADO.NET providers use as invariant name the namespace of the factory type. ```cs public static void ConfigureFactory(DbConnection connection, string providerInvariantName) ``` **Description**: This method will register the factory instance obtained from the specified connection, under invariant name specified. It will leave name and description empty. **Purpose:**: This method can be used to register a factory for the ADO.NET providers which don't use the namespace as the invariant name, and it can also be used to register a different factory type under a well-known invariant name, e.g. in the case of a wrapping factory for ADO.NET profiling. ```cs public static void ConfigureFactory(DbConnection connection, string providerInvariantName, string name, string description) ``` **Description**: This method will register the factory instance obtained from the specified connection, under invariant name specified in providerInvariantName and will fill in the name and description values for the factory. **Purpose:**: This method is equal to `ConfigureFactory(DbConnection, string)` and can be used to fill in the additional two columns in the factory table if a user requires that. 20904 area-Serialization Fixing BinaryFormatter member names of parent members to align with netfx @ericstj @stephentoub @danmosemsft @morganbr This is the fix to the offline discussion. After refactoring BinaryFormatter code it seems that we got rid of parent type names. This is now fixed and produces the same results as netfx. ---------- Issue description: Serializing the object “new System.ComponentModel.BindingList(new[] { 32, 45 });” creates the following results: Netfx: ``` ����������� [1]���ISystem, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089���System.ComponentModel.BindingList`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]��� addNewPosraiseListChangedEventsraiseItemChangedEventsallowNew allowEdit allowRemoveuserSetAllowNewCollection`1+items������� System.Int32[][1]����� ��� ���[1]��� ���-��� ``` NetCoreApp: ``` ����������� [1]���ISystem, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089���System.ComponentModel.BindingList`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]��� addNewPosraiseListChangedEventsraiseItemChangedEventsallowNew allowEdit allowRemoveuserSetAllowNewitems������� System.Int32[][1]����� ��� ���[1]��� ���-��� ``` The difference is that the serialized name of the items field of the parent class Collection isn’t serialized correctly. Core <-> Core and NetFx <-> Netfx serialization works with the respective blobs. ------------- cc @danmosemsft @morganbr 20906 area-System.Drawing Add Matrix tests Again, 50-50 mono cleanup and handwritten tests -20910 area-Serialization Not able to install System.Runtime.Serialization.Json and System.Runtime.Serialization.Xml both in a project I have visual studio 17. My project is targeting net462 and netstandard1.6 I want to use System.Runtime.Serialization.Json and System.Runtime.Serialization.Xml. but I am facing issues. Steps to reproduce: 1. Install nuget System.Runtime.Serialization.Xml - 4.3.0 2. Now install nuget System.Runtime.Serialization.Json - 4.3.0 But when I am trying step 2 it uninstall System.Runtime.Serialization.Xml . How to use both nuget in code. ![capture](https://user-images.githubusercontent.com/16220515/27013697-b38d5698-4f06-11e7-8f78-1bde87a1e1d1.JPG) +20910 area-Serialization Not able to install System.Runtime.Serialization.Json and System.Runtime.Serialization.Xml both in a project I have visual studio 17. My project is targeting net461 and netstandard1.6 I want to use System.Runtime.Serialization.Json and System.Runtime.Serialization.Xml. but I am facing issues. Steps to reproduce: 1. Install nuget System.Runtime.Serialization.Xml - 4.3.0 2. Now install nuget System.Runtime.Serialization.Json - 4.3.0 But when I am trying step 2 it uninstall System.Runtime.Serialization.Xml . How to use both nuget in code. ![capture](https://user-images.githubusercontent.com/16220515/27013697-b38d5698-4f06-11e7-8f78-1bde87a1e1d1.JPG) 20911 area-Infrastructure Publish regular alpha versions of vNext product "Goal: Provide great experience for early adopters to consume our vNext product. We should have regular (monthly-ish) alpha releases of vNext product. The idea is that every month we would publish last good build of tools, libraries, runtime, etc. that work ""well"" together. If something go south, we can delist it. Motivation: Consuming myget daily feed is painful -- too many builds, changing too often. It's sometimes hard to find working combo. It is likely mostly about perception. What is the right technical solution? 1. Special myget feed with just the alpha monthly-ish bits 2. Regular alpha-previews on nuget 3. Special download of the tools bundle (CLI) on a web site cc @benaadams @NickCraver cc @weshaggard @mellinoe @ericstj " 20913 area-System.Drawing Add Bitmap tests 50-50 cleanup from Mono and handwritten tests 20914 area-System.ComponentModel Move InvalidEnumArgumentException to System.ComponentModel.Primitives Lays the groundwork for #20897 Note: is System.ComponentModel.Primitives the right place to put this? I thought about System.ComponentModel, but that library looks like its for interfaces only. The reason why this is necessary is because we need use InvalidEnumArgumentException in System.Drawing.Common. This exception resides in System.ComponentModel.TypeConverter right now, but we want System.ComponentModel.TypeConverter to depend on System.Drawing.Common in the future. @@ -10961,7 +10961,7 @@ ID Area Title Description 21525 area-Infrastructure Dumpling can't find dumps on some Linux distros eg suse and fedora 25. It says ` (core dumped) ` but where is it? https://mc.dot.net/#/user/danmosemsft/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/575ab2eecbb50ef3f8978cc2d6bebc13ec045002/workItem/System.Runtime.InteropServices.Tests/wilogs ``` 2017-06-25 07:52:48,811: INFO: proc(54): run_and_log_output: Output: Finished: System.Runtime.InteropServices.Tests 2017-06-25 07:52:49,390: INFO: proc(54): run_and_log_output: Output: /home/helixbot/dotnetbuild/work/38645e04-4cb5-4a56-987c-36c2682a6c9e/Work/4fa60773-8fb6-4f40-939d-c70f19566fe6/Unzip/RunTests.sh: line 87: 23380 Segmentation fault (core dumped) $RUNTIME_PATH/dotnet xunit.console.netcore.exe System.Runtime.InteropServices.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapptests -notrait category=nonlinuxtests -notrait category=OuterLoop -notrait category=failing 2017-06-25 07:52:49,430: INFO: proc(54): run_and_log_output: Output: Trying to find crash dumps for project: System.Runtime.InteropServices.Tests 2017-06-25 07:52:49,431: INFO: proc(54): run_and_log_output: Output: No new dump file was found in /home/helixbot/dotnetbuild/work/38645e04-4cb5-4a56-987c-36c2682a6c9e/Work/4fa60773-8fb6-4f40-939d-c70f19566fe6/Unzip 2017-06-25 07:52:49,433: INFO: proc(54): run_and_log_output: Output: ~/dotnetbuild/work/38645e04-4cb5-4a56-987c-36c2682a6c9e/Work/4fa60773-8fb6-4f40-939d-c70f19566fe6/Unzip 2017-06-25 07:52:49,434: INFO: proc(54): run_and_log_output: Output: Finished running tests. End time=07:52:49. Return value was 139 2017-06-25 07:52:49,436: INFO: proc(58): run_and_log_output: Exit Code: 139 ``` @mellinoe 21526 area-System.Runtime System.Runtime.InteropServices.Tests segfaulting on some Linux So far Fedora 25 and Suse https://mc.dot.net/#/user/danmosemsft/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/575ab2eecbb50ef3f8978cc2d6bebc13ec045002/workItem/System.Runtime.InteropServices.Tests/wilogs Unfortunately we aren't getting dumps. But it's happened several times on one PR. ``` 2017-06-24 23:37:59,432: INFO: proc(54): run_and_log_output: Output: Starting: System.Runtime.InteropServices.Tests 2017-06-24 23:38:00,184: INFO: proc(54): run_and_log_output: Output: /home/helixbot/dotnetbuild/work/4f944e98-7c0d-4ef5-af27-296b5e3e76a7/Work/66044e6b-eaf9-4f01-97f9-f1ffbd73a701/Unzip/RunTests.sh: line 87: 3291 Segmentation fault (core dumped) $RUNTIME_PATH/dotnet xunit.console.netcore.exe System.Runtime.InteropServices.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapptests -notrait category=nonlinuxtests -notrait category=OuterLoop -notrait category=failing 2017-06-24 23:38:00,214: INFO: proc(54): run_and_log_output: Output: Trying to find crash dumps for project: System.Runtime.InteropServices.Tests 2017-06-24 23:38:00,214: INFO: proc(54): run_and_log_output: Output: No new dump file was found in /home/helixbot/dotnetbuild/work/4f944e98-7c0d-4ef5-af27-296b5e3e76a7/Work/66044e6b-eaf9-4f01-97f9-f1ffbd73a701/Unzip ``` 21528 area-System.Net HttpClienthandler code cleanup for UAP This file had never been formatted according to CoreFx style guidelines when the code was first ported into GitHub. Now that we are doing NETStandard2.0 work, I wanted to clean up this file to avoid distractions as I add features. -21530 area-System.Data Large performance gap in SqlCommand.ExecuteNonQuery between net462 and netcoreapp "Sharing the following code on a full framework net462 Console application and a netcoreapp Console app, I am seeing huge gaps in performance when executing `SqlCommand.ExecuteNonQuery` with `SqlConnection`. It doesn't matter if I use it within a transaction or not. public async Task AddDataWithADO(int id, string name) { SqlConnection connection = this.transaction.Connection; SqlCommand command = new SqlCommand(""INSERT INTO TestTable ( Id, Name ) VALUES ( @Id, @name )"", connection, this.transaction); command.Parameters.AddWithValue(""@id"", id); command.Parameters.AddWithValue(""@name"", name); await command.ExecuteNonQueryAsync(); } When I run this on my local machine against a LocalDb, I see an average insertion time of 19.89ms in netcoreapp1.0 and 1.1. When I run the same code in full framework net462, then I see insertion times of 0.83ms. It's a shared NetStandard1.4 class library with a reference to `System.Data.SqlClient` 4.3.1. My current .Net Core runtime is 1.1.0 I was moving my Azure Functions which ran on net462 over to ASP.net Core when I saw this gap. Why is there such a huge difference in performance? I have a repro repository that you can look at here (originally thought this was [a Dapper issue](https://github.com/StackExchange/Dapper/issues/810), turned out to be ADO.Net): https://github.com/scionwest/DapperRepro/tree/ADO_net_issue You can publish the Sql database project that's in the solution to a LocaLDb and then run the two console apps to see the difference." +21530 area-System.Data Large performance gap in SqlCommand.ExecuteNonQuery between net461 and netcoreapp "Sharing the following code on a full framework net461 Console application and a netcoreapp Console app, I am seeing huge gaps in performance when executing `SqlCommand.ExecuteNonQuery` with `SqlConnection`. It doesn't matter if I use it within a transaction or not. public async Task AddDataWithADO(int id, string name) { SqlConnection connection = this.transaction.Connection; SqlCommand command = new SqlCommand(""INSERT INTO TestTable ( Id, Name ) VALUES ( @Id, @name )"", connection, this.transaction); command.Parameters.AddWithValue(""@id"", id); command.Parameters.AddWithValue(""@name"", name); await command.ExecuteNonQueryAsync(); } When I run this on my local machine against a LocalDb, I see an average insertion time of 19.89ms in netcoreapp1.0 and 1.1. When I run the same code in full framework net461, then I see insertion times of 0.83ms. It's a shared NetStandard1.4 class library with a reference to `System.Data.SqlClient` 4.3.1. My current .Net Core runtime is 1.1.0 I was moving my Azure Functions which ran on net461 over to ASP.net Core when I saw this gap. Why is there such a huge difference in performance? I have a repro repository that you can look at here (originally thought this was [a Dapper issue](https://github.com/StackExchange/Dapper/issues/810), turned out to be ADO.Net): https://github.com/scionwest/DapperRepro/tree/ADO_net_issue You can publish the Sql database project that's in the solution to a LocaLDb and then run the two console apps to see the difference." 21531 area-System.Net Re-enable some System.Net.Mail tests for UAPAOT With the recent implementation of System.Net.NetworkInformation for UWP, we can re-enable some tests. Also, the latest plan of record for serialization support in .NET Core is such that serializing these exception types are not supported. So, removing the test for that. FYI, the actual implementation of the serialization overrides in the SmtpException class are already no-ops in the code and simply call the base method. Fixes #19604 21532 area-System.Net Disable WinHttpHandler tests on UAP/UAPAOT System.Net.Http.WinHttpHandler is only meant for use on .NET Framework and .NET Core but not for UWP apps. Fixes #21438 21533 area-System.Net Announcement: Networking stack - Technical roadmap See https://github.com/dotnet/designs/issues/9 @@ -11152,7 +11152,7 @@ ID Area Title Description 21808 area-System.Net Enable more ManagedHandler tests cc: @geoffkizer 21809 area-System.Runtime Proposal: CallerArgumentExpressionAttribute ## Rationale In order to facilitate the language feature at https://github.com/dotnet/csharplang/issues/287, which has been championed and discussed in the LDM, we should add `CallerArgumentExpressionAttribute` to the framework. The LDM notes seem to approve of getting this into the framework: see [here](https://github.com/dotnet/csharplang/blob/master/meetings/2017/LDM-2017-05-16.md#callerargumentexpression). ## Proposal ```cs namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)] public sealed class CallerArgumentExpressionAttribute : Attribute { public CallerArgumentExpressionAttribute(string parameterName); // Added in response to @svick's comment public string ParameterName { get; } } } ``` ## Notes - The name of the constructor argument is intentionally `parameterName` and not `argumentName`. Parameters refer to the variables declared inside the callee, while arguments are the values passed by the caller. ![image](https://user-images.githubusercontent.com/9159214/27773044-483c57ac-5f3e-11e7-9a87-50876915a518.png) 21810 area-Meta .NET Core should consider having the equivalent of Windows.Devices.* Filing based on feedback: https://docs.microsoft.com/en-us/uwp/api/ There are lots of basic device operations from GPIO, I2C, to Bluetooth that should be really easy to do on all devices when using .NET Core. -21811 area-System.Security DSA-SHA1 SignedXml issues .netcore 2.0 "I have a SAMLlibrary which I am trying to piece together on .net core 2.0, however I have hit an issue it some pre-existing tests. The tests pass fine on net462 but when using netcoreapp2.0 fail. All the test is doing is ```c# private static bool VerifySignature(XmlDocument assertion) { var signedXml = new SignedXml(assertion.DocumentElement); var nodeList = assertion.GetElementsByTagName(""Signature"", ""http://www.w3.org/2000/09/xmldsig#""); signedXml.LoadXml((XmlElement)nodeList[0]); Assert.NotNull(signedXml.Signature); return signedXml.CheckSignature(); } ``` The xml files that is being passed in is located in the tests here: [DSA-SHA1 Saml2Assertion_01](https://github.com/eByte23/SAMLSilly/blob/dev/2.0/tests/SAMLSilly.Tests/Assertions/Saml2Assertion_01) [DSA-SHA1 Saml2Assertion_02](https://github.com/eByte23/SAMLSilly/blob/dev/2.0/tests/SAMLSilly.Tests/Assertions/Saml2Assertion_01) All other non-DSA pass e.g. RSA1,RSA256 just these I believe to be completely valid XMLDSIGS validated online as well as on dotnet FF. Any help would be appreciated as this is a blocker for me/" +21811 area-System.Security DSA-SHA1 SignedXml issues .netcore 2.0 "I have a SAMLlibrary which I am trying to piece together on .net core 2.0, however I have hit an issue it some pre-existing tests. The tests pass fine on net461 but when using netcoreapp2.0 fail. All the test is doing is ```c# private static bool VerifySignature(XmlDocument assertion) { var signedXml = new SignedXml(assertion.DocumentElement); var nodeList = assertion.GetElementsByTagName(""Signature"", ""http://www.w3.org/2000/09/xmldsig#""); signedXml.LoadXml((XmlElement)nodeList[0]); Assert.NotNull(signedXml.Signature); return signedXml.CheckSignature(); } ``` The xml files that is being passed in is located in the tests here: [DSA-SHA1 Saml2Assertion_01](https://github.com/eByte23/SAMLSilly/blob/dev/2.0/tests/SAMLSilly.Tests/Assertions/Saml2Assertion_01) [DSA-SHA1 Saml2Assertion_02](https://github.com/eByte23/SAMLSilly/blob/dev/2.0/tests/SAMLSilly.Tests/Assertions/Saml2Assertion_01) All other non-DSA pass e.g. RSA1,RSA256 just these I believe to be completely valid XMLDSIGS validated online as well as on dotnet FF. Any help would be appreciated as this is a blocker for me/" 21813 area-System.Console "Test: System.ConsoleTests.Perf_Console/OpenStandardInput failed with ""System.IO.IOException"" Too many open files" Opened on behalf of @Jiayili1 The test `System.ConsoleTests.Perf_Console/OpenStandardInput` has failed. System.IO.IOException : Too many open files Stack Trace: at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter) at Interop.CheckIo[TSafeHandle](TSafeHandle handle, String path, Boolean isDirectory, Func`2 errorRewriter) at Microsoft.Win32.SafeHandles.SafeFileHandleHelper.Open(Func`1 fdFunc) at System.ConsolePal.OpenStandardInput() at System.ConsoleTests.Perf_Console.OpenStandardInput() Build : Master - 20170703.01 (Core Tests) Failing configurations: - OSX.1013.Amd64-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170703.01/workItem/System.Console.Performance.Tests/analysis/xunit/System.ConsoleTests.Perf_Console~2FOpenStandardInput 21814 area-System.Net remove Linux SSL assert that's no longer true My previous change made this assert no longer valid. Remove it. @stephentoub 21815 area-System.Net FailFast: Expected offset 0 when decrypting in System.Net.Security.Tests Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fcli~2F/build/20170703.01/workItem/System.Net.Security.Tests/wilogs ~~~ 2017-07-02 17:29:52,725: INFO: proc(54): run_and_log_output: Output: Discovering: System.Net.Security.Tests 2017-07-02 17:29:52,959: INFO: proc(54): run_and_log_output: Output: Discovered: System.Net.Security.Tests 2017-07-02 17:29:53,105: INFO: proc(54): run_and_log_output: Output: Starting: System.Net.Security.Tests 2017-07-02 17:29:53,766: INFO: proc(54): run_and_log_output: Output: FailFast: Expected offset 0 when decrypting 2017-07-02 17:29:53,766: INFO: proc(54): run_and_log_output: Output: 2017-07-02 17:29:53,766: INFO: proc(54): run_and_log_output: Output: at System.Diagnostics.Debug.Assert(Boolean condition, String message, String detailMessage) 2017-07-02 17:29:53,766: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamPal.EncryptDecryptHelper(SafeDeleteContext securityContext, Byte[] input, Int32 offset, Int32 size, Boolean encrypt, Byte[]& output, Int32& resultSize) in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslStreamPal.Unix.cs:line 157 2017-07-02 17:29:53,767: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamPal.DecryptMessage(SafeDeleteContext securityContext, Byte[] buffer, Int32& offset, Int32& count) in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslStreamPal.Unix.cs:line 64 2017-07-02 17:29:53,767: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SecureChannel.Decrypt(Byte[] payload, Int32& offset, Int32& count) in /root/corefx/src/System.Net.Security/src/System/Net/Security/SecureChannel.cs:line 972 2017-07-02 17:29:53,767: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslState.PrivateDecryptData(Byte[] buffer, Int32& offset, Int32& count) in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 501 2017-07-02 17:29:53,767: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslState.DecryptData(Byte[] buffer, Int32& offset, Int32& count) in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslState.cs:line 496 2017-07-02 17:29:53,767: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.ProcessFrameBody(Int32 readBytes, Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslStreamInternal.cs:line 795 2017-07-02 17:29:53,767: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.StartFrameBody(Int32 readBytes, Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslStreamInternal.cs:line 776 2017-07-02 17:29:53,767: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.StartFrameHeader(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslStreamInternal.cs:line 747 2017-07-02 17:29:53,767: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.StartReading(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslStreamInternal.cs:line 733 2017-07-02 17:29:53,767: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.ProcessRead(Byte[] buffer, Int32 offset, Int32 count, BufferAsyncResult asyncResult) in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslStreamInternal.cs:line 675 2017-07-02 17:29:53,767: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.Read(Byte[] buffer, Int32 offset, Int32 count) in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslStreamInternal.cs:line 131 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.ReadByte() in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslStreamInternal.cs:line 124 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStream.ReadByte() in /root/corefx/src/System.Net.Security/src/System/Net/Security/SslStream.cs:line 512 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.Tests.SslStreamStreamToStreamTest.SslStream_StreamToStream_Write_ReadByte_Success() in /root/corefx/src/System.Net.Security/tests/FunctionalTests/SslStreamStreamToStreamTest.cs:line 248 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.<b__1>d.MoveNext() 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass46_1.b__1() 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExecutionTimer.d__4.MoveNext() 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func`1 asyncAction) 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator.d__9.MoveNext() 2017-07-02 17:29:53,768: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code) 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1.d__46.MoveNext() 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1.InvokeTestMethodAsync(Object testClassInstance) 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1.<b__45_0>d.MoveNext() 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1.b__45_0() 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.XunitTestRunner.d__4.MoveNext() 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.XunitTestRunner.InvokeTestAsync(ExceptionAggregator aggregator) 2017-07-02 17:29:53,769: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator.d__10`1.MoveNext() 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator.RunAsync[T](Func`1 code) 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestRunner`1.d__43.MoveNext() 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestRunner`1.RunAsync() 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCaseRunner`1.d__19.MoveNext() 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCaseRunner`1.RunAsync() 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestMethodRunner`1.d__32.MoveNext() 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestMethodRunner`1.RunTestCasesAsync() 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestMethodRunner`1.d__31.MoveNext() 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestMethodRunner`1.RunAsync() 2017-07-02 17:29:53,770: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestClassRunner`1.d__38.MoveNext() 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestClassRunner`1.RunTestMethodsAsync() 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestClassRunner`1.d__37.MoveNext() 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestClassRunner`1.RunAsync() 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCollectionRunner`1.d__28.MoveNext() 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCollectionRunner`1.RunTestClassesAsync() 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCollectionRunner`1.d__27.MoveNext() 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCollectionRunner`1.RunAsync() 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task`1.InnerInvoke() 2017-07-02 17:29:53,771: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task.ExecuteEntry() 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.SynchronizationContextTaskScheduler.<>c.<.cctor>b__8_0(Object s) 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext(SendOrPostCallback callback, Object state) 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.MaxConcurrencySyncContext.WorkerThreadProc() 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.XunitWorkerThread.<>c.b__5_0(Object _) 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot) 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at System.Environment.FailFast(System.String, System.Exception) 2017-07-02 17:29:53,772: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamPal.EncryptDecryptHelper(System.Net.Security.SafeDeleteContext, Byte[], Int32, Int32, Boolean, Byte[] ByRef, Int32 ByRef) 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamPal.DecryptMessage(System.Net.Security.SafeDeleteContext, Byte[], Int32 ByRef, Int32 ByRef) 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SecureChannel.Decrypt(Byte[], Int32 ByRef, Int32 ByRef) 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslState.PrivateDecryptData(Byte[], Int32 ByRef, Int32 ByRef) 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslState.DecryptData(Byte[], Int32 ByRef, Int32 ByRef) 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.ProcessFrameBody(Int32, Byte[], Int32, Int32, System.Net.AsyncProtocolRequest) 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.StartFrameBody(Int32, Byte[], Int32, Int32, System.Net.AsyncProtocolRequest) 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.StartFrameHeader(Byte[], Int32, Int32, System.Net.AsyncProtocolRequest) 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.StartReading(Byte[], Int32, Int32, System.Net.AsyncProtocolRequest) 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.ProcessRead(Byte[], Int32, Int32, System.Net.BufferAsyncResult) 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.Read(Byte[], Int32, Int32) 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStreamInternal.ReadByte() 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.SslStream.ReadByte() 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.Net.Security.Tests.SslStreamStreamToStreamTest.SslStream_StreamToStream_Write_ReadByte_Success() 2017-07-02 17:29:53,773: INFO: proc(54): run_and_log_output: Output: at System.RuntimeMethodHandle.InvokeMethod(System.Object, System.Object[], System.Signature, Boolean) 2017-07-02 17:29:53,774: INFO: proc(54): run_and_log_output: Output: at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(System.Object, System.Object[], System.Object[]) 2017-07-02 17:29:53,774: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1+<>c__DisplayClass46_1+<b__1>d[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,774: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Xunit.Sdk.TestInvoker`1+<>c__DisplayClass46_1+<b__1>d[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](<b__1>d ByRef) 2017-07-02 17:29:53,774: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1+<>c__DisplayClass46_1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].b__1() 2017-07-02 17:29:53,774: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExecutionTimer+d__4.MoveNext() 2017-07-02 17:29:53,774: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Xunit.Sdk.ExecutionTimer+d__4, xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__4 ByRef) 2017-07-02 17:29:53,774: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExecutionTimer.AggregateAsync(System.Func`1) 2017-07-02 17:29:53,774: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator+d__9.MoveNext() 2017-07-02 17:29:53,775: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Xunit.Sdk.ExceptionAggregator+d__9, xunit.core, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__9 ByRef) 2017-07-02 17:29:53,775: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator.RunAsync(System.Func`1) 2017-07-02 17:29:53,775: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1+d__46[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,775: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.Decimal, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.TestInvoker`1+d__46[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__46 ByRef) 2017-07-02 17:29:53,775: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].InvokeTestMethodAsync(System.Object) 2017-07-02 17:29:53,775: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1+<b__45_0>d[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,775: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.Decimal, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.TestInvoker`1+<b__45_0>d[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](<b__45_0>d ByRef) 2017-07-02 17:29:53,775: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestInvoker`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].b__45_0() 2017-07-02 17:29:53,776: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator+d__10`1[[System.Decimal, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,776: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.Decimal, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.ExceptionAggregator+d__10`1[[System.Decimal, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.core, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__10`1 ByRef) 2017-07-02 17:29:53,776: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator.RunAsync[[System.Decimal, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.Func`1>) 2017-07-02 17:29:53,776: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.XunitTestRunner+d__4.MoveNext() 2017-07-02 17:29:53,776: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.XunitTestRunner+d__4, xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__4 ByRef) 2017-07-02 17:29:53,776: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.XunitTestRunner.InvokeTestAsync(Xunit.Sdk.ExceptionAggregator) 2017-07-02 17:29:53,776: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator+d__10`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,776: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.ExceptionAggregator+d__10`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.core, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__10`1 ByRef) 2017-07-02 17:29:53,776: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.ExceptionAggregator.RunAsync[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.Func`1>) 2017-07-02 17:29:53,777: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestRunner`1+d__43[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,777: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.TestRunner`1+d__43[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__43 ByRef) 2017-07-02 17:29:53,777: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestRunner`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].RunAsync() 2017-07-02 17:29:53,777: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCaseRunner`1+d__19[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,777: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.TestCaseRunner`1+d__19[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__19 ByRef) 2017-07-02 17:29:53,777: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCaseRunner`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].RunAsync() 2017-07-02 17:29:53,777: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestMethodRunner`1+d__32[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,777: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.TestMethodRunner`1+d__32[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__32 ByRef) 2017-07-02 17:29:53,778: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestMethodRunner`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].RunTestCasesAsync() 2017-07-02 17:29:53,778: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestMethodRunner`1+d__31[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,778: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.TestMethodRunner`1+d__31[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__31 ByRef) 2017-07-02 17:29:53,778: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestMethodRunner`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].RunAsync() 2017-07-02 17:29:53,778: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestClassRunner`1+d__38[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,778: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.TestClassRunner`1+d__38[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__38 ByRef) 2017-07-02 17:29:53,778: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestClassRunner`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].RunTestMethodsAsync() 2017-07-02 17:29:53,778: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestClassRunner`1+d__37[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,779: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.TestClassRunner`1+d__37[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__37 ByRef) 2017-07-02 17:29:53,779: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestClassRunner`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].RunAsync() 2017-07-02 17:29:53,779: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCollectionRunner`1+d__28[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,779: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.TestCollectionRunner`1+d__28[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__28 ByRef) 2017-07-02 17:29:53,779: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCollectionRunner`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].RunTestClassesAsync() 2017-07-02 17:29:53,779: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCollectionRunner`1+d__27[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() 2017-07-02 17:29:53,779: INFO: proc(54): run_and_log_output: Output: at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Start[[Xunit.Sdk.TestCollectionRunner`1+d__27[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], xunit.execution.dotnet, Version=2.2.0.3300, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c]](d__27 ByRef) 2017-07-02 17:29:53,779: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.TestCollectionRunner`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].RunAsync() 2017-07-02 17:29:53,779: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].InnerInvoke() 2017-07-02 17:29:53,780: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) 2017-07-02 17:29:53,780: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef) 2017-07-02 17:29:53,780: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task.ExecuteEntry() 2017-07-02 17:29:53,780: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.SynchronizationContextTaskScheduler+<>c.<.cctor>b__8_0(System.Object) 2017-07-02 17:29:53,780: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext(System.Threading.SendOrPostCallback, System.Object) 2017-07-02 17:29:53,780: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) 2017-07-02 17:29:53,780: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.MaxConcurrencySyncContext.WorkerThreadProc() 2017-07-02 17:29:53,780: INFO: proc(54): run_and_log_output: Output: at Xunit.Sdk.XunitWorkerThread+<>c.b__5_0(System.Object) 2017-07-02 17:29:53,780: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) 2017-07-02 17:29:53,780: INFO: proc(54): run_and_log_output: Output: at System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef) 2017-07-02 17:29:53,780: INFO: proc(54): run_and_log_output: Output: at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) 2017-07-02 17:29:56,113: INFO: proc(54): run_and_log_output: Output: /home/helixbot/dotnetbuild/work/a76bb1e6-b59a-4474-b968-349a33a1a278/Work/c20f7718-b704-4573-a6fa-c26ee4c0a9ba/Unzip/RunTests.sh: line 91: 8147 Aborted (core dumped) $RUNTIME_PATH/dotnet xunit.console.netcore.exe System.Net.Security.Tests.dll -xml testResults.xml -notrait category=nonnetcoreapptests -notrait category=nonlinuxtests -notrait category=failing 2017-07-02 17:29:56,145: INFO: proc(54): run_and_log_output: Output: Trying to find crash dumps for project: System.Net.Security.Tests 2017-07-02 17:29:56,145: INFO: proc(54): run_and_log_output: Output: No new dump file was found in /home/helixbot/dotnetbuild/work/a76bb1e6-b59a-4474-b968-349a33a1a278/Work/c20f7718-b704-4573-a6fa-c26ee4c0a9ba/Unzip 2017-07-02 17:29:56,148: INFO: proc(54): run_and_log_output: Output: ~/dotnetbuild/work/a76bb1e6-b59a-4474-b968-349a33a1a278/Work/c20f7718-b704-4573-a6fa-c26ee4c0a9ba/Unzip 2017-07-02 17:29:56,149: INFO: proc(54): run_and_log_output: Output: Finished running tests. End time=17:29:56. Return value was 134 2017-07-02 17:29:56,151: INFO: proc(58): run_and_log_output: Exit Code: 134 2017-07-02 17:29:56,152: ERROR: scriptrunner(82): _main: Error: No exception thrown, but XUnit results not created 2017-07-02 17:29:56,152: ERROR: helix_test_execution(83): report_error: Error running xunit None ~~~ @@ -11782,7 +11782,7 @@ ID Area Title Description 22778 area-Serialization Serialization test case DCS_BasicPerSerializerRoundTripAndCompare_SampleTypes_FailedInuapaot_InheritedFromIList_CanPassInReflectionOnly failed when targeting uapaot This case is a part of test case DCS_BasicPerSerializerRoundTripAndCompare_SampleTypes , it failed when **targeting `uapaot`** , so we move these scenarios into a new case. **Detail** : the class in these scenarios inherit from **IList** will fail when serialization, but it can pass in project ReflectionOnly. **Error Message** : System.Runtime.Serialization.InvalidDataContractException : Collection type 'SerializationTestTypes.SampleListExplicitWithoutDC' does not have a valid Add method. **Note** : I checked the test classes they already implement interface **IList** explicitly and have a method named **IList.Add**. 22779 area-Serialization Serialization test case DCS_BasicPerSerializerRoundTripAndCompare_Collections_FailedInuapaot_InCollections failed when targeting uapaot "This case is a part of test case DCS_BasicPerSerializerRoundTripAndCompare_Collections , it failed when **targeting `uapaot`** , so we move these scenarios into a new case. **Detail** : the class in these scenarios has **DataMember attribute decorate Collections type** ,has different result with baseline when serialization. **Baseline** : … … **Actual**: …… **Missing assembly information of the List**." 22780 area-Serialization Cleanup serialization code in unsupported types Mainly test code but in a few cases also production code. E.g. https://github.com/dotnet/corefx/blob/master/src/System.Collections.Concurrent/src/System/Collections/Concurrent/ConcurrentBag.cs#L42 cc @morganbr @danmosemsft @stephentoub -22781 area-Infrastructure System.Net.Http package 4.3.2 - redirect to 4.2.0.0, assembly loading failure "I know there's been a few issues with System.Net.Http, but after some searching I couldn't find anything that seems to relate to, or remedy, my issue. I'll be happy to move this somewhere else, provide more details, etc, as necessary. I have some .NET Framework 4.6.1 class libraries and ASP.NET MVC projects which reference this package: When they run, I get: ``` System.BadImageFormatException : Could not load file or assembly 'System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058) ----> System.BadImageFormatException : Could not load file or assembly 'file:///C:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net462\ref\System.Net.Http.dll' or one of its dependencies. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058) ----> System.BadImageFormatException : Cannot load a reference assembly for execution. ``` My workaround is to manually overwrite the assembly redirects which seem to be automatically generated very frequently whenever I update a number of NuGet references, with this: ``` ``` I'd like to either be able to use this latest version of the package without manually doing this, to understand why 4.2.0.0 is not working by design, or do whatever reconfiguration is necessary to stop the workaround being overwritten. If it's a helpful clue, netfx.force.conflict also appears in my bin folder at certain time (nuget restore?). A clean does not clear it away, but manually deleting the bin folder lets the project run successfully. Most of all, I'd like to feel less helpless / have the tools or knowledge to work out why this is happening by a logical process of elimination / deduction. I've been using and trying to find a way to get us on board the .NET Core train for quite a while. This is our first production project and is utilising some new .NET Core / .NET Standard libraries we have for some parts, and .NET Framework for others. It's been a very difficult experience so far, specifically any time .NET Framework assemblies are referencing netstandard ones. Through bashing against this kind of error for several weeks, I am piecing together facts and workarounds for NuGet versioning, redirects, reference assemblies, type forwarding, build file flags and a myriad of other nuggets. However, my knowledge is still evidently full of gaps. Is there a single place - or even a recommended set of places - where I can learn everything I need to know to have a project set up in this way? The knowledge set required to diagnose build and runtime errors in this kind of scenario so far seems huge, but I/we need to build this expertise internally. (Visual Studio 2017 15.3 Preview 6)" +22781 area-Infrastructure System.Net.Http package 4.3.2 - redirect to 4.2.0.0, assembly loading failure "I know there's been a few issues with System.Net.Http, but after some searching I couldn't find anything that seems to relate to, or remedy, my issue. I'll be happy to move this somewhere else, provide more details, etc, as necessary. I have some .NET Framework 4.6.1 class libraries and ASP.NET MVC projects which reference this package: When they run, I get: ``` System.BadImageFormatException : Could not load file or assembly 'System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058) ----> System.BadImageFormatException : Could not load file or assembly 'file:///C:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\ref\System.Net.Http.dll' or one of its dependencies. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058) ----> System.BadImageFormatException : Cannot load a reference assembly for execution. ``` My workaround is to manually overwrite the assembly redirects which seem to be automatically generated very frequently whenever I update a number of NuGet references, with this: ``` ``` I'd like to either be able to use this latest version of the package without manually doing this, to understand why 4.2.0.0 is not working by design, or do whatever reconfiguration is necessary to stop the workaround being overwritten. If it's a helpful clue, netfx.force.conflict also appears in my bin folder at certain time (nuget restore?). A clean does not clear it away, but manually deleting the bin folder lets the project run successfully. Most of all, I'd like to feel less helpless / have the tools or knowledge to work out why this is happening by a logical process of elimination / deduction. I've been using and trying to find a way to get us on board the .NET Core train for quite a while. This is our first production project and is utilising some new .NET Core / .NET Standard libraries we have for some parts, and .NET Framework for others. It's been a very difficult experience so far, specifically any time .NET Framework assemblies are referencing netstandard ones. Through bashing against this kind of error for several weeks, I am piecing together facts and workarounds for NuGet versioning, redirects, reference assemblies, type forwarding, build file flags and a myriad of other nuggets. However, my knowledge is still evidently full of gaps. Is there a single place - or even a recommended set of places - where I can learn everything I need to know to have a project set up in this way? The knowledge set required to diagnose build and runtime errors in this kind of scenario so far seems huge, but I/we need to build this expertise internally. (Visual Studio 2017 15.3 Preview 6)" 22785 area-Serialization Remove unused serialization members Fixes https://github.com/dotnet/corefx/issues/22780 Not sure what the intent of those types is. Their sole purpose is to serialize something. What should be do about them? - https://github.com/dotnet/corefx/blob/master/src/System.Security.Claims/src/System/Security/Claims/ClaimsIdentity.cs - https://github.com/dotnet/corefx/blob/master/src/System.Security.Claims/src/System/Security/Claims/GenericPrincipal.cs - https://github.com/dotnet/corefx/blob/master/src/System.Security.Principal.Windows/src/System/Security/Principal/WindowsPrincipal.cs 22786 area-Infrastructure Converge root scripts for Unix and Windows This is intended to be more a question than an issue. Currently we have to the following scripts with each two flavors for Unix and Windows: - build-managed - build-native - build-packages - build-tests - build - clean - init-tools - publish-packages - (run-test.sh) - run - sync Are there any plans to converge them? If yes, will we use the dotnet-cli for that? If not, what about using cross-platform powershell scripts? @weshaggard @ericstj 22787 area-Meta Enable RHEL6 and CentOS 6 RID detection in build This change adds RHEL6 and CentOS 6 RID detection to src/Native/build-native.sh. These distros don't have the /etc/os-release file and so we need to use another source - the /etc/redhat-release file. It is an exact copy of the same change merged in for CoreCLR. @@ -12114,7 +12114,7 @@ ID Area Title Description 23303 area-Infrastructure Update CoreClr, CoreFx to servicing-25621-01, servicing-25621-01, respectively (release/2.0.0) 23304 area-Serialization Error running build-tests > CSC : error CS1504: Source file 'd:\dotnet\corefx\Microsoft.XmlSerializer.Generator.Tests.XmlSerializers.cs' could not be opened ('The system cannot find the file specified. ') [d:\dotnet\corefx\src\Microsoft.XmlSerializer.Generator\tests \Microsoft.XmlSerializer.Generator.Tests.csproj] 23305 area-Infrastructure Installation is not compatible with Windows 7 -23306 area-System.Net System.Net.Http redirect errors in VS 15.3.0 "As requested by @karelz a dedicated bug to the issue mistakingly reported in #22781. Story: - Existing .NET 4.6 application, including System.Threading.Tasks.Dataflow 4.7.0 nuget package and System.Net.Http 4.3.2 package, redirects for System.Net.Http are configured - Nuget offers update of Dataflow to V 4.8.0 - After update, redirects for System.Net.Http warn that I should redirect to V 4.2.0 Note: If I don't touch the nuget update at all, no build errors occur Steps to reproduce in a small repro: 1. Create .NET 4.6 project 2. Add reference to Nuget System.Net.Http (V 4.3.2) package 3. Add binding redirect to ```xml ``` 4. Compile (no warnings) 5. According to Project references the Assembly version of System.Net.Http.dll is 4.1.1.1 6. Add reference to one of (there are probably more packages) - System.Threading.Tasks.Dataflow nuget (V4.8.0) - System.Buffers (V4.4.0) 7. Compile Expected result: No warnings Actual result: Consider app.config remapping of assembly ""System.Net.Http, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"" from Version ""4.1.1.1"" [c:\users\tornhoof\documents\visual studio 2017\Projects\NetHttpRepro\NetHttpRepro\bin\Debug\System.Net.Http.dll] to Version ""4.2.0.0"" [C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net462\ref\System.Net.Http.dll] to solve conflict and get rid of warning. Workaround: - Do what it suggests and replace the redirect with ```xml ``` I don't know why the build suddenly uses a library from the VS program directory and not from the NuGet packages. Note: Of the packages released on August 11th, not all are affected, e.g. System.Diagnostics.DiagnosticSource V4.4.1 does not show the behaviour. [EDIT] Fixed bullet points formatting to improve readability by @karelz" +23306 area-System.Net System.Net.Http redirect errors in VS 15.3.0 "As requested by @karelz a dedicated bug to the issue mistakingly reported in #22781. Story: - Existing .NET 4.6 application, including System.Threading.Tasks.Dataflow 4.7.0 nuget package and System.Net.Http 4.3.2 package, redirects for System.Net.Http are configured - Nuget offers update of Dataflow to V 4.8.0 - After update, redirects for System.Net.Http warn that I should redirect to V 4.2.0 Note: If I don't touch the nuget update at all, no build errors occur Steps to reproduce in a small repro: 1. Create .NET 4.6 project 2. Add reference to Nuget System.Net.Http (V 4.3.2) package 3. Add binding redirect to ```xml ``` 4. Compile (no warnings) 5. According to Project references the Assembly version of System.Net.Http.dll is 4.1.1.1 6. Add reference to one of (there are probably more packages) - System.Threading.Tasks.Dataflow nuget (V4.8.0) - System.Buffers (V4.4.0) 7. Compile Expected result: No warnings Actual result: Consider app.config remapping of assembly ""System.Net.Http, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"" from Version ""4.1.1.1"" [c:\users\tornhoof\documents\visual studio 2017\Projects\NetHttpRepro\NetHttpRepro\bin\Debug\System.Net.Http.dll] to Version ""4.2.0.0"" [C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\ref\System.Net.Http.dll] to solve conflict and get rid of warning. Workaround: - Do what it suggests and replace the redirect with ```xml ``` I don't know why the build suddenly uses a library from the VS program directory and not from the NuGet packages. Note: Of the packages released on August 11th, not all are affected, e.g. System.Diagnostics.DiagnosticSource V4.4.1 does not show the behaviour. [EDIT] Fixed bullet points formatting to improve readability by @karelz" 23307 area-System.Runtime Test Failure: UnloadingAndProcessExitTests on UAP not firing unloading events "Discovered failing test case in UWP CoreCLR x64 Debug Build (https://mc.dot.net/#/user/nchikanov/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/eea80bba9af50534e761788810fef3c3335cff4f/workItem/System.Runtime.Extensions.Tests/analysis/xunit/System.Tests.UnloadingAndProcessExitTests~2FUnloadingEventMustHappenBeforeProcessExitEvent) ` Xunit.Sdk.EqualException Windows.10.Amd64.ClientRS2.Open-Debug-x64 Unhandled Exception of Type Xunit.Sdk.EqualException Message : Assert.Equal() Failure\r\n ? (pos 0)\r\nExpected: \r\nActual: u0u1e0e1\r\n ? (pos 0) Stack Trace : at System.Tests.UnloadingAndProcessExitTests.UnloadingEventMustHappenBeforeProcessExitEvent() in D:\j\workspace\windows-TGrou---33cbf18b\src\System.Runtime.Extensions\tests\System\UnloadingAndProcessExitTests.netcoreapp.cs:line 34` **This test can be improved to help narrow down a repro:** 1. The Assert is backwards - expected is u0u1e0e1 2. Should dump ""s"" to the file before hooking the events and ""h"" after hooking- that way we could see if the events simply aren't firing. e.g. result should be ""shu0u1e0e1"" That will make it easier to follow up on continued failures" 23308 area-System.Data The type 'SqlDbType' is defined in both System.Data.SqlClient and netstandard 2.0 Noticed this while updating a library which uses Dapper (which is compatible with .NET standard 1.3+) Steps to reproduce: - Create library targeting .NET standard 2.0 - Reference Dapper - Add ``private SqlDbType _Type = SqlDbType.BigInt;`` to class in library Expected result: - No errors Actual result: CS0433 The type 'SqlDbType' exists in both 'System.Data.SqlClient, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' and 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' As far as I understand I should be able to reference any .NET standard library with a lower version number from 2.0. In this case Dapper. Dapper uses System.Data.SqlClient, but in 2.0 the SQL types moved into .NET Standard 2.0. I guess the ``System.Data.SqlClient`` nuget package is missing .NET standard 2.0 type forwards. 23310 area-Infrastructure Update CoreClr, CoreFx, CoreSetup, ProjectNTfs, ProjectNTfsTestILC, Standard to preview1-25616-02, preview1-25619-01, preview1-25618-02, rel-25618-00, rel-25618-00, preview1-25618-01, respectively (release/uwp6.0) @@ -12131,7 +12131,7 @@ ID Area Title Description 23328 area-System.Collections "Test: System.Collections.Tests.CaseInsensitiveHashCodeProviderTests/Default_Compare_TurkishI failed with ""Xunit.Sdk.TrueException""" Opened on behalf of @Jiayili1 The test `System.Collections.Tests.CaseInsensitiveHashCodeProviderTests/Default_Compare_TurkishI` has failed. Assert.True() Failure\r Expected: True\r Actual: False Stack Trace: at System.Collections.Tests.CaseInsensitiveHashCodeProviderTests.Default_Compare_TurkishI() in E:\A\_work\394\s\corefx\src\System.Collections.NonGeneric\tests\CaseInsensitiveHashCodeProviderTests.cs:line 190 Build : Master - 20170817.01 (UWP F5 Tests) Failing configurations: - Windows.10.Arm64-arm - Debug Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Fuwp~2F/build/20170817.01/workItem/System.Collections.NonGeneric.Tests/analysis/xunit/System.Collections.Tests.CaseInsensitiveHashCodeProviderTests~2FDefault_Compare_TurkishI 23329 area-System.Net avoid async overhead in ReadNextLineAsync Updated version of #23210 @stephentoub I'm blocked on getting perf data here for now, but I expect it to be similar to the previous PR. 23331 area-Infrastructure Cannot reference Foo(HttpResponseMessage) implemented in .NET Standard 2.0 library from .NET Framework 4.7 unit test library Create a .NET Standard 2.0 library with the following code: ```cs public static class Class1 { public static void Foo(HttpResponseMessage response) { } } ``` Then create a .NET Framework 4.7 unit test library with the following code: ```cs [TestClass] public class UnitTest1 { [TestMethod] public void TestMethod1() { Class1.Foo(new HttpResponseMessage(System.Net.HttpStatusCode.OK)); } } ``` Expected result: test passes. Actual result: `Message: Test method UnitTestProject2.UnitTest1.TestMethod1 threw exception: System.MissingMethodException: Method not found: 'Void ClassLibrary1.Class1.Foo(System.Net.Http.HttpResponseMessage)'.` -23332 area-System.Net SslStream AuthenticateAsClientAsync throws when running under netcoreapp2.0 I have an app that I've been porting from net462 to netcoreapp2.0 over the last few days and I've come across a problem when using SslStream. If I run the ported application as netcoreapp2.0 I get the following exception when running on Windows 7 x64 A call to SSPI failed, see inner exception. at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslStream.BeginAuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) at System.Net.Security.SslStream.BeginAuthenticateAsClient(String targetHost, AsyncCallback asyncCallback, Object asyncState) at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl[TArg1](Func`4 beginMethod, Func`2 endFunction, Action`1 endAction, TArg1 arg1, Object state, TaskCreationOptions creationOptions) at System.Threading.Tasks.TaskFactory.FromAsync[TArg1](Func`4 beginMethod, Action`1 endMethod, TArg1 arg1, Object state, TaskCreationOptions creationOptions) at System.Threading.Tasks.TaskFactory.FromAsync[TArg1](Func`4 beginMethod, Action`1 endMethod, TArg1 arg1, Object state) at System.Net.Security.SslStream.AuthenticateAsClientAsync(String targetHost) Inner exception details System.Security.Authentication.AuthenticationException occurred HResult=0x80131501 Message=A call to SSPI failed, see inner exception. Source= StackTrace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() Inner Exception 1: Win32Exception: The function requested is not supported If I then run the same app on an linux-arm board I get the following exception Unable to transfer data on the transport connection: Connection reset by peer. at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Net.FixedSizeReader.d__1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() If I run the app on Windows 7 as net462 it all works as excepted. On my Windows 7 machine I have OpenSSL installed and on path. It's version 1.0.2h On the Linux board I have version 1.0.2d In summary if I run the code as netcoreapp2.0 on linux-arm or Windows 7 I get an exception, if I run the same code but as net462 on Windows 7 everything works fine. I'm using the official release of the tooling from dot.net +23332 area-System.Net SslStream AuthenticateAsClientAsync throws when running under netcoreapp2.0 I have an app that I've been porting from net461 to netcoreapp2.0 over the last few days and I've come across a problem when using SslStream. If I run the ported application as netcoreapp2.0 I get the following exception when running on Windows 7 x64 A call to SSPI failed, see inner exception. at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslStream.BeginAuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation, AsyncCallback asyncCallback, Object asyncState) at System.Net.Security.SslStream.BeginAuthenticateAsClient(String targetHost, AsyncCallback asyncCallback, Object asyncState) at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl[TArg1](Func`4 beginMethod, Func`2 endFunction, Action`1 endAction, TArg1 arg1, Object state, TaskCreationOptions creationOptions) at System.Threading.Tasks.TaskFactory.FromAsync[TArg1](Func`4 beginMethod, Action`1 endMethod, TArg1 arg1, Object state, TaskCreationOptions creationOptions) at System.Threading.Tasks.TaskFactory.FromAsync[TArg1](Func`4 beginMethod, Action`1 endMethod, TArg1 arg1, Object state) at System.Net.Security.SslStream.AuthenticateAsClientAsync(String targetHost) Inner exception details System.Security.Authentication.AuthenticationException occurred HResult=0x80131501 Message=A call to SSPI failed, see inner exception. Source= StackTrace: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() Inner Exception 1: Win32Exception: The function requested is not supported If I then run the same app on an linux-arm board I get the following exception Unable to transfer data on the transport connection: Connection reset by peer. at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Net.FixedSizeReader.d__1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() If I run the app on Windows 7 as net461 it all works as excepted. On my Windows 7 machine I have OpenSSL installed and on path. It's version 1.0.2h On the Linux board I have version 1.0.2d In summary if I run the code as netcoreapp2.0 on linux-arm or Windows 7 I get an exception, if I run the same code but as net461 on Windows 7 everything works fine. I'm using the official release of the tooling from dot.net 23333 area-System.Net Managed Handler: add some basic protocol tests for status line handling @stephentoub @Priya91 @wfurt 23334 area-Serialization Warnings on compiling Microsoft.XmlSerializer.Generator.Tests.csproj On compiling the project directly, several CS0219 warnings. On compiling from `build-tests`: ``` CSC : warning CS1691: 'false' is not a valid warning number [d:\dotnet\corefx\src\Microsoft.XmlSerializer.Generator\tes ts\Microsoft.XmlSerializer.Generator.Tests.csproj] CSC : warning CS1691: 'true' is not a valid warning number [d:\dotnet\corefx\src\Microsoft.XmlSerializer.Generator\test s\Microsoft.XmlSerializer.Generator.Tests.csproj] 23335 area-Serialization WarningsAsErrors and DisabledWarnings are not boolean. Remove `WarningsAsErrors` and set `DisabledWarnings` to `219` as that warning is given in several places. Fixes #23334 @@ -12189,7 +12189,7 @@ ID Area Title Description 23400 area-Serialization Workaround sgen automation errors. The negative test will cause the CI failure. So just remove this test. And on some local machine, the CSC command will try to find the generated code from a root location. Still need understand why it happen. To workaround, just ignore the csc build error, and make the tests work without the generator. #23390 & #23304 @shmao @zhenlan @mconnew 23401 area-System.Net HttpClient Performance Slow Compared to .NET 4.7 "I have conducted a basic performance test of `HttpClient` in .NET Core 2.0 versus `HttpClient` in .NET Framework 4.7 and have noticed a gap in performance. The .NET Framework 4.7 `HttpClient/WebClient` outperforms .NET Core's `HttpClient` by ~1.5-2x in terms of how long it takes to complete a batch of _n_ requests. ### Testing The test is a console app (run in release mode on Windows 7 16GB 3.5GHz) with identical code for .NET Core/Framework that follows this sequence: 1. Create a single, shared HttpClient instance with a maximum of _n_ (for testing _n_=10,100) connections. ``` // .NET Core 2.0 var httpClient = new HttpClient(new HttpClientHandler { MaxConnectionsPerServer = 100 }); // .NET Framework 4.7 ServicePointManager.DefaultConnectionLimit = 100; var httpClient = new HttpClient(); // .NET Framework 4.7 - WebClient instance is created ONCE PER REQUEST ServicePointManager.DefaultConnectionLimit = 100; var webClient = new WebClient(); ``` 2. Start 10,000 simulataneous requests and time how long each request takes to complete + how long all take to complete. Here is code demonstrating how requests are made / timed. ``` private void RunTest(int count) { // requests is a list of Request data structures used to store individual request latency / responses var requests = Enumerable.Range(0, count).Select(j => CreateRequest(j)).ToList(); // this stopwatch is for duration of all requests var stopwatch = Stopwatch.StartNew(); // start all requests and wait for completion var requestTasks = requests.Select(MakeRequest).ToArray(); Task.WaitAll(requestTasks); stopwatch.Stop(); // total run time = stopwatch.ElapsedMilliseconds } private Task MakeRequest(Request request) { var stopwatch = Stopwatch.StartNew(); var response = await httpClient.GetStringAsync(request.Url); stopwatch.Stop(); // save request duration and response request.DurationMs = stopwatch.ElapsedMilliseconds; request.ResponseId = ParseResponse(response); } ``` I am testing against a basic python server that is well under capacity to rule out any server side bottlenecks. The server returns a simple JSON response containing an `id` field which is used to validate the HttpClient responses. ``` { ""id"": ""some_identifier"" } ``` JSON deserialization / response validation is NOT included in performance stats. ### Results These are average statistics (in milliseconds) of 5 separate runs of 10,000 requests each. It is worth mentioning that the actual time spent on each request was much less with .NET Core's HttpClient, it's just that the batch of requests takes longer to complete as a whole vs .NET Framework. | framework | total run time (ms) | avg req time (ms) | median req time (ms) | total time spent on requests (s) | |---------------|---------------------|-------------------|----------------------|----------------------------------| | .NET Core 2.0 | 5614 | 216 | 282 | 777 | | .NET 4.7 | 3055 | 1355 | 1339 | 10,585 |" 23402 area-Microsoft.CSharp Fix duplicate types exception on WinRT interfaces For certain WinRT types like `Windows.Foundation.Collections.IPropertySet`, when using the dynamic C# binder and calling a method, for example `Add(key, value)`, the binder creates the type hierarchy and tries to bind the base method. The existing code tries to bind implemented interfaces both in the AggregateType's t ype hierarchy and WinRT interfaces, and ends up with duplicates, which results in: ```Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:The call is ambiguous between the following methods or properties: 'System.Collections.Generic.IDictionary.Add(string, object)' and 'System.Collections.Generic.IDictionary.Add(string, object)'``` The simple workaround for now is to use a `HashSet` to store these interfaces, so that we don't end up passing duplicates up the call chain. A smarter way of filtering out types that we know for sure are not applicable should be considered in the future. DevDiv #476163 -23404 area-System.Net FtpWebRequest on core does not reuse connections "FtpWebRequest on .net core connects and disconnects for every operation: ![image](https://user-images.githubusercontent.com/1697911/29480430-1aeaaf88-842d-11e7-8359-3e4f07b1e579.png) Eventually hitting connection rate limit: ![image](https://user-images.githubusercontent.com/1697911/29480440-2e2bbb6e-842d-11e7-99b9-0d55aebb2e35.png) Same code on net462 reuses connection: ![image](https://user-images.githubusercontent.com/1697911/29480455-43bcbcda-842d-11e7-8348-6b85efcc533a.png) Code: ``` c# var request = (FtpWebRequest) WebRequest.Create(address); request.Method = WebRequestMethods.Ftp.UploadFile; request.KeepAlive = true; request.UseBinary = true; request.Credentials = new NetworkCredential(publishingProfile.FtpUsername, publishingProfile.FtpPassword); request.ConnectionGroupName = ""group""; using (var fileStream = File.OpenRead(file.FullName)) { using (var requestStream = await request.GetRequestStreamAsync()) { await fileStream.CopyToAsync(requestStream); } } await request.GetResponseAsync(); ``` " +23404 area-System.Net FtpWebRequest on core does not reuse connections "FtpWebRequest on .net core connects and disconnects for every operation: ![image](https://user-images.githubusercontent.com/1697911/29480430-1aeaaf88-842d-11e7-8359-3e4f07b1e579.png) Eventually hitting connection rate limit: ![image](https://user-images.githubusercontent.com/1697911/29480440-2e2bbb6e-842d-11e7-99b9-0d55aebb2e35.png) Same code on net461 reuses connection: ![image](https://user-images.githubusercontent.com/1697911/29480455-43bcbcda-842d-11e7-8348-6b85efcc533a.png) Code: ``` c# var request = (FtpWebRequest) WebRequest.Create(address); request.Method = WebRequestMethods.Ftp.UploadFile; request.KeepAlive = true; request.UseBinary = true; request.Credentials = new NetworkCredential(publishingProfile.FtpUsername, publishingProfile.FtpPassword); request.ConnectionGroupName = ""group""; using (var fileStream = File.OpenRead(file.FullName)) { using (var requestStream = await request.GetRequestStreamAsync()) { await fileStream.CopyToAsync(requestStream); } } await request.GetResponseAsync(); ``` " 23405 area-Microsoft.CSharp Regression in dynamic method invocation in .NET Core 2.0 _From @DavidZidar on August 18, 2017 22:45_ I've discovered a regression where calling a generic method with a dynamic argument throws an exception in .NET Core 2.0 but not in previous versions. Here is a small program that cause the bug. https://github.com/DavidZidar/DynamicProblems/blob/ad51939ec05bd840bf441e9653d6fb608872e6ce/DynamicProblems/Program.cs#L7-L36 The problematic type signature is as follows `void HandleMessage(IQuery query)` As you can see in the example, invoking the method with TResult of `List<>` works fine but with `ImmutableList<>` the runtime binder throws the following exception. ``` Length cannot be less than zero. Parameter name: length at System.String.Substring(Int32 startIndex, Int32 length) at Microsoft.CSharp.RuntimeBinder.Syntax.NameTable.Add(String key, Int32 length) at Microsoft.CSharp.RuntimeBinder.Syntax.NameManager.Add(String key, Int32 length) at Microsoft.CSharp.RuntimeBinder.SymbolTable.GetName(Type type) at Microsoft.CSharp.RuntimeBinder.SymbolTable.LoadSymbolsFromType(Type originalType) at Microsoft.CSharp.RuntimeBinder.SymbolTable.GetConstructedType(Type type, AggregateSymbol agg) at Microsoft.CSharp.RuntimeBinder.SymbolTable.LoadSymbolsFromType(Type originalType) at Microsoft.CSharp.RuntimeBinder.SymbolTable.GetCTypeArrayFromTypes(IList`1 types) at Microsoft.CSharp.RuntimeBinder.SymbolTable.SetInterfacesOnAggregate(AggregateSymbol aggregate, Type type) at Microsoft.CSharp.RuntimeBinder.SymbolTable.AddAggregateToSymbolTable(NamespaceOrAggregateSymbol parent, Type type) at Microsoft.CSharp.RuntimeBinder.SymbolTable.LoadSymbolsFromType(Type originalType) at Microsoft.CSharp.RuntimeBinder.SymbolTable.GetConstructedType(Type type, AggregateSymbol agg) at Microsoft.CSharp.RuntimeBinder.SymbolTable.LoadSymbolsFromType(Type originalType) at Microsoft.CSharp.RuntimeBinder.SymbolTable.GetCTypeArrayFromTypes(IList`1 types) at Microsoft.CSharp.RuntimeBinder.SymbolTable.SetInterfacesOnAggregate(AggregateSymbol aggregate, Type type) at Microsoft.CSharp.RuntimeBinder.SymbolTable.AddAggregateToSymbolTable(NamespaceOrAggregateSymbol parent, Type type) at Microsoft.CSharp.RuntimeBinder.SymbolTable.LoadSymbolsFromType(Type originalType) at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.GetArgumentType(ICSharpBinder p, CSharpArgumentInfo argInfo, Expression param, DynamicMetaObject arg, Int32 index) at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.CreateArgumentArray(ICSharpBinder payload, Expression[] parameters, DynamicMetaObject[] args) at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.BindCore(ICSharpBinder payload, Expression[] parameters, DynamicMetaObject[] args, DynamicMetaObject& deferredBinding) at Microsoft.CSharp.RuntimeBinder.RuntimeBinder.Bind(DynamicMetaObjectBinder payload, Expression[] parameters, DynamicMetaObject[] args, DynamicMetaObject& deferredBinding) at Microsoft.CSharp.RuntimeBinder.BinderHelper.Bind(DynamicMetaObjectBinder action, RuntimeBinder binder, DynamicMetaObject[] args, IEnumerable`1 arginfos, DynamicMetaObject onBindingError) at Microsoft.CSharp.RuntimeBinder.CSharpInvokeMemberBinder.FallbackInvokeMember(DynamicMetaObject target, DynamicMetaObject[] args, DynamicMetaObject errorSuggestion) at System.Dynamic.DynamicMetaObject.BindInvokeMember(InvokeMemberBinder binder, DynamicMetaObject[] args) at System.Dynamic.InvokeMemberBinder.Bind(DynamicMetaObject target, DynamicMetaObject[] args) at System.Dynamic.DynamicMetaObjectBinder.Bind(Object[] args, ReadOnlyCollection`1 parameters, LabelTarget returnLabel) at System.Runtime.CompilerServices.CallSiteBinder.BindCore[T](CallSite`1 site, Object[] args) at System.Dynamic.UpdateDelegates.UpdateAndExecuteVoid2[T0,T1](CallSite site, T0 arg0, T1 arg1) at DynamicProblems.Program.Main(String[] args) in c:\code\test\DynamicProblems\DynamicProblems\Program.cs:line 27 ``` If you change TargetFramework to netcoreapp1.1 in the csproj file then everything works as expected. _Copied from original issue: dotnet/coreclr#13478_ 23406 area-System.Memory Enable System.Runtime.CompilerServices.Unsafe and System.Memory tests for UAP We need to get targeted unit test for Span enabled. They are very likely uncover bugs that will be hard to track down otherwise (e.g. #23073). 23407 area-System.Data System.Data.DataSetExtensions Test Failures with Unbox Tests fail fast / crash when running ILCBuildType=ret in System.Data.DataSetExtensions on UapAot. Test do not fail when ILCBuildType=chk. This is likely a code gen bug. **Failure Location**: (One of many) https://github.com/dotnet/corefx/blob/73f62d06803d086ee7f6745b55dfde63e27be779/src/System.Data.DataSetExtensions/tests/Mono/EnumerableRowCollectionTest.cs#L99-L102 Then Field calls UnboxT, where there is a failure: `Exception Unhandled: Unhandled exception at 0x00007FFA233500A0 (xunit.console.netcore.dll) in xunit.console.netcore.exe: 0x80004005: Unspecified error.` https://github.com/dotnet/corefx/blob/73f62d06803d086ee7f6745b55dfde63e27be779/src/System.Data.DataSetExtensions/src/System/Data/DataRowExtensions.cs#L146 **Execution failed on:** Windows.10.Amd64.ClientRS3-x64:Release Windows.10.Amd64.ClientRS3-x64:Debug Windows.10.Amd64.ClientRS3-x86:Debug Windows.10.Amd64.ClientRS3-x86:Release Windows.10.Amd64-x86:Debug **Error message**: `Access Violation: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. The application will be terminated since this platform does not support throwing an AccessViolationException.` **Call stack**: ``` xunit.console.netcore.dll!$14_System::Data::DataRowExtensions::UnboxT$1..cctor() Line 146 xunit.console.netcore.dll!System::Runtime::CompilerServices::ClassConstructorRunner.EnsureClassConstructorRun(System::Runtime::CompilerServices::StaticClassConstructionContext * pContext) Line 92 xunit.console.netcore.dll!System::Runtime::CompilerServices::ClassConstructorRunner.CheckStaticClassConstruction(void * returnValue, System::Runtime::CompilerServices::StaticClassConstructionContext * pContext) Line 38 xunit.console.netcore.dll!$14_System::Data::DataRowExtensions.Field($13_System::Data::DataRow & InstParam, System::String & row) Line 27 xunit.console.netcore.dll!$15_MonoTests::System::Data::EnumerableRowCollectionTest::<>c.b__3_2($13_System::Data::DataRow & line) Line 161 [Inline Frame] xunit.console.netcore.dll!System::Func$2::Invoke(System::__Canon &) Line 16707565 xunit.console.netcore.dll!$26_System::Linq::Enumerable::SelectEnumerableIterator$2.MoveNext() Line 131 xunit.console.netcore.dll!$15_MonoTests::System::Data::EnumerableRowCollectionTest.QueryWhereSelectOrderByDescending() Line 135 ``` cc: @danmosemsft @safern @@ -12365,13 +12365,13 @@ ID Area Title Description 23632 area-System.Drawing Disable System.Drawing.Tests flaky test failing in CI Relates to: #21886 cc: @danmosemsft @mellinoe 23633 area-Infrastructure Add BinPlaceConfiguration for test projects to have a working directory per BuildConfiguration This changes depends on: https://github.com/dotnet/buildtools/pull/1652 and a BuildTools update once that is merged. Fixes: https://github.com/dotnet/buildtools/issues/1587 ## New Behavior with this change With this change we will have the next behavior when building/running tests: - When building the tests we will still bin place the test assets to the `OutputDirectory` (`corefx\bin\OSGroup.Configuration\TestProject\TargetGroup\`) - When running the tests we will bin place the tests assets to this new [`TestPath`](https://github.com/dotnet/corefx/pull/23633/files#diff-4de71e7a0fd952be821f8af2768281dcR34) which will be the `TestPath`. This new path will be the test's working directory where we will bin place the RunTests.cmd and necessary dependencies in tests.targets. Also the `testResults.xml` will be found here after the test execution. - `TestPath` is set to be `bin/tests///` (i.e `corefx\bin\tests\System.Collections.Immutable.Tests\netcoreapp-Windows_NT-Debug-x64`) in `dir.props` - This `TestPath` will be added to the `BinPlaceDir` in `FrameworkTargeting.targets` when `BinPlaceTest` is set to true. - Then in the [`BinPlaceFiles`](https://github.com/safern/buildtools/blob/4d39247ff2c152ac50ade6128a44afc6f9993ca2/src/Microsoft.DotNet.Build.Tasks/PackageFiles/FrameworkTargeting.targets#L243) target the test assets will be hardlinked to the `TestPath`. This will isolate every test execution per build configuration and will allow people to run the same test project for all of the supported configurations on the same repo without having to clean the repo. cc: @weshaggard @ericstj @joperezr FYI: @danmosemsft 23636 area-System.Drawing System.Drawing: Consolidate the Brushes class Use the Windows implementation of the `Brushes` class for both Windows and Unix. Update the P/Invoke declarations accordingly. -23639 area-System.Net IPAddress.Parse incorrectly parsing invalid IPv6 addresses "Prior to upgrading to .NET Core 2.0, this would throw a FormatException (note the extra character in the final hextet): IPAddress.Parse(""3fff:ffff:ffff:ffff:ffff:ffff:ffff:abcde""); Following the upgrade, the code above parses as if the first character were not there i.e as equivalent to: IPAddress.Parse(""3fff:ffff:ffff:ffff:ffff:ffff:ffff:bcde""); Additional characters in any of the first seven hextets do still cause the expected FormatException to be thrown: IPAddress.Parse(""3fff:ffff:ffff:ffff:ffff:ffff:affff:ffff""); Is this an intentional change of behavior from NetCoreApp1.1 and net462?" +23639 area-System.Net IPAddress.Parse incorrectly parsing invalid IPv6 addresses "Prior to upgrading to .NET Core 2.0, this would throw a FormatException (note the extra character in the final hextet): IPAddress.Parse(""3fff:ffff:ffff:ffff:ffff:ffff:ffff:abcde""); Following the upgrade, the code above parses as if the first character were not there i.e as equivalent to: IPAddress.Parse(""3fff:ffff:ffff:ffff:ffff:ffff:ffff:bcde""); Additional characters in any of the first seven hextets do still cause the expected FormatException to be thrown: IPAddress.Parse(""3fff:ffff:ffff:ffff:ffff:ffff:affff:ffff""); Is this an intentional change of behavior from NetCoreApp1.1 and Net461?" 23640 area-System.Net Only strip initial ? in HttpUtility.ParseQueryString once. Fixes #23574 23641 area-Infrastructure CI Failure: error: libunwind.so.8: cannot open shared object file: No such file or directory The `Linux x64 Release Build` CI failed when I ran this PR: https://github.com/dotnet/corefx/pull/23596 ```sh 2017-08-29 08:59:09,715: INFO: proc(54): run_and_log_output: Output: total elapsed time 0:00:00.160024 2017-08-29 08:59:09,766: INFO: proc(54): run_and_log_output: Output: Failed to load �J!�, error: libunwind.so.8: cannot open shared object file: No such file or directory 2017-08-29 08:59:09,766: INFO: proc(54): run_and_log_output: Output: Failed to bind to CoreCLR at '/home/helixbot/dotnetbuild/work/ba5f7733-09d1-46b9-bf98-58f68a1b0b8e/Payload/shared/Microsoft.NETCore.App/9.9.9/libcoreclr.so' 2017-08-29 08:59:09,787: INFO: proc(54): run_and_log_output: Output: Trying to find crash dumps for project: System.Data.SqlClient.Tests ``` Full log can be found at https://mc.dot.net/#/user/mazong1123/pr~2Fjenkins~2Fdotnet~2Fcorefx~2Fmaster~2F/test~2Ffunctional~2Fcli~2F/edb0e549ee2d27b9496f4d09731171a38ff6cb29/workItem/Microsoft.CSharp.Tests/wilogs Seems like an environment issue. 23642 area-System.Runtime Replace span-based optional arguments with fixed overloads When I outlined what span-based {Try}Parse methods I thought we should have on primitive types (int, long, etc.), I tried to keep the list of overloads short by using optional parameters. For example, Int32 has these string-based Parse methods: ```C# public static int Parse(string s); public static int Parse(string s, NumberStyles style); public static int Parse(string s, NumberStyles style, IFormatProvider provider); public static int Parse(string s, IFormatProvider provider); ``` and I suggested (and we agreed on and we now have) adding just one span-based one to cover them all: ```C# public static int Parse(ReadOnlySpan s, NumberStyles style = NumberStyles.Integer, IFormatProvider provider = null); ``` For the most part, that’s seemed to work well, in terms of the experience I’ve had then consuming this in other code. However, it’s worked less well in my experience for TryParse. For TryParse, Int32 has: ```C# public static bool TryParse(string s, out int result); public static bool TryParse(string s, NumberStyles style, IFormatProvider provider, out int result); ``` and we’ve now added: ```C# public static bool TryParse(ReadOnlySpan s, out int result, NumberStyles style = NumberStyles.Integer, IFormatProvider provider = null); ``` The problem is in the order of the arguments. Because the optional parameters need to come at the end of the signature, the `out int result` argument is now in the middle, differing from the corresponding long overload that works with a string. When converting code from being string-based to span-based, for me at least this has been jarring and hasn’t been a pit of success. For example, let’s say you’ve got code like this: https://github.com/dotnet/corefx/blob/master/src/Common/src/Interop/Linux/procfs/Interop.ProcFsStat.cs#L133-L138 ```C# string startingString = s.Substring(start, pos); if (long.TryParse(startingString, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out startingAddress)) { string endingString = s.Substring(pos + 1, end - (pos + 1)); long.TryParse(endingString, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out endingAddress); } ``` It’s pretty straightforward to replace the `.Substring` with `.AsReadOnlySpan().Slice`: ```C# ReadOnlySpan startingString = s.AsReadOnlySpan().Slice(start, pos); if (long.TryParse(startingString, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out startingAddress)) { ReadOnlySpan endingString = s.AsReadOnlySpan().Slice(pos + 1, end - (pos + 1)); long.TryParse(endingString, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out endingAddress); } ``` but then that doesn’t compile because the arguments are in the wrong order, and the developer needs to realize the problem and take the extra step of changing the code to be: ```C# ReadOnlySpan startingString = s.AsReadOnlySpan().Slice(start, pos); if (long.TryParse(startingString, out startingAddress, NumberStyles.HexNumber, CultureInfo.InvariantCulture)) { ReadOnlySpan endingString = s.AsReadOnlySpan().Slice(pos + 1, end - (pos + 1)); long.TryParse(endingString, out endingAddress, NumberStyles.HexNumber, CultureInfo.InvariantCulture); } ``` We should back away from the optional parameters here for TryParse, and add the same set of overloads as we have for strings. In most cases, it should mean adding only one or two more methods. 23643 area-System.Console Wrong text encoding on console apps I have a console app made in dotnet core which, among other things, receive text input using Console.ReadLine. This works fine except when entering words using non english characters (áéíóúñ) I can write such text without problem using Console.WriteLine and debugging I can see the text received have the usual marker for invalid character. This is happening in dotnet core 1.1.0 -23645 area-System.Runtime Runtime error with [OnDeserialized] in netstandard2.0 library running in framework461 project 1. Create new Project 1. Create net462 app (A) 1. Create netstandard2.0 class library with the below code (B) 1. Reference (B) in (A) 1. Try and compile ```cs using System; using System.Runtime.Serialization; namespace ClassLibraryNetStandard20 { [Serializable] public class SerializableClass : ISerializable { private readonly string _value; public SerializableClass(string value) { _value = value; } public SerializableClass(SerializationInfo info, StreamingContext context) { _value = info.GetString(nameof(Value)); } public string Value => _value; public void GetObjectData(SerializationInfo info, StreamingContext context) { info.AddValue(nameof(Value), _value); } [OnDeserialized] private void OnDeserialized(StreamingContext context) { } } } ``` Runtime error of: > Type 'ClassLibraryNetStandard20.SerializableClass' in assembly 'ClassLibraryNetStandard20, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' has method 'OnDeserialized' with an incorrect signature for the serialization attribute that it is decorated with. ------ N.B. this works fine if (B) targets net462 -23646 area-System.Net System.ServiceModel.BasicHttpBinding throwing InvalidOperationException in dotnet core 2.0 I am getting an invalid operation exception calling an external web service when setting the proxy settings on the BasicHttpBinding class. The error is: When using a non-null Proxy, the WindowsProxyUsePolicy property must be set to WindowsProxyUsePolicy.UseCustomProxy. (Source: System.Net.Http.WinHttpHandler) My code: ```c# var binder1 = new BasicHttpBinding(); binder1.UseDefaultWebProxy = false; binder1.ProxyAddress = proxyAddress; ``` Removing these two lines (so it uses the machines default proxy settings) results in a successful web service call. From Dudod's comments in https://github.com/dotnet/wcf/issues/1592 it seems it may be related to the WinHttpHandler implementation. I'm using Visual Studio 2017 version 15.3.0, my dll is targeting netstandard2.0 and I am using version 2.0.0 of the sdk. I'm testing this code using xunit tests targeting netcoreapp2.0. FYI if I switch the unit test target from netcoreapp2.0 to net462 the above code works. [EDIT[ Fix C# syntax highlighting by @karelz +23645 area-System.Runtime Runtime error with [OnDeserialized] in netstandard2.0 library running in framework461 project 1. Create new Project 1. Create net461 app (A) 1. Create netstandard2.0 class library with the below code (B) 1. Reference (B) in (A) 1. Try and compile ```cs using System; using System.Runtime.Serialization; namespace ClassLibraryNetStandard20 { [Serializable] public class SerializableClass : ISerializable { private readonly string _value; public SerializableClass(string value) { _value = value; } public SerializableClass(SerializationInfo info, StreamingContext context) { _value = info.GetString(nameof(Value)); } public string Value => _value; public void GetObjectData(SerializationInfo info, StreamingContext context) { info.AddValue(nameof(Value), _value); } [OnDeserialized] private void OnDeserialized(StreamingContext context) { } } } ``` Runtime error of: > Type 'ClassLibraryNetStandard20.SerializableClass' in assembly 'ClassLibraryNetStandard20, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' has method 'OnDeserialized' with an incorrect signature for the serialization attribute that it is decorated with. ------ N.B. this works fine if (B) targets net461 +23646 area-System.Net System.ServiceModel.BasicHttpBinding throwing InvalidOperationException in dotnet core 2.0 I am getting an invalid operation exception calling an external web service when setting the proxy settings on the BasicHttpBinding class. The error is: When using a non-null Proxy, the WindowsProxyUsePolicy property must be set to WindowsProxyUsePolicy.UseCustomProxy. (Source: System.Net.Http.WinHttpHandler) My code: ```c# var binder1 = new BasicHttpBinding(); binder1.UseDefaultWebProxy = false; binder1.ProxyAddress = proxyAddress; ``` Removing these two lines (so it uses the machines default proxy settings) results in a successful web service call. From Dudod's comments in https://github.com/dotnet/wcf/issues/1592 it seems it may be related to the WinHttpHandler implementation. I'm using Visual Studio 2017 version 15.3.0, my dll is targeting netstandard2.0 and I am using version 2.0.0 of the sdk. I'm testing this code using xunit tests targeting netcoreapp2.0. FYI if I switch the unit test target from netcoreapp2.0 to net461 the above code works. [EDIT[ Fix C# syntax highlighting by @karelz 23650 area-System.Drawing CopyFromScreen tests causing intermittent failures ``` System.Drawing.Tests.GraphicsTests.CopyFromScreen_ValidRange_AffectsGraphics(sourceX: 1, sourceY: 1, destinationX: 2, destinationY: 2, width: 3, height: 3) [FAIL] 20:39:03 System.ComponentModel.Win32Exception : The handle is invalid 20:39:03 Stack Trace: 20:39:03 at System.Drawing.Graphics.CopyFromScreen(Int32 sourceX, Int32 sourceY, Int32 destinationX, Int32 destinationY, Size blockRegionSize, CopyPixelOperation copyPixelOperation) 20:39:03 at System.Drawing.Graphics.CopyFromScreen(Int32 sourceX, Int32 sourceY, Int32 destinationX, Int32 destinationY, Size blockRegionSize) ``` I believe these tests are invalid, given that they are failing against the .NET Framework. We should give them some scrutiny, and potentially remove them. 23653 area-System.Net Add minimal handling for HTTP 1.0 requests to ManagedHandler More work may need to be done but this at least fixes issues covered by existing tests. We may add more checks to disable 1.1 extensions for 1.0 requests. fixes #23132 23654 area-Infrastructure Blocking: Package restore failing with nuget errors. "As of this morning, any attempt to ""sync -p"" (master branch, synced to current bits, ""git clean -xdf"" done), aborts with this set of error messages (which seems to me like they should be warnings.) ``` c:\dd\CoreFx\external\test-runtime\XUnit.Runtime.depproj : error NU1603: Microsoft.xunit.netcore.extensions 1.0.1-prerelease-01911-02 depends on System.Linq.Expressions (>= 4.0.11) but System.Linq.Expressions 4.0.11 was not found. An approximate best match of System.Linq.Expressions 4.1.0 was resolved. c:\dd\CoreFx\external\test-runtime\XUnit.Runtime.depproj : error NU1603: Microsoft.xunit.netcore.extensions 1.0.1-prerelease-01911-02 depends on System.Text.RegularExpressions (>= 4.0.12) but System.Text.RegularExpressions 4.0.12 was not found. An approximate best match of System.Text.RegularExpressions 4.1.0 was resolved. c:\dd\CoreFx\external\test-runtime\XUnit.Runtime.depproj : error NU1603: xunit.console.netcore 1.0.3-prerelease-00921-01 depends on System.Text.RegularExpressions (>= 4.0.12) but System.Text.RegularExpressions 4.0.12 was not found. An approximate best match of System.Text.RegularExpressions 4.1.0 was resolved. c:\dd\CoreFx\Tools\packageresolve.targets(42,5): error MSB3073: The command """"c:\dd\CoreFx\Tools/dotnetcli/dotnet.exe"" restore --packages ""c:\dd\CoreFx\packages"" --source https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json --source https://dotnet.myget.org/F/dotnet-core/api/v3/index.json --source https://api.nuget.org/v3/index.json c:\dd\CoreFx\external\test-runtime\XUnit.Runtime.depproj /p:TargetGroup=netstandard /p:ConfigurationGroup=Debug /p:ArchGrou p=x64 /p:OSGroup=AnyOS /p:TargetFramework=netstandard2.0 -r win10-x64 "" exited with code 1. [c:\dd\CoreFx\external\test-runtime\XUnit.Runtime.depproj] ``` Syncing back to commits that I knew worked yesterday and retrying just produces other nuget errors. This looks like something changed nuget configuration on my box althought I thought corefx was supposed to be insulated from that. Can anybody assist. @ericstj ; @weshaggard " @@ -12510,7 +12510,7 @@ ID Area Title Description 23827 area-System.Net System.Net.Http httpClient ServerCertificateCustomValidationCallback does not include the intermediate certificates provided by the server "When we assign a callback to ServerCertificateCustomValidationCallback (SCCVC) (tested on Win7/Win8.1,) the passed ""chain"" arg only includes the server certificate but no intermediate certs passed by the server. The ""chain"" only has multiple ChainElements if the server cert is signed by a certificate, intermediate or root, that exists in the local store. If we have a cert signed by an intermediate CA and that cert is chained by the server, even if that CA cert is in turn signed by a root/intermediate CA that exists in the store, the chain will not include any of the intermediate certificates, and will show just the server certificate. In such a case where the root cert exists in the store and the intermediate cert is chained by the HTTPS server, the request will go through successfully when no callback is defined, yet show up in the callback with ChainElements.Count == 1 and SslPolicyErrors != none; which some might find a smidge ironic. The following are the current behaviors and the corresponding behavior in the ServerCertificateValidationCallback (SCVC) in .NET Framework which I assume should be the expected behavior here. 1) When the server passes a certificate chain and a given certificate is _different_ to the one in the store for the same CN/SAN, SCCVC gets the store cert, while SCVC (expected) gets the one passed by the server. 2) When the server passes a certificate chain which does not conflict with the store, SCCVC does not get any of the certificates passed to ""chain"" other than the server cert itself. Expected behavior per SCVC is to have the server intermediate certs passed along and ADDITIONAL certs, only if the final cert is not self-signed, added to the chain where appropriate. This is preventing us from using httpClient in production. We have our certs signed by an intermediate CA which we cannot install on target systems' local cert stores. Furthermore, we use an internal root CA for testing and we would prefer to compare the CA cert to the final cert in the chain in the validation callback, rather than installing and re-installing certs as test CAs pop in and out of existence." 23828 area-System.Threading Add CancellationTokenRegistration.Token property When registering with a CancellationToken, a common pattern is to then store the resulting CancellationTokenRegistration onto some object for later disposal when the associated asynchronous operation completes. It's also common to store the original CancellationToken, so that it can, for example, be passed to TaskCompletionSource.TrySetCanceled. But having to store the CancellationToken in addition to the CancellationTokenRegistration should be unnecessary, as the registration already knows with which CancellationToken it's associated... it just doesn't expose that information. We should expose it. ```C# public struct CancellationTokenRegistration { public CancellationToken Token { get; } ... } ``` This property now exists, it's just internal: https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/Threading/CancellationTokenRegistration.cs#L44 We should simply make it public. This will allow us to shrink by a reference-sized field several objects that store the CT in addition to the CTR. 23829 area-System.Net Disable default proxy test on Desktop HttpClient test `ProxyExplicitlyProvided_DefaultCredentials_Ignored` has started failing on Desktop due to build system changes. Disabling for now. #23702 -23830 area-Infrastructure [Release/2.0.0] Reduce desktop targeted reference assemblies in 2.0 release See https://github.com/dotnet/corefx/issues/23505. The use of reference assemblies in 2.0 for desktop-targeted packages and netstandard support targets has resulted in a number of tooling issues. To help relieve these, we can dial back the number of reference assemblies we use. 1. Don't use reference assemblies at all for the support package / targets. - https://github.com/dotnet/corefx/pull/23711 - Will need to be ingested into SDK 2. For packages which have reference facades which are full facades, don't set the reference assembly bit. - https://github.com/dotnet/buildtools/pull/1663 - Needs to be ported to release/2.0.0 - The following packages will benefit from this: - Microsoft.Win32.Registry - System.CodeDom - System.ComponentModel.Annotations - System.Configuration.ConfigurationManager - System.Data.SqlClient - System.IO.Packaging - System.IO.Ports - System.Security.AccessControl - System.Security.Cryptography.Cng - for all but net462 see below - System.Security.Cryptography.Pkcs - System.Security.Cryptography.ProtectedData - System.Security.Cryptography.Xml - System.Security.Principal.Windows - System.ServiceProcess.ServiceController - System.Threading.Tasks.Extensions 3. For the remaining packages, consider excluding the desktop reference and instead using the implementation assembly as the reference (as we did in 1.x). These are the packages we shipped in 2.0 that contained reference assemblies with typedefs for desktop: - System.Numerics.Vectors - System.IO.FileSystem.AccessControl - System.IO.Pipes.AccessControl - System.Reflection.TypeExtensions - System.Security.Cryptography.Cng - only on net462 as a result of the netstandard remapping. Fix here is to drop those types from the reference for the netfx build. - System.Threading.AccessControl 1 is a must-fix for 2.0. For 2 and 3 we'd need to ship the individual packages and for that I'd like a shiproom read. +23830 area-Infrastructure [Release/2.0.0] Reduce desktop targeted reference assemblies in 2.0 release See https://github.com/dotnet/corefx/issues/23505. The use of reference assemblies in 2.0 for desktop-targeted packages and netstandard support targets has resulted in a number of tooling issues. To help relieve these, we can dial back the number of reference assemblies we use. 1. Don't use reference assemblies at all for the support package / targets. - https://github.com/dotnet/corefx/pull/23711 - Will need to be ingested into SDK 2. For packages which have reference facades which are full facades, don't set the reference assembly bit. - https://github.com/dotnet/buildtools/pull/1663 - Needs to be ported to release/2.0.0 - The following packages will benefit from this: - Microsoft.Win32.Registry - System.CodeDom - System.ComponentModel.Annotations - System.Configuration.ConfigurationManager - System.Data.SqlClient - System.IO.Packaging - System.IO.Ports - System.Security.AccessControl - System.Security.Cryptography.Cng - for all but net461 see below - System.Security.Cryptography.Pkcs - System.Security.Cryptography.ProtectedData - System.Security.Cryptography.Xml - System.Security.Principal.Windows - System.ServiceProcess.ServiceController - System.Threading.Tasks.Extensions 3. For the remaining packages, consider excluding the desktop reference and instead using the implementation assembly as the reference (as we did in 1.x). These are the packages we shipped in 2.0 that contained reference assemblies with typedefs for desktop: - System.Numerics.Vectors - System.IO.FileSystem.AccessControl - System.IO.Pipes.AccessControl - System.Reflection.TypeExtensions - System.Security.Cryptography.Cng - only on net461 as a result of the netstandard remapping. Fix here is to drop those types from the reference for the netfx build. - System.Threading.AccessControl 1 is a must-fix for 2.0. For 2 and 3 we'd need to ship the individual packages and for that I'd like a shiproom read. 23831 area-Infrastructure Switch OSX CI runs to use Helix 23832 area-System.Xml Make Xunit detect tests from Xml custom test fx (no more outerloop tests in S.P.Xml) This improves debuggability of XML tests. Before this PR when one of the test cases failed you couldn't tell which one (one test case was a batch of hundreds to thousands tests). This PR makes it so that XML custom test framework is feeding Xunit's theory with inline data which is enough to execute test and show description of the test case - this way we can nicely see a failure Fixes https://github.com/dotnet/corefx/issues/14855 Contributes to https://github.com/dotnet/corefx/issues/3133 23833 area-System.Linq LINQ Concat.ToArray outputs null elements when it shouldn't From @markples at https://github.com/dotnet/corefx/issues/23680#issuecomment-326906526 --- Here is a repro (from @vuminhle). It seems very specific - reducing the list sizes or changing the construction in various ways loses the repro. ```cs using System; using System.Collections.Generic; using System.Linq; namespace repro { internal class Program { private static void Main(string[] args) { A[] list = List1().Concat(List2()).Concat(List3()).ToArray(); foreach (A a in list) { Console.WriteLine(a.Value); } } internal static IEnumerable List1() { for (var i = 0; i < 4; i++) { yield return new A(i); } } internal static IEnumerable List2() { return Enumerable.Range(0, 2).Select(v => new A(v)); } internal static IEnumerable List3() { for (var i = 0; i < 5; i++) { yield return new A(i); } } internal class A { public A(int v) { Value = v; } public int Value { get; } } } } ``` @@ -12875,7 +12875,7 @@ ID Area Title Description 24357 area-System.Diagnostics [System.Diagnostics.Process]::GetProcesses(computer) returns local processes "Repro in PowerShell Core 6 ```powershell [System.Diagnostics.Process]::GetProcesses(""not existing computer"") ``` Expected ```none error not able to connect to computer ``` Actual ```none local processes returned ``` " 24358 area-System.Net Test: System.Net.Tests.HttpRequestStreamTests / Read_NullBuffer_ThrowsArgumentNullException Opened on behalf of @Jiayili1 The test `System.Net.Tests.HttpRequestStreamTests/Read_NullBuffer_ThrowsArgumentNullException(chunked: True)` has failed. System.NullReferenceException : Object reference not set to an instance of an object. Stack Trace: at System.Net.Tests.HttpRequestStreamTests.d__17.MoveNext$fin$0() in E:\A\_work\327\s\corefx\src\System.Net.HttpListener\tests\HttpRequestStreamTests.cs:line 16707566 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs:line 61 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 178 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) in f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\CompilerServices\TaskAwaiter.cs:line 147 Build : Master - 20170930.01 (UWP ILC Tests) Failing configurations: - Windows.10.Amd64.ClientRS3-x64 - Release Detail: https://mc.dot.net/#/product/netcore/master/source/official~2Fcorefx~2Fmaster~2F/type/test~2Ffunctional~2Filc~2F/build/20170930.01/workItem/System.Net.HttpListener.Tests/analysis/xunit/System.Net.Tests.HttpRequestStreamTests~2FRead_NullBuffer_ThrowsArgumentNullException(chunked:%20True) 24360 area-System.Xml XmlDocument The name 'debuggerDisplayProxy' does not exist in the current context When I create a new XmlDocument the local variable is showing the following error error CS0103: The name 'debuggerDisplayProxy' does not exist in the current context ![image](https://user-images.githubusercontent.com/7502746/31047927-f6ac56ee-a5d8-11e7-9123-d7342f1a1dcc.png) -24361 area-System.Net Problem with HttpClient after updating my project from net462 to netcoreapp2.0 I have a piece of code that makes a httpRequest in a page in a domain www.example.gr i am redirected in a page (auth.example.gr) to login. I post some data to login and get the right cookies, so i can use the admin page. This code works fine with .net framework 461. When i test it with netcore 2.0, when i post the data to Login i get this error. > **The operation has been canceled** > **The read operation failed, see inner exception.** > at System.Net.Http.WinHttpResponseStream.d__18.MoveNext() > --- End of stack trace from previous location where exception was thrown --- > at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() > at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) > at System.Net.Http.HttpContent.d__48.MoveNext() > **Error while copying content to a stream.** > at System.Net.Http.WinHttpResponseStream.d__18.MoveNext() > --- End of stack trace from previous location where exception was thrown --- > at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() > at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) > at System.Net.Http.HttpContent.d__48.MoveNext() I don't know what else to provide to help you more. Please inform me. Thank you. +24361 area-System.Net Problem with HttpClient after updating my project from net461 to netcoreapp2.0 I have a piece of code that makes a httpRequest in a page in a domain www.example.gr i am redirected in a page (auth.example.gr) to login. I post some data to login and get the right cookies, so i can use the admin page. This code works fine with .net framework 461. When i test it with netcore 2.0, when i post the data to Login i get this error. > **The operation has been canceled** > **The read operation failed, see inner exception.** > at System.Net.Http.WinHttpResponseStream.d__18.MoveNext() > --- End of stack trace from previous location where exception was thrown --- > at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() > at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) > at System.Net.Http.HttpContent.d__48.MoveNext() > **Error while copying content to a stream.** > at System.Net.Http.WinHttpResponseStream.d__18.MoveNext() > --- End of stack trace from previous location where exception was thrown --- > at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() > at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) > at System.Net.Http.HttpContent.d__48.MoveNext() I don't know what else to provide to help you more. Please inform me. Thank you. 24362 area-System.Linq release/2.0: Fix handling of empty inputs to TakeLast (#24328) Fixes #24327 Port https://github.com/dotnet/corefx/pull/24328 to release/2.0.0 branch. 24363 area-System.Net WinHttpHandler not respecting case sensitivity of request `Connection` header (`Keep-Alive`) "The `WinHttpHandler` class (and I'm assuming WinHTTP) has an issue when sending the `Connection` HTTP header. The problem is that any requests sent through `WinHttpHandler` that are intended to be keep-alive always emit a header that reads `Connection: Keep-Alive` (note the casing of the header value). I am also looking for a workaround / alternatives, as I have no control over the server I am sending requests to (the server chokes on `Connection: Keep-Alive` but not `Connection: keep-alive`). Setup: - Dotnet Core 2.0.0 - Windows 10 Creators Update Notes: - Dotnet Core 2.0.0 on Ubuntu 16.04.2 LTS with `CurlHandler` does not exhibit this problem Unit Test: ``` public sealed class WinHttpHandlerTests { [Theory] [InlineData(""keep-alive"")] [InlineData(""KEEP-ALIVE"")] [InlineData(""Keep-Alive"")] [InlineData(""KEEP_ALIVE"")] public async Task ShouldRespectConnectionCaseSensitivity(string expectedHeaderValue) { using (var listener = new EchoingHttpListener()) using (var request = new HttpRequestMessage(HttpMethod.Get, $""http://localhost:{listener.Port}"")) { request.Headers.TryAddWithoutValidation(""Connection"", expectedHeaderValue); using (var client = new HttpClient(new WinHttpHandler())) using (var response = await client.SendAsync(request)) { var body = await response.Content.ReadAsStringAsync(); var actualHeaderValue = Regex.Match(body, ""Connection: (.*)\r\n"").Groups[1].Value; Assert.Equal(expectedHeaderValue, actualHeaderValue); } } } } internal sealed class EchoingHttpListener : IDisposable { private readonly CancellationTokenSource _cts = new CancellationTokenSource(); private readonly TcpListener _listener = new TcpListener(IPAddress.Any, 0); private readonly Task _listenTask; public EchoingHttpListener() { _listener.Start(); Port = ((IPEndPoint) _listener.LocalEndpoint).Port; var token = _cts.Token; _listenTask = Task.Run(async () => await Listen(token)); } private async Task Listen(CancellationToken token) { while (!token.IsCancellationRequested) { using (var client = await _listener.AcceptTcpClientAsync()) { var stream = client.GetStream(); var encoding = new UTF8Encoding(false); using (var reader = new StreamReader(stream, encoding, false, 2048, true)) using (var writer = new StreamWriter(stream, encoding, 2048, true)) { var request = await ReadRequestAsync(reader); await writer.WriteLineAsync(""HTTP/1.1 200 OK""); await writer.WriteLineAsync(""Connection: close""); await writer.WriteLineAsync(""Content-Type: text/plain; charset=utf-8""); await writer.WriteLineAsync($""Content-Length: {encoding.GetByteCount(request)}""); await writer.WriteLineAsync(); await writer.WriteAsync(request); } } } } private static async Task ReadRequestAsync(TextReader reader) { var sb = new StringBuilder(); string line; do { line = await reader.ReadLineAsync(); sb.AppendLine(line); } while (line != string.Empty); return sb.ToString(); } public int Port { get; } public void Dispose() { _listener.Stop(); _cts.Cancel(); try { _listenTask.Wait(); } catch { // ignored } _cts.Dispose(); } } ```" 24364 area-System.Diagnostics Static PerformanceCounterLib.GetPerformanceCounterLib is not thread-safe Outside of any locks GetPerformanceCounterLib both reads and writes to a normal. static `Dictionary<>`. https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.Process/src/System/Diagnostics/PerformanceCounterLib.cs#L74-L78 @@ -12960,7 +12960,7 @@ ID Area Title Description 24477 area-System.Net .Net WebClient.DownloadData api result in different behavior in some kind of project @treeicnliu commented on [Sat May 27 2017](https://github.com/dotnet/core/issues/664) I got different http packages by fiddler4 when i call the same fucntion WebClient.DownloadData(string uri) api with the same param uri on web proj and console proj. I found that webclient will auto decode uri in web proj,and keep the origin uri in console proj. is it a .net issue ? The uri below can't access,but it can be used for test http://objstore.qa.nt.ctripcorp.com/smartemailstorage/2017%5C4%5C6%5Cf809530b-0ded-49b4-8532-002c7ad73b41%5C%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4Java%E5%BC%80%E5%8F%91%E6%89%8B%E5%86%8C.pdf?AWSAccessKeyId=D1NNJCXLEF0O7JIB2U3L&Expires=1511426288&Signature=iJjQCreO6F7avac86Tg2S4e4Miw%3D --- @karelz commented on [Sun Jun 11 2017](https://github.com/dotnet/core/issues/664#issuecomment-307703162) Do both of your projects use the same .NET Core 2.0-preview1 version? The class is in `System.Net` namespace, if you still have troubles, please file it in CoreFX repo. --- @richlander commented on [Sat Jul 01 2017](https://github.com/dotnet/core/issues/664#issuecomment-312471536) @treeicnliu can you share the before and after of the return value in both cases. Can you share how this property is set in both cases? https://docs.microsoft.com/en-us/dotnet/api/system.net.webclient.encoding?view=netcore-2.0#System_Net_WebClient_Encoding --- @richlander commented on [Mon Jul 03 2017](https://github.com/dotnet/core/issues/664#issuecomment-312734798) @treeicnliu can you share a repro? I'm not quite sure what to test based on your description. --- @treeicnliu commented on [Fri Aug 11 2017](https://github.com/dotnet/core/issues/664#issuecomment-321776665) [test.docx](https://github.com/dotnet/core/files/1217516/test.docx) @richlander , i want to dowdload data from the url(with fixed signature) in .net web proj ,it doesn't work since the url has changed(broke the signature),but worked in console proj. see the file test.docx i uploaded. btw, both proj based on .net 4 framework. 24478 area-System.Drawing The type initializer for 'System.Drawing.KnownColors' threw an exception @lianggx commented on [Mon Apr 17 2017](https://github.com/dotnet/core/issues/594) debian.8.x.x64 if you throw The type initializer for 'System.Drawing.KnownColors' threw an exception to do:apt-get install libgdiplus I hope some one can fix it! --- @richlander commented on [Mon Jul 03 2017](https://github.com/dotnet/core/issues/594#issuecomment-312744247) @lianggx can you share a sample? --- @MeetOct commented on [Mon Jul 24 2017](https://github.com/dotnet/core/issues/594#issuecomment-317357160) i found this in docker images(microsoft/dotnet:1.1.2-runtime) when i used EPPlus.Core ``` The type initializer for 'System.Drawing.KnownColors' threw an exception. at System.Drawing.KnownColors.FromKnownColor(KnownColor kc) at System.Drawing.Color.get_White() ``` 24480 area-System.Data Toooooo slow interacting with MS sql server under Ubuntu 16.04 (both using EF or SQLDataReader) "@gorsand commented on [Fri Aug 11 2017](https://github.com/dotnet/core/issues/802) # Issue Title Toooooo slow interacting with MS sql server under Ubuntu 16.04 (either by EF or SQLDataReader) # General I have a web API application on dotnet under Core 2.0, Ubuntu 16.04, and an MS SQL server as data storage (totally < 1Gb of data there). Core i5 with 8 GB memory laptop, SSD 120 GB. Both the app and the server run on same machine (localhost). Under windows the same code requires about 2 sec (provided that the server is also running under windows). When loading a table of about 150 000 rows (about 10 columns) from sql server I get about 300 sec time! Smaller tables also loaded in such a big time (proportionally to the number of rows). All requests are sync (async versions never used). This happens for both the EF approach or with direct using of SQLDataReader, so the problem is NOT in the EF. As a workaround I simply run sqlcmd tool with the sql request as a separate process and parse its output as a cvs file. This takes about 2 sec (not 300 sec) for the same tables. MS SQL server was installed in a pretty ""normal"" way following the official instructions (https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-ubuntu). I use typical code for DB reading in C# by EF where-style request or just with SQLDataReader: using (var connection = new SqlConnection(DataConString)) { var command = new SqlCommand(query, connection); command.Connection.Open(); var reader = command.ExecuteReader(); while (reader.Read()) parse_the_line(reader); } My gues is that Core 2.0 handles the connection in some bad manner (eg. disconnects and connects on each row of table) or there's something in deserialization (though I think just any kind of deserialization woldn't be that bad) or maybe Core 2.0 switches to async methods under the hood (which in turn set a kind of timer and wakes on receiving each piece of data) or so on, but these are only my guesses. Maybe it's somehow connected with the well known MS SQL server bug (feature?) under linux: sqlcmd tool becomes toooo slow when the output is redirected to a file by '>' in the command line. (Note: I don't redirect the output when using sqlcmd tool as a workaround, just read the process output line by line.) So maybe Core 2.0 works with MS SQL server the same bad way as sqlcmd tool does when redirected to a file. But again these are only my guesses. **Upd:** The problem is on Core side, not with the SQL server. I just tried connecting to Windows-hosted server, the problem still remains (about 300 sec for 150K rows). Though the same code under Windows works fine (about 2-3 sec). --- @Ataden commented on [Sat Aug 12 2017](https://github.com/dotnet/core/issues/802#issuecomment-321964793) I confirm such an issue. On Windows EF Core and SQL library work great but on Linux they are way too slow. It is almost imposible to use them on Linux at all. --- @ayurjev commented on [Sat Aug 12 2017](https://github.com/dotnet/core/issues/802#issuecomment-321965303) I noticed the same slow performance while I was trying to use Core 2.0 on MacOS... It had been taking 40-50 seconds to execute simple query.... " -24481 area-System.Linq Strange generic expressions type check behavior "@chrbaeu commented on [Thu Aug 17 2017](https://github.com/dotnet/core/issues/856) The following code prints with netcoreapp1.0 and net462: ``` IsExpression: True IsExpression: True ``` And with netcoreapp2.0: ``` IsExpression: False IsExpression: True ``` I think netcoreapp2.0 should show the same results as the other. ``` namespace ExpressionBugTest { class Program { static void Main(string[] args) { Expression> predicate = x => x != null; Console.WriteLine(""IsExpression: "" + (predicate.GetType().GetGenericTypeDefinition() == typeof(Expression<>))); Console.WriteLine(""IsExpression: "" + (typeof(Expression>).GetGenericTypeDefinition() == typeof(Expression<>))); Console.ReadKey(); } } } ``` --- @svick commented on [Thu Aug 17 2017](https://github.com/dotnet/core/issues/856#issuecomment-323069527) As far as I can tell, the reason for this is that `predicate.GetType().GetGenericTypeDefinition()` returns the internal type [`Expression1`](https://github.com/dotnet/corefx/blob/43f78840284de81bfd1b5fe4deceedf95c673cf8/src/System.Linq.Expressions/src/System/Linq/Expressions/LambdaExpression.cs#L358), which inherits from `Expression` and was introduced as an optimization in https://github.com/dotnet/corefx/pull/13133. I'm not sure what is the best way to correctly check that a `Type` is an `Expression`. --- @stephentoub commented on [Thu Aug 17 2017](https://github.com/dotnet/core/issues/856#issuecomment-323075860) cc: @bartdesmet, @VSadov " +24481 area-System.Linq Strange generic expressions type check behavior "@chrbaeu commented on [Thu Aug 17 2017](https://github.com/dotnet/core/issues/856) The following code prints with netcoreapp1.0 and net461: ``` IsExpression: True IsExpression: True ``` And with netcoreapp2.0: ``` IsExpression: False IsExpression: True ``` I think netcoreapp2.0 should show the same results as the other. ``` namespace ExpressionBugTest { class Program { static void Main(string[] args) { Expression> predicate = x => x != null; Console.WriteLine(""IsExpression: "" + (predicate.GetType().GetGenericTypeDefinition() == typeof(Expression<>))); Console.WriteLine(""IsExpression: "" + (typeof(Expression>).GetGenericTypeDefinition() == typeof(Expression<>))); Console.ReadKey(); } } } ``` --- @svick commented on [Thu Aug 17 2017](https://github.com/dotnet/core/issues/856#issuecomment-323069527) As far as I can tell, the reason for this is that `predicate.GetType().GetGenericTypeDefinition()` returns the internal type [`Expression1`](https://github.com/dotnet/corefx/blob/43f78840284de81bfd1b5fe4deceedf95c673cf8/src/System.Linq.Expressions/src/System/Linq/Expressions/LambdaExpression.cs#L358), which inherits from `Expression` and was introduced as an optimization in https://github.com/dotnet/corefx/pull/13133. I'm not sure what is the best way to correctly check that a `Type` is an `Expression`. --- @stephentoub commented on [Thu Aug 17 2017](https://github.com/dotnet/core/issues/856#issuecomment-323075860) cc: @bartdesmet, @VSadov " 24482 area-System.Net HttpClient Coding problem "@tianmaoyu commented on [Mon Jul 31 2017](https://github.com/dotnet/core/issues/782) # HttpClient Coding problem Problems with Chinese Fonts # General ```c# var client = new HttpClient(); var multipartContent = new MultipartFormDataContent(""-------boundary""); var fileStream2 = File.Open(@""H:\开源的项目\新建文本文档.txt"", FileMode.Open); var streamContent2 = new StreamContent(fileStream2); multipartContent.Add(streamContent2, ""files"", ""新建文本文档.txt""); var output = new MemoryStream(); await multipartContent.CopyToAsync(output); output.Seek(0, SeekOrigin.Begin); string result = new StreamReader(output).ReadToEnd(); return result; ``` result string: ``` filename=""=?utf-8?B?5paw5bu65paH5pys5paH5qGjLnR4dA==?="" filename*=utf-8''%E6%96%B0%E5%BB%BA%E6%96%87%E6%9C%AC%E6%96%87%E6%A1%A3.txt ``` ``` ---------boundary Content-Disposition: form-data; name=files; filename=""=?utf-8?B?5paw5bu65paH5pys5paH5qGjLnR4dA==?=""; filename*=utf-8''%E6%96%B0%E5%BB%BA%E6%96%87%E6%9C%AC%E6%96%87%E6%A1%A3.txt ������ ---------boundary-- ``` @tianmaoyu commented on [Mon Jul 31 2017](https://github.com/dotnet/core/issues/782#issuecomment-318999778) ``` ---------boundary Content-Disposition: form-data; name=files; filename=""=?utf-8?B?5paw5bu65paH5pys5paH5qGjLnR4dA==?=""; filename*=utf-8''%E6%96%B0%E5%BB%BA%E6%96%87%E6%9C%AC%E6%96%87%E6%A1%A3.txt ������ ---------boundary-- ``` @karelz commented on [Mon Jul 31 2017](https://github.com/dotnet/core/issues/782#issuecomment-319013205) What is the key problem in your repro? Is it the Unicode file name? Is it the content of the file? Can you please clarify what is expected vs. current output? @tianmaoyu commented on [Mon Jul 31 2017](https://github.com/dotnet/core/issues/782#issuecomment-319125019) I want to use httpclient to upload files. When the name of the file is Chinese, the garbled code appears. I want to be able to upload Chinese files correctly. For example: filename=“新建文本文档.txt“ instead of: filename=""=?utf-8?B?5paw5bu65paH5pys5paH5qGjLnR4dA==?="" @tianmaoyu commented on [Mon Jul 31 2017](https://github.com/dotnet/core/issues/782#issuecomment-319131940) I want to encode the Content.header with UTF-8 and calculate the length instead of using DefaultHttpEncoding (Encoding.GetEncoding (28591)). The source code is: System.Net.Http.HttpRuleParser ```c# internal static readonly Encoding DefaultHttpEncoding = Encoding.GetEncoding(28591); ``` [EDIT] Changed code formatting for readability by @karelz" 24484 area-System.Security cannot import X509Certificate from file in .net core 2.0 "@xingzhougmu commented on [Sat Sep 02 2017](https://github.com/dotnet/core/issues/932) # Issue Title cannot import X509Certificate from file in .net core 2.0 # General The following code works perfectly in .net core 1.0, however, does not in .net core 2.0. `X509Certificate clientCert = new X509Certificate(Directory.GetCurrentDirectory() + ""/Certs/Production/CN_Certificate.crt"");` Under .net core 2.0, the exception is as below: > {Interop+AppleCrypto+AppleCommonCryptoCryptographicException: Unknown format in import. > at Interop.AppleCrypto.X509ImportCertificate(Byte[] bytes, X509ContentType contentType, SafePasswordHandle importPassword, SafeKeychainHandle keychain, Boolean exportable, SafeSecIdentityHandle& identityHandle) > at Internal.Cryptography.Pal.CertificatePal.FromBlob(Byte[] rawData, SafePasswordHandle password, X509KeyStorageFlags keyStorageFlags) > at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(String fileName, String password, X509KeyStorageFlags keyStorageFlags) > at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(String fileName) > at Test.Program.Main(String[] args) in /Users/xzhou/Projects/Test/Program.cs:line 40} > For some issues, you will get a quicker and better response if you file it at a more specific [.NET repo](https://github.com/dotnet/core/blob/master/Documentation/core-repos.md). For example, if the problem is with ASP.NET Core, you are encouraged to use the [aspnet/home repo](https://github.com/aspnet/home/issues). " 24485 area-System.Net SmtpClient throws NullReferenceException on Dispose() "@sibvic commented on [Wed Aug 30 2017](https://github.com/dotnet/core/issues/912) I'm using: netcoreapp2.0 The next code throws an exception: using (var client = new SmtpClient(""smtp.mail.ru"", 465)) { client.UseDefaultCredentials = false; client.Credentials = new NetworkCredential(Options.EmailSenderUser, Options.EmailSenderPassword); client.SendAsync(emailMessage, new object()); }//throws an exception here!!! NullReferenceException: Object reference not set to an instance of an object. System.Net.Mail.SmtpConnection.ReleaseConnection() System.Net.Mail.SmtpClient.Dispose(bool disposing) System.Net.Mail.SmtpClient.Dispose() --- @Petermarcu commented on [Wed Aug 30 2017](https://github.com/dotnet/core/issues/912#issuecomment-326046972) @Priya91, can you copy this over to corefx and maybe take a look? --- @shalaka198 commented on [Thu Sep 21 2017](https://github.com/dotnet/core/issues/912#issuecomment-331329224) Is there any update on this issue? I am facing the same. --- @msvprogs commented on [Sun Sep 24 2017](https://github.com/dotnet/core/issues/912#issuecomment-331741350) +1, I have the same problem. OS CentOS 7, .NET Core 2.0 " @@ -12997,7 +12997,7 @@ ID Area Title Description 24541 area-System.Net Add CipherSuite property to HttpClientHandler It's really nice to have opportunity to change CipherSuite per connection, when HttpClientHandler is using. At this time there is only possibility to define SslProtocol. I have read issues and this topic appeared few times. ## **Proposed API** ``` namespace System.Net.Http public class HttpClientHandler: HttpMessageHandler { // Other properties... public CipherSuite CipherSuite { get; } } ``` ## **Example Usage** ``` var handler = new HttpClientHandler { CipherSuite = CipherSuite.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA } ``` This API review is strongly connected with: https://github.com/dotnet/corefx/issues/21577 24542 area-System.Diagnostics System.Diagnostics.Process.StartTime can be improved in Windows When Process instance is created using Process.GetProcesses() , it calls GetProcessInfos method inside. In WIndows it calls to internal [NtQuerySystemInformation](https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.Process/src/System/Diagnostics/ProcessManager.Win32.cs) which returns process creation time. [ProcessInfo](https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.Process/src/System/Diagnostics/ProcessInfo.cs) can be initialized using this value and pass it into Process. This allows getting StartTime property without any exception thrown. 24547 area-System.Threading Can something be done about the Microsoft.Tpl.Dataflow package? "[The `Microsoft.Tpl.Dataflow` package](https://www.nuget.org/packages/Microsoft.Tpl.Dataflow/) is outdated and generally shouldn't be used anymore. The replacement is [the `System.Threading.Tasks.Dataflow` package](https://www.nuget.org/packages/System.Threading.Tasks.Dataflow/). But people keep using the old package (see e.g. https://github.com/dotnet/corefx/issues/202#issuecomment-335470737), not knowing they should switch to the new one. Is there something that can be done to help those people? Some options I considered: 1. Add an analyzer to [dotnet/platform-compat](https://github.com/dotnet/platform-compat) that will consider `Microsoft.Tpl.Dataflow` deprecated. 2. Release a new version of `Microsoft.Tpl.Dataflow` that will contain no code of its own and will ""redirect"" to `System.Threading.Tasks.Dataflow` by having a dependency on it. (And then keep releasing a new version every time `System.Threading.Tasks.Dataflow` updates?) cc: @stephentoub " -24548 area-Infrastructure Issues in CoreFx build and opening particular solution in VS 2017 community edition. "I am seeing following issue in build and opening System.Runtime.Extension solution in VS 2017 Community edition IDE. About three (plus) weeks back these issues were not seen. Last weekend, I sync'd my fork with latest code in dotnet/master and since then these issues have been happening consistently. Not only on my branch for #22409 but also on the master branch in my fork. I also recreated my local git repo, but no luck. Issues are, a. On firing ""build.cmd"" / ""build-managed.cmd"" execution is stuck at below line seen on console for about 10 - 15 mins and, at that time network activity kicks in. I see download at about 300kBps from the server ""blob.byaprdstr06a.store.core.windows.net"". Roughly 50MB of stuff is downloaded and then the build proceeds. The line on console after which download begins is as below: ```D:\WinCPP\corefx\packages\Microsoft.TargetingPack.NETFramework.v4.6.1\1.0.1\lib\net462\sysglobl.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> D:\WinCPP\corefx\bin\AnyOS.AnyCPU.Release\netfx\netcoreapp\sysglobl.dll``` b. On opening System.Runtime.Extension in VS 2017 Community edition IDE, it gets stuck at ""Preparing Solution"" for similar duration (10 - 15 mins). In this case too, network activity kicks in and devenv.exe appears to be downloading data from same server ""blob.byaprdstr06a.store.core.windows.net"". Alt+Tab into VS 2017 Community IDE at that point gives a pop up at lower right saying VS is busy and information has been sent to ""Visual Studio Experience Improvement Program""... Both the above issues repeat on each run of build command or each time the solution is opened in VS IDE. Primarily the problem is that 50MB per build (or even on opening VS) translates to 500 MB if I were to build / open VS for about 10 times during one coding session; a number that can be easily exceeded. Secondly, the 10-15 min delay holds up build / opening VS IDE. Kindly help. I am wondering if the download is not able to write some sort of "".complete"" file because of which the entire download is repeated every time I run build command or open the solution? This could very well be an issue with my setup that got introduced after I rebased about a month's data from dotnet/master. @karelz @weshaggard created this issue as per our discussion on gitter." +24548 area-Infrastructure Issues in CoreFx build and opening particular solution in VS 2017 community edition. "I am seeing following issue in build and opening System.Runtime.Extension solution in VS 2017 Community edition IDE. About three (plus) weeks back these issues were not seen. Last weekend, I sync'd my fork with latest code in dotnet/master and since then these issues have been happening consistently. Not only on my branch for #22409 but also on the master branch in my fork. I also recreated my local git repo, but no luck. Issues are, a. On firing ""build.cmd"" / ""build-managed.cmd"" execution is stuck at below line seen on console for about 10 - 15 mins and, at that time network activity kicks in. I see download at about 300kBps from the server ""blob.byaprdstr06a.store.core.windows.net"". Roughly 50MB of stuff is downloaded and then the build proceeds. The line on console after which download begins is as below: ```D:\WinCPP\corefx\packages\Microsoft.TargetingPack.NETFramework.v4.6.1\1.0.1\lib\net461\sysglobl.dll (Microsoft.TargetingPack.NETFramework.v4.6.1.1.0.1) -> D:\WinCPP\corefx\bin\AnyOS.AnyCPU.Release\netfx\netcoreapp\sysglobl.dll``` b. On opening System.Runtime.Extension in VS 2017 Community edition IDE, it gets stuck at ""Preparing Solution"" for similar duration (10 - 15 mins). In this case too, network activity kicks in and devenv.exe appears to be downloading data from same server ""blob.byaprdstr06a.store.core.windows.net"". Alt+Tab into VS 2017 Community IDE at that point gives a pop up at lower right saying VS is busy and information has been sent to ""Visual Studio Experience Improvement Program""... Both the above issues repeat on each run of build command or each time the solution is opened in VS IDE. Primarily the problem is that 50MB per build (or even on opening VS) translates to 500 MB if I were to build / open VS for about 10 times during one coding session; a number that can be easily exceeded. Secondly, the 10-15 min delay holds up build / opening VS IDE. Kindly help. I am wondering if the download is not able to write some sort of "".complete"" file because of which the entire download is repeated every time I run build command or open the solution? This could very well be an issue with my setup that got introduced after I rebased about a month's data from dotnet/master. @karelz @weshaggard created this issue as per our discussion on gitter." 24550 area-System.Net HttpListener cannot recognize Websocket request from firefox "When establishing websocket connection, firefox sends such `Connection` header: `Connection: keep-alive, Upgrade` and `System.Net.HttpListener` can't recognize the `Upgrade` It can be tested with inserting this test case ```csharp [InlineData(""Connection: keep-alive, Upgrade\r\nUpgrade: websocket"", true)] ``` to the `IsWebSocketRequest_GetProperty_ReturnsExpected` test of `HttpListenerRequestTests.cs`" 24551 area-Infrastructure Need to build new 2.0.x Microsoft.NETCore.Platforms package We've made changes to the RID graph in the release/2.0.0 servicing branch. Specifically we [added support for RHEL 6](https://github.com/dotnet/corefx/pull/22970). However, we aren't producing a `2.0.x` version of the `Microsoft.NETCore.Platforms` package that contains these changes. In order to fully support RHEL 6, we need a new Platforms package with these changes in it. @weshaggard @Petermarcu @ericstj 24552 area-System.Security [debian9] libssl1.0.0 and libssl1.0.2 can end up loaded in same process causing crashes "On Debian 9, curl depends on libssl1.0.2. When the libssl1.0.0 and libssl1.0.2 packages are both installed on a machine, `System.Security.Cryptography.Native.Openssl` will preferentially load `libssl.so.1.0.0`. `System.Net.Http.Native`, however, loads `libcurl.so`, which in turn loads `libssl.so.1.0.2`. ### Repro Some combination (as yet undetermined; the repro is ""open PowerShell 6.0.0-beta.8, wait a while"") of interacting with the members of these assemblies, or of passing SSL contexts between System.Net.Http and System.Security.Cryptography.Openssl will trigger a segmentation violation and subsequent termination. ### Dependency Graph ``` * System.Net.Http.Native * libcurl.so.4 * libssl.so.1.0.2 * System.Security.Cryptography.Native.Openssl * libssl.so.1.0.0 ``` ### Resolution Not sure. * Probe for libssl symbols, fall back to dlopen if none are found? * Prefer `libssl.so.1.0.2`?" From b238995623cd419ca484362041b450ba47c8dece Mon Sep 17 00:00:00 2001 From: Eric StJohn Date: Fri, 22 Dec 2023 14:18:43 -0800 Subject: [PATCH 14/18] Make NETFRAMEWORK ifdef versionless --- .../Attributes/BenchmarkTheoryAttribute.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Microsoft.ML.TestFramework/Attributes/BenchmarkTheoryAttribute.cs b/test/Microsoft.ML.TestFramework/Attributes/BenchmarkTheoryAttribute.cs index 018748e18c..28d58bd829 100644 --- a/test/Microsoft.ML.TestFramework/Attributes/BenchmarkTheoryAttribute.cs +++ b/test/Microsoft.ML.TestFramework/Attributes/BenchmarkTheoryAttribute.cs @@ -12,7 +12,7 @@ public sealed class BenchmarkTheoryAttribute : EnvironmentSpecificTheoryAttribut #if DEBUG private const string SkipMessage = "BenchmarkDotNet does not allow running the benchmarks in Debug, so this test is disabled for DEBUG"; private readonly bool _isEnvironmentSupported = false; -#elif net462 +#elif NETFRAMEWORK private const string SkipMessage = "We are currently not running Benchmarks for FullFramework"; private readonly bool _isEnvironmentSupported = false; #else From 82699c7895033ac2a3d0aa6414f845595ec48714 Mon Sep 17 00:00:00 2001 From: Eric StJohn Date: Tue, 2 Jan 2024 16:48:15 -0800 Subject: [PATCH 15/18] Only use semi-colons for NoWarn --- test/Directory.Build.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Directory.Build.props b/test/Directory.Build.props index eefaafc559..196b98eacb 100644 --- a/test/Directory.Build.props +++ b/test/Directory.Build.props @@ -18,7 +18,7 @@ CS1591: Missing XML comment for publicly visible type or member 'Type_or_Member' CS1712: Type parameter 'parameter' has no matching typeparam tag in the XML comment on 'Type_or_Member' (but other type parameters do) --> - $(NoWarn),1573,1591,1712 + $(NoWarn);1573;1591;1712 From c55b2be2badf7b2c2223467c280acda5769df8cb Mon Sep 17 00:00:00 2001 From: Eric StJohn Date: Fri, 22 Dec 2023 12:12:12 -0800 Subject: [PATCH 16/18] Fix assert by only accessing idx (#6924) Asserting on `_rowCount < Utils.Size(_valueBoundaries)` was catching a case where `_rowCount`'s update was reordered before `_valueBoundaries` This was unnecessary, since this method doesn't need to use `_rowCount`. Instead, make the asserts use only `idx` which will be maintained consistent with the waiter logic in this cache. Ensure we only ever use `_rowCount` from the caching thread, so write reordering won't matter. --- src/Microsoft.ML.Data/DataView/CacheDataView.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Microsoft.ML.Data/DataView/CacheDataView.cs b/src/Microsoft.ML.Data/DataView/CacheDataView.cs index 4c2491e09a..e6c8755edf 100644 --- a/src/Microsoft.ML.Data/DataView/CacheDataView.cs +++ b/src/Microsoft.ML.Data/DataView/CacheDataView.cs @@ -1320,7 +1320,7 @@ public virtual void Freeze() private sealed class ImplVec : ColumnCache> { - // The number of rows cached. + // The number of rows cached. Only to be accesssed by the Caching thread. private int _rowCount; // For a given row [r], elements at [r] and [r+1] specify the inclusive // and exclusive range of values for the two big arrays. In the case @@ -1384,10 +1384,10 @@ public override void CacheCurrent() public override void Fetch(int idx, ref VBuffer value) { - Ctx.Assert(0 <= idx && idx < _rowCount); - Ctx.Assert(_rowCount < Utils.Size(_indexBoundaries)); - Ctx.Assert(_rowCount < Utils.Size(_valueBoundaries)); - Ctx.Assert(_uniformLength > 0 || _rowCount <= Utils.Size(_lengths)); + Ctx.Assert(0 <= idx); + Ctx.Assert((idx + 1) < Utils.Size(_indexBoundaries)); + Ctx.Assert((idx + 1) < Utils.Size(_valueBoundaries)); + Ctx.Assert(_uniformLength > 0 || idx < Utils.Size(_lengths)); Ctx.Assert(_indexBoundaries[idx + 1] - _indexBoundaries[idx] <= int.MaxValue); int indexCount = (int)(_indexBoundaries[idx + 1] - _indexBoundaries[idx]); From 7bb71bb33855ac1925f8db4b7da6a63b6b1232aa Mon Sep 17 00:00:00 2001 From: Eric StJohn Date: Thu, 21 Dec 2023 08:37:50 -0800 Subject: [PATCH 17/18] Don't include the SDK in our helix payload (#6918) * Don't include the SDK in our helix payload I noticed that the tests included the latest SDK - including the host - in our helix payloads. This is a large amount of unnecessary downloads and it also makes it so we use the latest host on the older frameworks which can fail when the latest host drops support for distros. Since our tests shouldn't need the full CLI, remove this from our helix payloads. We'll instead get just the runtime we need through `AdditionalDotNetPackage` * Place Helix downloaded runtime on the PATH Helix only sets the path when the CLI is included, however we don't need the CLI. --- build/ci/send-to-helix.yml | 2 -- eng/helix.proj | 3 +++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/build/ci/send-to-helix.yml b/build/ci/send-to-helix.yml index 93f83e1053..d12ddc0d4e 100644 --- a/build/ci/send-to-helix.yml +++ b/build/ci/send-to-helix.yml @@ -11,7 +11,6 @@ parameters: WarnAsError: '' TestTargetFramework: '' HelixConfiguration: '' # optional -- additional property attached to a job - IncludeDotNetCli: true # optional -- true will download a version of the .NET CLI onto the Helix machine as a correlation payload; requires DotNetCliPackageType and DotNetCliVersion EnableXUnitReporter: true # optional -- true enables XUnit result reporting to Mission Control WaitForWorkItemCompletion: true # optional -- true will make the task wait until work items have been completed and fail the build if work items fail. False is "fire and forget." HelixBaseUri: 'https://helix.dot.net' # optional -- sets the Helix API base URI (allows targeting int) @@ -34,7 +33,6 @@ steps: /p:HelixBuild=${{ parameters.HelixBuild }} /p:HelixConfiguration="${{ parameters.HelixConfiguration }}" /p:HelixAccessToken="${{ parameters.HelixAccessToken }}" - /p:IncludeDotNetCli=${{ parameters.IncludeDotNetCli }} /p:EnableXUnitReporter=${{ parameters.EnableXUnitReporter }} /p:WaitForWorkItemCompletion=${{ parameters.WaitForWorkItemCompletion }} /p:HelixBaseUri=${{ parameters.HelixBaseUri }} diff --git a/eng/helix.proj b/eng/helix.proj index b68de50cd6..473774667d 100644 --- a/eng/helix.proj +++ b/eng/helix.proj @@ -99,6 +99,9 @@ $(HelixPreCommands);export ML_TEST_DATADIR=$HELIX_CORRELATION_PAYLOAD;export MICROSOFTML_RESOURCE_PATH=$HELIX_WORKITEM_ROOT;sudo chmod -R 777 $HELIX_WORKITEM_ROOT;sudo chown -R $USER $HELIX_WORKITEM_ROOT $(HelixPreCommands);set ML_TEST_DATADIR=%HELIX_CORRELATION_PAYLOAD%;set MICROSOFTML_RESOURCE_PATH=%HELIX_WORKITEM_ROOT% + $(HelixPreCommands);export PATH=$HELIX_CORRELATION_PAYLOAD/$(DotNetCliDestination):$PATH + $(HelixPreCommands);set PATH=%HELIX_CORRELATION_PAYLOAD%\$(DotNetCliDestination)%3B%PATH% + $(HelixPreCommands);export LD_LIBRARY_PATH=/opt/homebrew/opt/mono-libgdiplus/lib; $(HelixPreCommands);sudo apt update;sudo apt-get install libomp-dev libomp5 -y From df6f817db26edd66fafdfb9ff3c52bf88a29aff2 Mon Sep 17 00:00:00 2001 From: Eric StJohn Date: Fri, 22 Dec 2023 12:18:29 -0800 Subject: [PATCH 18/18] Make double assertions compare with tolerance instead of precision (#6923) Precision might cause small differences to round to a different number. Instead compare with a tolerance which is not sensitive to rounding. --- .../UnitTests/TestEntryPoints.cs | 20 +++--- .../UnitTests/TestLoss.cs | 6 +- .../UnitTests/TestVBuffer.cs | 2 +- .../UnitTests.cs | 18 +++--- .../MetricTest.cs | 22 +++---- .../UtilityTest.cs | 8 +-- .../IntrospectiveTraining.cs | 4 +- test/Microsoft.ML.IntegrationTests/ONNX.cs | 4 +- .../Microsoft.ML.IntegrationTests/Training.cs | 2 +- .../OnnxTransformTests.cs | 6 +- .../TestGamPublicInterfaces.cs | 2 +- .../TestPredictors.cs | 6 +- .../AnomalyDetectionTests.cs | 4 +- test/Microsoft.ML.Tests/EvaluateTests.cs | 2 +- .../LearningRateSchedulerTest.cs | 2 +- .../Scenarios/ClusteringTests.cs | 2 +- .../Scenarios/IrisPlantClassificationTests.cs | 28 ++++---- ...PlantClassificationWithStringLabelTests.cs | 28 ++++---- .../IrisPlantClassificationTests.cs | 26 ++++---- .../TensorflowTests.cs | 22 +++---- .../MatrixFactorizationTests.cs | 28 ++++---- .../TrainerEstimators/SdcaTests.cs | 16 ++--- .../TreeEnsembleFeaturizerTest.cs | 8 +-- .../TrainerEstimators/TreeEstimators.cs | 16 ++--- .../Transformers/NormalizerTests.cs | 64 +++++++++---------- .../TimeSeriesDirectApi.cs | 54 ++++++++-------- .../TimeSeriesSimpleApiTests.cs | 8 +-- 27 files changed, 204 insertions(+), 204 deletions(-) diff --git a/test/Microsoft.ML.Core.Tests/UnitTests/TestEntryPoints.cs b/test/Microsoft.ML.Core.Tests/UnitTests/TestEntryPoints.cs index b927df44c2..80acaf5d70 100644 --- a/test/Microsoft.ML.Core.Tests/UnitTests/TestEntryPoints.cs +++ b/test/Microsoft.ML.Core.Tests/UnitTests/TestEntryPoints.cs @@ -94,7 +94,7 @@ public void EntryPointTrainTestSplit() int testRows = CountRows(splitOutput.TestData); Assert.Equal(totalRows, trainRows + testRows); - Assert.Equal(0.9, (double)trainRows / totalRows, 1); + Assert.Equal(0.9, (double)trainRows / totalRows, 0.1); } private static int CountRows(IDataView dataView) @@ -5005,7 +5005,7 @@ public void TestSimpleTrainExperiment() Assert.True(b); double auc = 0; getter(ref auc); - Assert.Equal(0.93, auc, 2); + Assert.Equal(0.93, auc, 0.01); b = cursor.MoveNext(); Assert.False(b); } @@ -5210,7 +5210,7 @@ public void TestCrossValidationMacro() if (w == 1) Assert.Equal(1.585, stdev, .001); else - Assert.Equal(1.39, stdev, 2); + Assert.Equal(1.39, stdev, 0.01); isWeightedGetter(ref isWeighted); Assert.True(isWeighted == (w == 1)); } @@ -5379,7 +5379,7 @@ public void TestCrossValidationMacroWithMulticlass() getter(ref stdev); foldGetter(ref fold); Assert.True(ReadOnlyMemoryUtils.EqualsStr("Standard Deviation", fold)); - Assert.Equal(0.024809923969586353, stdev, 3); + Assert.Equal(0.024809923969586353, stdev, 0.001); double sum = 0; double val = 0; @@ -5788,7 +5788,7 @@ public void TestCrossValidationMacroWithStratification() getter(ref stdev); foldGetter(ref fold); Assert.True(ReadOnlyMemoryUtils.EqualsStr("Standard Deviation", fold)); - Assert.Equal(0.02582, stdev, 5); + Assert.Equal(0.02582, stdev, 0.00001); double sum = 0; double val = 0; @@ -6089,9 +6089,9 @@ public void TestCrossValidationMacroWithNonDefaultNames() foldGetter(ref fold); Assert.True(ReadOnlyMemoryUtils.EqualsStr("Standard Deviation", fold)); var stdevValues = stdev.GetValues(); - Assert.Equal(0.02462, stdevValues[0], 5); - Assert.Equal(0.02763, stdevValues[1], 5); - Assert.Equal(0.03273, stdevValues[2], 5); + Assert.Equal(0.02462, stdevValues[0], 0.00001); + Assert.Equal(0.02763, stdevValues[1], 0.00001); + Assert.Equal(0.03273, stdevValues[2], 0.00001); var sumBldr = new BufferBuilder(R8Adder.Instance); sumBldr.Reset(avg.Length, true); @@ -6291,7 +6291,7 @@ public void TestOvaMacro() Assert.True(b); double acc = 0; getter(ref acc); - Assert.Equal(0.96, acc, 2); + Assert.Equal(0.96, acc, 0.01); b = cursor.MoveNext(); Assert.False(b); } @@ -6463,7 +6463,7 @@ public void TestOvaMacroWithUncalibratedLearner() Assert.True(b); double acc = 0; getter(ref acc); - Assert.Equal(0.71, acc, 2); + Assert.Equal(0.71, acc, 0.01); b = cursor.MoveNext(); Assert.False(b); } diff --git a/test/Microsoft.ML.Core.Tests/UnitTests/TestLoss.cs b/test/Microsoft.ML.Core.Tests/UnitTests/TestLoss.cs index d7428dbed3..868c1f679c 100644 --- a/test/Microsoft.ML.Core.Tests/UnitTests/TestLoss.cs +++ b/test/Microsoft.ML.Core.Tests/UnitTests/TestLoss.cs @@ -39,8 +39,8 @@ private void TestHelper(IScalarLoss lossFunc, double label, double output, doubl { Double loss = lossFunc.Loss((float)output, (float)label); float derivative = lossFunc.Derivative((float)output, (float)label); - Assert.Equal(expectedLoss, loss, 5); - Assert.Equal(expectedUpdate, -derivative, 5); + Assert.Equal(expectedLoss, loss, 0.00001); + Assert.Equal(expectedUpdate, -derivative, 0.00001); if (differentiable) { @@ -48,7 +48,7 @@ private void TestHelper(IScalarLoss lossFunc, double label, double output, doubl // Use a simple finite difference method to see if it's in the right ballpark. float almostOutput = Math.Max((float)output * (1 + _epsilon), (float)output + _epsilon); Double almostLoss = lossFunc.Loss(almostOutput, (float)label); - Assert.Equal((almostLoss - loss) / (almostOutput - output), derivative, 1); + Assert.Equal((almostLoss - loss) / (almostOutput - output), derivative, 0.1); } } diff --git a/test/Microsoft.ML.Core.Tests/UnitTests/TestVBuffer.cs b/test/Microsoft.ML.Core.Tests/UnitTests/TestVBuffer.cs index be2af7f5a4..c12786125c 100644 --- a/test/Microsoft.ML.Core.Tests/UnitTests/TestVBuffer.cs +++ b/test/Microsoft.ML.Core.Tests/UnitTests/TestVBuffer.cs @@ -293,7 +293,7 @@ public void TestSparsifyNormalize(int startRange, bool normalize, float[] expect var actualValues = a.GetValues().ToArray(); Assert.Equal(expectedValues.Length, actualValues.Length); for (int i = 0; i < expectedValues.Length; i++) - Assert.Equal(expectedValues[i], actualValues[i], precision: 6); + Assert.Equal(expectedValues[i], actualValues[i], 0.000001); } /// diff --git a/test/Microsoft.ML.CpuMath.UnitTests/UnitTests.cs b/test/Microsoft.ML.CpuMath.UnitTests/UnitTests.cs index cbae22eb1e..edf99ef5c9 100644 --- a/test/Microsoft.ML.CpuMath.UnitTests/UnitTests.cs +++ b/test/Microsoft.ML.CpuMath.UnitTests/UnitTests.cs @@ -645,7 +645,7 @@ public void SumTest(string mode, string test, Dictionary environ } var actual = CpuMathUtils.Sum(src); - Assert.Equal((double)expected, (double)actual, 2); + Assert.Equal((double)expected, (double)actual, 0.01); return RemoteExecutor.SuccessExitCode; }, mode, test, options); } @@ -668,7 +668,7 @@ public void SumSqUTest(string mode, string test, Dictionary envi } var actual = CpuMathUtils.SumSq(src); - Assert.Equal((double)expected, (double)actual, 2); + Assert.Equal((double)expected, (double)actual, 0.01); return RemoteExecutor.SuccessExitCode; }, mode, test, options); } @@ -693,7 +693,7 @@ public void SumSqDiffUTest(string mode, string test, string scale, Dictionary env } var actual = CpuMathUtils.SumAbs(src); - Assert.Equal((double)expected, (double)actual, 2); + Assert.Equal((double)expected, (double)actual, 0.01); return RemoteExecutor.SuccessExitCode; }, mode, test, options); } @@ -741,7 +741,7 @@ public void SumAbsDiffUTest(string mode, string test, string scale, Dictionary env } } - Assert.Equal((double)expected, (double)actual, 2); + Assert.Equal((double)expected, (double)actual, 0.01); return RemoteExecutor.SuccessExitCode; }, mode, test, options); } @@ -797,7 +797,7 @@ public void MaxAbsDiffUTest(string mode, string test, string scale, Dictionary enviro } var actual = CpuMathUtils.DotProductDense(src, dst, dst.Length); - Assert.Equal((double)expected, (double)actual, 1); + Assert.Equal((double)expected, (double)actual, 0.1); return RemoteExecutor.SuccessExitCode; }, mode, test, options); } @@ -861,7 +861,7 @@ public void DotSUTest(string mode, string test, Dictionary envir } var actual = CpuMathUtils.DotProductSparse(src, dst, idx, limit); - Assert.Equal((double)expected, (double)actual, 2); + Assert.Equal((double)expected, (double)actual, 0.01); return RemoteExecutor.SuccessExitCode; }, mode, test, options); } diff --git a/test/Microsoft.ML.Fairlearn.Tests/MetricTest.cs b/test/Microsoft.ML.Fairlearn.Tests/MetricTest.cs index a51c8ae06f..26e5283342 100644 --- a/test/Microsoft.ML.Fairlearn.Tests/MetricTest.cs +++ b/test/Microsoft.ML.Fairlearn.Tests/MetricTest.cs @@ -38,17 +38,17 @@ public void RegressionMetricTest() { RegressionGroupMetric regressionMetric = mlContext.Fairlearn().Metric.Regression(eval: data, labelColumn: "Price", scoreColumn: "Score", sensitiveFeatureColumn: "Gender"); var metricByGroup = regressionMetric.ByGroup(); - Assert.Equal(-2.30578, Convert.ToSingle(metricByGroup["RSquared"][0]), 3); - Assert.Equal(-2039.81453, Convert.ToSingle(metricByGroup["RSquared"][1]), 3); - Assert.Equal(1.00000, Convert.ToSingle(metricByGroup["RMS"][0]), 3); - Assert.Equal(15.811388, Convert.ToSingle(metricByGroup["RMS"][1]), 3); + Assert.Equal(-2.30578, Convert.ToSingle(metricByGroup["RSquared"][0]), 0.001); + Assert.Equal(-2039.81453, Convert.ToSingle(metricByGroup["RSquared"][1]), 0.001); + Assert.Equal(1.00000, Convert.ToSingle(metricByGroup["RMS"][0]), 0.001); + Assert.Equal(15.811388, Convert.ToSingle(metricByGroup["RMS"][1]), 0.001); metricByGroup.Description(); Dictionary metricOverall = regressionMetric.Overall(); - Assert.Equal(125.5, metricOverall["MSE"], 1); - Assert.Equal(11.202678, metricOverall["RMS"], 4); + Assert.Equal(125.5, metricOverall["MSE"], 0.1); + Assert.Equal(11.202678, metricOverall["RMS"], 0.0001); Dictionary diff = regressionMetric.DifferenceBetweenGroups(); - Assert.Equal(14.81138, diff["RMS"], 4); - Assert.Equal(2037.5, diff["RSquared"], 1); + Assert.Equal(14.81138, diff["RMS"], 0.0001); + Assert.Equal(2037.5, diff["RSquared"], 0.1); } @@ -70,10 +70,10 @@ public void BinaryClassificationMetricTest() BinaryGroupMetric metrics = mlContext.Fairlearn().Metric.BinaryClassification(eval: df, labelColumn: "label", predictedColumn: "PredictedLabel", sensitiveFeatureColumn: "group_id"); var metricByGroup = metrics.ByGroup(); - Assert.Equal(0.8, Convert.ToSingle(metricByGroup["Accuracy"][0]), 1); - Assert.Equal(0.6, Convert.ToSingle(metricByGroup["Accuracy"][1]), 1); + Assert.Equal(0.8, Convert.ToSingle(metricByGroup["Accuracy"][0]), 0.1); + Assert.Equal(0.6, Convert.ToSingle(metricByGroup["Accuracy"][1]), 0.1); var metricOverall = metrics.Overall(); - Assert.Equal(0.7, Convert.ToSingle(metricOverall["Accuracy"]), 1); + Assert.Equal(0.7, Convert.ToSingle(metricOverall["Accuracy"]), 0.1); } } } diff --git a/test/Microsoft.ML.Fairlearn.Tests/UtilityTest.cs b/test/Microsoft.ML.Fairlearn.Tests/UtilityTest.cs index 3a0354755d..faca33296e 100644 --- a/test/Microsoft.ML.Fairlearn.Tests/UtilityTest.cs +++ b/test/Microsoft.ML.Fairlearn.Tests/UtilityTest.cs @@ -31,10 +31,10 @@ public void DemographyParityTest() PrimitiveDataFrameColumn ypred = new PrimitiveDataFrameColumn("pred", fl); var gSinged = dp.Gamma(ypred); - Assert.Equal(0.1, Convert.ToSingle(gSinged["value"][0]), 1); - Assert.Equal(-0.1, Convert.ToSingle(gSinged["value"][1]), 1); - Assert.Equal(-0.1, Convert.ToSingle(gSinged["value"][2]), 1); - Assert.Equal(0.1, Convert.ToSingle(gSinged["value"][3]), 1); + Assert.Equal(0.1, Convert.ToSingle(gSinged["value"][0]), 0.1); + Assert.Equal(-0.1, Convert.ToSingle(gSinged["value"][1]), 0.1); + Assert.Equal(-0.1, Convert.ToSingle(gSinged["value"][2]), 0.1); + Assert.Equal(0.1, Convert.ToSingle(gSinged["value"][3]), 0.1); } } } diff --git a/test/Microsoft.ML.IntegrationTests/IntrospectiveTraining.cs b/test/Microsoft.ML.IntegrationTests/IntrospectiveTraining.cs index 16d0bfff76..ddbf66ba01 100644 --- a/test/Microsoft.ML.IntegrationTests/IntrospectiveTraining.cs +++ b/test/Microsoft.ML.IntegrationTests/IntrospectiveTraining.cs @@ -119,8 +119,8 @@ public void InspectFastTreeModelParameters() var expectedThresholds = new float[] { 0.0911167f, 0.06509889f, 0.019873254f, 0.0361835f }; for (int i = 0; i < finalTree.NumberOfNodes; ++i) { - Assert.Equal(expectedSplitGains[i], finalTree.SplitGains[i], 6); - Assert.Equal((double)expectedThresholds[i], (double)finalTree.NumericalSplitThresholds[i], 6); + Assert.Equal(expectedSplitGains[i], finalTree.SplitGains[i], 0.000001); + Assert.Equal((double)expectedThresholds[i], (double)finalTree.NumericalSplitThresholds[i], 0.000001); } } diff --git a/test/Microsoft.ML.IntegrationTests/ONNX.cs b/test/Microsoft.ML.IntegrationTests/ONNX.cs index 3a598b8c21..fea40744d1 100644 --- a/test/Microsoft.ML.IntegrationTests/ONNX.cs +++ b/test/Microsoft.ML.IntegrationTests/ONNX.cs @@ -71,7 +71,7 @@ public void SaveOnnxModelLoadAndScoreFastTree() var originalPrediction = originalPredictionEngine.Predict(row); var onnxPrediction = onnxPredictionEngine.Predict(row); // Check that the predictions are identical. - Assert.Equal(originalPrediction.Score, onnxPrediction.Score[0], precision: 4); + Assert.Equal(originalPrediction.Score, onnxPrediction.Score[0], 0.0001); } } @@ -170,7 +170,7 @@ public void SaveOnnxModelLoadAndScoreSDCA() var originalPrediction = originalPredictionEngine.Predict(row); var onnxPrediction = onnxPredictionEngine.Predict(row); // Check that the predictions are identical. - Assert.Equal(originalPrediction.Score, onnxPrediction.Score[0], precision: 4); + Assert.Equal(originalPrediction.Score, onnxPrediction.Score[0], 0.0001); } } } diff --git a/test/Microsoft.ML.IntegrationTests/Training.cs b/test/Microsoft.ML.IntegrationTests/Training.cs index 51f3338110..49783f1d86 100644 --- a/test/Microsoft.ML.IntegrationTests/Training.cs +++ b/test/Microsoft.ML.IntegrationTests/Training.cs @@ -498,7 +498,7 @@ public void MetacomponentsFunctionWithKeyHandling() // Evaluate the model. var binaryClassificationMetrics = mlContext.MulticlassClassification.Evaluate(binaryClassificationPredictions); - Assert.Equal(0.4367, binaryClassificationMetrics.LogLoss, 4); + Assert.Equal(0.4367, binaryClassificationMetrics.LogLoss, 0.0001); } } } diff --git a/test/Microsoft.ML.OnnxTransformerTest/OnnxTransformTests.cs b/test/Microsoft.ML.OnnxTransformerTest/OnnxTransformTests.cs index e69fffb63a..8d6646fe39 100644 --- a/test/Microsoft.ML.OnnxTransformerTest/OnnxTransformTests.cs +++ b/test/Microsoft.ML.OnnxTransformerTest/OnnxTransformTests.cs @@ -476,9 +476,9 @@ public void TestOnnxNoneDimValue() var transformedValues = onnxTransformer.Transform(idv); var predictions = mlContext.Data.CreateEnumerable(transformedValues, reuseRowObject: false).ToArray(); - Assert.Equal(-0.080, Math.Round(predictions[0].variable[0], 3)); - Assert.Equal(1.204, Math.Round(predictions[1].variable[0], 3)); - Assert.Equal(2.27, Math.Round(predictions[2].variable[0], 3)); + Assert.Equal(-0.080, predictions[0].variable[0], 0.001); + Assert.Equal(1.204, predictions[1].variable[0], 0.001); + Assert.Equal(2.27, predictions[2].variable[0], 0.001); } /// diff --git a/test/Microsoft.ML.Predictor.Tests/TestGamPublicInterfaces.cs b/test/Microsoft.ML.Predictor.Tests/TestGamPublicInterfaces.cs index 8984e96882..a18b0fa945 100644 --- a/test/Microsoft.ML.Predictor.Tests/TestGamPublicInterfaces.cs +++ b/test/Microsoft.ML.Predictor.Tests/TestGamPublicInterfaces.cs @@ -43,7 +43,7 @@ public void TestGamDirectInstantiation() Assert.Equal(binUpperBounds.Length, gam.NumberOfShapeFunctions); // Check the intercept - Assert.Equal(intercept, gam.Bias, 6); + Assert.Equal(intercept, gam.Bias, 0.000001); // Check that the binUpperBounds were made correctly CheckArrayOfArrayEquality(binUpperBounds, gam.GetBinUpperBounds()); diff --git a/test/Microsoft.ML.Predictor.Tests/TestPredictors.cs b/test/Microsoft.ML.Predictor.Tests/TestPredictors.cs index 681cfd6b23..2e7b194fd1 100644 --- a/test/Microsoft.ML.Predictor.Tests/TestPredictors.cs +++ b/test/Microsoft.ML.Predictor.Tests/TestPredictors.cs @@ -737,8 +737,8 @@ private void CombineAndTestTreeEnsembles(IDataView idv, PredictorModel[] fastTre probGetters[i](ref probs[i]); predGetters[i](ref preds[i]); } - Assert.Equal(score, 0.4 * scores.Sum() / predCount, 5); - Assert.Equal(prob, 1 / (1 + Math.Exp(-score)), 6); + Assert.Equal(score, 0.4 * scores.Sum() / predCount, 0.00001); + Assert.Equal(prob, 1 / (1 + Math.Exp(-score)), 0.000001); Assert.True(pred == score > 0); } } @@ -953,7 +953,7 @@ private void CombineAndTestEnsembles(IDataView idv, string name, string options, for (int j = 0; j < predCount; j++) sum += vectorScores[j].GetItemOrDefault(i); if (float.IsNaN(sum)) - Assert.Equal((double)vectorScore.GetItemOrDefault(i), (double)sum / predCount, 3); + Assert.Equal((double)vectorScore.GetItemOrDefault(i), (double)sum / predCount, 0.001); } Assert.Equal(probs.Count(p => p >= prob), probs.Count(p => p <= prob)); } diff --git a/test/Microsoft.ML.Tests/AnomalyDetectionTests.cs b/test/Microsoft.ML.Tests/AnomalyDetectionTests.cs index 3d00592191..3581af5198 100644 --- a/test/Microsoft.ML.Tests/AnomalyDetectionTests.cs +++ b/test/Microsoft.ML.Tests/AnomalyDetectionTests.cs @@ -33,8 +33,8 @@ public void RandomizedPcaTrainerBaselineTest() // Evaluate var metrics = ML.AnomalyDetection.Evaluate(transformedData, falsePositiveCount: 5); - Assert.Equal(0.98667, metrics.AreaUnderRocCurve, 5); - Assert.Equal(0.90000, metrics.DetectionRateAtFalsePositiveCount, 5); + Assert.Equal(0.98667, metrics.AreaUnderRocCurve, 0.00001); + Assert.Equal(0.90000, metrics.DetectionRateAtFalsePositiveCount, 0.00001); } /// diff --git a/test/Microsoft.ML.Tests/EvaluateTests.cs b/test/Microsoft.ML.Tests/EvaluateTests.cs index 28a6cfa3a5..ae404b9bd5 100644 --- a/test/Microsoft.ML.Tests/EvaluateTests.cs +++ b/test/Microsoft.ML.Tests/EvaluateTests.cs @@ -65,7 +65,7 @@ public void MulticlassEvaluatorTopKArray() var metrics2 = mlContext.MulticlassClassification.Evaluate(inputDV2, topKPredictionCount: 4); var output2 = metrics2.TopKAccuracyForAllK.ToArray(); for (int i = 0; i < expectedTopKArray2.Length; i++) - Assert.Equal(expectedTopKArray2[i], output2[i], precision: 7); + Assert.Equal(expectedTopKArray2[i], output2[i], 0.0000001); } } } diff --git a/test/Microsoft.ML.Tests/LearningRateSchedulerTest.cs b/test/Microsoft.ML.Tests/LearningRateSchedulerTest.cs index 57ca637b7f..779911d85c 100644 --- a/test/Microsoft.ML.Tests/LearningRateSchedulerTest.cs +++ b/test/Microsoft.ML.Tests/LearningRateSchedulerTest.cs @@ -48,7 +48,7 @@ internal void TestPolynomialDecay(float[] expectedValues, bool cycle) trainState.CurrentBatchIndex = i % trainState.BatchesPerEpoch; trainState.CurrentEpoch = i / trainState.BatchesPerEpoch; float decayedLR = learningRateScheduler.GetLearningRate(trainState); - Assert.Equal((double)expectedValues[i], (double)decayedLR, 4); + Assert.Equal((double)expectedValues[i], (double)decayedLR, 0.0001); } } } diff --git a/test/Microsoft.ML.Tests/Scenarios/ClusteringTests.cs b/test/Microsoft.ML.Tests/Scenarios/ClusteringTests.cs index cdc157a244..2eccbb4db4 100644 --- a/test/Microsoft.ML.Tests/Scenarios/ClusteringTests.cs +++ b/test/Microsoft.ML.Tests/Scenarios/ClusteringTests.cs @@ -87,7 +87,7 @@ public void PredictClusters() Assert.Equal(double.NaN, metrics.NormalizedMutualInformation); //Calculate dbi is false by default so Dbi would be 0 Assert.Equal(0d, metrics.DaviesBouldinIndex); - Assert.Equal(0d, metrics.AverageDistance, 5); + Assert.Equal(0d, metrics.AverageDistance, 0.00001); } } } diff --git a/test/Microsoft.ML.Tests/Scenarios/IrisPlantClassificationTests.cs b/test/Microsoft.ML.Tests/Scenarios/IrisPlantClassificationTests.cs index 6357cad60e..9e94c0f6b5 100644 --- a/test/Microsoft.ML.Tests/Scenarios/IrisPlantClassificationTests.cs +++ b/test/Microsoft.ML.Tests/Scenarios/IrisPlantClassificationTests.cs @@ -55,9 +55,9 @@ public void TrainAndPredictIrisModelTest() PetalWidth = 0.2f, }); - Assert.Equal(1d, prediction.PredictedLabels[0], 2); - Assert.Equal(0d, prediction.PredictedLabels[1], 2); - Assert.Equal(0d, prediction.PredictedLabels[2], 2); + Assert.Equal(1d, prediction.PredictedLabels[0], 0.01); + Assert.Equal(0d, prediction.PredictedLabels[1], 0.01); + Assert.Equal(0d, prediction.PredictedLabels[2], 0.01); prediction = predictFunction.Predict(new IrisData() { @@ -67,9 +67,9 @@ public void TrainAndPredictIrisModelTest() PetalWidth = 2.2f, }); - Assert.Equal(0d, prediction.PredictedLabels[0], 2); - Assert.Equal(0d, prediction.PredictedLabels[1], 2); - Assert.Equal(1d, prediction.PredictedLabels[2], 2); + Assert.Equal(0d, prediction.PredictedLabels[0], 0.01); + Assert.Equal(0d, prediction.PredictedLabels[1], 0.01); + Assert.Equal(1d, prediction.PredictedLabels[2], 0.01); prediction = predictFunction.Predict(new IrisData() { @@ -79,23 +79,23 @@ public void TrainAndPredictIrisModelTest() PetalWidth = 1.2f, }); - Assert.Equal(.2, prediction.PredictedLabels[0], 1); - Assert.Equal(.8, prediction.PredictedLabels[1], 1); - Assert.Equal(0d, prediction.PredictedLabels[2], 2); + Assert.Equal(.2, prediction.PredictedLabels[0], 0.1); + Assert.Equal(.8, prediction.PredictedLabels[1], 0.1); + Assert.Equal(0d, prediction.PredictedLabels[2], 0.01); // Evaluate the trained pipeline var predicted = trainedModel.Transform(testData); var metrics = mlContext.MulticlassClassification.Evaluate(predicted, topKPredictionCount: 3); Assert.Equal(.98, metrics.MacroAccuracy); - Assert.Equal(.98, metrics.MicroAccuracy, 2); - Assert.Equal(.06, metrics.LogLoss, 2); + Assert.Equal(.98, metrics.MicroAccuracy, 0.01); + Assert.Equal(.06, metrics.LogLoss, 0.01); Assert.Equal(1, metrics.TopKAccuracy); Assert.Equal(3, metrics.PerClassLogLoss.Count); - Assert.Equal(0d, metrics.PerClassLogLoss[0], 1); - Assert.Equal(.1, metrics.PerClassLogLoss[1], 1); - Assert.Equal(.1, metrics.PerClassLogLoss[2], 1); + Assert.Equal(0d, metrics.PerClassLogLoss[0], 0.1); + Assert.Equal(.1, metrics.PerClassLogLoss[1], 0.1); + Assert.Equal(.1, metrics.PerClassLogLoss[2], 0.1); } public class IrisData diff --git a/test/Microsoft.ML.Tests/Scenarios/IrisPlantClassificationWithStringLabelTests.cs b/test/Microsoft.ML.Tests/Scenarios/IrisPlantClassificationWithStringLabelTests.cs index d2eb57dee2..4e3592851f 100644 --- a/test/Microsoft.ML.Tests/Scenarios/IrisPlantClassificationWithStringLabelTests.cs +++ b/test/Microsoft.ML.Tests/Scenarios/IrisPlantClassificationWithStringLabelTests.cs @@ -54,9 +54,9 @@ public void TrainAndPredictIrisModelWithStringLabelTest() PetalWidth = 0.2f, }); - Assert.Equal(1d, prediction.PredictedScores[0], 2); - Assert.Equal(0d, prediction.PredictedScores[1], 2); - Assert.Equal(0d, prediction.PredictedScores[2], 2); + Assert.Equal(1d, prediction.PredictedScores[0], 0.01); + Assert.Equal(0d, prediction.PredictedScores[1], 0.01); + Assert.Equal(0d, prediction.PredictedScores[2], 0.01); Assert.True(prediction.PredictedPlant == "Iris-setosa"); prediction = predictFunction.Predict(new IrisDataWithStringLabel() @@ -67,9 +67,9 @@ public void TrainAndPredictIrisModelWithStringLabelTest() PetalWidth = 2.2f, }); - Assert.Equal(0d, prediction.PredictedScores[0], 2); - Assert.Equal(0d, prediction.PredictedScores[1], 2); - Assert.Equal(1d, prediction.PredictedScores[2], 2); + Assert.Equal(0d, prediction.PredictedScores[0], 0.01); + Assert.Equal(0d, prediction.PredictedScores[1], 0.01); + Assert.Equal(1d, prediction.PredictedScores[2], 0.01); Assert.True(prediction.PredictedPlant == "Iris-virginica"); prediction = predictFunction.Predict(new IrisDataWithStringLabel() @@ -80,9 +80,9 @@ public void TrainAndPredictIrisModelWithStringLabelTest() PetalWidth = 1.2f, }); - Assert.Equal(.2, prediction.PredictedScores[0], 1); - Assert.Equal(.8, prediction.PredictedScores[1], 1); - Assert.Equal(0d, prediction.PredictedScores[2], 2); + Assert.Equal(.2, prediction.PredictedScores[0], 0.1); + Assert.Equal(.8, prediction.PredictedScores[1], 0.1); + Assert.Equal(0d, prediction.PredictedScores[2], 0.01); Assert.True(prediction.PredictedPlant == "Iris-versicolor"); // Evaluate the trained pipeline @@ -90,15 +90,15 @@ public void TrainAndPredictIrisModelWithStringLabelTest() var metrics = mlContext.MulticlassClassification.Evaluate(predicted, topKPredictionCount: 3); Assert.Equal(.98, metrics.MacroAccuracy); - Assert.Equal(.98, metrics.MicroAccuracy, 2); - Assert.Equal(.06, metrics.LogLoss, 2); + Assert.Equal(.98, metrics.MicroAccuracy, 0.01); + Assert.Equal(.06, metrics.LogLoss, 0.01); Assert.InRange(metrics.LogLossReduction, 0.94, 0.96); Assert.Equal(1, metrics.TopKAccuracy); Assert.Equal(3, metrics.PerClassLogLoss.Count); - Assert.Equal(0d, metrics.PerClassLogLoss[0], 1); - Assert.Equal(.1, metrics.PerClassLogLoss[1], 1); - Assert.Equal(.1, metrics.PerClassLogLoss[2], 1); + Assert.Equal(0d, metrics.PerClassLogLoss[0], 0.1); + Assert.Equal(.1, metrics.PerClassLogLoss[1], 0.1); + Assert.Equal(.1, metrics.PerClassLogLoss[2], 0.1); } private class IrisDataWithStringLabel diff --git a/test/Microsoft.ML.Tests/ScenariosWithDirectInstantiation/IrisPlantClassificationTests.cs b/test/Microsoft.ML.Tests/ScenariosWithDirectInstantiation/IrisPlantClassificationTests.cs index 8b393afeaf..20866f494c 100644 --- a/test/Microsoft.ML.Tests/ScenariosWithDirectInstantiation/IrisPlantClassificationTests.cs +++ b/test/Microsoft.ML.Tests/ScenariosWithDirectInstantiation/IrisPlantClassificationTests.cs @@ -61,9 +61,9 @@ private void ComparePredictions(PredictionEngine model PetalWidth = 0.2f, }); - Assert.Equal(1d, prediction.PredictedLabels[0], 2); - Assert.Equal(0d, prediction.PredictedLabels[1], 2); - Assert.Equal(0d, prediction.PredictedLabels[2], 2); + Assert.Equal(1d, prediction.PredictedLabels[0], 0.01); + Assert.Equal(0d, prediction.PredictedLabels[1], 0.01); + Assert.Equal(0d, prediction.PredictedLabels[2], 0.01); prediction = model.Predict(new IrisData() { @@ -73,9 +73,9 @@ private void ComparePredictions(PredictionEngine model PetalWidth = 2.2f, }); - Assert.Equal(0d, prediction.PredictedLabels[0], 2); - Assert.Equal(0d, prediction.PredictedLabels[1], 2); - Assert.Equal(1d, prediction.PredictedLabels[2], 2); + Assert.Equal(0d, prediction.PredictedLabels[0], 0.01); + Assert.Equal(0d, prediction.PredictedLabels[1], 0.01); + Assert.Equal(1d, prediction.PredictedLabels[2], 0.01); prediction = model.Predict(new IrisData() { @@ -85,22 +85,22 @@ private void ComparePredictions(PredictionEngine model PetalWidth = 1.2f, }); - Assert.Equal(.2, prediction.PredictedLabels[0], 1); - Assert.Equal(.8, prediction.PredictedLabels[1], 1); - Assert.Equal(0d, prediction.PredictedLabels[2], 2); + Assert.Equal(.2, prediction.PredictedLabels[0], 0.1); + Assert.Equal(.8, prediction.PredictedLabels[1], 0.1); + Assert.Equal(0d, prediction.PredictedLabels[2], 0.01); } private void CompareMetrics(MulticlassClassificationMetrics metrics) { Assert.Equal(.98, metrics.MacroAccuracy); - Assert.Equal(.98, metrics.MicroAccuracy, 2); + Assert.Equal(.98, metrics.MicroAccuracy, 0.01); Assert.InRange(metrics.LogLoss, .05, .06); Assert.InRange(metrics.LogLossReduction, 0.94, 0.96); Assert.Equal(3, metrics.PerClassLogLoss.Count); - Assert.Equal(0d, metrics.PerClassLogLoss[0], 1); - Assert.Equal(.1, metrics.PerClassLogLoss[1], 1); - Assert.Equal(.1, metrics.PerClassLogLoss[2], 1); + Assert.Equal(0d, metrics.PerClassLogLoss[0], 0.1); + Assert.Equal(.1, metrics.PerClassLogLoss[1], 0.1); + Assert.Equal(.1, metrics.PerClassLogLoss[2], 0.1); } } } diff --git a/test/Microsoft.ML.Tests/ScenariosWithDirectInstantiation/TensorflowTests.cs b/test/Microsoft.ML.Tests/ScenariosWithDirectInstantiation/TensorflowTests.cs index 81eec25f9a..38b3ab97ec 100644 --- a/test/Microsoft.ML.Tests/ScenariosWithDirectInstantiation/TensorflowTests.cs +++ b/test/Microsoft.ML.Tests/ScenariosWithDirectInstantiation/TensorflowTests.cs @@ -161,24 +161,24 @@ public void TensorFlowTransforCifarEndToEndTest2() var predictions = transformer.Transform(data); var metrics = _mlContext.MulticlassClassification.Evaluate(predictions); - Assert.Equal(1, metrics.MicroAccuracy, 2); + Assert.Equal(1, metrics.MicroAccuracy, 0.01); var predictFunction = _mlContext.Model.CreatePredictionEngine(transformer); var prediction = predictFunction.Predict(new CifarData() { ImagePath = GetDataPath("images/banana.jpg") }); - Assert.Equal(0d, prediction.PredictedScores[0], 2); - Assert.Equal(1d, prediction.PredictedScores[1], 2); - Assert.Equal(0d, prediction.PredictedScores[2], 2); + Assert.Equal(0d, prediction.PredictedScores[0], 0.01); + Assert.Equal(1d, prediction.PredictedScores[1], 0.01); + Assert.Equal(0d, prediction.PredictedScores[2], 0.01); prediction = predictFunction.Predict(new CifarData() { ImagePath = GetDataPath("images/hotdog.jpg") }); - Assert.Equal(0d, prediction.PredictedScores[0], 2); - Assert.Equal(0d, prediction.PredictedScores[1], 2); - Assert.Equal(1d, prediction.PredictedScores[2], 2); + Assert.Equal(0d, prediction.PredictedScores[0], 0.01); + Assert.Equal(0d, prediction.PredictedScores[1], 0.01); + Assert.Equal(1d, prediction.PredictedScores[2], 0.01); (transformer as IDisposable)?.Dispose(); } @@ -677,7 +677,7 @@ public void TensorFlowTransformMNISTConvTest() var metrics = _mlContext.MulticlassClassification.Evaluate(predicted); Assert.Equal(0.99, metrics.MicroAccuracy, .01); - Assert.Equal(0.93, metrics.MacroAccuracy, 2); + Assert.Equal(0.93, metrics.MacroAccuracy, 0.01); var oneSample = GetOneMNISTExample(); @@ -902,7 +902,7 @@ public void TensorFlowTransformMNISTConvSavedModelTest() // First group of checks Assert.Equal(0.99, metrics.MicroAccuracy, .01); - Assert.Equal(.93, metrics.MacroAccuracy, 2); + Assert.Equal(.93, metrics.MacroAccuracy, 0.01); // An in-memory example. Its label is predicted below. var oneSample = GetOneMNISTExample(); @@ -1172,7 +1172,7 @@ public void TensorFlowSaveAndLoadSavedModel() var outputSchema = transformer.GetOutputSchema(data.Schema); var metrics = _mlContext.MulticlassClassification.Evaluate(transformedData); - Assert.Equal(1, metrics.MicroAccuracy, 2); + Assert.Equal(1, metrics.MicroAccuracy, 0.01); var predictFunction = _mlContext.Model.CreatePredictionEngine(transformer); var predictions = new[] @@ -1207,7 +1207,7 @@ public void TensorFlowSaveAndLoadSavedModel() for (var i = 0; i < predictions.Length; i++) { for (var j = 0; j < predictions[i].PredictedScores.Length; j++) - Assert.Equal((double)predictions[i].PredictedScores[j], (double)testPredictions[i].PredictedScores[j], 2); + Assert.Equal((double)predictions[i].PredictedScores[j], (double)testPredictions[i].PredictedScores[j], 0.01); } (testTransformer as IDisposable)?.Dispose(); testPredictFunction.Dispose(); diff --git a/test/Microsoft.ML.Tests/TrainerEstimators/MatrixFactorizationTests.cs b/test/Microsoft.ML.Tests/TrainerEstimators/MatrixFactorizationTests.cs index aa0713e63d..df6ee1e2b3 100644 --- a/test/Microsoft.ML.Tests/TrainerEstimators/MatrixFactorizationTests.cs +++ b/test/Microsoft.ML.Tests/TrainerEstimators/MatrixFactorizationTests.cs @@ -96,12 +96,12 @@ public void MatrixFactorizationSimpleTrainAndPredict() if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { if (RuntimeInformation.ProcessArchitecture == Architecture.Arm64) - Assert.Equal(0.3041052520275116, leftMatrix[0], 4); + Assert.Equal(0.3041052520275116, leftMatrix[0], 0.0001); else - Assert.Equal(0.309137582778931, leftMatrix[0], 4); - Assert.Equal(0.468956589698792, leftMatrix[leftMatrix.Count - 1], 4); - Assert.Equal(0.303486406803131, rightMatrix[0], 4); - Assert.Equal(0.503888845443726, rightMatrix[rightMatrix.Count - 1], 4); + Assert.Equal(0.309137582778931, leftMatrix[0], 0.0001); + Assert.Equal(0.468956589698792, leftMatrix[leftMatrix.Count - 1], 0.0001); + Assert.Equal(0.303486406803131, rightMatrix[0], 0.0001); + Assert.Equal(0.503888845443726, rightMatrix[rightMatrix.Count - 1], 0.0001); } // Read the test data set as an IDataView var testData = reader.Load(new MultiFileSource(GetDataPath(TestDatasets.trivialMatrixFactorization.testFilename))); @@ -687,13 +687,13 @@ public void OneClassMatrixFactorizationSample() Assert.Equal(1u, firstElement.MatrixColumnIndex); Assert.Equal(1u, firstElement.MatrixRowIndex); - Assert.Equal(0.987113833, firstElement.Score, 3); - Assert.Equal(1d, firstElement.Value, 3); + Assert.Equal(0.987113833, firstElement.Score, 0.001); + Assert.Equal(1d, firstElement.Value, 0.001); Assert.Equal(60u, lastElement.MatrixColumnIndex); Assert.Equal(100u, lastElement.MatrixRowIndex); - Assert.Equal(0.149993762, lastElement.Score, 3); - Assert.Equal(0.15, lastElement.Value, 3); + Assert.Equal(0.149993762, lastElement.Score, 0.001); + Assert.Equal(0.15, lastElement.Value, 0.001); // Two columns with highest predicted score to the 2nd row (indexed by 1). If we view row index as user ID and column as game ID, // the following list contains the games recommended by the trained model. Note that sometime, you may want to exclude training @@ -705,13 +705,13 @@ public void OneClassMatrixFactorizationSample() Assert.Equal(1u, firstElement.MatrixColumnIndex); Assert.Equal(1u, firstElement.MatrixRowIndex); - Assert.Equal(0.987113833, firstElement.Score, 3); - Assert.Equal(1d, firstElement.Value, 3); + Assert.Equal(0.987113833, firstElement.Score, 0.001); + Assert.Equal(1d, firstElement.Value, 0.001); Assert.Equal(11u, lastElement.MatrixColumnIndex); Assert.Equal(1u, lastElement.MatrixRowIndex); - Assert.Equal(0.987113833, lastElement.Score, 3); - Assert.Equal(1d, lastElement.Value, 3); + Assert.Equal(0.987113833, lastElement.Score, 0.001); + Assert.Equal(1d, lastElement.Value, 0.001); } // A data structure used to encode a single value in matrix @@ -842,7 +842,7 @@ public void InspectMatrixFactorizationModel() // Check if results computed by SSE code and MF predictor are the same. for (int i = 0; i < predictions.Count(); ++i) - Assert.Equal((double)predictions[i].Score, (double)valuesAtSecondColumn[i], 3); + Assert.Equal((double)predictions[i].Score, (double)valuesAtSecondColumn[i], 0.001); } } } diff --git a/test/Microsoft.ML.Tests/TrainerEstimators/SdcaTests.cs b/test/Microsoft.ML.Tests/TrainerEstimators/SdcaTests.cs index 5b10ca358c..159f341071 100644 --- a/test/Microsoft.ML.Tests/TrainerEstimators/SdcaTests.cs +++ b/test/Microsoft.ML.Tests/TrainerEstimators/SdcaTests.cs @@ -129,10 +129,10 @@ public void SdcaLogisticRegressionWithWeight() // Verify the metrics produced are different. var metrics1 = mlContext.BinaryClassification.Evaluate(prediction1); var metrics2 = mlContext.BinaryClassification.Evaluate(prediction2); - Assert.Equal(0.9658, metrics1.AreaUnderRocCurve, 4); - Assert.Equal(0.3488, metrics1.LogLoss, 4); - Assert.Equal(0.9596, metrics2.AreaUnderRocCurve, 4); - Assert.Equal(0.3591, metrics2.LogLoss, 4); + Assert.Equal(0.9658, metrics1.AreaUnderRocCurve, 0.0001); + Assert.Equal(0.3488, metrics1.LogLoss, 0.0001); + Assert.Equal(0.9596, metrics2.AreaUnderRocCurve, 0.0001); + Assert.Equal(0.3591, metrics2.LogLoss, 0.0001); // Verify the raw scores are different. var scores1 = prediction1.GetColumn(prediction1.Schema["Score"]).ToArray(); @@ -188,10 +188,10 @@ public void SdcaMaximumEntropyWithWeight() // Verify the metrics produced are different. var metrics1 = mlContext.MulticlassClassification.Evaluate(prediction1, labelColumnName: "LabelIndex", topKPredictionCount: 1); var metrics2 = mlContext.MulticlassClassification.Evaluate(prediction2, labelColumnName: "LabelIndex", topKPredictionCount: 1); - Assert.Equal(0.9100, metrics1.TopKAccuracy, 4); - Assert.Equal(0.2411, metrics1.LogLoss, 4); - Assert.Equal(0.8800, metrics2.TopKAccuracy, 4); - Assert.Equal(0.2464, metrics2.LogLoss, 4); + Assert.Equal(0.9100, metrics1.TopKAccuracy, 0.0001); + Assert.Equal(0.2411, metrics1.LogLoss, 0.0001); + Assert.Equal(0.8800, metrics2.TopKAccuracy, 0.0001); + Assert.Equal(0.2464, metrics2.LogLoss, 0.0001); // Verify the raw scores are different. var scores1 = prediction1.GetColumn(prediction1.Schema["Score"]).ToArray(); diff --git a/test/Microsoft.ML.Tests/TrainerEstimators/TreeEnsembleFeaturizerTest.cs b/test/Microsoft.ML.Tests/TrainerEstimators/TreeEnsembleFeaturizerTest.cs index 28392c7ac1..9719fefb26 100644 --- a/test/Microsoft.ML.Tests/TrainerEstimators/TreeEnsembleFeaturizerTest.cs +++ b/test/Microsoft.ML.Tests/TrainerEstimators/TreeEnsembleFeaturizerTest.cs @@ -627,8 +627,8 @@ public void TestSaveAndLoadTreeFeaturizer() var loadedPrediction = loadedModel.Transform(dataView); var loadedMetrics = ML.Regression.Evaluate(loadedPrediction); - Assert.Equal(metrics.MeanAbsoluteError, loadedMetrics.MeanAbsoluteError, 5); - Assert.Equal(metrics.MeanSquaredError, loadedMetrics.MeanSquaredError, 5); + Assert.Equal(metrics.MeanAbsoluteError, loadedMetrics.MeanAbsoluteError, 0.00001); + Assert.Equal(metrics.MeanSquaredError, loadedMetrics.MeanSquaredError, 0.00001); } [Fact] @@ -687,8 +687,8 @@ public void TestSaveAndLoadDoubleTreeFeaturizer() var loadedMetrics = ML.Regression.Evaluate(loadedPrediction); // Check if the loaded model produces the same result as the trained model. - Assert.Equal(metrics.MeanAbsoluteError, loadedMetrics.MeanAbsoluteError, 5); - Assert.Equal(metrics.MeanSquaredError, loadedMetrics.MeanSquaredError, 5); + Assert.Equal(metrics.MeanAbsoluteError, loadedMetrics.MeanAbsoluteError, 0.00001); + Assert.Equal(metrics.MeanSquaredError, loadedMetrics.MeanSquaredError, 0.00001); var secondPipeline = ML.Transforms.CopyColumns("CopiedFeatures", "Features") .Append(ML.Transforms.NormalizeBinning("CopiedFeatures")) diff --git a/test/Microsoft.ML.Tests/TrainerEstimators/TreeEstimators.cs b/test/Microsoft.ML.Tests/TrainerEstimators/TreeEstimators.cs index 6a618dfc24..42540f478f 100644 --- a/test/Microsoft.ML.Tests/TrainerEstimators/TreeEstimators.cs +++ b/test/Microsoft.ML.Tests/TrainerEstimators/TreeEstimators.cs @@ -557,7 +557,7 @@ public void LightGbmMulticlassEstimatorCompareOva() double sum = 0; for (int j = 0; j < _classNumber; ++j) { - Assert.Equal(nativeResult0[j + i * _classNumber], mlnetPredictions[i].Score[j], 6); + Assert.Equal(nativeResult0[j + i * _classNumber], mlnetPredictions[i].Score[j], 0.000001); if (float.IsNaN((float)nativeResult1[j + i * _classNumber])) continue; sum += MathUtils.SigmoidSlow(sigmoidScale * (float)nativeResult1[j + i * _classNumber]); @@ -565,7 +565,7 @@ public void LightGbmMulticlassEstimatorCompareOva() for (int j = 0; j < _classNumber; ++j) { double prob = MathUtils.SigmoidSlow(sigmoidScale * (float)nativeResult1[j + i * _classNumber]); - Assert.Equal(prob / sum, mlnetPredictions[i].Score[j], 6); + Assert.Equal(prob / sum, mlnetPredictions[i].Score[j], 0.000001); } } @@ -593,7 +593,7 @@ public void LightGbmMulticlassEstimatorCompareOvaUsingSigmoids() double sum = 0; for (int j = 0; j < _classNumber; ++j) { - Assert.Equal(nativeResult0[j + i * _classNumber], mlnetPredictions[i].Score[j], 6); + Assert.Equal(nativeResult0[j + i * _classNumber], mlnetPredictions[i].Score[j], 0.000001); if (float.IsNaN((float)nativeResult1[j + i * _classNumber])) continue; sum += MathUtils.SigmoidSlow((float)sigmoidScale * (float)nativeResult1[j + i * _classNumber]); @@ -601,7 +601,7 @@ public void LightGbmMulticlassEstimatorCompareOvaUsingSigmoids() for (int j = 0; j < _classNumber; ++j) { double prob = MathUtils.SigmoidSlow((float)sigmoidScale * (float)nativeResult1[j + i * _classNumber]); - Assert.Equal(prob / sum, mlnetPredictions[i].Score[j], 6); + Assert.Equal(prob / sum, mlnetPredictions[i].Score[j], 0.000001); } } @@ -664,13 +664,13 @@ public void LightGbmMulticlassEstimatorCompareSoftMax() double sum = 0; for (int j = 0; j < _classNumber; ++j) { - Assert.Equal(nativeResult0[j + i * _classNumber], mlnetPredictions[i].Score[j], 6); + Assert.Equal(nativeResult0[j + i * _classNumber], mlnetPredictions[i].Score[j], 0.000001); sum += Math.Exp((float)nativeResult1[j + i * _classNumber]); } for (int j = 0; j < _classNumber; ++j) { double prob = Math.Exp(nativeResult1[j + i * _classNumber]); - Assert.Equal(prob / sum, mlnetPredictions[i].Score[j], 6); + Assert.Equal(prob / sum, mlnetPredictions[i].Score[j], 0.000001); } } @@ -693,13 +693,13 @@ public void LightGbmMulticlassEstimatorCompareUnbalanced() double sum = 0; for (int j = 0; j < _classNumber; ++j) { - Assert.Equal(nativeResult0[j + i * _classNumber], mlnetPredictions[i].Score[j], 6); + Assert.Equal(nativeResult0[j + i * _classNumber], mlnetPredictions[i].Score[j], 0.000001); sum += Math.Exp((float)nativeResult1[j + i * _classNumber]); } for (int j = 0; j < _classNumber; ++j) { double prob = Math.Exp(nativeResult1[j + i * _classNumber]); - Assert.Equal(prob / sum, mlnetPredictions[i].Score[j], 6); + Assert.Equal(prob / sum, mlnetPredictions[i].Score[j], 0.000001); } } diff --git a/test/Microsoft.ML.Tests/Transformers/NormalizerTests.cs b/test/Microsoft.ML.Tests/Transformers/NormalizerTests.cs index 4d1f89bb67..b33d69574d 100644 --- a/test/Microsoft.ML.Tests/Transformers/NormalizerTests.cs +++ b/test/Microsoft.ML.Tests/Transformers/NormalizerTests.cs @@ -395,36 +395,36 @@ public void NormalizerParametersMultiColumnApi() var robustScalerTransformer = robustScalerEstimator.Fit(data); floatAffineModel = ((NormalizingTransformer)robustScalerTransformer).Columns[0].ModelParameters as NormalizingTransformer.AffineNormalizerModelParameters; - Assert.Equal(1 / 1.8, floatAffineModel.Scale, 2); - Assert.Equal(5.8d, floatAffineModel.Offset, 2); + Assert.Equal(1 / 1.8, floatAffineModel.Scale, 0.01); + Assert.Equal(5.8d, floatAffineModel.Offset, 0.01); floatAffineModelVec = ((NormalizingTransformer)robustScalerTransformer).Columns[1].ModelParameters as NormalizingTransformer.AffineNormalizerModelParameters>; Assert.Equal(4, floatAffineModelVec.Scale.Length); - Assert.Equal(.5555556, floatAffineModelVec.Scale[0], 2); - Assert.Equal(.8333333, floatAffineModelVec.Scale[1], 2); - Assert.Equal(.3389830, floatAffineModelVec.Scale[2], 2); - Assert.Equal(.8333333, floatAffineModelVec.Scale[3], 2); + Assert.Equal(.5555556, floatAffineModelVec.Scale[0], 0.01); + Assert.Equal(.8333333, floatAffineModelVec.Scale[1], 0.01); + Assert.Equal(.3389830, floatAffineModelVec.Scale[2], 0.01); + Assert.Equal(.8333333, floatAffineModelVec.Scale[3], 0.01); - Assert.Equal(5.8, floatAffineModelVec.Offset[0], 2); - Assert.Equal(3d, floatAffineModelVec.Offset[1], 2); - Assert.Equal(4.4, floatAffineModelVec.Offset[2], 2); - Assert.Equal(1.3, floatAffineModelVec.Offset[3], 2); + Assert.Equal(5.8, floatAffineModelVec.Offset[0], 0.01); + Assert.Equal(3d, floatAffineModelVec.Offset[1], 0.01); + Assert.Equal(4.4, floatAffineModelVec.Offset[2], 0.01); + Assert.Equal(1.3, floatAffineModelVec.Offset[3], 0.01); doubleAffineModel = ((NormalizingTransformer)robustScalerTransformer).Columns[2].ModelParameters as NormalizingTransformer.AffineNormalizerModelParameters; - Assert.Equal(1 / 1.8, doubleAffineModel.Scale, 2); - Assert.Equal(5.8, doubleAffineModel.Offset, 2); + Assert.Equal(1 / 1.8, doubleAffineModel.Scale, 0.01); + Assert.Equal(5.8, doubleAffineModel.Offset, 0.01); doubleAffineModelVector = ((NormalizingTransformer)robustScalerTransformer).Columns[3].ModelParameters as NormalizingTransformer.AffineNormalizerModelParameters>; Assert.Equal(4, doubleAffineModelVector.Scale.Length); - Assert.Equal(.5555556, doubleAffineModelVector.Scale[0], 2); - Assert.Equal(.8333333, doubleAffineModelVector.Scale[1], 2); - Assert.Equal(.3389830, doubleAffineModelVector.Scale[2], 2); - Assert.Equal(.8333333, doubleAffineModelVector.Scale[3], 2); + Assert.Equal(.5555556, doubleAffineModelVector.Scale[0], 0.01); + Assert.Equal(.8333333, doubleAffineModelVector.Scale[1], 0.01); + Assert.Equal(.3389830, doubleAffineModelVector.Scale[2], 0.01); + Assert.Equal(.8333333, doubleAffineModelVector.Scale[3], 0.01); - Assert.Equal(5.8, doubleAffineModelVector.Offset[0], 2); - Assert.Equal(3, doubleAffineModelVector.Offset[1], 2); - Assert.Equal(4.4, doubleAffineModelVector.Offset[2], 2); - Assert.Equal(1.3, doubleAffineModelVector.Offset[3], 2); + Assert.Equal(5.8, doubleAffineModelVector.Offset[0], 0.01); + Assert.Equal(3, doubleAffineModelVector.Offset[1], 0.01); + Assert.Equal(4.4, doubleAffineModelVector.Offset[2], 0.01); + Assert.Equal(1.3, doubleAffineModelVector.Offset[3], 0.01); // Robust scaler no offset robustScalerEstimator = context.Transforms.NormalizeRobustScaling( @@ -435,28 +435,28 @@ public void NormalizerParametersMultiColumnApi() robustScalerTransformer = robustScalerEstimator.Fit(data); floatAffineModel = ((NormalizingTransformer)robustScalerTransformer).Columns[0].ModelParameters as NormalizingTransformer.AffineNormalizerModelParameters; - Assert.Equal(1 / 1.8, floatAffineModel.Scale, 2); - Assert.Equal(0d, floatAffineModel.Offset, 2); + Assert.Equal(1 / 1.8, floatAffineModel.Scale, 0.01); + Assert.Equal(0d, floatAffineModel.Offset, 0.01); floatAffineModelVec = ((NormalizingTransformer)robustScalerTransformer).Columns[1].ModelParameters as NormalizingTransformer.AffineNormalizerModelParameters>; Assert.Equal(4, floatAffineModelVec.Scale.Length); - Assert.Equal(.5555556, floatAffineModelVec.Scale[0], 2); - Assert.Equal(.8333333, floatAffineModelVec.Scale[1], 2); - Assert.Equal(.3389830, floatAffineModelVec.Scale[2], 2); - Assert.Equal(.8333333, floatAffineModelVec.Scale[3], 2); + Assert.Equal(.5555556, floatAffineModelVec.Scale[0], 0.01); + Assert.Equal(.8333333, floatAffineModelVec.Scale[1], 0.01); + Assert.Equal(.3389830, floatAffineModelVec.Scale[2], 0.01); + Assert.Equal(.8333333, floatAffineModelVec.Scale[3], 0.01); Assert.Empty(floatAffineModelVec.Offset); doubleAffineModel = ((NormalizingTransformer)robustScalerTransformer).Columns[2].ModelParameters as NormalizingTransformer.AffineNormalizerModelParameters; - Assert.Equal(1 / 1.8, doubleAffineModel.Scale, 2); - Assert.Equal(0, doubleAffineModel.Offset, 2); + Assert.Equal(1 / 1.8, doubleAffineModel.Scale, 0.01); + Assert.Equal(0, doubleAffineModel.Offset, 0.01); doubleAffineModelVector = ((NormalizingTransformer)robustScalerTransformer).Columns[3].ModelParameters as NormalizingTransformer.AffineNormalizerModelParameters>; Assert.Equal(4, doubleAffineModelVector.Scale.Length); - Assert.Equal(.5555556, doubleAffineModelVector.Scale[0], 2); - Assert.Equal(.8333333, doubleAffineModelVector.Scale[1], 2); - Assert.Equal(.3389830, doubleAffineModelVector.Scale[2], 2); - Assert.Equal(.8333333, doubleAffineModelVector.Scale[3], 2); + Assert.Equal(.5555556, doubleAffineModelVector.Scale[0], 0.01); + Assert.Equal(.8333333, doubleAffineModelVector.Scale[1], 0.01); + Assert.Equal(.3389830, doubleAffineModelVector.Scale[2], 0.01); + Assert.Equal(.8333333, doubleAffineModelVector.Scale[3], 0.01); Assert.Empty(doubleAffineModelVector.Offset); diff --git a/test/Microsoft.ML.TimeSeries.Tests/TimeSeriesDirectApi.cs b/test/Microsoft.ML.TimeSeries.Tests/TimeSeriesDirectApi.cs index c38e426b65..ce727c5daa 100644 --- a/test/Microsoft.ML.TimeSeries.Tests/TimeSeriesDirectApi.cs +++ b/test/Microsoft.ML.TimeSeries.Tests/TimeSeriesDirectApi.cs @@ -195,10 +195,10 @@ public void ChangePointDetectionWithSeasonality() while (enumerator.MoveNext() && index < expectedValues.Count) { row = enumerator.Current; - Assert.Equal(expectedValues[index++], row.Change[0], precision: 7); // Alert - Assert.Equal(expectedValues[index++], row.Change[1], precision: 7); // Raw score - Assert.Equal(expectedValues[index++], row.Change[2], precision: 7); // P-Value score - Assert.Equal(expectedValues[index++], row.Change[3], precision: 7); // Martingale score + Assert.Equal(expectedValues[index++], row.Change[0], 0.0000001); // Alert + Assert.Equal(expectedValues[index++], row.Change[1], 0.0000001); // Raw score + Assert.Equal(expectedValues[index++], row.Change[2], 0.0000001); // P-Value score + Assert.Equal(expectedValues[index++], row.Change[3], 0.0000001); // Martingale score } } @@ -255,10 +255,10 @@ public void ChangePointDetectionWithSeasonalityPredictionEngineNoColumn() var engine2 = model2.CreateTimeSeriesEngine(ml); var prediction2 = engine2.Predict(new Data(1)); //Raw score after first input. - Assert.Equal(1.1661833524703979, prediction2.Change[1], precision: 5); // Raw score + Assert.Equal(1.1661833524703979, prediction2.Change[1], 0.00001); // Raw score prediction2 = engine2.Predict(new Data(1)); //Raw score after second input. - Assert.Equal(0.12216401100158691, prediction2.Change[1], precision: 5); // Raw score + Assert.Equal(0.12216401100158691, prediction2.Change[1], 0.00001); // Raw score //Even though time series column is not requested it will // pass the observation through time series transform and update the state with the first input. @@ -275,7 +275,7 @@ public void ChangePointDetectionWithSeasonalityPredictionEngineNoColumn() //and raw score should match the raw score obtained by passing the two input in the first model. var engine3 = model3.CreateTimeSeriesEngine(ml); var prediction3 = engine3.Predict(new Data(1)); - Assert.Equal(0.12216401100158691, prediction2.Change[1], precision: 5); // Raw score + Assert.Equal(0.12216401100158691, prediction2.Change[1], 0.00001); // Raw score } [NativeDependencyFact("MklImports")] @@ -318,10 +318,10 @@ public void ChangePointDetectionWithSeasonalityPredictionEngine() //Model 1: Prediction #1. var engine = model.CreateTimeSeriesEngine(ml); var prediction = engine.Predict(new Data(1)); - Assert.Equal(0, prediction.Change[0], precision: 7); // Alert - Assert.Equal(1.1661833524703979, prediction.Change[1], precision: 5); // Raw score - Assert.Equal(0.5, prediction.Change[2], precision: 7); // P-Value score - Assert.Equal(5.1200000000000114E-08, prediction.Change[3], precision: 7); // Martingale score + Assert.Equal(0, prediction.Change[0], 0.0000001); // Alert + Assert.Equal(1.1661833524703979, prediction.Change[1], 0.00001); // Raw score + Assert.Equal(0.5, prediction.Change[2], 0.0000001); // P-Value score + Assert.Equal(5.1200000000000114E-08, prediction.Change[3], 0.0000001); // Martingale score //Model 1: Checkpoint. var modelPath = "temp.zip"; @@ -329,10 +329,10 @@ public void ChangePointDetectionWithSeasonalityPredictionEngine() //Model 1: Prediction #2 prediction = engine.Predict(new Data(1)); - Assert.Equal(0, prediction.Change[0], precision: 7); // Alert - Assert.Equal(0.12216401100158691, prediction.Change[1], precision: 5); // Raw score - Assert.Equal(0.14823824685192111, prediction.Change[2], precision: 5); // P-Value score - Assert.Equal(1.5292508189989167E-07, prediction.Change[3], precision: 7); // Martingale score + Assert.Equal(0, prediction.Change[0], 0.0000001); // Alert + Assert.Equal(0.12216401100158691, prediction.Change[1], 0.00001); // Raw score + Assert.Equal(0.14823824685192111, prediction.Change[2], 0.00001); // P-Value score + Assert.Equal(1.5292508189989167E-07, prediction.Change[3], 0.0000001); // Martingale score // Load Model 1. ITransformer model2 = null; @@ -342,10 +342,10 @@ public void ChangePointDetectionWithSeasonalityPredictionEngine() //Predict and expect the same result after checkpointing(Prediction #2). engine = model2.CreateTimeSeriesEngine(ml); prediction = engine.Predict(new Data(1)); - Assert.Equal(0, prediction.Change[0], precision: 7); // Alert - Assert.Equal(0.12216401100158691, prediction.Change[1], precision: 5); // Raw score - Assert.Equal(0.14823824685192111, prediction.Change[2], precision: 5); // P-Value score - Assert.Equal(1.5292508189989167E-07, prediction.Change[3], precision: 5); // Martingale score + Assert.Equal(0, prediction.Change[0], 0.0000001); // Alert + Assert.Equal(0.12216401100158691, prediction.Change[1], 0.00001); // Raw score + Assert.Equal(0.14823824685192111, prediction.Change[2], 0.00001); // P-Value score + Assert.Equal(1.5292508189989167E-07, prediction.Change[3], 0.00001); // Martingale score } [NativeDependencyFact("MklImports")] @@ -405,9 +405,9 @@ public void SsaForecast() for (int localIndex = 0; localIndex < 4; localIndex++) { - Assert.Equal(expectedForecast[localIndex], row.Forecast[localIndex], precision: 7); - Assert.Equal(minCnf[localIndex], row.MinCnf[localIndex], precision: 7); - Assert.Equal(maxCnf[localIndex], row.MaxCnf[localIndex], precision: 7); + Assert.Equal(expectedForecast[localIndex], row.Forecast[localIndex], 0.0000001); + Assert.Equal(minCnf[localIndex], row.MinCnf[localIndex], 0.0000001); + Assert.Equal(maxCnf[localIndex], row.MaxCnf[localIndex], 0.0000001); } } @@ -645,7 +645,7 @@ public void TestSrCnnBatchAnomalyDetector( if (k == 20) { Assert.Equal(1, prediction.Prediction[0]); - Assert.Equal(5.00, prediction.Prediction[3], 2); + Assert.Equal(5.00, prediction.Prediction[3], 0.01); } else Assert.Equal(0, prediction.Prediction[0]); @@ -655,10 +655,10 @@ public void TestSrCnnBatchAnomalyDetector( if (k == 20) { Assert.Equal(1, prediction.Prediction[0]); - Assert.Equal(5.00, prediction.Prediction[3], 2); - Assert.Equal(5.00, prediction.Prediction[4], 2); - Assert.Equal(5.01, prediction.Prediction[5], 2); - Assert.Equal(4.99, prediction.Prediction[6], 2); + Assert.Equal(5.00, prediction.Prediction[3], 0.01); + Assert.Equal(5.00, prediction.Prediction[4], 0.01); + Assert.Equal(5.01, prediction.Prediction[5], 0.01); + Assert.Equal(4.99, prediction.Prediction[6], 0.01); Assert.True(prediction.Prediction[6] > data[k].Value || data[k].Value > prediction.Prediction[5]); } else diff --git a/test/Microsoft.ML.TimeSeries.Tests/TimeSeriesSimpleApiTests.cs b/test/Microsoft.ML.TimeSeries.Tests/TimeSeriesSimpleApiTests.cs index 7852eb36ec..b1758ac691 100644 --- a/test/Microsoft.ML.TimeSeries.Tests/TimeSeriesSimpleApiTests.cs +++ b/test/Microsoft.ML.TimeSeries.Tests/TimeSeriesSimpleApiTests.cs @@ -66,10 +66,10 @@ public void ChangeDetection() { row = enumerator.Current; - Assert.Equal(expectedValues[index++], row.Data[0], precision: 7); - Assert.Equal(expectedValues[index++], row.Data[1], precision: 7); - Assert.Equal(expectedValues[index++], row.Data[2], precision: 7); - Assert.Equal(expectedValues[index++], row.Data[3], precision: 7); + Assert.Equal(expectedValues[index++], row.Data[0], 0.0000001); + Assert.Equal(expectedValues[index++], row.Data[1], 0.0000001); + Assert.Equal(expectedValues[index++], row.Data[2], 0.0000001); + Assert.Equal(expectedValues[index++], row.Data[3], 0.0000001); } }