Imported Upstream version 5.0.0.42

Former-commit-id: fd56571888259555122d8a0f58c68838229cea2b
This commit is contained in:
Xamarin Public Jenkins (auto-signing)
2017-04-10 11:41:01 +00:00
parent 1190d13a04
commit 6bdd276d05
19939 changed files with 3099680 additions and 93811 deletions

View File

@ -0,0 +1,334 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.25420.1
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net.NameResolution.Functional.Tests", "tests\FunctionalTests\System.Net.NameResolution.Functional.Tests.csproj", "{4FE5ECEE-ACC5-4558-A946-573426599B73}"
ProjectSection(ProjectDependencies) = postProject
{} = {}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net.NameResolution.Pal.Tests", "tests\PalTests\System.Net.NameResolution.Pal.Tests.csproj", "{F6D1C093-081D-46DE-B5A8-516533375FDD}"
ProjectSection(ProjectDependencies) = postProject
{} = {}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net.NameResolution.Unit.Tests", "tests\UnitTests\System.Net.NameResolution.Unit.Tests.csproj", "{239347DB-D566-48C9-9551-28AB3AD12EC3}"
ProjectSection(ProjectDependencies) = postProject
{} = {}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net.NameResolution.Unit.Tests", "tests\UnitTests\System.Net.NameResolution.Unit.Tests.csproj", "{239347DB-D566-48C9-9551-28AB3AD12EC3}"
ProjectSection(ProjectDependencies) = postProject
{} = {}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net.NameResolution.Pal.Tests", "tests\PalTests\System.Net.NameResolution.Pal.Tests.csproj", "{F6D1C093-081D-46DE-B5A8-516533375FDD}"
ProjectSection(ProjectDependencies) = postProject
{} = {}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net.NameResolution.Functional.Tests", "tests\FunctionalTests\System.Net.NameResolution.Functional.Tests.csproj", "{4FE5ECEE-ACC5-4558-A946-573426599B73}"
ProjectSection(ProjectDependencies) = postProject
{} = {}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net.NameResolution.Functional.Tests", "tests\FunctionalTests\System.Net.NameResolution.Functional.Tests.csproj", "{4FE5ECEE-ACC5-4558-A946-573426599B73}"
ProjectSection(ProjectDependencies) = postProject
{} = {}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net.NameResolution.Pal.Tests", "tests\PalTests\System.Net.NameResolution.Pal.Tests.csproj", "{F6D1C093-081D-46DE-B5A8-516533375FDD}"
ProjectSection(ProjectDependencies) = postProject
{} = {}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net.NameResolution.Unit.Tests", "tests\UnitTests\System.Net.NameResolution.Unit.Tests.csproj", "{239347DB-D566-48C9-9551-28AB3AD12EC3}"
ProjectSection(ProjectDependencies) = postProject
{} = {}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net.NameResolution.Unit.Tests", "tests\UnitTests\System.Net.NameResolution.Unit.Tests.csproj", "{239347DB-D566-48C9-9551-28AB3AD12EC3}"
ProjectSection(ProjectDependencies) = postProject
{1714448C-211E-48C1-8B7E-4EE667D336A1} = {1714448C-211E-48C1-8B7E-4EE667D336A1}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net.NameResolution.Pal.Tests", "tests\PalTests\System.Net.NameResolution.Pal.Tests.csproj", "{F6D1C093-081D-46DE-B5A8-516533375FDD}"
ProjectSection(ProjectDependencies) = postProject
{1714448C-211E-48C1-8B7E-4EE667D336A1} = {1714448C-211E-48C1-8B7E-4EE667D336A1}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net.NameResolution.Functional.Tests", "tests\FunctionalTests\System.Net.NameResolution.Functional.Tests.csproj", "{4FE5ECEE-ACC5-4558-A946-573426599B73}"
ProjectSection(ProjectDependencies) = postProject
{1714448C-211E-48C1-8B7E-4EE667D336A1} = {1714448C-211E-48C1-8B7E-4EE667D336A1}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ref", "ref", "{EC3CAC27-AC09-4A62-BBE3-87FB0AFF5EF2}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net.NameResolution", "ref\System.Net.NameResolution.csproj", "{2AF3C59B-0005-4374-8B43-31BD967E5A3C}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{BB465544-FDF2-4858-94A9-CF2E964AD7BE}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{1FBB81D4-E5E8-4F31-8F23-02DFDFC6339F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net.NameResolution", "src\System.Net.NameResolution.csproj", "{1714448C-211E-48C1-8B7E-4EE667D336A1}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "FunctionalTests", "FunctionalTests", "{9828545B-B1F9-4321-AC18-5A223661C0AA}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "PalTests", "PalTests", "{B4ECAB65-25BE-429A-AC6C-924174138F0B}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "UnitTests", "UnitTests", "{65B0E1EC-54D4-4D2B-AC86-99E7E5DFC8F9}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
DebugNETCoreAppnetcore50-Windows_NTnetcoreapp-Windows_NT|AnyCPU = DebugNETCoreAppnetcore50-Windows_NTnetcoreapp-Windows_NT|AnyCPU
ReleaseNETCoreAppnetcore50-Windows_NTnetcoreapp-Windows_NT|AnyCPU = ReleaseNETCoreAppnetcore50-Windows_NTnetcoreapp-Windows_NT|AnyCPU
DebugNETCoreAppnetcore50-Windows_NTnetcoreapp-Unix|AnyCPU = DebugNETCoreAppnetcore50-Windows_NTnetcoreapp-Unix|AnyCPU
ReleaseNETCoreAppnetcore50-Windows_NTnetcoreapp-Unix|AnyCPU = ReleaseNETCoreAppnetcore50-Windows_NTnetcoreapp-Unix|AnyCPU
DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU = DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU
ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU = ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU
DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Unix|AnyCPU = DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Unix|AnyCPU
ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Unix|AnyCPU = ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Unix|AnyCPU
DebugNETCoreAppnetcoreapp-Unixnetcoreapp-Windows_NT|AnyCPU = DebugNETCoreAppnetcoreapp-Unixnetcoreapp-Windows_NT|AnyCPU
ReleaseNETCoreAppnetcoreapp-Unixnetcoreapp-Windows_NT|AnyCPU = ReleaseNETCoreAppnetcoreapp-Unixnetcoreapp-Windows_NT|AnyCPU
DebugNETCoreAppnetcoreapp-Unixnetcoreapp-Unix|AnyCPU = DebugNETCoreAppnetcoreapp-Unixnetcoreapp-Unix|AnyCPU
ReleaseNETCoreAppnetcoreapp-Unixnetcoreapp-Unix|AnyCPU = ReleaseNETCoreAppnetcoreapp-Unixnetcoreapp-Unix|AnyCPU
DebugNETCoreAppnet46-Windows_NTnetcoreapp-Windows_NT|AnyCPU = DebugNETCoreAppnet46-Windows_NTnetcoreapp-Windows_NT|AnyCPU
ReleaseNETCoreAppnet46-Windows_NTnetcoreapp-Windows_NT|AnyCPU = ReleaseNETCoreAppnet46-Windows_NTnetcoreapp-Windows_NT|AnyCPU
DebugNETCoreAppnet46-Windows_NTnetcoreapp-Unix|AnyCPU = DebugNETCoreAppnet46-Windows_NTnetcoreapp-Unix|AnyCPU
ReleaseNETCoreAppnet46-Windows_NTnetcoreapp-Unix|AnyCPU = ReleaseNETCoreAppnet46-Windows_NTnetcoreapp-Unix|AnyCPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{4FE5ECEE-ACC5-4558-A946-573426599B73}.DebugNETCoreAppnetcore50-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.DebugNETCoreAppnetcore50-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.ReleaseNETCoreAppnetcore50-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.ReleaseNETCoreAppnetcore50-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.DebugNETCoreAppnetcore50-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Debug|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.DebugNETCoreAppnetcore50-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Debug|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.ReleaseNETCoreAppnetcore50-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Release|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.ReleaseNETCoreAppnetcore50-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Release|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Debug|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Debug|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Release|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Release|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.DebugNETCoreAppnetcoreapp-Unixnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.DebugNETCoreAppnetcoreapp-Unixnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.ReleaseNETCoreAppnetcoreapp-Unixnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.ReleaseNETCoreAppnetcoreapp-Unixnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.DebugNETCoreAppnetcoreapp-Unixnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Debug|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.DebugNETCoreAppnetcoreapp-Unixnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Debug|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.ReleaseNETCoreAppnetcoreapp-Unixnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Release|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.ReleaseNETCoreAppnetcoreapp-Unixnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Release|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.DebugNETCoreAppnet46-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.DebugNETCoreAppnet46-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.ReleaseNETCoreAppnet46-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.ReleaseNETCoreAppnet46-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.DebugNETCoreAppnet46-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Debug|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.DebugNETCoreAppnet46-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Debug|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.ReleaseNETCoreAppnet46-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Release|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.ReleaseNETCoreAppnet46-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Release|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.DebugNETCoreAppnetcore50-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.DebugNETCoreAppnetcore50-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.ReleaseNETCoreAppnetcore50-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.ReleaseNETCoreAppnetcore50-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.DebugNETCoreAppnetcore50-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Debug|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.DebugNETCoreAppnetcore50-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Debug|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.ReleaseNETCoreAppnetcore50-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Release|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.ReleaseNETCoreAppnetcore50-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Release|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Debug|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Debug|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Release|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Release|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.DebugNETCoreAppnetcoreapp-Unixnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.DebugNETCoreAppnetcoreapp-Unixnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.ReleaseNETCoreAppnetcoreapp-Unixnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.ReleaseNETCoreAppnetcoreapp-Unixnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.DebugNETCoreAppnetcoreapp-Unixnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Debug|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.DebugNETCoreAppnetcoreapp-Unixnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Debug|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.ReleaseNETCoreAppnetcoreapp-Unixnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Release|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.ReleaseNETCoreAppnetcoreapp-Unixnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Release|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.DebugNETCoreAppnet46-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.DebugNETCoreAppnet46-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.ReleaseNETCoreAppnet46-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.ReleaseNETCoreAppnet46-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.DebugNETCoreAppnet46-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Debug|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.DebugNETCoreAppnet46-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Debug|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.ReleaseNETCoreAppnet46-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Release|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.ReleaseNETCoreAppnet46-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Release|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.DebugNETCoreAppnetcore50-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.DebugNETCoreAppnetcore50-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.ReleaseNETCoreAppnetcore50-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.ReleaseNETCoreAppnetcore50-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.DebugNETCoreAppnetcore50-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Debug|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.DebugNETCoreAppnetcore50-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Debug|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.ReleaseNETCoreAppnetcore50-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Release|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.ReleaseNETCoreAppnetcore50-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Release|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Debug|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Debug|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Release|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Release|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.DebugNETCoreAppnetcoreapp-Unixnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.DebugNETCoreAppnetcoreapp-Unixnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.ReleaseNETCoreAppnetcoreapp-Unixnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.ReleaseNETCoreAppnetcoreapp-Unixnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.DebugNETCoreAppnetcoreapp-Unixnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Debug|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.DebugNETCoreAppnetcoreapp-Unixnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Debug|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.ReleaseNETCoreAppnetcoreapp-Unixnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Release|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.ReleaseNETCoreAppnetcoreapp-Unixnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Release|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.DebugNETCoreAppnet46-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.DebugNETCoreAppnet46-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.ReleaseNETCoreAppnet46-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.ReleaseNETCoreAppnet46-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.DebugNETCoreAppnet46-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Debug|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.DebugNETCoreAppnet46-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Debug|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.ReleaseNETCoreAppnet46-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Release|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.ReleaseNETCoreAppnet46-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Release|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.DebugNETCoreAppnetcore50-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.DebugNETCoreAppnetcore50-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.ReleaseNETCoreAppnetcore50-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.ReleaseNETCoreAppnetcore50-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.DebugNETCoreAppnetcore50-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Debug|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.DebugNETCoreAppnetcore50-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Debug|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.ReleaseNETCoreAppnetcore50-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Release|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.ReleaseNETCoreAppnetcore50-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Release|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Debug|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Debug|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Release|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Release|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.DebugNETCoreAppnetcoreapp-Unixnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.DebugNETCoreAppnetcoreapp-Unixnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.ReleaseNETCoreAppnetcoreapp-Unixnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.ReleaseNETCoreAppnetcoreapp-Unixnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.DebugNETCoreAppnetcoreapp-Unixnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Debug|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.DebugNETCoreAppnetcoreapp-Unixnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Debug|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.ReleaseNETCoreAppnetcoreapp-Unixnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Release|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.ReleaseNETCoreAppnetcoreapp-Unixnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Release|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.DebugNETCoreAppnet46-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.DebugNETCoreAppnet46-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.ReleaseNETCoreAppnet46-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.ReleaseNETCoreAppnet46-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.DebugNETCoreAppnet46-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Debug|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.DebugNETCoreAppnet46-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Debug|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.ReleaseNETCoreAppnet46-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Release|Any CPU
{239347DB-D566-48C9-9551-28AB3AD12EC3}.ReleaseNETCoreAppnet46-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Release|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.DebugNETCoreAppnetcore50-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.DebugNETCoreAppnetcore50-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.ReleaseNETCoreAppnetcore50-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.ReleaseNETCoreAppnetcore50-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.DebugNETCoreAppnetcore50-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Debug|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.DebugNETCoreAppnetcore50-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Debug|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.ReleaseNETCoreAppnetcore50-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Release|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.ReleaseNETCoreAppnetcore50-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Release|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Debug|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Debug|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Release|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Release|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.DebugNETCoreAppnetcoreapp-Unixnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.DebugNETCoreAppnetcoreapp-Unixnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.ReleaseNETCoreAppnetcoreapp-Unixnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.ReleaseNETCoreAppnetcoreapp-Unixnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.DebugNETCoreAppnetcoreapp-Unixnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Debug|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.DebugNETCoreAppnetcoreapp-Unixnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Debug|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.ReleaseNETCoreAppnetcoreapp-Unixnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Release|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.ReleaseNETCoreAppnetcoreapp-Unixnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Release|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.DebugNETCoreAppnet46-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.DebugNETCoreAppnet46-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.ReleaseNETCoreAppnet46-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.ReleaseNETCoreAppnet46-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.DebugNETCoreAppnet46-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Debug|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.DebugNETCoreAppnet46-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Debug|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.ReleaseNETCoreAppnet46-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Release|Any CPU
{F6D1C093-081D-46DE-B5A8-516533375FDD}.ReleaseNETCoreAppnet46-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Release|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.DebugNETCoreAppnetcore50-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.DebugNETCoreAppnetcore50-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.ReleaseNETCoreAppnetcore50-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.ReleaseNETCoreAppnetcore50-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.DebugNETCoreAppnetcore50-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Debug|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.DebugNETCoreAppnetcore50-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Debug|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.ReleaseNETCoreAppnetcore50-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Release|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.ReleaseNETCoreAppnetcore50-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Release|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Debug|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Debug|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Release|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Release|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.DebugNETCoreAppnetcoreapp-Unixnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.DebugNETCoreAppnetcoreapp-Unixnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.ReleaseNETCoreAppnetcoreapp-Unixnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.ReleaseNETCoreAppnetcoreapp-Unixnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.DebugNETCoreAppnetcoreapp-Unixnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Debug|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.DebugNETCoreAppnetcoreapp-Unixnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Debug|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.ReleaseNETCoreAppnetcoreapp-Unixnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Release|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.ReleaseNETCoreAppnetcoreapp-Unixnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Release|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.DebugNETCoreAppnet46-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.DebugNETCoreAppnet46-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.ReleaseNETCoreAppnet46-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.ReleaseNETCoreAppnet46-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.DebugNETCoreAppnet46-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Debug|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.DebugNETCoreAppnet46-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Debug|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.ReleaseNETCoreAppnet46-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Release|Any CPU
{4FE5ECEE-ACC5-4558-A946-573426599B73}.ReleaseNETCoreAppnet46-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Release|Any CPU
{1714448C-211E-48C1-8B7E-4EE667D336A1}.DebugNETCoreAppnetcore50-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcore50-Windows_NT-Debug|Any CPU
{1714448C-211E-48C1-8B7E-4EE667D336A1}.DebugNETCoreAppnetcore50-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcore50-Windows_NT-Debug|Any CPU
{1714448C-211E-48C1-8B7E-4EE667D336A1}.ReleaseNETCoreAppnetcore50-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcore50-Windows_NT-Release|Any CPU
{1714448C-211E-48C1-8B7E-4EE667D336A1}.ReleaseNETCoreAppnetcore50-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcore50-Windows_NT-Release|Any CPU
{1714448C-211E-48C1-8B7E-4EE667D336A1}.DebugNETCoreAppnetcore50-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcore50-Windows_NT-Debug|Any CPU
{1714448C-211E-48C1-8B7E-4EE667D336A1}.DebugNETCoreAppnetcore50-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcore50-Windows_NT-Debug|Any CPU
{1714448C-211E-48C1-8B7E-4EE667D336A1}.ReleaseNETCoreAppnetcore50-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcore50-Windows_NT-Release|Any CPU
{1714448C-211E-48C1-8B7E-4EE667D336A1}.ReleaseNETCoreAppnetcore50-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcore50-Windows_NT-Release|Any CPU
{1714448C-211E-48C1-8B7E-4EE667D336A1}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{1714448C-211E-48C1-8B7E-4EE667D336A1}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{1714448C-211E-48C1-8B7E-4EE667D336A1}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{1714448C-211E-48C1-8B7E-4EE667D336A1}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{1714448C-211E-48C1-8B7E-4EE667D336A1}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{1714448C-211E-48C1-8B7E-4EE667D336A1}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{1714448C-211E-48C1-8B7E-4EE667D336A1}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{1714448C-211E-48C1-8B7E-4EE667D336A1}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{1714448C-211E-48C1-8B7E-4EE667D336A1}.DebugNETCoreAppnetcoreapp-Unixnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Unix-Debug|Any CPU
{1714448C-211E-48C1-8B7E-4EE667D336A1}.DebugNETCoreAppnetcoreapp-Unixnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Unix-Debug|Any CPU
{1714448C-211E-48C1-8B7E-4EE667D336A1}.ReleaseNETCoreAppnetcoreapp-Unixnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Unix-Release|Any CPU
{1714448C-211E-48C1-8B7E-4EE667D336A1}.ReleaseNETCoreAppnetcoreapp-Unixnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Unix-Release|Any CPU
{1714448C-211E-48C1-8B7E-4EE667D336A1}.DebugNETCoreAppnetcoreapp-Unixnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Debug|Any CPU
{1714448C-211E-48C1-8B7E-4EE667D336A1}.DebugNETCoreAppnetcoreapp-Unixnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Debug|Any CPU
{1714448C-211E-48C1-8B7E-4EE667D336A1}.ReleaseNETCoreAppnetcoreapp-Unixnetcoreapp-Unix|AnyCPU.ActiveCfg = netcoreapp-Unix-Release|Any CPU
{1714448C-211E-48C1-8B7E-4EE667D336A1}.ReleaseNETCoreAppnetcoreapp-Unixnetcoreapp-Unix|AnyCPU.Build.0 = netcoreapp-Unix-Release|Any CPU
{1714448C-211E-48C1-8B7E-4EE667D336A1}.DebugNETCoreAppnet46-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = net46-Windows_NT-Debug|Any CPU
{1714448C-211E-48C1-8B7E-4EE667D336A1}.DebugNETCoreAppnet46-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = net46-Windows_NT-Debug|Any CPU
{1714448C-211E-48C1-8B7E-4EE667D336A1}.ReleaseNETCoreAppnet46-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = net46-Windows_NT-Release|Any CPU
{1714448C-211E-48C1-8B7E-4EE667D336A1}.ReleaseNETCoreAppnet46-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = net46-Windows_NT-Release|Any CPU
{1714448C-211E-48C1-8B7E-4EE667D336A1}.DebugNETCoreAppnet46-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = net46-Windows_NT-Debug|Any CPU
{1714448C-211E-48C1-8B7E-4EE667D336A1}.DebugNETCoreAppnet46-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = net46-Windows_NT-Debug|Any CPU
{1714448C-211E-48C1-8B7E-4EE667D336A1}.ReleaseNETCoreAppnet46-Windows_NTnetcoreapp-Unix|AnyCPU.ActiveCfg = net46-Windows_NT-Release|Any CPU
{1714448C-211E-48C1-8B7E-4EE667D336A1}.ReleaseNETCoreAppnet46-Windows_NTnetcoreapp-Unix|AnyCPU.Build.0 = net46-Windows_NT-Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{4FE5ECEE-ACC5-4558-A946-573426599B73} = {4FE5ECEE-ACC5-4558-A946-573426599B73}
{1714448C-211E-48C1-8B7E-4EE667D336A1} = {1714448C-211E-48C1-8B7E-4EE667D336A1}
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\dir.props" />
<PropertyGroup>
<AssemblyVersion>4.1.0.0</AssemblyVersion>
<IsNETCoreApp>true</IsNETCoreApp>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<BuildConfigurations>
netcoreapp;
uap;
</BuildConfigurations>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,49 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
// ------------------------------------------------------------------------------
// Changes to this file must follow the http://aka.ms/api-review process.
// ------------------------------------------------------------------------------
namespace System.Net
{
public static partial class Dns
{
public static IAsyncResult BeginGetHostAddresses(string hostNameOrAddress, AsyncCallback requestCallback, object state) { throw null; }
[Obsolete("BeginGetHostByName is obsoleted for this type, please use BeginGetHostEntry instead. http://go.microsoft.com/fwlink/?linkid=14202")]
public static IAsyncResult BeginGetHostByName(string hostName, AsyncCallback requestCallback, object stateObject) { throw null; }
public static IAsyncResult BeginGetHostEntry(string hostNameOrAddress, AsyncCallback requestCallback, object stateObject) { throw null; }
public static IAsyncResult BeginGetHostEntry(IPAddress address, AsyncCallback requestCallback, object stateObject) { throw null; }
[Obsolete("BeginResolve is obsoleted for this type, please use BeginGetHostEntry instead. http://go.microsoft.com/fwlink/?linkid=14202")]
public static IAsyncResult BeginResolve(string hostName, AsyncCallback requestCallback, object stateObject) { throw null; }
public static IPAddress[] EndGetHostAddresses(IAsyncResult asyncResult) { throw null; }
[Obsolete("EndGetHostByName is obsoleted for this type, please use EndGetHostEntry instead. http://go.microsoft.com/fwlink/?linkid=14202")]
public static IPHostEntry EndGetHostByName(IAsyncResult asyncResult) { throw null; }
public static IPHostEntry EndGetHostEntry(IAsyncResult asyncResult) { throw null; }
[Obsolete("EndResolve is obsoleted for this type, please use EndGetHostEntry instead. http://go.microsoft.com/fwlink/?linkid=14202")]
public static IPHostEntry EndResolve(IAsyncResult asyncResult) { throw null; }
public static IPAddress[] GetHostAddresses(string hostNameOrAddress) { throw null; }
[Obsolete("GetHostByAddress is obsoleted for this type, please use GetHostEntry instead. http://go.microsoft.com/fwlink/?linkid=14202")]
public static IPHostEntry GetHostByAddress(IPAddress address) { throw null; }
[Obsolete("GetHostByAddress is obsoleted for this type, please use GetHostEntry instead. http://go.microsoft.com/fwlink/?linkid=14202")]
public static IPHostEntry GetHostByAddress(string address) { throw null; }
[Obsolete("GetHostByName is obsoleted for this type, please use GetHostEntry instead. http://go.microsoft.com/fwlink/?linkid=14202")]
public static IPHostEntry GetHostByName(string hostName) { throw null; }
public static System.Threading.Tasks.Task<System.Net.IPAddress[]> GetHostAddressesAsync(string hostNameOrAddress) { throw null; }
public static IPHostEntry GetHostEntry(string hostNameOrAddress) { throw null; }
public static IPHostEntry GetHostEntry(IPAddress address) { throw null; }
public static System.Threading.Tasks.Task<System.Net.IPHostEntry> GetHostEntryAsync(System.Net.IPAddress address) { throw null; }
public static System.Threading.Tasks.Task<System.Net.IPHostEntry> GetHostEntryAsync(string hostNameOrAddress) { throw null; }
public static string GetHostName() { throw null; }
[Obsolete("Resolve is obsoleted for this type, please use GetHostEntry instead. http://go.microsoft.com/fwlink/?linkid=14202")]
public static IPHostEntry Resolve(string hostName) { throw null; }
}
public partial class IPHostEntry
{
public IPHostEntry() { }
public System.Net.IPAddress[] AddressList { get { throw null; } set { } }
public string[] Aliases { get { throw null; } set { } }
public string HostName { get { throw null; } set { } }
}
}

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'netcoreapp-Debug|AnyCPU'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'netcoreapp-Release|AnyCPU'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'uap-Debug|AnyCPU'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'uap-Release|AnyCPU'" />
<ItemGroup>
<Compile Include="System.Net.NameResolution.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\System.Net.Primitives\ref\System.Net.Primitives.csproj" />
<ProjectReference Include="..\..\System.Runtime\ref\System.Runtime.csproj" />
<ProjectReference Include="..\..\System.Threading.Tasks\ref\System.Threading.Tasks.csproj" />
</ItemGroup>
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
</Project>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<BuildConfigurations>
netcore50-Windows_NT;
netcoreapp-Windows_NT;
netcoreapp-Unix;
net46-Windows_NT;
</BuildConfigurations>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,138 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="net_toolong" xml:space="preserve">
<value>The size of {0} is too long. It cannot be longer than {1} characters.</value>
</data>
<data name="net_completed_result" xml:space="preserve">
<value>This operation cannot be performed on a completed asynchronous result object.</value>
</data>
<data name="net_io_invalidasyncresult" xml:space="preserve">
<value>The IAsyncResult object was not returned from the corresponding asynchronous method on this class.</value>
</data>
<data name="net_io_invalidendcall" xml:space="preserve">
<value>{0} can only be called once for each asynchronous operation.</value>
</data>
<data name="net_invalid_ip_addr" xml:space="preserve">
<value>IPv4 address 0.0.0.0 and IPv6 address ::0 are unspecified addresses that cannot be used as a target address.</value>
</data>
<data name="net_log_exception" xml:space="preserve">
<value>Exception in {0}::{1} - {2}.</value>
</data>
</root>

View File

@ -0,0 +1,217 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
<PropertyGroup>
<AssemblyName>System.Net.NameResolution</AssemblyName>
<ProjectGuid>{1714448C-211E-48C1-8B7E-4EE667D336A1}</ProjectGuid>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<IsPartialFacadeAssembly Condition="'$(TargetGroup)' == 'net46'">true</IsPartialFacadeAssembly>
<ResourcesSourceOutputDirectory Condition="'$(TargetGroup)' == 'net46'">None</ResourcesSourceOutputDirectory>
<EnableWinRT Condition="'$(TargetGroup)' == 'netcore50'">true</EnableWinRT>
</PropertyGroup>
<PropertyGroup Condition="'$(EnableWinRT)' != 'true'">
<DefineConstants>$(DefineConstants);FEATURE_CORECLR</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="'$(EnableWinRT)' == 'true'">
<DefineConstants>$(DefineConstants);NETNATIVE</DefineConstants>
</PropertyGroup>
<!-- Help VS understand available configurations -->
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='netcore50-Windows_NT-Debug|AnyCPU'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='netcore50-Windows_NT-Release|AnyCPU'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='netcoreapp-Windows_NT-Debug|AnyCPU'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='netcoreapp-Windows_NT-Release|AnyCPU'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='netcoreapp-Unix-Debug|AnyCPU'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='netcoreapp-Unix-Release|AnyCPU'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='net46-Windows_NT-Debug|AnyCPU'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='net46-Windows_NT-Release|AnyCPU'" />
<ItemGroup Condition="'$(TargetGroup)' == 'netcoreapp' or '$(TargetGroup)' == 'netcore50'">
<Compile Include="System\Net\DNS.cs" />
<Compile Include="System\Net\IPHostEntry.cs" />
<Compile Include="System\Net\NameResolutionUtilities.cs" />
<Compile Include="System\Net\NetEventSource.NameResolution.cs" />
<!-- Logging -->
<Compile Include="$(CommonPath)\System\Net\Logging\DebugThreadTracking.cs">
<Link>Common\System\Net\Logging\DebugThreadTracking.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\System\Net\Logging\NetEventSource.Common.cs">
<Link>Common\System\Net\Logging\NetEventSource.Common.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\System\Net\InternalException.cs">
<Link>Common\System\Net\InternalException.cs</Link>
</Compile>
<!-- System.Net common -->
<Compile Include="$(CommonPath)\System\Net\ContextAwareResult.cs">
<Link>Common\System\Net\ContextAwareResult.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\System\Net\LazyAsyncResult.cs">
<Link>Common\System\Net\LazyAsyncResult.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\System\Net\Sockets\ProtocolType.cs">
<Link>Common\System\Net\Sockets\ProtocolType.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\System\Net\Sockets\SocketType.cs">
<Link>Common\System\Net\Sockets\SocketType.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\System\Net\IPEndPointStatics.cs">
<Link>Common\System\Net\IPEndPointStatics.cs</Link>
</Compile>
</ItemGroup>
<ItemGroup Condition=" '$(TargetsWindows)' == 'true' AND ('$(TargetGroup)' == 'netcoreapp' or '$(TargetGroup)' == 'netcore50')">
<Compile Include="System\Net\NameResolutionPal.Windows.cs" />
<Compile Include="$(CommonPath)\System\Net\IntPtrHelper.cs">
<Link>Common\System\Net\IntPtrHelper.cs</Link>
</Compile>
<!-- Debug only -->
<Compile Include="$(CommonPath)\System\Net\DebugSafeHandle.cs">
<Link>Common\System\Net\DebugSafeHandle.cs</Link>
</Compile>
<!-- System.Net.Internals -->
<Compile Include="$(CommonPath)\System\Net\Internals\IPAddressExtensions.cs">
<Link>Common\System\Net\Internals\IPAddressExtensions.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\System\Net\Internals\SocketExceptionFactory.cs">
<Link>Common\System\Net\Internals\SocketExceptionFactory.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\System\Net\Internals\SocketExceptionFactory.Windows.cs">
<Link>Common\System\Net\Internals\SocketExceptionFactory.Windows.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\System\Net\SocketProtocolSupportPal.Windows.cs">
<Link>Common\System\Net\SocketProtocolSupportPal.Windows</Link>
</Compile>
<!-- Interop -->
<Compile Include="$(CommonPath)\Interop\Windows\Interop.Libraries.cs">
<Link>Interop\Windows\Interop.Libraries.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Windows\Winsock\AddressInfo.cs">
<Link>Interop\Windows\Winsock\AddressInfo.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Windows\Winsock\AddressInfoHints.cs">
<Link>Interop\Windows\Winsock\AddressInfoHints.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Windows\Winsock\hostent.cs">
<Link>Interop\Windows\Winsock\hostent.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Windows\Winsock\Interop.closesocket.cs">
<Link>Interop\Windows\Winsock\Interop.closesocket.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Windows\Winsock\Interop.gethostbyaddr.cs">
<Link>Interop\Windows\Winsock\Interop.gethostbyaddr.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Windows\Winsock\Interop.gethostbyname.cs">
<Link>Interop\Windows\Winsock\Interop.gethostbyname.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Windows\Winsock\Interop.gethostname.cs">
<Link>Interop\Windows\Winsock\Interop.gethostname.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Windows\Winsock\Interop.GetNameInfoW.cs">
<Link>Interop\Windows\Winsock\Interop.GetNameInfoW.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Windows\Winsock\Interop.GetAddrInfoW.cs">
<Link>Interop\Windows\Winsock\Interop.GetAddrInfoW.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Windows\Winsock\Interop.freeaddrinfo.cs">
<Link>Interop\Windows\Winsock\Interop.freeaddinfo.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Windows\Winsock\Interop.WSAStartup.cs">
<Link>Interop\Windows\Winsock\Interop.WSAStartup.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Windows\Winsock\Interop.WSASocketW.cs">
<Link>Interop\Windows\Winsock\Interop.WSASocketW.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\System\Net\Sockets\ProtocolFamily.cs">
<Link>Common\System\Net\Sockets\ProtocolFamily.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Windows\Winsock\SafeFreeAddrInfo.cs">
<Link>Interop\Windows\Winsock\SafeFreeAddrInfo.cs</Link>
</Compile>
</ItemGroup>
<!-- Windows : Win32 only -->
<ItemGroup Condition="'$(TargetsWindows)' == 'true' AND '$(EnableWinRT)' != 'true' AND ('$(TargetGroup)' == 'netcoreapp' or '$(TargetGroup)' == 'netcore50')">
<Compile Include="$(CommonPath)\System\Net\ContextAwareResult.Windows.cs">
<Link>Common\System\Net\ContextAwareResult.Windows.cs</Link>
</Compile>
</ItemGroup>
<!-- Windows : Win32 + WinRT -->
<ItemGroup Condition="'$(TargetsWindows)' == 'true' AND '$(EnableWinRT)' == 'true'">
<Compile Include="$(CommonPath)\System\Net\ContextAwareResult.Uap.cs">
<Link>Common\System\Net\ContextAwareResult.Uap.cs</Link>
</Compile>
</ItemGroup>
<ItemGroup Condition=" '$(TargetsUnix)' == 'true' ">
<Compile Include="System\Net\NameResolutionPal.Unix.cs" />
<Compile Include="$(CommonPath)\System\Net\ByteOrder.cs">
<Link>Common\System\Net\Internals\ByteOrder.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\System\Net\ContextAwareResult.Unix.cs">
<Link>Common\System\Net\ContextAwareResult.Unix.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\System\Net\InteropIPAddressExtensions.Unix.cs">
<Link>Common\System\Net\InteropIPAddressExtensions.Unix.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\System\Net\SocketAddressPal.Unix.cs">
<Link>Common\System\Net\Internals\SocketAddressPal.Unix.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\System\Net\SocketProtocolSupportPal.Unix.cs">
<Link>Common\System\Net\SocketProtocolSupportPal.Unix</Link>
</Compile>
<Compile Include="$(CommonPath)\System\Net\Internals\SocketExceptionFactory.cs">
<Link>Common\System\Net\Internals\SocketExceptionFactory.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\System\Net\Internals\SocketExceptionFactory.Unix.cs">
<Link>Common\System\Net\Internals\SocketExceptionFactory.Unix.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Interop.CheckedAccess.cs">
<Link>Common\System\Net\Internals\Interop.CheckedAccess.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Unix\Interop.Errors.cs">
<Link>Interop\Unix\Interop.Errors.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Unix\Interop.Libraries.cs">
<Link>Interop\Unix\Interop.Libraries.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Unix\System.Native\Interop.Close.cs">
<Link>Interop\Unix\System.Native\Interop.Close.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Unix\System.Native\Interop.GetHostName.cs">
<Link>Interop\Unix\System.Native\Interop.GetHostName.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Unix\System.Native\Interop.GetNameInfo.cs">
<Link>Interop\Unix\System.Native\Interop.GetNameInfo.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Unix\System.Native\Interop.HostEntry.cs">
<Link>Interop\Unix\System.Native\Interop.HostEntries.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Unix\System.Native\Interop.IPAddress.cs">
<Link>Interop\Unix\System.Native\Interop.HostEntries.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Unix\System.Native\Interop.Socket.cs">
<Link>Interop\Unix\System.Native\Interop.Socket.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Unix\System.Native\Interop.SocketAddress.cs">
<Link>Interop\Unix\System.Native\Interop.SocketAddress.cs</Link>
</Compile>
</ItemGroup>
<ItemGroup Condition="'$(TargetGroup)' == 'net46'">
<TargetingPackReference Include="mscorlib" />
<TargetingPackReference Include="System" />
</ItemGroup>
<ItemGroup>
<Reference Include="Microsoft.Win32.Primitives" />
<Reference Include="System.Collections" />
<Reference Include="System.Diagnostics.Contracts" />
<Reference Include="System.Diagnostics.Debug" />
<Reference Include="System.Diagnostics.Tracing" />
<Reference Include="System.Globalization" />
<Reference Include="System.Net.Primitives" />
<Reference Include="System.Resources.ResourceManager" />
<Reference Include="System.Runtime" />
<Reference Include="System.Runtime.Extensions" />
<Reference Include="System.Runtime.Handles" />
<Reference Include="System.Runtime.InteropServices" />
<Reference Include="System.Security.Claims" />
<Reference Include="System.Security.Principal.Windows" />
<Reference Include="System.Threading" />
<Reference Include="System.Threading.Tasks" />
</ItemGroup>
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
</Project>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,81 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
namespace System.Net
{
// Host information
/// <devdoc>
/// <para>Provides a container class for Internet host address information..</para>
/// </devdoc>
public class IPHostEntry
{
private string _hostName;
private string[] _aliases;
private IPAddress[] _addressList;
// CBT: When doing a DNS resolve, can the resulting host name trusted as an SPN?
// Only used on Win7Sp1+. Assume trusted by default.
internal bool isTrustedHost = true;
/// <devdoc>
/// <para>
/// Contains the DNS
/// name of the host.
/// </para>
/// </devdoc>
/// <devdoc>
/// </devdoc>
public string HostName
{
get
{
return _hostName;
}
set
{
_hostName = value;
}
}
/// <devdoc>
/// <para>
/// Provides an
/// array of strings containing other DNS names that resolve to the IP addresses
/// in <paramref name='AddressList'/>.
/// </para>
/// </devdoc>
/// <devdoc>
/// </devdoc>
public string[] Aliases
{
get
{
return _aliases;
}
set
{
_aliases = value;
}
}
/// <devdoc>
/// <para>
/// Provides an
/// array of <paramref name='IPAddress'/> objects.
/// </para>
/// </devdoc>
/// <devdoc>
/// </devdoc>
public IPAddress[] AddressList
{
get
{
return _addressList;
}
set
{
_addressList = value;
}
}
} // class IPHostEntry
} // namespace System.Net

View File

@ -0,0 +1,221 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System.Collections.Generic;
using System.Diagnostics;
using System.Net.Internals;
using System.Net.Sockets;
using System.Runtime.InteropServices;
using System.Text;
namespace System.Net
{
internal static partial class NameResolutionPal
{
private static SocketError GetSocketErrorForErrno(int errno)
{
switch (errno)
{
case 0:
return SocketError.Success;
case (int)Interop.Sys.GetHostErrorCodes.HOST_NOT_FOUND:
return SocketError.HostNotFound;
case (int)Interop.Sys.GetHostErrorCodes.NO_DATA:
return SocketError.NoData;
case (int)Interop.Sys.GetHostErrorCodes.NO_RECOVERY:
return SocketError.NoRecovery;
case (int)Interop.Sys.GetHostErrorCodes.TRY_AGAIN:
return SocketError.TryAgain;
default:
Debug.Fail("Unexpected errno: " + errno.ToString());
return SocketError.SocketError;
}
}
private static SocketError GetSocketErrorForNativeError(int error)
{
switch (error)
{
case 0:
return SocketError.Success;
case (int)Interop.Sys.GetAddrInfoErrorFlags.EAI_AGAIN:
return SocketError.TryAgain;
case (int)Interop.Sys.GetAddrInfoErrorFlags.EAI_BADFLAGS:
case (int)Interop.Sys.GetAddrInfoErrorFlags.EAI_BADARG:
return SocketError.InvalidArgument;
case (int)Interop.Sys.GetAddrInfoErrorFlags.EAI_FAIL:
return SocketError.NoRecovery;
case (int)Interop.Sys.GetAddrInfoErrorFlags.EAI_FAMILY:
return SocketError.AddressFamilyNotSupported;
case (int)Interop.Sys.GetAddrInfoErrorFlags.EAI_NONAME:
return SocketError.HostNotFound;
default:
Debug.Fail("Unexpected error: " + error.ToString());
return SocketError.SocketError;
}
}
private static unsafe IPHostEntry CreateIPHostEntry(Interop.Sys.HostEntry hostEntry)
{
string hostName = null;
if (hostEntry.CanonicalName != null)
{
hostName = Marshal.PtrToStringAnsi((IntPtr)hostEntry.CanonicalName);
}
int numAddresses = hostEntry.IPAddressCount;
IPAddress[] ipAddresses;
if (numAddresses == 0)
{
ipAddresses = Array.Empty<IPAddress>();
}
else
{
//
// getaddrinfo returns multiple entries per address, for each socket type (datagram, stream, etc.).
// Our callers expect just one entry for each address. So we need to deduplicate the results.
// It's important to keep the addresses in order, since they are returned in the order in which
// connections should be attempted.
//
// We assume that the list returned by getaddrinfo is relatively short; after all, the intent is that
// the caller may need to attempt to contact every address in the list before giving up on a connection
// attempt. So an O(N^2) algorithm should be fine here. Keep in mind that any "better" algorithm
// is likely to involve extra allocations, hashing, etc., and so will probably be more expensive than
// this one in the typical (short list) case.
//
var nativeAddresses = new Interop.Sys.IPAddress[hostEntry.IPAddressCount];
var nativeAddressCount = 0;
var addressListHandle = hostEntry.AddressListHandle;
for (int i = 0; i < hostEntry.IPAddressCount; i++)
{
var nativeIPAddress = default(Interop.Sys.IPAddress);
int err = Interop.Sys.GetNextIPAddress(&hostEntry, &addressListHandle, &nativeIPAddress);
Debug.Assert(err == 0);
if (Array.IndexOf(nativeAddresses, nativeIPAddress, 0, nativeAddressCount) == -1)
{
nativeAddresses[nativeAddressCount] = nativeIPAddress;
nativeAddressCount++;
}
}
ipAddresses = new IPAddress[nativeAddressCount];
for (int i = 0; i < nativeAddressCount; i++)
{
ipAddresses[i] = nativeAddresses[i].GetIPAddress();
}
}
int numAliases;
for (numAliases = 0; hostEntry.Aliases != null && hostEntry.Aliases[numAliases] != null; numAliases++)
{
}
string[] aliases;
if (numAliases == 0)
{
aliases = Array.Empty<string>();
}
else
{
aliases = new string[numAliases];
for (int i = 0; i < numAliases; i++)
{
Debug.Assert(hostEntry.Aliases[i] != null);
aliases[i] = Marshal.PtrToStringAnsi((IntPtr)hostEntry.Aliases[i]);
}
}
Interop.Sys.FreeHostEntry(&hostEntry);
return new IPHostEntry
{
HostName = hostName,
AddressList = ipAddresses,
Aliases = aliases
};
}
public static unsafe IPHostEntry GetHostByName(string hostName)
{
Interop.Sys.HostEntry entry;
int err = Interop.Sys.GetHostByName(hostName, &entry);
if (err != 0)
{
throw SocketExceptionFactory.CreateSocketException(GetSocketErrorForErrno(err), err);
}
return CreateIPHostEntry(entry);
}
public static unsafe IPHostEntry GetHostByAddr(IPAddress addr)
{
// TODO #2891: Optimize this (or decide if this legacy code can be removed):
Interop.Sys.IPAddress address = addr.GetNativeIPAddress();
Interop.Sys.HostEntry entry;
int err = Interop.Sys.GetHostByAddress(&address, &entry);
if (err != 0)
{
throw SocketExceptionFactory.CreateSocketException(GetSocketErrorForErrno(err), err);
}
return CreateIPHostEntry(entry);
}
public static unsafe SocketError TryGetAddrInfo(string name, out IPHostEntry hostinfo, out int nativeErrorCode)
{
Interop.Sys.HostEntry entry;
int result = Interop.Sys.GetHostEntryForName(name, &entry);
if (result != 0)
{
hostinfo = NameResolutionUtilities.GetUnresolvedAnswer(name);
nativeErrorCode = result;
return GetSocketErrorForNativeError(result);
}
hostinfo = CreateIPHostEntry(entry);
nativeErrorCode = 0;
return SocketError.Success;
}
public static unsafe string TryGetNameInfo(IPAddress addr, out SocketError socketError, out int nativeErrorCode)
{
byte* buffer = stackalloc byte[Interop.Sys.NI_MAXHOST + 1 /*for null*/];
// TODO #2891: Remove the copying step to improve performance. This requires a change in the contracts.
byte[] addressBuffer = addr.GetAddressBytes();
int error;
fixed (byte* rawAddress = addressBuffer)
{
error = Interop.Sys.GetNameInfo(
rawAddress,
unchecked((uint)addressBuffer.Length),
addr.AddressFamily == AddressFamily.InterNetworkV6,
buffer,
Interop.Sys.NI_MAXHOST,
null,
0,
Interop.Sys.GetNameInfoFlags.NI_NAMEREQD);
}
socketError = GetSocketErrorForNativeError(error);
nativeErrorCode = error;
return socketError != SocketError.Success ? null : Marshal.PtrToStringAnsi((IntPtr)buffer);
}
public static string GetHostName()
{
return Interop.Sys.GetHostName();
}
public static void EnsureSocketsAreInitialized()
{
// No-op for Unix.
}
}
}

View File

@ -0,0 +1,392 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System.Collections.Generic;
using System.Net.Sockets;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using ProtocolFamily = System.Net.Internals.ProtocolFamily;
namespace System.Net
{
internal static class NameResolutionPal
{
//
// used by GetHostName() to preallocate a buffer for the call to gethostname.
//
private const int HostNameBufferLength = 256;
private static bool s_initialized;
private static readonly object s_initializedLock = new object();
/*++
Routine Description:
Takes a native pointer (expressed as an int) to a hostent structure,
and converts the information in their to an IPHostEntry class. This
involves walking through an array of native pointers, and a temporary
ArrayList object is used in doing this.
Arguments:
nativePointer - Native pointer to hostent structure.
Return Value:
An IPHostEntry structure.
--*/
private static IPHostEntry NativeToHostEntry(IntPtr nativePointer)
{
//
// marshal pointer to struct
//
hostent Host = Marshal.PtrToStructure<hostent>(nativePointer);
IPHostEntry HostEntry = new IPHostEntry();
if (Host.h_name != IntPtr.Zero)
{
HostEntry.HostName = Marshal.PtrToStringAnsi(Host.h_name);
if (NetEventSource.IsEnabled) NetEventSource.Info(null, $"HostEntry.HostName: {HostEntry.HostName}");
}
// decode h_addr_list to ArrayList of IP addresses.
// The h_addr_list field is really a pointer to an array of pointers
// to IP addresses. Loop through the array, and while the pointer
// isn't NULL read the IP address, convert it to an IPAddress class,
// and add it to the list.
var TempIPAddressList = new List<IPAddress>();
int IPAddressToAdd;
string AliasToAdd;
IntPtr currentArrayElement;
//
// get the first pointer in the array
//
currentArrayElement = Host.h_addr_list;
nativePointer = Marshal.ReadIntPtr(currentArrayElement);
while (nativePointer != IntPtr.Zero)
{
//
// if it's not null it points to an IPAddress,
// read it...
//
IPAddressToAdd = Marshal.ReadInt32(nativePointer);
#if BIGENDIAN
// IP addresses from native code are always a byte array
// converted to int. We need to convert the address into
// a uniform integer value.
IPAddressToAdd = (int)(((uint)IPAddressToAdd << 24) |
(((uint)IPAddressToAdd & 0x0000FF00) << 8) |
(((uint)IPAddressToAdd >> 8) & 0x0000FF00) |
((uint)IPAddressToAdd >> 24));
#endif
if (NetEventSource.IsEnabled) NetEventSource.Info(null, $"currentArrayElement:{currentArrayElement} nativePointer:{nativePointer} IPAddressToAdd:{IPAddressToAdd}");
//
// ...and add it to the list
//
TempIPAddressList.Add(new IPAddress((long)IPAddressToAdd & 0x0FFFFFFFF));
//
// now get the next pointer in the array and start over
//
currentArrayElement = IntPtrHelper.Add(currentArrayElement, IntPtr.Size);
nativePointer = Marshal.ReadIntPtr(currentArrayElement);
}
HostEntry.AddressList = TempIPAddressList.ToArray();
//
// Now do the same thing for the aliases.
//
var TempAliasList = new List<string>();
currentArrayElement = Host.h_aliases;
nativePointer = Marshal.ReadIntPtr(currentArrayElement);
while (nativePointer != IntPtr.Zero)
{
if (NetEventSource.IsEnabled) NetEventSource.Info(null, $"currentArrayElement:{currentArrayElement} nativePointer:{nativePointer}");
//
// if it's not null it points to an Alias,
// read it...
//
AliasToAdd = Marshal.PtrToStringAnsi(nativePointer);
//
// ...and add it to the list
//
TempAliasList.Add(AliasToAdd);
//
// now get the next pointer in the array and start over
//
currentArrayElement = IntPtrHelper.Add(currentArrayElement, IntPtr.Size);
nativePointer = Marshal.ReadIntPtr(currentArrayElement);
}
HostEntry.Aliases = TempAliasList.ToArray();
return HostEntry;
} // NativeToHostEntry
public static IPHostEntry GetHostByName(string hostName)
{
//
// IPv6 disabled: use gethostbyname() to obtain DNS information.
//
IntPtr nativePointer =
Interop.Winsock.gethostbyname(
hostName);
if (nativePointer == IntPtr.Zero)
{
// Need to do this first since if we wait the last error code might be overwritten.
SocketException socketException = new SocketException();
IPAddress address;
if (IPAddress.TryParse(hostName, out address))
{
IPHostEntry ipHostEntry = NameResolutionUtilities.GetUnresolvedAnswer(address);
if (NetEventSource.IsEnabled) NetEventSource.Exit(null, ipHostEntry);
return ipHostEntry;
}
throw socketException;
}
return NativeToHostEntry(nativePointer);
}
public static IPHostEntry GetHostByAddr(IPAddress address)
{
// TODO #2891: Optimize this (or decide if this legacy code can be removed):
int addressAsInt = unchecked((int)address.GetAddress());
#if BIGENDIAN
// TODO #2891: above code needs testing for BIGENDIAN.
addressAsInt = (int)(((uint)addressAsInt << 24) | (((uint)addressAsInt & 0x0000FF00) << 8) |
(((uint)addressAsInt >> 8) & 0x0000FF00) | ((uint)addressAsInt >> 24));
#endif
IntPtr nativePointer =
Interop.Winsock.gethostbyaddr(
ref addressAsInt,
Marshal.SizeOf<int>(),
ProtocolFamily.InterNetwork);
if (nativePointer != IntPtr.Zero)
{
return NativeToHostEntry(nativePointer);
}
throw new SocketException();
}
public static unsafe SocketError TryGetAddrInfo(string name, out IPHostEntry hostinfo, out int nativeErrorCode)
{
//
// Use SocketException here to show operation not supported
// if, by some nefarious means, this method is called on an
// unsupported platform.
//
SafeFreeAddrInfo root = null;
var addresses = new List<IPAddress>();
string canonicalname = null;
AddressInfo hints = new AddressInfo();
hints.ai_flags = AddressInfoHints.AI_CANONNAME;
hints.ai_family = AddressFamily.Unspecified; // gets all address families
nativeErrorCode = 0;
//
// Use try / finally so we always get a shot at freeaddrinfo
//
try
{
SocketError errorCode = (SocketError)SafeFreeAddrInfo.GetAddrInfo(name, null, ref hints, out root);
if (errorCode != SocketError.Success)
{ // Should not throw, return mostly blank hostentry
hostinfo = NameResolutionUtilities.GetUnresolvedAnswer(name);
return errorCode;
}
AddressInfo* pAddressInfo = (AddressInfo*)root.DangerousGetHandle();
//
// Process the results
//
while (pAddressInfo != null)
{
SocketAddress sockaddr;
//
// Retrieve the canonical name for the host - only appears in the first AddressInfo
// entry in the returned array.
//
if (canonicalname == null && pAddressInfo->ai_canonname != null)
{
canonicalname = Marshal.PtrToStringUni((IntPtr)pAddressInfo->ai_canonname);
}
//
// Only process IPv4 or IPv6 Addresses. Note that it's unlikely that we'll
// ever get any other address families, but better to be safe than sorry.
// We also filter based on whether IPv6 is supported on the current
// platform / machine.
//
if ((pAddressInfo->ai_family == AddressFamily.InterNetwork) || // Never filter v4
(pAddressInfo->ai_family == AddressFamily.InterNetworkV6 && SocketProtocolSupportPal.OSSupportsIPv6))
{
sockaddr = new SocketAddress(pAddressInfo->ai_family, pAddressInfo->ai_addrlen);
//
// Push address data into the socket address buffer
//
for (int d = 0; d < pAddressInfo->ai_addrlen; d++)
{
sockaddr[d] = *(pAddressInfo->ai_addr + d);
}
//
// NOTE: We need an IPAddress now, the only way to create it from a
// SocketAddress is via IPEndPoint. This ought to be simpler.
//
if (pAddressInfo->ai_family == AddressFamily.InterNetwork)
{
addresses.Add(((IPEndPoint)IPEndPointStatics.Any.Create(sockaddr)).Address);
}
else
{
addresses.Add(((IPEndPoint)IPEndPointStatics.IPv6Any.Create(sockaddr)).Address);
}
}
//
// Next addressinfo entry
//
pAddressInfo = pAddressInfo->ai_next;
}
}
finally
{
if (root != null)
{
root.Dispose();
}
}
//
// Finally, put together the IPHostEntry
//
hostinfo = new IPHostEntry();
hostinfo.HostName = canonicalname != null ? canonicalname : name;
hostinfo.Aliases = Array.Empty<string>();
hostinfo.AddressList = addresses.ToArray();
return SocketError.Success;
}
public static string TryGetNameInfo(IPAddress addr, out SocketError errorCode, out int nativeErrorCode)
{
//
// Use SocketException here to show operation not supported
// if, by some nefarious means, this method is called on an
// unsupported platform.
//
SocketAddress address = (new IPEndPoint(addr, 0)).Serialize();
StringBuilder hostname = new StringBuilder(1025); // NI_MAXHOST
int flags = (int)Interop.Winsock.NameInfoFlags.NI_NAMEREQD;
nativeErrorCode = 0;
// TODO #2891: Remove the copying step to improve performance. This requires a change in the contracts.
byte[] addressBuffer = new byte[address.Size];
for (int i = 0; i < address.Size; i++)
{
addressBuffer[i] = address[i];
}
errorCode =
Interop.Winsock.GetNameInfoW(
addressBuffer,
address.Size,
hostname,
hostname.Capacity,
null, // We don't want a service name
0, // so no need for buffer or length
flags);
if (errorCode != SocketError.Success)
{
return null;
}
return hostname.ToString();
}
public static string GetHostName()
{
//
// note that we could cache the result ourselves since you
// wouldn't expect the hostname of the machine to change during
// execution, but this might still happen and we would want to
// react to that change.
//
StringBuilder sb = new StringBuilder(HostNameBufferLength);
SocketError errorCode =
Interop.Winsock.gethostname(
sb,
HostNameBufferLength);
//
// if the call failed throw a SocketException()
//
if (errorCode != SocketError.Success)
{
throw new SocketException();
}
return sb.ToString();
}
public static void EnsureSocketsAreInitialized()
{
if (!Volatile.Read(ref s_initialized))
{
lock (s_initializedLock)
{
if (!s_initialized)
{
Interop.Winsock.WSAData wsaData = new Interop.Winsock.WSAData();
SocketError errorCode =
Interop.Winsock.WSAStartup(
(short)0x0202, // we need 2.2
out wsaData);
if (errorCode != SocketError.Success)
{
//
// failed to initialize, throw
//
// WSAStartup does not set LastWin32Error
throw new SocketException((int)errorCode);
}
Volatile.Write(ref s_initialized, true);
}
}
}
}
}
}

View File

@ -0,0 +1,29 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
namespace System.Net
{
internal static class NameResolutionUtilities
{
public static IPHostEntry GetUnresolvedAnswer(IPAddress address)
{
return new IPHostEntry
{
HostName = address.ToString(),
Aliases = Array.Empty<string>(),
AddressList = new IPAddress[] { address }
};
}
public static IPHostEntry GetUnresolvedAnswer(string name)
{
return new IPHostEntry
{
HostName = name,
Aliases = Array.Empty<string>(),
AddressList = Array.Empty<IPAddress>()
};
}
}
}

View File

@ -0,0 +1,11 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System.Diagnostics.Tracing;
namespace System.Net
{
[EventSource(Name = "Microsoft-System-Net-NameResolution")]
internal sealed partial class NetEventSource { }
}

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<BuildConfigurations>
netstandard1.3-Windows_NT;
netstandard1.3-Unix;
</BuildConfigurations>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,128 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System.Collections.Generic;
using System.Net.Sockets;
using System.Threading.Tasks;
using Xunit;
namespace System.Net.NameResolution.Tests
{
public class GetHostAddressesTest
{
[Fact]
public void Dns_GetHostAddressesAsync_HostString_Ok()
{
TestGetHostAddressesAsync(() => Dns.GetHostAddressesAsync(TestSettings.LocalHost));
}
[Fact]
public void Dns_GetHostAddressesAsync_IPString_Ok()
{
TestGetHostAddressesAsync(() => Dns.GetHostAddressesAsync(TestSettings.LocalIPString));
}
private static void TestGetHostAddressesAsync(Func<Task<IPAddress[]>> getHostAddressesFunc)
{
Task<IPAddress[]> hostEntryTask1 = getHostAddressesFunc();
Task<IPAddress[]> hostEntryTask2 = getHostAddressesFunc();
Task.WaitAll(hostEntryTask1, hostEntryTask2);
IPAddress[] list1 = hostEntryTask1.Result;
IPAddress[] list2 = hostEntryTask2.Result;
Assert.NotNull(list1);
Assert.NotNull(list2);
Assert.Equal(list1.Length, list2.Length);
var set = new HashSet<IPAddress>();
for (int i = 0; i < list1.Length; i++)
{
Assert.Equal(list1[i], list2[i]);
Assert.True(set.Add(list1[i]), "Multiple entries for address " + list1[i]);
}
}
[Fact]
public async Task Dns_GetHostAddressesAsync_LongHostNameEndsInDot_Ok()
{
int maxHostName = 255;
string longHostName = new string('a', maxHostName - 1);
string longHostNameWithDot = longHostName + ".";
SocketException ex = await Assert.ThrowsAnyAsync<SocketException>(
() => Dns.GetHostAddressesAsync(longHostNameWithDot));
Assert.Equal(SocketError.HostNotFound, ex.SocketErrorCode);
}
[Fact]
public async Task Dns_GetHostAddressesAsync_LongHostNameDoesNotEndInDot_Fail()
{
int maxHostName = 255;
string longHostName = new string('a', maxHostName);
await Assert.ThrowsAsync<ArgumentOutOfRangeException>(() => Dns.GetHostAddressesAsync(longHostName));
}
[Fact]
public async Task Dns_GetHostAddressesAsync_NullHost_Fail()
{
await Assert.ThrowsAsync<ArgumentNullException>(() => Dns.GetHostAddressesAsync(null));
}
[Fact]
public void DnsBeginGetHostAddresses_BadName_Throws()
{
IAsyncResult asyncObject = Dns.BeginGetHostAddresses("BadName", null, null);
Assert.ThrowsAny<SocketException>(() => Dns.EndGetHostAddresses(asyncObject));
}
[Fact]
public void DnsBeginGetHostAddresses_BadIpString_ReturnsAddress()
{
IAsyncResult asyncObject = Dns.BeginGetHostAddresses("0.0.1.1", null, null);
IPAddress[] results = Dns.EndGetHostAddresses(asyncObject);
Assert.Equal(1, results.Length);
Assert.Equal(IPAddress.Parse("0.0.1.1"), results[0]);
}
[Fact]
public void DnsBeginGetHostAddresses_MachineName_MatchesGetHostAddresses()
{
IAsyncResult asyncObject = Dns.BeginGetHostAddresses(TestSettings.LocalHost, null, null);
IPAddress[] results = Dns.EndGetHostAddresses(asyncObject);
IPAddress[] addresses = Dns.GetHostAddresses(TestSettings.LocalHost);
Assert.Equal(addresses, results);
}
[Fact]
public void DnsGetHostAddresses_IPv4String_ReturnsSameIP()
{
IPAddress[] addresses = Dns.GetHostAddresses(IPAddress.Loopback.ToString());
Assert.Equal(1, addresses.Length);
Assert.Equal(IPAddress.Loopback, addresses[0]);
}
[Fact]
public void DnsGetHostAddresses_IPv6String_ReturnsSameIP()
{
IPAddress[] addresses = Dns.GetHostAddresses(IPAddress.IPv6Loopback.ToString());
Assert.Equal(1, addresses.Length);
Assert.Equal(IPAddress.IPv6Loopback, addresses[0]);
}
[Fact]
public void DnsGetHostAddresses_LocalHost_ReturnsSameAsGetHostEntry()
{
IPAddress[] addresses = Dns.GetHostAddresses(TestSettings.LocalHost);
IPHostEntry ipEntry = Dns.GetHostEntry(TestSettings.LocalHost);
Assert.Equal(ipEntry.AddressList, addresses);
}
}
}

View File

@ -0,0 +1,37 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
#pragma warning disable 0618 // use of obsolete methods
using System.Net.Sockets;
using Xunit;
namespace System.Net.NameResolution.Tests
{
public class GetHostByAddressTest
{
[Fact]
public void DnsObsoleteGetHostByAddress_BadIPString_Throws()
{
Assert.Throws<FormatException>(() => Dns.GetHostByAddress("badIPString"));
}
[Fact]
public void DnsObsoleteGetHostByAddress_LoopbackString_ReturnsSameAsLoopbackIP()
{
IPHostEntry stringEntry = Dns.GetHostByAddress(IPAddress.Loopback.ToString());
IPHostEntry entry = Dns.GetHostByAddress(IPAddress.Loopback);
Assert.Equal(entry.HostName, stringEntry.HostName);
Assert.Equal(entry.AddressList, stringEntry.AddressList);
}
[Fact]
public void DnsObsoleteGetHostByAddress_UnknownIP_Throws()
{
Assert.ThrowsAny<SocketException>(() => Dns.GetHostByAddress("0.0.1.1"));
}
}
}

View File

@ -0,0 +1,105 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
#pragma warning disable 0618 // use of obsolete methods
using System.Net.Sockets;
using Xunit;
namespace System.Net.NameResolution.Tests
{
public class GetHostByNameTest
{
[Fact]
public void DnsObsoleteBeginGetHostByName_BadName_Throws()
{
IAsyncResult asyncObject = Dns.BeginGetHostByName("BadName", null, null);
Assert.ThrowsAny<SocketException>(() => Dns.EndGetHostByName(asyncObject));
}
[Fact]
public void DnsObsoleteBeginGetHostByName_IPv4String_ReturnsOnlyGivenIP()
{
IAsyncResult asyncObject = Dns.BeginGetHostByName(IPAddress.Loopback.ToString(), null, null);
IPHostEntry entry = Dns.EndGetHostByName(asyncObject);
Assert.Equal(IPAddress.Loopback.ToString(), entry.HostName);
Assert.Equal(1, entry.AddressList.Length);
Assert.Equal(IPAddress.Loopback, entry.AddressList[0]);
}
[Fact]
public void DnsObsoleteBeginGetHostByName_MachineNameWithIPv4_MatchesGetHostByName()
{
IAsyncResult asyncObject = Dns.BeginGetHostByName(TestSettings.LocalHost, null, null);
IPHostEntry result = Dns.EndGetHostByName(asyncObject);
IPHostEntry entry = Dns.GetHostByName(TestSettings.LocalHost);
Assert.Equal(entry.HostName, result.HostName);
Assert.Equal(entry.AddressList, result.AddressList);
}
[Fact]
public void DnsObsoleteGetHostByName_HostAlmostTooLong254Chars_Throws()
{
Assert.ThrowsAny<SocketException>(() => Dns.GetHostByName(
"Really.Long.Name.Over.One.Hundred.And.Twenty.Six.Chars.Eeeeeeeventualllllllly.I.Will.Get.To.The.Eeeee"
+ "eeeeend.Almost.There.Are.We.Really.Long.Name.Over.One.Hundred.And.Twenty.Six.Chars.Eeeeeeeventualll"
+ "llllly.I.Will.Get.To.The.Eeeeeeeeeend.Almost.There.Are"));
}
[Fact]
public void DnsObsoleteGetHostByName_HostAlmostTooLong254CharsAndDot_Throws()
{
Assert.ThrowsAny<SocketException>(() => Dns.GetHostByName(
"Really.Long.Name.Over.One.Hundred.And.Twenty.Six.Chars.Eeeeeeeventualllllllly.I.Will.Get.To.The.Eeeee"
+ "eeeeend.Almost.There.Are.We.Really.Long.Name.Over.One.Hundred.And.Twenty.Six.Chars.Eeeeeeeventualll"
+ "llllly.I.Will.Get.To.The.Eeeeeeeeeend.Almost.There.Are."));
}
[Fact]
public void DnsObsoleteGetHostByName_HostTooLong255Chars_Throws()
{
Assert.Throws<ArgumentOutOfRangeException>(() => Dns.GetHostByName(
"Really.Long.Name.Over.One.Hundred.And.Twenty.Six.Chars.Eeeeeeeventualllllllly.I.Will.Get.To.The.Eeeee"
+ "eeeeend.Almost.There.Are.We.Really.Long.Name.Over.One.Hundred.And.Twenty.Six.Chars.Eeeeeeeventualll"
+ "llllly.I.Will.Get.To.The.Eeeeeeeeeend.Almost.There.Aret"));
}
[Fact]
public void DnsObsoleteGetHostByName_LocalHost_ReturnsLoopback()
{
IPHostEntry entry = Dns.GetHostByName(TestSettings.LocalHost);
Assert.True(entry.AddressList.Length > 0);
Assert.Contains(IPAddress.Loopback, entry.AddressList);
}
[Fact]
public void DnsObsoleteGetHostByName_BadName_Throws()
{
Assert.ThrowsAny<SocketException>(() => Dns.GetHostByName("BadName"));
}
[Fact]
public void DnsObsoleteGetHostByName_IPv4String_ReturnsOnlyGivenIP()
{
IPHostEntry entry = Dns.GetHostByName(IPAddress.Loopback.ToString());
Assert.Equal(IPAddress.Loopback.ToString(), entry.HostName);
Assert.Equal(1, entry.AddressList.Length);
Assert.Equal(IPAddress.Loopback, entry.AddressList[0]);
}
[Fact]
public void DnsObsoleteGetHostByName_IPv6String_ReturnsOnlyGivenIP()
{
IPHostEntry entry = Dns.GetHostByName(IPAddress.IPv6Loopback.ToString());
Assert.Equal(IPAddress.IPv6Loopback.ToString(), entry.HostName);
Assert.Equal(1, entry.AddressList.Length);
Assert.Equal(IPAddress.IPv6Loopback, entry.AddressList[0]);
}
}
}

View File

@ -0,0 +1,213 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System.Collections.Generic;
using System.Net.Sockets;
using System.Threading.Tasks;
using Xunit;
namespace System.Net.NameResolution.Tests
{
public class GetHostEntryTest
{
[Fact]
public async Task Dns_GetHostEntryAsync_IPAddress_Ok()
{
IPAddress localIPAddress = await TestSettings.GetLocalIPAddress();
TestGetHostEntryAsync(() => Dns.GetHostEntryAsync(localIPAddress));
}
[Fact]
public void Dns_GetHostEntryAsync_HostString_Ok()
{
TestGetHostEntryAsync(() => Dns.GetHostEntryAsync(TestSettings.LocalHost));
}
[Fact]
public void Dns_GetHostEntryAsync_IPString_Ok()
{
TestGetHostEntryAsync(() => Dns.GetHostEntryAsync(TestSettings.LocalIPString));
}
private static void TestGetHostEntryAsync(Func<Task<IPHostEntry>> getHostEntryFunc)
{
Task<IPHostEntry> hostEntryTask1 = getHostEntryFunc();
Task<IPHostEntry> hostEntryTask2 = getHostEntryFunc();
Task.WaitAll(hostEntryTask1, hostEntryTask2);
IPAddress[] list1 = hostEntryTask1.Result.AddressList;
IPAddress[] list2 = hostEntryTask2.Result.AddressList;
Assert.NotNull(list1);
Assert.NotNull(list2);
Assert.Equal(list1.Length, list2.Length);
for (var i = 0; i < list1.Length; i++)
{
Assert.Equal(list1[i], list2[i]);
}
}
[Fact]
public async Task Dns_GetHostEntryAsync_NullStringHost_Fail()
{
await Assert.ThrowsAsync<ArgumentNullException>(() => Dns.GetHostEntryAsync((string)null));
}
[Fact]
public async Task Dns_GetHostEntryAsync_NullIPAddressHost_Fail()
{
await Assert.ThrowsAsync<ArgumentNullException>(() => Dns.GetHostEntryAsync((IPAddress)null));
}
public static IEnumerable<object[]> GetInvalidAddresses()
{
yield return new object[] { IPAddress.Any };
yield return new object[] { IPAddress.IPv6Any };
yield return new object[] { IPAddress.IPv6None };
}
[Theory]
[MemberData(nameof(GetInvalidAddresses))]
public async Task Dns_GetHostEntryAsync_AnyIPAddress_Fail(IPAddress address)
{
string addressString = address.ToString();
await Assert.ThrowsAsync<ArgumentException>(() => Dns.GetHostEntryAsync(address));
await Assert.ThrowsAsync<ArgumentException>(() => Dns.GetHostEntryAsync(addressString));
}
public static IEnumerable<object[]> GetNoneAddresses()
{
yield return new object[] { IPAddress.None };
}
[ActiveIssue(10345, TestPlatforms.AnyUnix)]
[Theory]
[MemberData(nameof(GetNoneAddresses))]
public async Task Dns_GetHostEntryAsync_NoneIPAddress_Fail(IPAddress address)
{
string addressString = address.ToString();
await Assert.ThrowsAsync<SocketException>(() => Dns.GetHostEntryAsync(address));
await Assert.ThrowsAsync<SocketException>(() => Dns.GetHostEntryAsync(addressString));
}
[Fact]
public void DnsBeginGetHostEntry_BadName_Throws()
{
IAsyncResult asyncObject = Dns.BeginGetHostEntry("BadName", null, null);
Assert.ThrowsAny<SocketException>(() => Dns.EndGetHostEntry(asyncObject));
}
[Fact]
public void DnsBeginGetHostEntry_BadIpString_Throws()
{
IAsyncResult asyncObject = Dns.BeginGetHostEntry("0.0.1.1", null, null);
Assert.ThrowsAny<SocketException>(() => Dns.EndGetHostEntry(asyncObject));
}
[Fact]
public void DnsBeginGetHostEntry_MachineName_MatchesGetHostEntry()
{
IAsyncResult asyncObject = Dns.BeginGetHostEntry(TestSettings.LocalHost, null, null);
IPHostEntry results = Dns.EndGetHostEntry(asyncObject);
IPHostEntry entry = Dns.GetHostEntry(TestSettings.LocalHost);
Assert.Equal(entry.HostName, results.HostName);
Assert.Equal(entry.AddressList, results.AddressList);
}
[Fact]
public void DnsBeginGetHostEntry_Loopback_MatchesGetHostEntry()
{
IAsyncResult asyncObject = Dns.BeginGetHostEntry(IPAddress.Loopback, null, null);
IPHostEntry results = Dns.EndGetHostEntry(asyncObject);
IPHostEntry entry = Dns.GetHostEntry(IPAddress.Loopback);
Assert.Equal(entry.HostName, results.HostName);
Assert.Equal(entry.AddressList, results.AddressList);
}
[Fact]
public void DnsGetHostEntry_BadName_Throws()
{
Assert.ThrowsAny<SocketException>(() => Dns.GetHostEntry("BadName"));
}
[Fact]
public void DnsGetHostEntry_BadIpString_Throws()
{
Assert.ThrowsAny<SocketException>(() => Dns.GetHostEntry("0.0.1.1"));
}
[Fact]
public void DnsGetHostEntry_HostAlmostTooLong254Chars_Throws()
{
Assert.ThrowsAny<SocketException>(() => Dns.GetHostEntry(
"Really.Long.Name.Over.One.Hundred.And.Twenty.Six.Chars.Eeeeeeeventualllllllly.I.Will.Get.To.The.Eeeee"
+ "eeeeend.Almost.There.Are.We.Really.Long.Name.Over.One.Hundred.And.Twenty.Six.Chars.Eeeeeeeventualll"
+ "llllly.I.Will.Get.To.The.Eeeeeeeeeend.Almost.There.Are"));
}
[Fact]
public void DnsGetHostEntry_HostAlmostTooLong254CharsAndDot_Throws()
{
Assert.ThrowsAny<SocketException>(() => Dns.GetHostEntry(
"Really.Long.Name.Over.One.Hundred.And.Twenty.Six.Chars.Eeeeeeeventualllllllly.I.Will.Get.To.The.Eeeee"
+ "eeeeend.Almost.There.Are.We.Really.Long.Name.Over.One.Hundred.And.Twenty.Six.Chars.Eeeeeeeventualll"
+ "llllly.I.Will.Get.To.The.Eeeeeeeeeend.Almost.There.Are."));
}
[Fact]
public void DnsGetHostEntry_HostTooLong255Chars_Throws()
{
Assert.ThrowsAny<ArgumentOutOfRangeException>(() => Dns.GetHostEntry(
"Really.Long.Name.Over.One.Hundred.And.Twenty.Six.Chars.Eeeeeeeventualllllllly.I.Will.Get.To.The.Eeeee"
+ "eeeeend.Almost.There.Are.We.Really.Long.Name.Over.One.Hundred.And.Twenty.Six.Chars.Eeeeeeeventualll"
+ "llllly.I.Will.Get.To.The.Eeeeeeeeeend.Almost.There.Aret"));
}
[Fact]
public void DnsGetHostEntry_LocalHost_ReturnsFqdnAndLoopbackIPs()
{
IPHostEntry entry = Dns.GetHostEntry("localhost");
Assert.NotNull(entry.HostName);
Assert.True(entry.HostName.Length > 0, "Empty host name");
Assert.True(entry.AddressList.Length >= 1, "No local IPs");
foreach (IPAddress addr in entry.AddressList)
Assert.True(IPAddress.IsLoopback(addr), "Not a loopback address: " + addr);
}
[Fact]
public void DnsGetHostEntry_LoopbackIP_MatchesGetHostEntryLoopbackString()
{
IPHostEntry ipEntry = Dns.GetHostEntry(IPAddress.Loopback);
IPHostEntry stringEntry = Dns.GetHostEntry(IPAddress.Loopback.ToString());
Assert.Equal(ipEntry.HostName, stringEntry.HostName);
Assert.Equal(ipEntry.AddressList, stringEntry.AddressList);
}
[Fact]
public void DnsGetHostEntry_UnknownUnicodeHost_HostNotFound()
{
// This would succeed if the name was registered in DNS
Assert.ThrowsAny<SocketException>(() => Dns.GetHostEntry("Test-新-Unicode"));
}
[Fact]
public void DnsGetHostEntry_UnknownPunicodeHost_HostNotFound()
{
// This would succeed if the name was registered in DNS
Assert.ThrowsAny<SocketException>(() => Dns.GetHostEntry("xn--test--unicode-0b01a"));
}
}
}

View File

@ -0,0 +1,17 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using Xunit;
namespace System.Net.NameResolution.Tests
{
public class GetHostNameTest
{
[Fact]
public void Dns_GetHostName_Ok()
{
Assert.False(string.IsNullOrWhiteSpace(Dns.GetHostName()));
}
}
}

Some files were not shown because too many files have changed in this diff Show More