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,260 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.22609.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.IO.FileSystem.Watcher.Tests", "tests\System.IO.FileSystem.Watcher.Tests.csproj", "{20411A66-C7A4-4941-8FA2-66308365FD22}"
ProjectSection(ProjectDependencies) = postProject
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED} = {77E702D9-C6D8-4CE4-9941-D3056C3CCBED}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.IO.FileSystem.Watcher", "src\System.IO.FileSystem.Watcher.csproj", "{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-Linux|AnyCPU = DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-Linux|AnyCPU
ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-Linux|AnyCPU = ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-Linux|AnyCPU
DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-OSX|AnyCPU = DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-OSX|AnyCPU
ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-OSX|AnyCPU = ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-OSX|AnyCPU
DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-Windows_NT|AnyCPU = DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-Windows_NT|AnyCPU
ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-Windows_NT|AnyCPU = ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-Windows_NT|AnyCPU
DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-Linux|AnyCPU = DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-Linux|AnyCPU
ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-Linux|AnyCPU = ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-Linux|AnyCPU
DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-OSX|AnyCPU = DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-OSX|AnyCPU
ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-OSX|AnyCPU = ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-OSX|AnyCPU
DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-Windows_NT|AnyCPU = DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-Windows_NT|AnyCPU
ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-Windows_NT|AnyCPU = ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-Windows_NT|AnyCPU
DebugNETCoreAppnetcoreapp-OSXnetcoreapp-Linux|AnyCPU = DebugNETCoreAppnetcoreapp-OSXnetcoreapp-Linux|AnyCPU
ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-Linux|AnyCPU = ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-Linux|AnyCPU
DebugNETCoreAppnetcoreapp-OSXnetcoreapp-OSX|AnyCPU = DebugNETCoreAppnetcoreapp-OSXnetcoreapp-OSX|AnyCPU
ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-OSX|AnyCPU = ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-OSX|AnyCPU
DebugNETCoreAppnetcoreapp-OSXnetcoreapp-Windows_NT|AnyCPU = DebugNETCoreAppnetcoreapp-OSXnetcoreapp-Windows_NT|AnyCPU
ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-Windows_NT|AnyCPU = ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-Windows_NT|AnyCPU
DebugNETCoreAppnetcoreapp-OSXnetcoreapp-Linux|AnyCPU = DebugNETCoreAppnetcoreapp-OSXnetcoreapp-Linux|AnyCPU
ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-Linux|AnyCPU = ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-Linux|AnyCPU
DebugNETCoreAppnetcoreapp-OSXnetcoreapp-OSX|AnyCPU = DebugNETCoreAppnetcoreapp-OSXnetcoreapp-OSX|AnyCPU
ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-OSX|AnyCPU = ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-OSX|AnyCPU
DebugNETCoreAppnetcoreapp-OSXnetcoreapp-Windows_NT|AnyCPU = DebugNETCoreAppnetcoreapp-OSXnetcoreapp-Windows_NT|AnyCPU
ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-Windows_NT|AnyCPU = ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-Windows_NT|AnyCPU
DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Linux|AnyCPU = DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Linux|AnyCPU
ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Linux|AnyCPU = ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Linux|AnyCPU
DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-OSX|AnyCPU = DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-OSX|AnyCPU
ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-OSX|AnyCPU = ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-OSX|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-Linux|AnyCPU = DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Linux|AnyCPU
ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Linux|AnyCPU = ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Linux|AnyCPU
DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-OSX|AnyCPU = DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-OSX|AnyCPU
ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-OSX|AnyCPU = ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-OSX|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
DebugNETCoreAppnet463-Windows_NTnetcoreapp-Linux|AnyCPU = DebugNETCoreAppnet463-Windows_NTnetcoreapp-Linux|AnyCPU
ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-Linux|AnyCPU = ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-Linux|AnyCPU
DebugNETCoreAppnet463-Windows_NTnetcoreapp-OSX|AnyCPU = DebugNETCoreAppnet463-Windows_NTnetcoreapp-OSX|AnyCPU
ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-OSX|AnyCPU = ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-OSX|AnyCPU
DebugNETCoreAppnet463-Windows_NTnetcoreapp-Windows_NT|AnyCPU = DebugNETCoreAppnet463-Windows_NTnetcoreapp-Windows_NT|AnyCPU
ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-Windows_NT|AnyCPU = ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-Windows_NT|AnyCPU
DebugNETCoreAppnet463-Windows_NTnetcoreapp-Linux|AnyCPU = DebugNETCoreAppnet463-Windows_NTnetcoreapp-Linux|AnyCPU
ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-Linux|AnyCPU = ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-Linux|AnyCPU
DebugNETCoreAppnet463-Windows_NTnetcoreapp-OSX|AnyCPU = DebugNETCoreAppnet463-Windows_NTnetcoreapp-OSX|AnyCPU
ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-OSX|AnyCPU = ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-OSX|AnyCPU
DebugNETCoreAppnet463-Windows_NTnetcoreapp-Windows_NT|AnyCPU = DebugNETCoreAppnet463-Windows_NTnetcoreapp-Windows_NT|AnyCPU
ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-Windows_NT|AnyCPU = ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-Windows_NT|AnyCPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-Linux|AnyCPU.ActiveCfg = netcoreapp-Linux-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-Linux|AnyCPU.Build.0 = netcoreapp-Linux-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-Linux|AnyCPU.ActiveCfg = netcoreapp-Linux-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-Linux|AnyCPU.Build.0 = netcoreapp-Linux-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-OSX|AnyCPU.ActiveCfg = netcoreapp-OSX-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-OSX|AnyCPU.Build.0 = netcoreapp-OSX-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-OSX|AnyCPU.ActiveCfg = netcoreapp-OSX-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-OSX|AnyCPU.Build.0 = netcoreapp-OSX-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-Linux|AnyCPU.ActiveCfg = netcoreapp-Linux-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-Linux|AnyCPU.Build.0 = netcoreapp-Linux-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-Linux|AnyCPU.ActiveCfg = netcoreapp-Linux-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-Linux|AnyCPU.Build.0 = netcoreapp-Linux-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-OSX|AnyCPU.ActiveCfg = netcoreapp-OSX-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-OSX|AnyCPU.Build.0 = netcoreapp-OSX-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-OSX|AnyCPU.ActiveCfg = netcoreapp-OSX-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-OSX|AnyCPU.Build.0 = netcoreapp-OSX-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-OSXnetcoreapp-Linux|AnyCPU.ActiveCfg = netcoreapp-Linux-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-OSXnetcoreapp-Linux|AnyCPU.Build.0 = netcoreapp-Linux-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-Linux|AnyCPU.ActiveCfg = netcoreapp-Linux-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-Linux|AnyCPU.Build.0 = netcoreapp-Linux-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-OSXnetcoreapp-OSX|AnyCPU.ActiveCfg = netcoreapp-OSX-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-OSXnetcoreapp-OSX|AnyCPU.Build.0 = netcoreapp-OSX-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-OSX|AnyCPU.ActiveCfg = netcoreapp-OSX-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-OSX|AnyCPU.Build.0 = netcoreapp-OSX-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-OSXnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-OSXnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-OSXnetcoreapp-Linux|AnyCPU.ActiveCfg = netcoreapp-Linux-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-OSXnetcoreapp-Linux|AnyCPU.Build.0 = netcoreapp-Linux-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-Linux|AnyCPU.ActiveCfg = netcoreapp-Linux-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-Linux|AnyCPU.Build.0 = netcoreapp-Linux-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-OSXnetcoreapp-OSX|AnyCPU.ActiveCfg = netcoreapp-OSX-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-OSXnetcoreapp-OSX|AnyCPU.Build.0 = netcoreapp-OSX-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-OSX|AnyCPU.ActiveCfg = netcoreapp-OSX-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-OSX|AnyCPU.Build.0 = netcoreapp-OSX-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-OSXnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-OSXnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Linux|AnyCPU.ActiveCfg = netcoreapp-Linux-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Linux|AnyCPU.Build.0 = netcoreapp-Linux-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Linux|AnyCPU.ActiveCfg = netcoreapp-Linux-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Linux|AnyCPU.Build.0 = netcoreapp-Linux-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-OSX|AnyCPU.ActiveCfg = netcoreapp-OSX-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-OSX|AnyCPU.Build.0 = netcoreapp-OSX-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-OSX|AnyCPU.ActiveCfg = netcoreapp-OSX-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-OSX|AnyCPU.Build.0 = netcoreapp-OSX-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Linux|AnyCPU.ActiveCfg = netcoreapp-Linux-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Linux|AnyCPU.Build.0 = netcoreapp-Linux-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Linux|AnyCPU.ActiveCfg = netcoreapp-Linux-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Linux|AnyCPU.Build.0 = netcoreapp-Linux-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-OSX|AnyCPU.ActiveCfg = netcoreapp-OSX-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-OSX|AnyCPU.Build.0 = netcoreapp-OSX-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-OSX|AnyCPU.ActiveCfg = netcoreapp-OSX-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-OSX|AnyCPU.Build.0 = netcoreapp-OSX-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnet463-Windows_NTnetcoreapp-Linux|AnyCPU.ActiveCfg = netcoreapp-Linux-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnet463-Windows_NTnetcoreapp-Linux|AnyCPU.Build.0 = netcoreapp-Linux-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-Linux|AnyCPU.ActiveCfg = netcoreapp-Linux-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-Linux|AnyCPU.Build.0 = netcoreapp-Linux-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnet463-Windows_NTnetcoreapp-OSX|AnyCPU.ActiveCfg = netcoreapp-OSX-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnet463-Windows_NTnetcoreapp-OSX|AnyCPU.Build.0 = netcoreapp-OSX-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-OSX|AnyCPU.ActiveCfg = netcoreapp-OSX-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-OSX|AnyCPU.Build.0 = netcoreapp-OSX-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnet463-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnet463-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnet463-Windows_NTnetcoreapp-Linux|AnyCPU.ActiveCfg = netcoreapp-Linux-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnet463-Windows_NTnetcoreapp-Linux|AnyCPU.Build.0 = netcoreapp-Linux-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-Linux|AnyCPU.ActiveCfg = netcoreapp-Linux-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-Linux|AnyCPU.Build.0 = netcoreapp-Linux-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnet463-Windows_NTnetcoreapp-OSX|AnyCPU.ActiveCfg = netcoreapp-OSX-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnet463-Windows_NTnetcoreapp-OSX|AnyCPU.Build.0 = netcoreapp-OSX-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-OSX|AnyCPU.ActiveCfg = netcoreapp-OSX-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-OSX|AnyCPU.Build.0 = netcoreapp-OSX-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnet463-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.DebugNETCoreAppnet463-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{20411A66-C7A4-4941-8FA2-66308365FD22}.ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-Linux|AnyCPU.ActiveCfg = netcoreapp-Linux-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-Linux|AnyCPU.Build.0 = netcoreapp-Linux-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-Linux|AnyCPU.ActiveCfg = netcoreapp-Linux-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-Linux|AnyCPU.Build.0 = netcoreapp-Linux-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-OSX|AnyCPU.ActiveCfg = netcoreapp-Linux-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-OSX|AnyCPU.Build.0 = netcoreapp-Linux-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-OSX|AnyCPU.ActiveCfg = netcoreapp-Linux-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-OSX|AnyCPU.Build.0 = netcoreapp-Linux-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Linux-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Linux-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Linux-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Linux-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-Linux|AnyCPU.ActiveCfg = netcoreapp-Linux-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-Linux|AnyCPU.Build.0 = netcoreapp-Linux-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-Linux|AnyCPU.ActiveCfg = netcoreapp-Linux-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-Linux|AnyCPU.Build.0 = netcoreapp-Linux-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-OSX|AnyCPU.ActiveCfg = netcoreapp-Linux-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-OSX|AnyCPU.Build.0 = netcoreapp-Linux-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-OSX|AnyCPU.ActiveCfg = netcoreapp-Linux-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-OSX|AnyCPU.Build.0 = netcoreapp-Linux-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Linux-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-Linuxnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Linux-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Linux-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-Linuxnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Linux-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-OSXnetcoreapp-Linux|AnyCPU.ActiveCfg = netcoreapp-OSX-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-OSXnetcoreapp-Linux|AnyCPU.Build.0 = netcoreapp-OSX-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-Linux|AnyCPU.ActiveCfg = netcoreapp-OSX-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-Linux|AnyCPU.Build.0 = netcoreapp-OSX-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-OSXnetcoreapp-OSX|AnyCPU.ActiveCfg = netcoreapp-OSX-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-OSXnetcoreapp-OSX|AnyCPU.Build.0 = netcoreapp-OSX-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-OSX|AnyCPU.ActiveCfg = netcoreapp-OSX-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-OSX|AnyCPU.Build.0 = netcoreapp-OSX-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-OSXnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-OSX-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-OSXnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-OSX-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-OSX-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-OSX-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-OSXnetcoreapp-Linux|AnyCPU.ActiveCfg = netcoreapp-OSX-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-OSXnetcoreapp-Linux|AnyCPU.Build.0 = netcoreapp-OSX-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-Linux|AnyCPU.ActiveCfg = netcoreapp-OSX-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-Linux|AnyCPU.Build.0 = netcoreapp-OSX-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-OSXnetcoreapp-OSX|AnyCPU.ActiveCfg = netcoreapp-OSX-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-OSXnetcoreapp-OSX|AnyCPU.Build.0 = netcoreapp-OSX-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-OSX|AnyCPU.ActiveCfg = netcoreapp-OSX-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-OSX|AnyCPU.Build.0 = netcoreapp-OSX-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-OSXnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-OSX-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-OSXnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-OSX-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-OSX-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-OSXnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-OSX-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Linux|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Linux|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Linux|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Linux|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-OSX|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-OSX|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-OSX|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-OSX|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Linux|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Linux|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Linux|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Linux|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-OSX|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-OSX|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-OSX|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-OSX|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = netcoreapp-Windows_NT-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnetcoreapp-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = netcoreapp-Windows_NT-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnet463-Windows_NTnetcoreapp-Linux|AnyCPU.ActiveCfg = net463-Windows_NT-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnet463-Windows_NTnetcoreapp-Linux|AnyCPU.Build.0 = net463-Windows_NT-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-Linux|AnyCPU.ActiveCfg = net463-Windows_NT-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-Linux|AnyCPU.Build.0 = net463-Windows_NT-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnet463-Windows_NTnetcoreapp-OSX|AnyCPU.ActiveCfg = net463-Windows_NT-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnet463-Windows_NTnetcoreapp-OSX|AnyCPU.Build.0 = net463-Windows_NT-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-OSX|AnyCPU.ActiveCfg = net463-Windows_NT-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-OSX|AnyCPU.Build.0 = net463-Windows_NT-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnet463-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = net463-Windows_NT-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnet463-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = net463-Windows_NT-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = net463-Windows_NT-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = net463-Windows_NT-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnet463-Windows_NTnetcoreapp-Linux|AnyCPU.ActiveCfg = net463-Windows_NT-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnet463-Windows_NTnetcoreapp-Linux|AnyCPU.Build.0 = net463-Windows_NT-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-Linux|AnyCPU.ActiveCfg = net463-Windows_NT-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-Linux|AnyCPU.Build.0 = net463-Windows_NT-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnet463-Windows_NTnetcoreapp-OSX|AnyCPU.ActiveCfg = net463-Windows_NT-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnet463-Windows_NTnetcoreapp-OSX|AnyCPU.Build.0 = net463-Windows_NT-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-OSX|AnyCPU.ActiveCfg = net463-Windows_NT-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-OSX|AnyCPU.Build.0 = net463-Windows_NT-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnet463-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = net463-Windows_NT-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.DebugNETCoreAppnet463-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = net463-Windows_NT-Debug|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-Windows_NT|AnyCPU.ActiveCfg = net463-Windows_NT-Release|Any CPU
{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}.ReleaseNETCoreAppnet463-Windows_NTnetcoreapp-Windows_NT|AnyCPU.Build.0 = net463-Windows_NT-Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
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,97 @@
// 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.IO
{
public partial class ErrorEventArgs : System.EventArgs
{
public ErrorEventArgs(System.Exception exception) { }
public virtual System.Exception GetException() { throw null; }
}
public delegate void ErrorEventHandler(object sender, System.IO.ErrorEventArgs e);
public partial class FileSystemEventArgs : System.EventArgs
{
public FileSystemEventArgs(System.IO.WatcherChangeTypes changeType, string directory, string name) { }
public System.IO.WatcherChangeTypes ChangeType { get { throw null; } }
public string FullPath { get { throw null; } }
public string Name { get { throw null; } }
}
public delegate void FileSystemEventHandler(object sender, System.IO.FileSystemEventArgs e);
public partial class FileSystemWatcher : System.ComponentModel.Component, System.ComponentModel.ISupportInitialize
{
public FileSystemWatcher() { }
public FileSystemWatcher(string path) { }
public FileSystemWatcher(string path, string filter) { }
public bool EnableRaisingEvents { get { throw null; } set { } }
public string Filter { get { throw null; } set { } }
public bool IncludeSubdirectories { get { throw null; } set { } }
public int InternalBufferSize { get { throw null; } set { } }
public System.IO.NotifyFilters NotifyFilter { get { throw null; } set { } }
public string Path { get { throw null; } set { } }
public event System.IO.FileSystemEventHandler Changed { add { } remove { } }
public event System.IO.FileSystemEventHandler Created { add { } remove { } }
public event System.IO.FileSystemEventHandler Deleted { add { } remove { } }
public event System.IO.ErrorEventHandler Error { add { } remove { } }
public event System.IO.RenamedEventHandler Renamed { add { } remove { } }
protected void OnChanged(System.IO.FileSystemEventArgs e) { }
protected void OnCreated(System.IO.FileSystemEventArgs e) { }
protected void OnDeleted(System.IO.FileSystemEventArgs e) { }
protected void OnError(System.IO.ErrorEventArgs e) { }
protected void OnRenamed(System.IO.RenamedEventArgs e) { }
public System.IO.WaitForChangedResult WaitForChanged(System.IO.WatcherChangeTypes changeType) { throw null; }
public System.IO.WaitForChangedResult WaitForChanged(System.IO.WatcherChangeTypes changeType, int timeout) { throw null; }
public override System.ComponentModel.ISite Site { get { throw null; } set { } }
public System.ComponentModel.ISynchronizeInvoke SynchronizingObject { get { throw null; } set { } }
public void BeginInit() { }
protected override void Dispose(bool disposing) { }
public void EndInit() { }
}
[Serializable]
public partial class InternalBufferOverflowException : System.SystemException
{
public InternalBufferOverflowException() { }
public InternalBufferOverflowException(string message) { }
public InternalBufferOverflowException(string message, System.Exception inner) { }
protected InternalBufferOverflowException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) { }
}
[System.FlagsAttribute]
public enum NotifyFilters
{
Attributes = 4,
CreationTime = 64,
DirectoryName = 2,
FileName = 1,
LastAccess = 32,
LastWrite = 16,
Security = 256,
Size = 8,
}
public partial class RenamedEventArgs : System.IO.FileSystemEventArgs
{
public RenamedEventArgs(System.IO.WatcherChangeTypes changeType, string directory, string name, string oldName) : base(default(System.IO.WatcherChangeTypes), default(string), default(string)) { }
public string OldFullPath { get { throw null; } }
public string OldName { get { throw null; } }
}
public delegate void RenamedEventHandler(object sender, System.IO.RenamedEventArgs e);
public struct WaitForChangedResult
{
public System.IO.WatcherChangeTypes ChangeType { get { throw null; } set { } }
public string Name { get { throw null; } set { } }
public string OldName { get { throw null; } set { } }
public bool TimedOut { get { throw null; } set { } }
}
[System.FlagsAttribute]
public enum WatcherChangeTypes
{
All = 15,
Changed = 4,
Created = 1,
Deleted = 2,
Renamed = 8,
}
}

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.IO.FileSystem.Watcher.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\System.Runtime\ref\System.Runtime.csproj" />
<ProjectReference Include="..\..\System.ComponentModel.Primitives\ref\System.ComponentModel.Primitives.csproj" />
<ProjectReference Include="..\..\System.ComponentModel.TypeConverter\ref\System.ComponentModel.TypeConverter.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>
netcoreapp-Linux;
netcoreapp-OSX;
netcoreapp-Windows_NT;
net463-Windows_NT;
</BuildConfigurations>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,192 @@
<?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="ObjectDisposed_FileClosed" xml:space="preserve">
<value>Cannot access a closed file.</value>
</data>
<data name="BufferSizeTooLarge" xml:space="preserve">
<value>The specified buffer size is too large. FileSystemWatcher cannot allocate {0} bytes for the internal buffer.</value>
</data>
<data name="FSW_IOError" xml:space="preserve">
<value>Error reading the {0} directory.</value>
</data>
<data name="FSW_BufferOverflow" xml:space="preserve">
<value>Too many changes at once in directory:{0}.</value>
</data>
<data name="InvalidDirName" xml:space="preserve">
<value>The directory name {0} is invalid.</value>
</data>
<data name="InvalidEnumArgument" xml:space="preserve">
<value>The value of argument '{0}' ({1}) is invalid for Enum type '{2}'.</value>
</data>
<data name="IO_FileExists_Name" xml:space="preserve">
<value>The file '{0}' already exists.</value>
</data>
<data name="ArgumentOutOfRange_FileLengthTooBig" xml:space="preserve">
<value>Specified file length was too large for the file system.</value>
</data>
<data name="IO_PathTooLong" xml:space="preserve">
<value>The specified file name or path is too long, or a component of the specified path is too long.</value>
</data>
<data name="IO_PathNotFound_NoPathName" xml:space="preserve">
<value>Could not find a part of the path.</value>
</data>
<data name="IO_PathNotFound_Path" xml:space="preserve">
<value>Could not find a part of the path '{0}'.</value>
</data>
<data name="IO_FileNotFound" xml:space="preserve">
<value>Unable to find the specified file.</value>
</data>
<data name="IO_FileNotFound_FileName" xml:space="preserve">
<value>Could not find file '{0}'.</value>
</data>
<data name="UnauthorizedAccess_IODenied_NoPathName" xml:space="preserve">
<value>Access to the path is denied.</value>
</data>
<data name="UnauthorizedAccess_IODenied_Path" xml:space="preserve">
<value>Access to the path '{0}' is denied.</value>
</data>
<data name="IO_SharingViolation_File" xml:space="preserve">
<value>The process cannot access the file '{0}' because it is being used by another process.</value>
</data>
<data name="IO_SharingViolation_NoFileName" xml:space="preserve">
<value>The process cannot access the file because it is being used by another process.</value>
</data>
<data name="EventStream_FailedToStart" xml:space="preserve">
<value>Failed to start the EventStream</value>
</data>
<data name="Argument_InvalidPathChars" xml:space="preserve">
<value>Illegal characters in path.</value>
</data>
<data name="IOException_INotifyInstanceSystemLimitExceeded" xml:space="preserve">
<value>The system limit on the number of inotify instances has been reached.</value>
</data>
<data name="IOException_INotifyInstanceUserLimitExceeded_Value" xml:space="preserve">
<value>The configured user limit ({0}) on the number of inotify instances has been reached.</value>
</data>
<data name="IOException_INotifyWatchesUserLimitExceeded_Value" xml:space="preserve">
<value>The configured user limit ({0}) on the number of inotify watches has been reached.</value>
</data>
<data name="IOException_INotifyInstanceUserLimitExceeded" xml:space="preserve">
<value>The configured user limit on the number of inotify instances has been reached.</value>
</data>
<data name="IOException_INotifyWatchesUserLimitExceeded" xml:space="preserve">
<value>The configured user limit on the number of inotify watches has been reached.</value>
</data>
</root>

View File

@@ -0,0 +1,152 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
<PropertyGroup>
<ProjectGuid>{77E702D9-C6D8-4CE4-9941-D3056C3CCBED}</ProjectGuid>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<IsPartialFacadeAssembly Condition="'$(TargetGroup)' == 'net463'">true</IsPartialFacadeAssembly>
</PropertyGroup>
<!-- Help VS understand available configurations -->
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='netcoreapp-Linux-Debug|AnyCPU'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='netcoreapp-Linux-Release|AnyCPU'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='netcoreapp-OSX-Debug|AnyCPU'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='netcoreapp-OSX-Release|AnyCPU'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='netcoreapp-Windows_NT-Debug|AnyCPU'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='netcoreapp-Windows_NT-Release|AnyCPU'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='net463-Windows_NT-Debug|AnyCPU'" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='net463-Windows_NT-Release|AnyCPU'" />
<ItemGroup Condition=" '$(TargetGroup)' == 'netcoreapp' ">
<Compile Include="System\HResults.cs" />
<Compile Include="System\IO\ErrorEventArgs.cs" />
<Compile Include="System\IO\ErrorEventHandler.cs" />
<Compile Include="System\IO\FileSystemEventArgs.cs" />
<Compile Include="System\IO\FileSystemEventHandler.cs" />
<Compile Include="System\IO\FileSystemWatcher.cs" />
<Compile Include="System\IO\InternalBufferOverflowException.cs" />
<Compile Include="System\IO\NotifyFilters.cs" />
<Compile Include="System\IO\PatternMatcher.cs" />
<Compile Include="System\IO\RenamedEventArgs.cs" />
<Compile Include="System\IO\RenamedEventHandler.cs" />
<Compile Include="System\IO\WatcherChangeTypes.cs" />
<Compile Include="System\IO\WaitForChangedResult.cs" />
<Compile Include="$(CommonPath)\System\IO\PathInternal.cs">
<Link>Common\System\IO\PathInternal.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\System\IO\PathInternal.CaseSensitivity.cs">
<Link>Common\System\IO\PathInternal.CaseSensitivity.cs</Link>
</Compile>
</ItemGroup>
<ItemGroup Condition=" '$(TargetsWindows)' == 'true' And '$(TargetGroup)' == 'netcoreapp' ">
<Compile Include="$(CommonPath)\System\IO\PathInternal.Windows.cs">
<Link>Common\System\IO\PathInternal.Windows.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Windows\Interop.Libraries.cs">
<Link>Common\Interop\Windows\Interop.Libraries.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Windows\kernel32\Interop.CreateFile.cs">
<Link>Common\Interop\Windows\kernel32\Interop.CreateFile.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Windows\Interop.BOOL.cs">
<Link>Common\Interop\Windows\Interop.BOOL.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Windows\kernel32\Interop.SECURITY_ATTRIBUTES.cs">
<Link>Common\Interop\Windows\Interop.SECURITY_ATTRIBUTES.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Windows\kernel32\Interop.FileOperations.cs">
<Link>Common\Interop\Windows\kernel32\Interop.FileOperations.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Windows\kernel32\Interop.ReadDirectoryChangesW.cs">
<Link>Common\Interop\Windows\kernel32\Interop.ReadDirectoryChangesW.cs</Link>
</Compile>
<Compile Include="System\IO\FileSystemWatcher.Win32.cs" />
</ItemGroup>
<ItemGroup Condition=" '$(TargetsUnix)' == 'true' And '$(TargetGroup)' == 'netcoreapp' ">
<Compile Include="$(CommonPath)\Interop\Unix\Interop.Libraries.cs">
<Link>Common\Interop\Unix\Interop.Libraries.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Unix\System.Native\Interop.Read.cs">
<Link>Common\Interop\Unix\libc\Interop.Read.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Unix\Interop.Errors.cs">
<Link>Common\Interop\Unix\Interop.Errors.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Unix\Interop.IOErrors.cs">
<Link>Common\Interop\Unix\Interop.IOErrors.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\System\IO\PathInternal.Unix.cs">
<Link>Common\System\IO\PathInternal.Unix.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Unix\System.Native\Interop.PathConf.cs">
<Link>Common\Interop\Unix\Interop.PathConf.cs</Link>
</Compile>
</ItemGroup>
<ItemGroup Condition=" '$(TargetsLinux)' == 'true' And '$(TargetGroup)' == 'netcoreapp' ">
<Compile Include="System\IO\FileSystemWatcher.Linux.cs" />
<Compile Include="$(CommonPath)\Interop\Linux\System.Native\Interop.INotify.cs">
<Link>Common\Interop\Linux\Interop.inotify.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Unix\System.Native\Interop.Poll.cs">
<Link>Common\Interop\Unix\Interop.Poll.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Unix\System.Native\Interop.Stat.cs">
<Link>Common\Interop\Unix\Interop.Stat.cs</Link>
</Compile>
</ItemGroup>
<ItemGroup Condition=" '$(TargetsOSX)' == 'true' And '$(TargetGroup)' == 'netcoreapp' ">
<Compile Include="System\IO\FileSystemWatcher.OSX.cs" />
<Compile Include="$(CommonPath)\Interop\OSX\Interop.EventStream.cs">
<Link>Common\Interop\OSX\Interop.EventStream.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\OSX\Interop.CoreFoundation.cs">
<Link>Common\Interop\OSX\Interop.CoreFoundation.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\OSX\Interop.Libraries.cs">
<Link>Common\Interop\OSX\Interop.Libraries.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\OSX\Interop.RunLoop.cs">
<Link>Common\Interop\OSX\Interop.RunLoop.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Unix\System.Native\Interop.RealPath.cs">
<Link>Common\Interop\Unix\Interop.RealPath.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Interop\Unix\System.Native\Interop.Sync.cs">
<Link>Common\Interop\Unix\Interop.Sync.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Microsoft\Win32\SafeHandles\SafeCreateHandle.OSX.cs">
<Link>Common\Microsoft\Win32\SafeHandles\SafeCreateHandle.OSX.cs</Link>
</Compile>
<Compile Include="$(CommonPath)\Microsoft\Win32\SafeHandles\SafeEventStreamHandle.OSX.cs">
<Link>Common\Microsoft\Win32\SafeHandles\SafeEventStreamHandle.OSX.cs</Link>
</Compile>
</ItemGroup>
<ItemGroup Condition=" ('$(TargetsFreeBSD)' == 'true' OR '$(TargetsUnknownUnix)' == 'true') And '$(TargetGroup)' == 'netcoreapp' ">
<Compile Include="System\IO\FileSystemWatcher.UnknownUnix.cs" />
</ItemGroup>
<ItemGroup Condition="'$(TargetGroup)' == 'net463'">
<TargetingPackReference Include="mscorlib" />
<TargetingPackReference Include="System" />
</ItemGroup>
<ItemGroup>
<Reference Include="Microsoft.Win32.Primitives" />
<Reference Include="System.ComponentModel" />
<Reference Include="System.ComponentModel.Primitives" />
<Reference Include="System.ComponentModel.TypeConverter" />
<Reference Include="System.Diagnostics.Debug" />
<Reference Include="System.Diagnostics.Tools" />
<Reference Include="System.IO.FileSystem" />
<Reference Include="System.Resources.ResourceManager" />
<Reference Include="System.Runtime" />
<Reference Include="System.Runtime.Extensions" />
<Reference Include="System.Runtime.InteropServices" />
<Reference Include="System.Threading" />
<Reference Include="System.Threading.Overlapped" />
<Reference Include="System.Threading.Tasks" />
</ItemGroup>
<ItemGroup Condition="'$(TargetsOSX)' == 'true'">
<Reference Include="System.Threading.Thread" />
</ItemGroup>
<ItemGroup Condition="'$(TargetsUnix)' == 'true'">
<Reference Include="System.Collections" />
</ItemGroup>
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
</Project>

View File

@@ -0,0 +1,45 @@
// 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.
/*
These HRESULTs are used for mapping managed exceptions to COM error codes
and vice versa through COM Interop. For background on COM error codes see
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/com/error_9td2.asp.
FACILITY_URT is defined as 0x13 (0x8013xxxx). The facility range is reserved
for the .NET Framework SDK teams.
Within that range, the following subranges have been allocated for different
feature areas:
0x10yy for Execution Engine
0x11yy for Metadata, TypeLib Export, and CLDB
0x12yy for MetaData Validator
0x13yy for Debugger and Profiler errors
0x14yy for Security
0x15yy for BCL
0x1600 - 0x161F for Reflection
0x1620 - 0x163F for System.IO
0x1640 - 0x165F for Security
0x1660 - 0x16FF for BCL
0x17yy for shim
0x18yy for IL Verifier
0x19yy for .NET Framework
0x1Ayy for .NET Framework
0x1Byy for MetaData Validator
0x30yy for VSA errors
CLR HRESULTs are defined in corerror.h. If you make any modifications to
the range allocations described above, please make sure the corerror.h file
gets updated.
*/
namespace System
{
internal static class HResults
{
internal const int InternalBufferOverflow = unchecked((int)0x80131905);
}
}

View File

@@ -0,0 +1,30 @@
// 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.IO
{
/// <devdoc>
/// Provides data for the <see cref='E:System.IO.FileSystemWatcher.Error'/> event.
/// </devdoc>
public class ErrorEventArgs : EventArgs
{
private readonly Exception _exception;
/// <devdoc>
/// Initializes a new instance of the class.
/// </devdoc>
public ErrorEventArgs(Exception exception)
{
_exception = exception;
}
/// <devdoc>
/// Gets the <see cref='System.Exception'/> that represents the error that occurred.
/// </devdoc>
public virtual Exception GetException()
{
return _exception;
}
}
}

View File

@@ -0,0 +1,13 @@
// 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.IO
{
/// <devdoc>
/// Represents the method that will
/// handle the <see cref='E:System.IO.FileSystemWatcher.Error'/>
/// event of a <see cref='T:System.IO.FileSystemWatcher'/>.
/// </devdoc>
public delegate void ErrorEventHandler(object sender, ErrorEventArgs e);
}

View File

@@ -0,0 +1,82 @@
// 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.IO
{
/// <devdoc>
/// Provides data for the directory events: <see cref='System.IO.FileSystemWatcher.Changed'/>, <see cref='System.IO.FileSystemWatcher.Created'/>, <see cref='System.IO.FileSystemWatcher.Deleted'/>.
/// </devdoc>
public class FileSystemEventArgs : EventArgs
{
private readonly WatcherChangeTypes _changeType;
private readonly string _name;
private readonly string _fullPath;
/// <devdoc>
/// Initializes a new instance of the <see cref='System.IO.FileSystemEventArgs'/> class.
/// </devdoc>
public FileSystemEventArgs(WatcherChangeTypes changeType, string directory, string name)
{
_changeType = changeType;
_name = name;
_fullPath = Combine(directory, name);
}
/// <summary>Combines a directory path and a relative file name into a single path.</summary>
/// <param name="directoryPath">The directory path.</param>
/// <param name="name">The file name.</param>
/// <returns>The combined name.</returns>
/// <remarks>
/// This is like Path.Combine, except without argument validation,
/// and a separator is used even if the name argument is empty.
/// </remarks>
internal static string Combine(string directoryPath, string name)
{
bool hasSeparator = false;
if (directoryPath.Length > 0)
{
char c = directoryPath[directoryPath.Length - 1];
hasSeparator = c == Path.DirectorySeparatorChar || c == Path.AltDirectorySeparatorChar;
}
return hasSeparator ?
directoryPath + name :
directoryPath + Path.DirectorySeparatorChar + name;
}
/// <devdoc>
/// Gets one of the <see cref='System.IO.WatcherChangeTypes'/> values.
/// </devdoc>
public WatcherChangeTypes ChangeType
{
get
{
return _changeType;
}
}
/// <devdoc>
/// Gets the fully qualified path of the affected file or directory.
/// </devdoc>
public string FullPath
{
get
{
return _fullPath;
}
}
/// <devdoc>
/// Gets the name of the affected file or directory.
/// </devdoc>
public string Name
{
get
{
return _name;
}
}
}
}

View File

@@ -0,0 +1,14 @@
// 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.IO
{
/// <devdoc>
/// Represents the method that will handle the <see cref='System.IO.FileSystemWatcher.Changed'/>,
/// <see cref='System.IO.FileSystemWatcher.Created'/>, or
/// <see cref='System.IO.FileSystemWatcher.Deleted'/> event of
/// a <see cref='System.IO.FileSystemWatcher'/> class.
/// </devdoc>
public delegate void FileSystemEventHandler(object sender, FileSystemEventArgs e);
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,24 @@
// 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.IO
{
public partial class FileSystemWatcher
{
/// <summary>Called when FileSystemWatcher is finalized.</summary>
private void FinalizeDispose()
{
}
private void StartRaisingEvents()
{
throw new PlatformNotSupportedException();
}
private void StopRaisingEvents()
{
throw new PlatformNotSupportedException();
}
}
}

View File

@@ -0,0 +1,389 @@
// 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 Microsoft.Win32.SafeHandles;
using System.ComponentModel;
using System.Diagnostics;
using System.Threading;
namespace System.IO
{
public partial class FileSystemWatcher
{
/// <summary>Start monitoring the current directory.</summary>
private void StartRaisingEvents()
{
// If we're called when "Initializing" is true, set enabled to true
if (IsSuspended())
{
_enabled = true;
return;
}
// If we're already running, don't do anything.
if (!IsHandleInvalid(_directoryHandle))
return;
// Create handle to directory being monitored
var defaultSecAttrs = default(Interop.Kernel32.SECURITY_ATTRIBUTES);
_directoryHandle = Interop.Kernel32.CreateFile(
lpFileName: _directory,
dwDesiredAccess: Interop.Kernel32.FileOperations.FILE_LIST_DIRECTORY,
dwShareMode: FileShare.Read | FileShare.Delete | FileShare.Write,
securityAttrs: ref defaultSecAttrs,
dwCreationDisposition: FileMode.Open,
dwFlagsAndAttributes: Interop.Kernel32.FileOperations.FILE_FLAG_BACKUP_SEMANTICS | Interop.Kernel32.FileOperations.FILE_FLAG_OVERLAPPED,
hTemplateFile: IntPtr.Zero);
if (IsHandleInvalid(_directoryHandle))
{
_directoryHandle = null;
throw new FileNotFoundException(SR.Format(SR.FSW_IOError, _directory));
}
// Create the state associated with the operation of monitoring the direction
AsyncReadState state;
try
{
// Start ignoring all events that were initiated before this, and
// allocate the buffer to be pinned and used for the duration of the operation
int session = Interlocked.Increment(ref _currentSession);
byte[] buffer = AllocateBuffer();
// Store all state, including a preallocated overlapped, into the state object that'll be
// passed from iteration to iteration during the lifetime of the operation. The buffer will be pinned
// from now until the end of the operation.
state = new AsyncReadState(session, buffer, _directoryHandle, ThreadPoolBoundHandle.BindHandle(_directoryHandle));
unsafe { state.PreAllocatedOverlapped = new PreAllocatedOverlapped(ReadDirectoryChangesCallback, state, buffer); }
}
catch
{
// Make sure we don't leave a valid directory handle set if we're not running
_directoryHandle.Dispose();
_directoryHandle = null;
throw;
}
// Start monitoring
_enabled = true;
Monitor(state);
}
/// <summary>Stop monitoring the current directory.</summary>
private void StopRaisingEvents()
{
_enabled = false;
if (IsSuspended())
return;
// If we're not running, do nothing.
if (IsHandleInvalid(_directoryHandle))
return;
// Start ignoring all events occurring after this.
Interlocked.Increment(ref _currentSession);
// Close the directory handle. This will cause the async operation to stop processing.
// This operation doesn't need to be atomic because the API will deal with a closed
// handle appropriately. If we get here while asynchronously waiting on a change notification,
// closing the directory handle should cause ReadDirectoryChangesCallback be called,
// cleaning up the operation. Note that it's critical to also null out the handle. If the
// handle is currently in use in a P/Invoke, it will have its reference count temporarily
// increased, such that the disposal operation won't take effect and close the handle
// until that P/Invoke returns; if during that time the FSW is restarted, the IsHandleInvalid
// check will see a valid handle, unless we also null it out.
_directoryHandle.Dispose();
_directoryHandle = null;
}
private void FinalizeDispose()
{
// We must explicitly dispose the handle to ensure it gets closed before this object is finalized.
// Otherwise, it is possible that the GC will decide to finalize the handle after this,
// leaving a window of time where our callback could be invoked on a non-existent object.
if (!IsHandleInvalid(_directoryHandle))
_directoryHandle.Dispose();
}
// -----------------------------
// ---- PAL layer ends here ----
// -----------------------------
// Current "session" ID to ignore old events whenever we stop then restart.
private int _currentSession;
// Unmanaged handle to monitored directory
private SafeFileHandle _directoryHandle;
private static bool IsHandleInvalid(SafeFileHandle handle)
{
return handle == null || handle.IsInvalid || handle.IsClosed;
}
/// <summary>
/// Initiates the next asynchronous read operation if monitoring is still desired.
/// If the directory handle has been closed due to an error or due to event monitoring
/// being disabled, this cleans up state associated with the operation.
/// </summary>
private unsafe void Monitor(AsyncReadState state)
{
// This method should only ever access the directory handle via the state object passed in, and not access it
// via _directoryHandle. While this function is executing asynchronously, another thread could set
// EnableRaisingEvents to false and then back to true, restarting the FSW and causing a new directory handle
// and thread pool binding to be stored. This function could then get into an inconsistent state by doing some
// operations against the old handles and some against the new.
NativeOverlapped* overlappedPointer = null;
bool continueExecuting = false;
try
{
// If shutdown has been requested, exit. The finally block will handle
// cleaning up the entire operation, as continueExecuting will remain false.
if (!_enabled || IsHandleInvalid(state.DirectoryHandle))
return;
// Get the overlapped pointer to use for this iteration.
overlappedPointer = state.ThreadPoolBinding.AllocateNativeOverlapped(state.PreAllocatedOverlapped);
int size;
continueExecuting = Interop.Kernel32.ReadDirectoryChangesW(
state.DirectoryHandle,
state.Buffer, // the buffer is kept pinned for the duration of the sync and async operation by the PreAllocatedOverlapped
_internalBufferSize,
_includeSubdirectories,
(int)_notifyFilters,
out size,
overlappedPointer,
IntPtr.Zero);
}
catch (ObjectDisposedException)
{
// Ignore. Disposing of the handle is the mechanism by which the FSW communicates
// to the asynchronous operation to stop processing.
}
catch (ArgumentNullException)
{
//Ignore. The disposed handle could also manifest as an ArgumentNullException.
Debug.Assert(IsHandleInvalid(state.DirectoryHandle), "ArgumentNullException from something other than SafeHandle?");
}
finally
{
// At this point the operation has either been initiated and we'll let the callback
// handle things from here, or the operation has been stopped or failed, in which case
// we need to cleanup because we're no longer executing.
if (!continueExecuting)
{
// Clean up the overlapped pointer created for this iteration
if (overlappedPointer != null)
{
state.ThreadPoolBinding.FreeNativeOverlapped(overlappedPointer);
}
// Clean up the thread pool binding created for the entire operation
state.PreAllocatedOverlapped.Dispose();
state.ThreadPoolBinding.Dispose();
// Finally, if the handle was for some reason changed or closed during this call,
// then don't throw an exception. Otherwise, it's a valid error.
if (!IsHandleInvalid(state.DirectoryHandle))
{
OnError(new ErrorEventArgs(new Win32Exception()));
}
}
}
}
/// <summary>Callback invoked when an asynchronous read on the directory handle completes.</summary>
private unsafe void ReadDirectoryChangesCallback(uint errorCode, uint numBytes, NativeOverlapped* overlappedPointer)
{
AsyncReadState state = (AsyncReadState)ThreadPoolBoundHandle.GetNativeOverlappedState(overlappedPointer);
try
{
if (IsHandleInvalid(state.DirectoryHandle))
return;
if (errorCode != 0)
{
// Inside a service the first completion status is false;
// need to monitor again.
const int ERROR_OPERATION_ABORTED = 995;
if (errorCode != ERROR_OPERATION_ABORTED)
{
OnError(new ErrorEventArgs(new Win32Exception((int)errorCode)));
EnableRaisingEvents = false;
}
return;
}
// Ignore any events that occurred before this "session",
// so we don't get changed or error events after we
// told FSW to stop. Even with this check, though, there's a small
// race condition, as immediately after we do the check, raising
// events could be disabled.
if (state.Session != Volatile.Read(ref _currentSession))
return;
if (numBytes == 0)
{
NotifyInternalBufferOverflowEvent();
}
else
{
ParseEventBufferAndNotifyForEach(state.Buffer);
}
}
finally
{
// Clean up state associated with this one iteration
state.ThreadPoolBinding.FreeNativeOverlapped(overlappedPointer);
// Then call Monitor again to either start the next iteration or
// clean up the whole operation.
Monitor(state);
}
}
private void ParseEventBufferAndNotifyForEach(byte[] buffer)
{
// Parse each event from the buffer and notify appropriate delegates
/******
Format for the buffer is the following C struct:
typedef struct _FILE_NOTIFY_INFORMATION {
DWORD NextEntryOffset;
DWORD Action;
DWORD FileNameLength;
WCHAR FileName[1];
} FILE_NOTIFY_INFORMATION;
NOTE1: FileNameLength is length in bytes.
NOTE2: The Filename is a Unicode string that's NOT NULL terminated.
NOTE3: A NextEntryOffset of zero means that it's the last entry
*******/
// Parse the file notify buffer:
int offset = 0;
int nextOffset, action, nameLength;
string oldName = null;
string name = null;
do
{
unsafe
{
fixed (byte* buffPtr = buffer)
{
// Get next offset:
nextOffset = *((int*)(buffPtr + offset));
// Get change flag:
action = *((int*)(buffPtr + offset + 4));
// Get filename length (in bytes):
nameLength = *((int*)(buffPtr + offset + 8));
name = new string((char*)(buffPtr + offset + 12), 0, nameLength / 2);
}
}
/* A slightly convoluted piece of code follows. Here's what's happening:
We wish to collapse the poorly done rename notifications from the
ReadDirectoryChangesW API into a nice rename event. So to do that,
it's assumed that a FILE_ACTION_RENAMED_OLD_NAME will be followed
immediately by a FILE_ACTION_RENAMED_NEW_NAME in the buffer, which is
all that the following code is doing.
On a FILE_ACTION_RENAMED_OLD_NAME, it asserts that no previous one existed
and saves its name. If there are no more events in the buffer, it'll
assert and fire a RenameEventArgs with the Name field null.
If a NEW_NAME action comes in with no previous OLD_NAME, we assert and fire
a rename event with the OldName field null.
If the OLD_NAME and NEW_NAME actions are indeed there one after the other,
we'll fire the RenamedEventArgs normally and clear oldName.
If the OLD_NAME is followed by another action, we assert and then fire the
rename event with the Name field null and then fire the next action.
In case it's not a OLD_NAME or NEW_NAME action, we just fire the event normally.
(Phew!)
*/
// If the action is RENAMED_FROM, save the name of the file
if (action == Interop.Kernel32.FileOperations.FILE_ACTION_RENAMED_OLD_NAME)
{
oldName = name;
}
else if (action == Interop.Kernel32.FileOperations.FILE_ACTION_RENAMED_NEW_NAME)
{
// oldName may be null here if we received a FILE_ACTION_RENAMED_NEW_NAME with no old name
NotifyRenameEventArgs(WatcherChangeTypes.Renamed, name, oldName);
oldName = null;
}
else
{
if (oldName != null)
{
// Previous FILE_ACTION_RENAMED_OLD_NAME with no new name
NotifyRenameEventArgs(WatcherChangeTypes.Renamed, null, oldName);
oldName = null;
}
switch (action)
{
case Interop.Kernel32.FileOperations.FILE_ACTION_ADDED:
NotifyFileSystemEventArgs(WatcherChangeTypes.Created, name);
break;
case Interop.Kernel32.FileOperations.FILE_ACTION_REMOVED:
NotifyFileSystemEventArgs(WatcherChangeTypes.Deleted, name);
break;
case Interop.Kernel32.FileOperations.FILE_ACTION_MODIFIED:
NotifyFileSystemEventArgs(WatcherChangeTypes.Changed, name);
break;
default:
Debug.Fail("Unknown FileSystemEvent action type! Value: " + action);
break;
}
}
offset += nextOffset;
} while (nextOffset != 0);
if (oldName != null)
{
// Previous FILE_ACTION_RENAMED_OLD_NAME with no new name
NotifyRenameEventArgs(WatcherChangeTypes.Renamed, null, oldName);
oldName = null;
}
}
/// <summary>
/// State information used by the ReadDirectoryChangesW callback. A single instance of this is used
/// for an entire session, getting passed to each iterative call to ReadDirectoryChangesW.
/// </summary>
private sealed class AsyncReadState
{
internal AsyncReadState(int session, byte[] buffer, SafeFileHandle handle, ThreadPoolBoundHandle binding)
{
Debug.Assert(buffer != null);
Debug.Assert(handle != null);
Debug.Assert(binding != null);
Session = session;
Buffer = buffer;
DirectoryHandle = handle;
ThreadPoolBinding = binding;
}
internal int Session { get; private set; }
internal byte[] Buffer { get; private set; }
internal SafeFileHandle DirectoryHandle { get; private set; }
internal ThreadPoolBoundHandle ThreadPoolBinding { get; private set; }
internal PreAllocatedOverlapped PreAllocatedOverlapped { get; set; }
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,43 @@
// 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.Runtime.Serialization;
namespace System.IO
{
/// <devdoc>
/// The exception that is thrown when the internal buffer overflows.
/// </devdoc>
[Serializable]
public class InternalBufferOverflowException : SystemException
{
/// <devdoc>
/// Initializes a new default instance of the <see cref='System.IO.InternalBufferOverflowException'/> class.
/// </devdoc>
public InternalBufferOverflowException() : base()
{
HResult = HResults.InternalBufferOverflow;
}
/// <devdoc>
/// Initializes a new instance of the <see cref='System.IO.InternalBufferOverflowException'/> class with the error message to be displayed specified.
/// </devdoc>
public InternalBufferOverflowException(string message) : base(message)
{
HResult = HResults.InternalBufferOverflow;
}
/// <devdoc>
/// Initializes a new instance of the <see cref='System.IO.InternalBufferOverflowException'/>
/// class with the message to be displayed and the generated inner exception specified.
/// </devdoc>
public InternalBufferOverflowException(string message, Exception inner) : base(message, inner)
{
HResult = HResults.InternalBufferOverflow;
}
protected InternalBufferOverflowException(SerializationInfo info, StreamingContext context)
: base(info, context) { }
}
}

View File

@@ -0,0 +1,46 @@
// 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.IO
{
/// <devdoc>
/// Specifies the changes to watch for in a file or folder.
/// </devdoc>
[Flags]
public enum NotifyFilters
{
/// <devdoc>
/// [To be supplied.]
/// </devdoc>
FileName = 0x00000001,
/// <devdoc>
/// [To be supplied.]
/// </devdoc>
DirectoryName = 0x00000002,
/// <devdoc>
/// The attributes of the file or folder.
/// </devdoc>
Attributes = 0x00000004,
/// <devdoc>
/// The size of the file or folder.
/// </devdoc>
Size = 0x00000008,
/// <devdoc>
/// The date that the file or folder last had anything written to it.
/// </devdoc>
LastWrite = 0x00000010,
/// <devdoc>
/// The date that the file or folder was last opened.
/// </devdoc>
LastAccess = 0x00000020,
/// <devdoc>
/// [To be supplied.]
/// </devdoc>
CreationTime = 0x00000040,
/// <devdoc>
/// The security settings of the file or folder.
/// </devdoc>
Security = 0x00000100,
}
}

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