diff --git a/PCLExt.FileStorage.sln b/PCLExt.FileStorage.sln
index 9c7d699..bb27a65 100644
--- a/PCLExt.FileStorage.sln
+++ b/PCLExt.FileStorage.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
-VisualStudioVersion = 15.0.26730.16
+VisualStudioVersion = 15.0.27004.2002
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PCLExt.FileStorage.Android", "src\PCLExt.FileStorage.Android\PCLExt.FileStorage.Android.csproj", "{8EFC0559-3C9C-4D0C-A5A5-579E58FFE621}"
EndProject
@@ -25,53 +25,231 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PCLExt.FileStorage.Standard
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PCLExt.FileStorage.Portable111", "src\PCLExt.FileStorage.Portable111\PCLExt.FileStorage.Portable111.csproj", "{A7C97A2B-F996-4CAF-87D8-F3A60B2B4D44}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PCLExt.FileStorage.UWP", "src\PCLExt.FileStorage.UWP\PCLExt.FileStorage.UWP.csproj", "{D09BEB59-933D-4446-90FA-C8760705E8E4}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PCLExt.FileStorage.UWP.Test", "src\PCLExt.FileStorage.UWP.Test\PCLExt.FileStorage.UWP.Test.csproj", "{9E934708-D6C7-48E3-9E95-13144C4E86B5}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
+ Debug|ARM = Debug|ARM
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
+ Release|ARM = Release|ARM
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{8EFC0559-3C9C-4D0C-A5A5-579E58FFE621}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8EFC0559-3C9C-4D0C-A5A5-579E58FFE621}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8EFC0559-3C9C-4D0C-A5A5-579E58FFE621}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {8EFC0559-3C9C-4D0C-A5A5-579E58FFE621}.Debug|ARM.Build.0 = Debug|Any CPU
+ {8EFC0559-3C9C-4D0C-A5A5-579E58FFE621}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {8EFC0559-3C9C-4D0C-A5A5-579E58FFE621}.Debug|x64.Build.0 = Debug|Any CPU
+ {8EFC0559-3C9C-4D0C-A5A5-579E58FFE621}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {8EFC0559-3C9C-4D0C-A5A5-579E58FFE621}.Debug|x86.Build.0 = Debug|Any CPU
{8EFC0559-3C9C-4D0C-A5A5-579E58FFE621}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8EFC0559-3C9C-4D0C-A5A5-579E58FFE621}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8EFC0559-3C9C-4D0C-A5A5-579E58FFE621}.Release|ARM.ActiveCfg = Release|Any CPU
+ {8EFC0559-3C9C-4D0C-A5A5-579E58FFE621}.Release|ARM.Build.0 = Release|Any CPU
+ {8EFC0559-3C9C-4D0C-A5A5-579E58FFE621}.Release|x64.ActiveCfg = Release|Any CPU
+ {8EFC0559-3C9C-4D0C-A5A5-579E58FFE621}.Release|x64.Build.0 = Release|Any CPU
+ {8EFC0559-3C9C-4D0C-A5A5-579E58FFE621}.Release|x86.ActiveCfg = Release|Any CPU
+ {8EFC0559-3C9C-4D0C-A5A5-579E58FFE621}.Release|x86.Build.0 = Release|Any CPU
{03DA3968-61A3-44D1-9F99-F55D31E07813}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{03DA3968-61A3-44D1-9F99-F55D31E07813}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {03DA3968-61A3-44D1-9F99-F55D31E07813}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {03DA3968-61A3-44D1-9F99-F55D31E07813}.Debug|ARM.Build.0 = Debug|Any CPU
+ {03DA3968-61A3-44D1-9F99-F55D31E07813}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {03DA3968-61A3-44D1-9F99-F55D31E07813}.Debug|x64.Build.0 = Debug|Any CPU
+ {03DA3968-61A3-44D1-9F99-F55D31E07813}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {03DA3968-61A3-44D1-9F99-F55D31E07813}.Debug|x86.Build.0 = Debug|Any CPU
{03DA3968-61A3-44D1-9F99-F55D31E07813}.Release|Any CPU.ActiveCfg = Release|Any CPU
{03DA3968-61A3-44D1-9F99-F55D31E07813}.Release|Any CPU.Build.0 = Release|Any CPU
+ {03DA3968-61A3-44D1-9F99-F55D31E07813}.Release|ARM.ActiveCfg = Release|Any CPU
+ {03DA3968-61A3-44D1-9F99-F55D31E07813}.Release|ARM.Build.0 = Release|Any CPU
+ {03DA3968-61A3-44D1-9F99-F55D31E07813}.Release|x64.ActiveCfg = Release|Any CPU
+ {03DA3968-61A3-44D1-9F99-F55D31E07813}.Release|x64.Build.0 = Release|Any CPU
+ {03DA3968-61A3-44D1-9F99-F55D31E07813}.Release|x86.ActiveCfg = Release|Any CPU
+ {03DA3968-61A3-44D1-9F99-F55D31E07813}.Release|x86.Build.0 = Release|Any CPU
{94E4FE17-7F2B-4623-8FFA-12F4056CCB2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{94E4FE17-7F2B-4623-8FFA-12F4056CCB2A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {94E4FE17-7F2B-4623-8FFA-12F4056CCB2A}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {94E4FE17-7F2B-4623-8FFA-12F4056CCB2A}.Debug|ARM.Build.0 = Debug|Any CPU
+ {94E4FE17-7F2B-4623-8FFA-12F4056CCB2A}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {94E4FE17-7F2B-4623-8FFA-12F4056CCB2A}.Debug|x64.Build.0 = Debug|Any CPU
+ {94E4FE17-7F2B-4623-8FFA-12F4056CCB2A}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {94E4FE17-7F2B-4623-8FFA-12F4056CCB2A}.Debug|x86.Build.0 = Debug|Any CPU
{94E4FE17-7F2B-4623-8FFA-12F4056CCB2A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{94E4FE17-7F2B-4623-8FFA-12F4056CCB2A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {94E4FE17-7F2B-4623-8FFA-12F4056CCB2A}.Release|ARM.ActiveCfg = Release|Any CPU
+ {94E4FE17-7F2B-4623-8FFA-12F4056CCB2A}.Release|ARM.Build.0 = Release|Any CPU
+ {94E4FE17-7F2B-4623-8FFA-12F4056CCB2A}.Release|x64.ActiveCfg = Release|Any CPU
+ {94E4FE17-7F2B-4623-8FFA-12F4056CCB2A}.Release|x64.Build.0 = Release|Any CPU
+ {94E4FE17-7F2B-4623-8FFA-12F4056CCB2A}.Release|x86.ActiveCfg = Release|Any CPU
+ {94E4FE17-7F2B-4623-8FFA-12F4056CCB2A}.Release|x86.Build.0 = Release|Any CPU
{CB89F319-1C9D-4574-8874-25F592EC76CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CB89F319-1C9D-4574-8874-25F592EC76CD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CB89F319-1C9D-4574-8874-25F592EC76CD}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+ {CB89F319-1C9D-4574-8874-25F592EC76CD}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {CB89F319-1C9D-4574-8874-25F592EC76CD}.Debug|ARM.Build.0 = Debug|Any CPU
+ {CB89F319-1C9D-4574-8874-25F592EC76CD}.Debug|ARM.Deploy.0 = Debug|Any CPU
+ {CB89F319-1C9D-4574-8874-25F592EC76CD}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {CB89F319-1C9D-4574-8874-25F592EC76CD}.Debug|x64.Build.0 = Debug|Any CPU
+ {CB89F319-1C9D-4574-8874-25F592EC76CD}.Debug|x64.Deploy.0 = Debug|Any CPU
+ {CB89F319-1C9D-4574-8874-25F592EC76CD}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {CB89F319-1C9D-4574-8874-25F592EC76CD}.Debug|x86.Build.0 = Debug|Any CPU
+ {CB89F319-1C9D-4574-8874-25F592EC76CD}.Debug|x86.Deploy.0 = Debug|Any CPU
{CB89F319-1C9D-4574-8874-25F592EC76CD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CB89F319-1C9D-4574-8874-25F592EC76CD}.Release|ARM.ActiveCfg = Release|Any CPU
+ {CB89F319-1C9D-4574-8874-25F592EC76CD}.Release|ARM.Build.0 = Release|Any CPU
+ {CB89F319-1C9D-4574-8874-25F592EC76CD}.Release|ARM.Deploy.0 = Release|Any CPU
+ {CB89F319-1C9D-4574-8874-25F592EC76CD}.Release|x64.ActiveCfg = Release|Any CPU
+ {CB89F319-1C9D-4574-8874-25F592EC76CD}.Release|x64.Build.0 = Release|Any CPU
+ {CB89F319-1C9D-4574-8874-25F592EC76CD}.Release|x64.Deploy.0 = Release|Any CPU
+ {CB89F319-1C9D-4574-8874-25F592EC76CD}.Release|x86.ActiveCfg = Release|Any CPU
+ {CB89F319-1C9D-4574-8874-25F592EC76CD}.Release|x86.Build.0 = Release|Any CPU
+ {CB89F319-1C9D-4574-8874-25F592EC76CD}.Release|x86.Deploy.0 = Release|Any CPU
{12AB9E53-8A6F-4B3A-8E2F-202799854F91}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator
{12AB9E53-8A6F-4B3A-8E2F-202799854F91}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator
+ {12AB9E53-8A6F-4B3A-8E2F-202799854F91}.Debug|ARM.ActiveCfg = Debug|iPhone
+ {12AB9E53-8A6F-4B3A-8E2F-202799854F91}.Debug|x64.ActiveCfg = Debug|iPhone
+ {12AB9E53-8A6F-4B3A-8E2F-202799854F91}.Debug|x86.ActiveCfg = Debug|iPhone
{12AB9E53-8A6F-4B3A-8E2F-202799854F91}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator
+ {12AB9E53-8A6F-4B3A-8E2F-202799854F91}.Release|ARM.ActiveCfg = Release|iPhone
+ {12AB9E53-8A6F-4B3A-8E2F-202799854F91}.Release|x64.ActiveCfg = Release|iPhone
+ {12AB9E53-8A6F-4B3A-8E2F-202799854F91}.Release|x86.ActiveCfg = Release|iPhone
{54DBACEB-B898-494B-AD88-2A407CB55A5A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{54DBACEB-B898-494B-AD88-2A407CB55A5A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {54DBACEB-B898-494B-AD88-2A407CB55A5A}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {54DBACEB-B898-494B-AD88-2A407CB55A5A}.Debug|ARM.Build.0 = Debug|Any CPU
+ {54DBACEB-B898-494B-AD88-2A407CB55A5A}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {54DBACEB-B898-494B-AD88-2A407CB55A5A}.Debug|x64.Build.0 = Debug|Any CPU
+ {54DBACEB-B898-494B-AD88-2A407CB55A5A}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {54DBACEB-B898-494B-AD88-2A407CB55A5A}.Debug|x86.Build.0 = Debug|Any CPU
{54DBACEB-B898-494B-AD88-2A407CB55A5A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{54DBACEB-B898-494B-AD88-2A407CB55A5A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {54DBACEB-B898-494B-AD88-2A407CB55A5A}.Release|ARM.ActiveCfg = Release|Any CPU
+ {54DBACEB-B898-494B-AD88-2A407CB55A5A}.Release|ARM.Build.0 = Release|Any CPU
+ {54DBACEB-B898-494B-AD88-2A407CB55A5A}.Release|x64.ActiveCfg = Release|Any CPU
+ {54DBACEB-B898-494B-AD88-2A407CB55A5A}.Release|x64.Build.0 = Release|Any CPU
+ {54DBACEB-B898-494B-AD88-2A407CB55A5A}.Release|x86.ActiveCfg = Release|Any CPU
+ {54DBACEB-B898-494B-AD88-2A407CB55A5A}.Release|x86.Build.0 = Release|Any CPU
{0B02DE9A-C3C5-4DB9-B87F-6B05C3566946}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0B02DE9A-C3C5-4DB9-B87F-6B05C3566946}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0B02DE9A-C3C5-4DB9-B87F-6B05C3566946}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {0B02DE9A-C3C5-4DB9-B87F-6B05C3566946}.Debug|ARM.Build.0 = Debug|Any CPU
+ {0B02DE9A-C3C5-4DB9-B87F-6B05C3566946}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {0B02DE9A-C3C5-4DB9-B87F-6B05C3566946}.Debug|x64.Build.0 = Debug|Any CPU
+ {0B02DE9A-C3C5-4DB9-B87F-6B05C3566946}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {0B02DE9A-C3C5-4DB9-B87F-6B05C3566946}.Debug|x86.Build.0 = Debug|Any CPU
{0B02DE9A-C3C5-4DB9-B87F-6B05C3566946}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0B02DE9A-C3C5-4DB9-B87F-6B05C3566946}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0B02DE9A-C3C5-4DB9-B87F-6B05C3566946}.Release|ARM.ActiveCfg = Release|Any CPU
+ {0B02DE9A-C3C5-4DB9-B87F-6B05C3566946}.Release|ARM.Build.0 = Release|Any CPU
+ {0B02DE9A-C3C5-4DB9-B87F-6B05C3566946}.Release|x64.ActiveCfg = Release|Any CPU
+ {0B02DE9A-C3C5-4DB9-B87F-6B05C3566946}.Release|x64.Build.0 = Release|Any CPU
+ {0B02DE9A-C3C5-4DB9-B87F-6B05C3566946}.Release|x86.ActiveCfg = Release|Any CPU
+ {0B02DE9A-C3C5-4DB9-B87F-6B05C3566946}.Release|x86.Build.0 = Release|Any CPU
{316FFBA8-57A8-4B4A-8352-F1E3361D8710}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{316FFBA8-57A8-4B4A-8352-F1E3361D8710}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {316FFBA8-57A8-4B4A-8352-F1E3361D8710}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {316FFBA8-57A8-4B4A-8352-F1E3361D8710}.Debug|ARM.Build.0 = Debug|Any CPU
+ {316FFBA8-57A8-4B4A-8352-F1E3361D8710}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {316FFBA8-57A8-4B4A-8352-F1E3361D8710}.Debug|x64.Build.0 = Debug|Any CPU
+ {316FFBA8-57A8-4B4A-8352-F1E3361D8710}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {316FFBA8-57A8-4B4A-8352-F1E3361D8710}.Debug|x86.Build.0 = Debug|Any CPU
{316FFBA8-57A8-4B4A-8352-F1E3361D8710}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {316FFBA8-57A8-4B4A-8352-F1E3361D8710}.Release|ARM.ActiveCfg = Release|Any CPU
+ {316FFBA8-57A8-4B4A-8352-F1E3361D8710}.Release|ARM.Build.0 = Release|Any CPU
+ {316FFBA8-57A8-4B4A-8352-F1E3361D8710}.Release|x64.ActiveCfg = Release|Any CPU
+ {316FFBA8-57A8-4B4A-8352-F1E3361D8710}.Release|x64.Build.0 = Release|Any CPU
+ {316FFBA8-57A8-4B4A-8352-F1E3361D8710}.Release|x86.ActiveCfg = Release|Any CPU
+ {316FFBA8-57A8-4B4A-8352-F1E3361D8710}.Release|x86.Build.0 = Release|Any CPU
{119368DE-E6BD-4746-BCD8-BBFE458579CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{119368DE-E6BD-4746-BCD8-BBFE458579CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {119368DE-E6BD-4746-BCD8-BBFE458579CC}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {119368DE-E6BD-4746-BCD8-BBFE458579CC}.Debug|ARM.Build.0 = Debug|Any CPU
+ {119368DE-E6BD-4746-BCD8-BBFE458579CC}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {119368DE-E6BD-4746-BCD8-BBFE458579CC}.Debug|x64.Build.0 = Debug|Any CPU
+ {119368DE-E6BD-4746-BCD8-BBFE458579CC}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {119368DE-E6BD-4746-BCD8-BBFE458579CC}.Debug|x86.Build.0 = Debug|Any CPU
{119368DE-E6BD-4746-BCD8-BBFE458579CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {119368DE-E6BD-4746-BCD8-BBFE458579CC}.Release|ARM.ActiveCfg = Release|Any CPU
+ {119368DE-E6BD-4746-BCD8-BBFE458579CC}.Release|ARM.Build.0 = Release|Any CPU
+ {119368DE-E6BD-4746-BCD8-BBFE458579CC}.Release|x64.ActiveCfg = Release|Any CPU
+ {119368DE-E6BD-4746-BCD8-BBFE458579CC}.Release|x64.Build.0 = Release|Any CPU
+ {119368DE-E6BD-4746-BCD8-BBFE458579CC}.Release|x86.ActiveCfg = Release|Any CPU
+ {119368DE-E6BD-4746-BCD8-BBFE458579CC}.Release|x86.Build.0 = Release|Any CPU
{5D529A12-F49C-40FE-B3C3-17747D73879E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5D529A12-F49C-40FE-B3C3-17747D73879E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5D529A12-F49C-40FE-B3C3-17747D73879E}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {5D529A12-F49C-40FE-B3C3-17747D73879E}.Debug|ARM.Build.0 = Debug|Any CPU
+ {5D529A12-F49C-40FE-B3C3-17747D73879E}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {5D529A12-F49C-40FE-B3C3-17747D73879E}.Debug|x64.Build.0 = Debug|Any CPU
+ {5D529A12-F49C-40FE-B3C3-17747D73879E}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {5D529A12-F49C-40FE-B3C3-17747D73879E}.Debug|x86.Build.0 = Debug|Any CPU
{5D529A12-F49C-40FE-B3C3-17747D73879E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5D529A12-F49C-40FE-B3C3-17747D73879E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5D529A12-F49C-40FE-B3C3-17747D73879E}.Release|ARM.ActiveCfg = Release|Any CPU
+ {5D529A12-F49C-40FE-B3C3-17747D73879E}.Release|ARM.Build.0 = Release|Any CPU
+ {5D529A12-F49C-40FE-B3C3-17747D73879E}.Release|x64.ActiveCfg = Release|Any CPU
+ {5D529A12-F49C-40FE-B3C3-17747D73879E}.Release|x64.Build.0 = Release|Any CPU
+ {5D529A12-F49C-40FE-B3C3-17747D73879E}.Release|x86.ActiveCfg = Release|Any CPU
+ {5D529A12-F49C-40FE-B3C3-17747D73879E}.Release|x86.Build.0 = Release|Any CPU
{A7C97A2B-F996-4CAF-87D8-F3A60B2B4D44}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A7C97A2B-F996-4CAF-87D8-F3A60B2B4D44}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A7C97A2B-F996-4CAF-87D8-F3A60B2B4D44}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {A7C97A2B-F996-4CAF-87D8-F3A60B2B4D44}.Debug|ARM.Build.0 = Debug|Any CPU
+ {A7C97A2B-F996-4CAF-87D8-F3A60B2B4D44}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {A7C97A2B-F996-4CAF-87D8-F3A60B2B4D44}.Debug|x64.Build.0 = Debug|Any CPU
+ {A7C97A2B-F996-4CAF-87D8-F3A60B2B4D44}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {A7C97A2B-F996-4CAF-87D8-F3A60B2B4D44}.Debug|x86.Build.0 = Debug|Any CPU
{A7C97A2B-F996-4CAF-87D8-F3A60B2B4D44}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A7C97A2B-F996-4CAF-87D8-F3A60B2B4D44}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A7C97A2B-F996-4CAF-87D8-F3A60B2B4D44}.Release|ARM.ActiveCfg = Release|Any CPU
+ {A7C97A2B-F996-4CAF-87D8-F3A60B2B4D44}.Release|ARM.Build.0 = Release|Any CPU
+ {A7C97A2B-F996-4CAF-87D8-F3A60B2B4D44}.Release|x64.ActiveCfg = Release|Any CPU
+ {A7C97A2B-F996-4CAF-87D8-F3A60B2B4D44}.Release|x64.Build.0 = Release|Any CPU
+ {A7C97A2B-F996-4CAF-87D8-F3A60B2B4D44}.Release|x86.ActiveCfg = Release|Any CPU
+ {A7C97A2B-F996-4CAF-87D8-F3A60B2B4D44}.Release|x86.Build.0 = Release|Any CPU
+ {D09BEB59-933D-4446-90FA-C8760705E8E4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D09BEB59-933D-4446-90FA-C8760705E8E4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D09BEB59-933D-4446-90FA-C8760705E8E4}.Debug|ARM.ActiveCfg = Debug|ARM
+ {D09BEB59-933D-4446-90FA-C8760705E8E4}.Debug|ARM.Build.0 = Debug|ARM
+ {D09BEB59-933D-4446-90FA-C8760705E8E4}.Debug|x64.ActiveCfg = Debug|x64
+ {D09BEB59-933D-4446-90FA-C8760705E8E4}.Debug|x64.Build.0 = Debug|x64
+ {D09BEB59-933D-4446-90FA-C8760705E8E4}.Debug|x86.ActiveCfg = Debug|x86
+ {D09BEB59-933D-4446-90FA-C8760705E8E4}.Debug|x86.Build.0 = Debug|x86
+ {D09BEB59-933D-4446-90FA-C8760705E8E4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D09BEB59-933D-4446-90FA-C8760705E8E4}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D09BEB59-933D-4446-90FA-C8760705E8E4}.Release|ARM.ActiveCfg = Release|ARM
+ {D09BEB59-933D-4446-90FA-C8760705E8E4}.Release|ARM.Build.0 = Release|ARM
+ {D09BEB59-933D-4446-90FA-C8760705E8E4}.Release|x64.ActiveCfg = Release|x64
+ {D09BEB59-933D-4446-90FA-C8760705E8E4}.Release|x64.Build.0 = Release|x64
+ {D09BEB59-933D-4446-90FA-C8760705E8E4}.Release|x86.ActiveCfg = Release|x86
+ {D09BEB59-933D-4446-90FA-C8760705E8E4}.Release|x86.Build.0 = Release|x86
+ {9E934708-D6C7-48E3-9E95-13144C4E86B5}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {9E934708-D6C7-48E3-9E95-13144C4E86B5}.Debug|ARM.ActiveCfg = Debug|ARM
+ {9E934708-D6C7-48E3-9E95-13144C4E86B5}.Debug|ARM.Build.0 = Debug|ARM
+ {9E934708-D6C7-48E3-9E95-13144C4E86B5}.Debug|ARM.Deploy.0 = Debug|ARM
+ {9E934708-D6C7-48E3-9E95-13144C4E86B5}.Debug|x64.ActiveCfg = Debug|x64
+ {9E934708-D6C7-48E3-9E95-13144C4E86B5}.Debug|x64.Build.0 = Debug|x64
+ {9E934708-D6C7-48E3-9E95-13144C4E86B5}.Debug|x64.Deploy.0 = Debug|x64
+ {9E934708-D6C7-48E3-9E95-13144C4E86B5}.Debug|x86.ActiveCfg = Debug|x86
+ {9E934708-D6C7-48E3-9E95-13144C4E86B5}.Debug|x86.Build.0 = Debug|x86
+ {9E934708-D6C7-48E3-9E95-13144C4E86B5}.Debug|x86.Deploy.0 = Debug|x86
+ {9E934708-D6C7-48E3-9E95-13144C4E86B5}.Release|Any CPU.ActiveCfg = Release|x86
+ {9E934708-D6C7-48E3-9E95-13144C4E86B5}.Release|ARM.ActiveCfg = Release|ARM
+ {9E934708-D6C7-48E3-9E95-13144C4E86B5}.Release|ARM.Build.0 = Release|ARM
+ {9E934708-D6C7-48E3-9E95-13144C4E86B5}.Release|ARM.Deploy.0 = Release|ARM
+ {9E934708-D6C7-48E3-9E95-13144C4E86B5}.Release|x64.ActiveCfg = Release|x64
+ {9E934708-D6C7-48E3-9E95-13144C4E86B5}.Release|x64.Build.0 = Release|x64
+ {9E934708-D6C7-48E3-9E95-13144C4E86B5}.Release|x64.Deploy.0 = Release|x64
+ {9E934708-D6C7-48E3-9E95-13144C4E86B5}.Release|x86.ActiveCfg = Release|x86
+ {9E934708-D6C7-48E3-9E95-13144C4E86B5}.Release|x86.Build.0 = Release|x86
+ {9E934708-D6C7-48E3-9E95-13144C4E86B5}.Release|x86.Deploy.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/PCLExt.FileStorage.sln.DotSettings b/PCLExt.FileStorage.sln.DotSettings
new file mode 100644
index 0000000..ed5f66d
--- /dev/null
+++ b/PCLExt.FileStorage.sln.DotSettings
@@ -0,0 +1,2 @@
+
+ <data><IncludeFilters /><ExcludeFilters><Filter ModuleMask="PCLExt.FileStorage" ModuleVersionMask="*" ClassMask="PCLExt.FileStorage.DefaultFolderImplementation" FunctionMask="CheckExistsAsync" IsEnabled="True" /><Filter ModuleMask="PCLExt.FileStorage" ModuleVersionMask="*" ClassMask="PCLExt.FileStorage.DefaultFolderImplementation" FunctionMask="CreateFileAsync" IsEnabled="True" /><Filter ModuleMask="PCLExt.FileStorage" ModuleVersionMask="*" ClassMask="PCLExt.FileStorage.DefaultFolderImplementation" FunctionMask="GetFileAsync" IsEnabled="True" /><Filter ModuleMask="PCLExt.FileStorage" ModuleVersionMask="*" ClassMask="PCLExt.FileStorage.DefaultFolderImplementation" FunctionMask="GetFoldersAsync" IsEnabled="True" /><Filter ModuleMask="PCLExt.FileStorage" ModuleVersionMask="*" ClassMask="PCLExt.FileStorage.DefaultFolderImplementation" FunctionMask="MoveAsync" IsEnabled="True" /><Filter ModuleMask="PCLExt.FileStorage" ModuleVersionMask="*" ClassMask="PCLExt.FileStorage.DefaultFolderImplementation" FunctionMask="CopyAsync" IsEnabled="True" /><Filter ModuleMask="PCLExt.FileStorage" ModuleVersionMask="*" ClassMask="PCLExt.FileStorage.DefaultFolderImplementation" FunctionMask="CreateFolderAsync" IsEnabled="True" /><Filter ModuleMask="PCLExt.FileStorage" ModuleVersionMask="*" ClassMask="PCLExt.FileStorage.DefaultFolderImplementation" FunctionMask="DeleteAsync" IsEnabled="True" /><Filter ModuleMask="PCLExt.FileStorage" ModuleVersionMask="*" ClassMask="PCLExt.FileStorage.DefaultFolderImplementation" FunctionMask="GetFilesAsync" IsEnabled="True" /><Filter ModuleMask="PCLExt.FileStorage" ModuleVersionMask="*" ClassMask="PCLExt.FileStorage.DefaultFolderImplementation" FunctionMask="GetFolderAsync" IsEnabled="True" /><Filter ModuleMask="PCLExt.FileStorage" ModuleVersionMask="*" ClassMask="PCLExt.FileStorage.DefaultFolderImplementation" FunctionMask="RenameAsync" IsEnabled="True" /><Filter ModuleMask="PCLExt.FileStorage" ModuleVersionMask="*" ClassMask="PCLExt.FileStorage.DefaultFileImplementation" FunctionMask="CopyAsync" IsEnabled="True" /><Filter ModuleMask="PCLExt.FileStorage" ModuleVersionMask="*" ClassMask="PCLExt.FileStorage.DefaultFileImplementation" FunctionMask="DeleteAsync" IsEnabled="True" /><Filter ModuleMask="PCLExt.FileStorage" ModuleVersionMask="*" ClassMask="PCLExt.FileStorage.DefaultFileImplementation" FunctionMask="MoveAsync" IsEnabled="True" /><Filter ModuleMask="PCLExt.FileStorage" ModuleVersionMask="*" ClassMask="PCLExt.FileStorage.DefaultFileImplementation" FunctionMask="OpenAsync" IsEnabled="True" /><Filter ModuleMask="PCLExt.FileStorage" ModuleVersionMask="*" ClassMask="PCLExt.FileStorage.DefaultFileImplementation" FunctionMask="ReadAllBytesAsync" IsEnabled="True" /><Filter ModuleMask="PCLExt.FileStorage" ModuleVersionMask="*" ClassMask="PCLExt.FileStorage.DefaultFileImplementation" FunctionMask="RenameAsync" IsEnabled="True" /><Filter ModuleMask="PCLExt.FileStorage" ModuleVersionMask="*" ClassMask="PCLExt.FileStorage.DefaultFileImplementation" FunctionMask="WriteAllBytesAsync" IsEnabled="True" /><Filter ModuleMask="PCLExt.FileStorage" ModuleVersionMask="*" ClassMask="PCLExt.FileStorage.Exceptions.*" FunctionMask="*" IsEnabled="True" /><Filter ModuleMask="PCLExt.FileStorage.Abstractions" ModuleVersionMask="*" ClassMask="*" FunctionMask="*" IsEnabled="True" /><Filter ModuleMask="PCLExt.FileStorage.Core.Test" ModuleVersionMask="*" ClassMask="*" FunctionMask="*" IsEnabled="True" /><Filter ModuleMask="PCLExt.FileStorage" ModuleVersionMask="*" ClassMask="PCLExt.FileStorage.Requires" FunctionMask="*" IsEnabled="True" /><Filter ModuleMask="PCLExt.FileStorage" ModuleVersionMask="*" ClassMask="PCLExt.FileStorage.Extensions.AwaitExtensions" FunctionMask="*" IsEnabled="True" /><Filter ModuleMask="PCLExt.FileStorage.Android.Test" ModuleVersionMask="*" ClassMask="*" FunctionMask="*" IsEnabled="True" /><Filter ModuleMask="PCLExt.FileStorage.iOS.Test" ModuleVersionMask="*" ClassMask="*" FunctionMask="*" IsEnabled="True" /><Filter ModuleMask="PCLExt.FileStorage.NetFX.Test" ModuleVersionMask="*" ClassMask="*" FunctionMask="*" IsEnabled="True" /><Filter ModuleMask="PCLExt.FileStorage" ModuleVersionMask="*" ClassMask="*" FunctionMask="*" IsEnabled="True" /></ExcludeFilters></data>
\ No newline at end of file
diff --git a/common/CommonAssemblyInfo.cs b/common/CommonAssemblyInfo.cs
index b29d615..e9d4b64 100644
--- a/common/CommonAssemblyInfo.cs
+++ b/common/CommonAssemblyInfo.cs
@@ -7,5 +7,5 @@
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
-[assembly: AssemblyVersion("1.3.0.0")]
-[assembly: AssemblyFileVersion("1.3.0.0")]
+[assembly: AssemblyVersion("1.3.1.0")]
+[assembly: AssemblyFileVersion("1.3.1.0")]
diff --git a/common/PCLExt.FileStorage.nuspec b/common/PCLExt.FileStorage.nuspec
index f48eeb0..e061ef5 100644
--- a/common/PCLExt.FileStorage.nuspec
+++ b/common/PCLExt.FileStorage.nuspec
@@ -2,7 +2,7 @@
PCLExt.FileStorage
- 1.3.0.0
+ 1.3.1.0
PCL Extension - File Storage API
Daniel Plaisted,Aragas
Aragas
@@ -12,13 +12,13 @@
false
PCL Extension provides file system implementations for PCL, .NET Framework, .NET Core, Xamarin.iOS, Xamarin.Android and Xamarin.Mac. This makes it easier to create cross-platform .NET libraries and apps. Supports .NET Standard now.
PCL Extension provides file system implementations for PCL platform
- io storage file system filesystem filestorage portable pcl android mac ios xamarin monoandroid monotouch core netcore netstandard
+ io storage file system filesystem filestorage portable pcl android mac ios xamarin monoandroid monotouch core netcore netstandard uwp
-
-
-
-
+
+
+
+
@@ -35,10 +35,15 @@
-
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/src/PCLExt.FileStorage.Android.Test/Assets/AboutAssets.txt b/src/PCLExt.FileStorage.Android.Test/Assets/AboutAssets.txt
deleted file mode 100644
index ee39886..0000000
--- a/src/PCLExt.FileStorage.Android.Test/Assets/AboutAssets.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-Any raw assets you want to be deployed with your application can be placed in
-this directory (and child directories) and given a Build Action of "AndroidAsset".
-
-These files will be deployed with you package and will be accessible using Android's
-AssetManager, like this:
-
-public class ReadAsset : Activity
-{
- protected override void OnCreate (Bundle bundle)
- {
- base.OnCreate (bundle);
-
- InputStream input = Assets.Open ("my_asset.txt");
- }
-}
-
-Additionally, some Android functions will automatically load asset files:
-
-Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf");
\ No newline at end of file
diff --git a/src/PCLExt.FileStorage.Android.Test/MainActivity.cs b/src/PCLExt.FileStorage.Android.Test/MainActivity.cs
index ec7d5df..f84cea1 100644
--- a/src/PCLExt.FileStorage.Android.Test/MainActivity.cs
+++ b/src/PCLExt.FileStorage.Android.Test/MainActivity.cs
@@ -7,7 +7,7 @@
namespace PCLExt.FileStorage.Android.Test
{
- [Activity(Label = "PCLExt.FileStorage.Android.Test", MainLauncher = true, Icon = "@drawable/icon")]
+ [Activity(Label = "PCLExt.FileStorage.Android.Test", MainLauncher = true)]
public class MainActivity : TestSuiteActivity
{
protected override void OnCreate(Bundle bundle)
diff --git a/src/PCLExt.FileStorage.Android.Test/PCLExt.FileStorage.Android.Test.csproj b/src/PCLExt.FileStorage.Android.Test/PCLExt.FileStorage.Android.Test.csproj
index d8e72b8..ba588f2 100644
--- a/src/PCLExt.FileStorage.Android.Test/PCLExt.FileStorage.Android.Test.csproj
+++ b/src/PCLExt.FileStorage.Android.Test/PCLExt.FileStorage.Android.Test.csproj
@@ -16,7 +16,7 @@
Resources\Resource.Designer.cs
Off
True
- v6.0
+ v8.0
Properties\AndroidManifest.xml
@@ -30,6 +30,9 @@
True
None
False
+ false
+ false
+ false
PdbOnly
@@ -68,19 +71,8 @@
FoldersTest.cs
-
-
-
-
-
-
-
-
-
-
-
@@ -94,6 +86,7 @@
PCLExt.FileStorage.Standard.Abstractions
+
+
\ No newline at end of file
diff --git a/src/PCLExt.FileStorage.Android.Test/Properties/AndroidManifest.xml b/src/PCLExt.FileStorage.Android.Test/Properties/AndroidManifest.xml
index 8b8870d..156bb36 100644
--- a/src/PCLExt.FileStorage.Android.Test/Properties/AndroidManifest.xml
+++ b/src/PCLExt.FileStorage.Android.Test/Properties/AndroidManifest.xml
@@ -1,5 +1,5 @@
-
-
-
+
+
+
\ No newline at end of file
diff --git a/src/PCLExt.FileStorage.Android.Test/Resources/AboutResources.txt b/src/PCLExt.FileStorage.Android.Test/Resources/AboutResources.txt
deleted file mode 100644
index c2bca97..0000000
--- a/src/PCLExt.FileStorage.Android.Test/Resources/AboutResources.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-Images, layout descriptions, binary blobs and string dictionaries can be included
-in your application as resource files. Various Android APIs are designed to
-operate on the resource IDs instead of dealing with images, strings or binary blobs
-directly.
-
-For example, a sample Android app that contains a user interface layout (main.axml),
-an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png)
-would keep its resources in the "Resources" directory of the application:
-
-Resources/
- drawable/
- icon.png
-
- layout/
- main.axml
-
- values/
- strings.xml
-
-In order to get the build system to recognize Android resources, set the build action to
-"AndroidResource". The native Android APIs do not operate directly with filenames, but
-instead operate on resource IDs. When you compile an Android application that uses resources,
-the build system will package the resources for distribution and generate a class called "R"
-(this is an Android convention) that contains the tokens for each one of the resources
-included. For example, for the above Resources layout, this is what the R class would expose:
-
-public class R {
- public class drawable {
- public const int icon = 0x123;
- }
-
- public class layout {
- public const int main = 0x456;
- }
-
- public class strings {
- public const int first_string = 0xabc;
- public const int second_string = 0xbcd;
- }
-}
-
-You would then use R.drawable.icon to reference the drawable/icon.png file, or R.layout.main
-to reference the layout/main.axml file, or R.strings.first_string to reference the first
-string in the dictionary file values/strings.xml.
\ No newline at end of file
diff --git a/src/PCLExt.FileStorage.Android.Test/Resources/Resource.Designer.cs b/src/PCLExt.FileStorage.Android.Test/Resources/Resource.Designer.cs
index 55f8653..e69de29 100644
--- a/src/PCLExt.FileStorage.Android.Test/Resources/Resource.Designer.cs
+++ b/src/PCLExt.FileStorage.Android.Test/Resources/Resource.Designer.cs
@@ -1,194 +0,0 @@
-#pragma warning disable 1591
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-[assembly: global::Android.Runtime.ResourceDesignerAttribute("PCLExt.FileStorage.Android.Test.Resource", IsApplication=true)]
-
-namespace PCLExt.FileStorage.Android.Test
-{
-
-
- [System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "1.0.0.0")]
- public partial class Resource
- {
-
- static Resource()
- {
- global::Android.Runtime.ResourceIdManager.UpdateIdValues();
- }
-
- public static void UpdateIdValues()
- {
- global::Xamarin.Android.NUnitLite.Resource.Id.OptionHostName = global::PCLExt.FileStorage.Android.Test.Resource.Id.OptionHostName;
- global::Xamarin.Android.NUnitLite.Resource.Id.OptionPort = global::PCLExt.FileStorage.Android.Test.Resource.Id.OptionPort;
- global::Xamarin.Android.NUnitLite.Resource.Id.OptionRemoteServer = global::PCLExt.FileStorage.Android.Test.Resource.Id.OptionRemoteServer;
- global::Xamarin.Android.NUnitLite.Resource.Id.OptionsButton = global::PCLExt.FileStorage.Android.Test.Resource.Id.OptionsButton;
- global::Xamarin.Android.NUnitLite.Resource.Id.ResultFullName = global::PCLExt.FileStorage.Android.Test.Resource.Id.ResultFullName;
- global::Xamarin.Android.NUnitLite.Resource.Id.ResultMessage = global::PCLExt.FileStorage.Android.Test.Resource.Id.ResultMessage;
- global::Xamarin.Android.NUnitLite.Resource.Id.ResultResultState = global::PCLExt.FileStorage.Android.Test.Resource.Id.ResultResultState;
- global::Xamarin.Android.NUnitLite.Resource.Id.ResultRunSingleMethodTest = global::PCLExt.FileStorage.Android.Test.Resource.Id.ResultRunSingleMethodTest;
- global::Xamarin.Android.NUnitLite.Resource.Id.ResultStackTrace = global::PCLExt.FileStorage.Android.Test.Resource.Id.ResultStackTrace;
- global::Xamarin.Android.NUnitLite.Resource.Id.ResultsFailed = global::PCLExt.FileStorage.Android.Test.Resource.Id.ResultsFailed;
- global::Xamarin.Android.NUnitLite.Resource.Id.ResultsId = global::PCLExt.FileStorage.Android.Test.Resource.Id.ResultsId;
- global::Xamarin.Android.NUnitLite.Resource.Id.ResultsIgnored = global::PCLExt.FileStorage.Android.Test.Resource.Id.ResultsIgnored;
- global::Xamarin.Android.NUnitLite.Resource.Id.ResultsInconclusive = global::PCLExt.FileStorage.Android.Test.Resource.Id.ResultsInconclusive;
- global::Xamarin.Android.NUnitLite.Resource.Id.ResultsMessage = global::PCLExt.FileStorage.Android.Test.Resource.Id.ResultsMessage;
- global::Xamarin.Android.NUnitLite.Resource.Id.ResultsPassed = global::PCLExt.FileStorage.Android.Test.Resource.Id.ResultsPassed;
- global::Xamarin.Android.NUnitLite.Resource.Id.ResultsResult = global::PCLExt.FileStorage.Android.Test.Resource.Id.ResultsResult;
- global::Xamarin.Android.NUnitLite.Resource.Id.RunTestsButton = global::PCLExt.FileStorage.Android.Test.Resource.Id.RunTestsButton;
- global::Xamarin.Android.NUnitLite.Resource.Id.TestSuiteListView = global::PCLExt.FileStorage.Android.Test.Resource.Id.TestSuiteListView;
- global::Xamarin.Android.NUnitLite.Resource.Layout.options = global::PCLExt.FileStorage.Android.Test.Resource.Layout.options;
- global::Xamarin.Android.NUnitLite.Resource.Layout.results = global::PCLExt.FileStorage.Android.Test.Resource.Layout.results;
- global::Xamarin.Android.NUnitLite.Resource.Layout.test_result = global::PCLExt.FileStorage.Android.Test.Resource.Layout.test_result;
- global::Xamarin.Android.NUnitLite.Resource.Layout.test_suite = global::PCLExt.FileStorage.Android.Test.Resource.Layout.test_suite;
- }
-
- public partial class Attribute
- {
-
- static Attribute()
- {
- global::Android.Runtime.ResourceIdManager.UpdateIdValues();
- }
-
- private Attribute()
- {
- }
- }
-
- public partial class Drawable
- {
-
- // aapt resource value: 0x7f020000
- public const int Icon = 2130837504;
-
- static Drawable()
- {
- global::Android.Runtime.ResourceIdManager.UpdateIdValues();
- }
-
- private Drawable()
- {
- }
- }
-
- public partial class Id
- {
-
- // aapt resource value: 0x7f050001
- public const int OptionHostName = 2131034113;
-
- // aapt resource value: 0x7f050002
- public const int OptionPort = 2131034114;
-
- // aapt resource value: 0x7f050000
- public const int OptionRemoteServer = 2131034112;
-
- // aapt resource value: 0x7f050010
- public const int OptionsButton = 2131034128;
-
- // aapt resource value: 0x7f05000b
- public const int ResultFullName = 2131034123;
-
- // aapt resource value: 0x7f05000d
- public const int ResultMessage = 2131034125;
-
- // aapt resource value: 0x7f05000c
- public const int ResultResultState = 2131034124;
-
- // aapt resource value: 0x7f05000a
- public const int ResultRunSingleMethodTest = 2131034122;
-
- // aapt resource value: 0x7f05000e
- public const int ResultStackTrace = 2131034126;
-
- // aapt resource value: 0x7f050006
- public const int ResultsFailed = 2131034118;
-
- // aapt resource value: 0x7f050003
- public const int ResultsId = 2131034115;
-
- // aapt resource value: 0x7f050007
- public const int ResultsIgnored = 2131034119;
-
- // aapt resource value: 0x7f050008
- public const int ResultsInconclusive = 2131034120;
-
- // aapt resource value: 0x7f050009
- public const int ResultsMessage = 2131034121;
-
- // aapt resource value: 0x7f050005
- public const int ResultsPassed = 2131034117;
-
- // aapt resource value: 0x7f050004
- public const int ResultsResult = 2131034116;
-
- // aapt resource value: 0x7f05000f
- public const int RunTestsButton = 2131034127;
-
- // aapt resource value: 0x7f050011
- public const int TestSuiteListView = 2131034129;
-
- static Id()
- {
- global::Android.Runtime.ResourceIdManager.UpdateIdValues();
- }
-
- private Id()
- {
- }
- }
-
- public partial class Layout
- {
-
- // aapt resource value: 0x7f030000
- public const int options = 2130903040;
-
- // aapt resource value: 0x7f030001
- public const int results = 2130903041;
-
- // aapt resource value: 0x7f030002
- public const int test_result = 2130903042;
-
- // aapt resource value: 0x7f030003
- public const int test_suite = 2130903043;
-
- static Layout()
- {
- global::Android.Runtime.ResourceIdManager.UpdateIdValues();
- }
-
- private Layout()
- {
- }
- }
-
- public partial class String
- {
-
- // aapt resource value: 0x7f040001
- public const int ApplicationName = 2130968577;
-
- // aapt resource value: 0x7f040000
- public const int Hello = 2130968576;
-
- static String()
- {
- global::Android.Runtime.ResourceIdManager.UpdateIdValues();
- }
-
- private String()
- {
- }
- }
- }
-}
-#pragma warning restore 1591
diff --git a/src/PCLExt.FileStorage.Android.Test/Resources/drawable/Icon.png b/src/PCLExt.FileStorage.Android.Test/Resources/drawable/Icon.png
deleted file mode 100644
index 8074c4c..0000000
Binary files a/src/PCLExt.FileStorage.Android.Test/Resources/drawable/Icon.png and /dev/null differ
diff --git a/src/PCLExt.FileStorage.Android.Test/Resources/values/Strings.xml b/src/PCLExt.FileStorage.Android.Test/Resources/values/Strings.xml
deleted file mode 100644
index af1cf29..0000000
--- a/src/PCLExt.FileStorage.Android.Test/Resources/values/Strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
- Hello World, Click Me!
- PCLExt.FileStorage.Android.Test
-
diff --git a/src/PCLExt.FileStorage.Android/PCLExt.FileStorage.Android.csproj b/src/PCLExt.FileStorage.Android/PCLExt.FileStorage.Android.csproj
index 934e0d5..4fb4bc8 100644
--- a/src/PCLExt.FileStorage.Android/PCLExt.FileStorage.Android.csproj
+++ b/src/PCLExt.FileStorage.Android/PCLExt.FileStorage.Android.csproj
@@ -13,7 +13,7 @@
Resources\Resource.Designer.cs
Off
true
- v6.0
+ v8.0
true
@@ -78,17 +78,23 @@
Files\FileFromPath.cs
-
- Folders\ApplicationFolder.cs
+
+ Folders\ApplicationRootFolder.cs
+
+
+ Folders\DocumentsRootFolder.cs
Folders\FolderFromPath.cs
-
- Folders\LocalStorageFolder.cs
+
+ Folders\LocalRootFolder.cs
+
+
+ Folders\RoamingRootFolder.cs
-
- Folders\RoamingStorageFolder.cs
+
+ Folders\TempRootFolder.cs
PortablePath.cs
diff --git a/src/PCLExt.FileStorage.Android/PCLExt.FileStorage.Android.csproj.bak b/src/PCLExt.FileStorage.Android/PCLExt.FileStorage.Android.csproj.bak
index 592213e..737e601 100644
--- a/src/PCLExt.FileStorage.Android/PCLExt.FileStorage.Android.csproj.bak
+++ b/src/PCLExt.FileStorage.Android/PCLExt.FileStorage.Android.csproj.bak
@@ -12,8 +12,8 @@
512
Resources\Resource.Designer.cs
Off
- True
- v7.0
+ true
+ v2.3
true
@@ -42,57 +42,72 @@
Properties\CommonAssemblyInfo.cs
-
+
DefaultFileImplementation.cs
-
+
DefaultFolderImplementation.cs
-
- Exceptions\DirectoryNotFoundException.cs
-
-
+
Exceptions\ExceptionsHelper.cs
-
+
+ Exceptions\FileExistException.cs
+
+
Exceptions\FileNotFoundException.cs
-
+
+ Exceptions\FolderExistException.cs
+
+
+ Exceptions\FolderNotFoundException.cs
+
+
+ Exceptions\RootFolderDeletionException.cs
+
+
Extensions\AwaitExtensions.cs
-
+
Extensions\FileExtensions.cs
-
+
Extensions\FolderExtensions.cs
-
+
Files\FileFromPath.cs
-
- Folders\ApplicationFolder.cs
+
+ Folders\ApplicationRootFolder.cs
+
+
+ Folders\DocumentsRootFolder.cs
-
+
Folders\FolderFromPath.cs
-
- Folders\LocalStorageFolder.cs
+
+ Folders\LocalRootFolder.cs
+
+
+ Folders\RoamingRootFolder.cs
-
- Folders\RoamingStorageFolder.cs
+
+ Folders\TempRootFolder.cs
-
+
PortablePath.cs
-
+
Requires.cs
-
- {3F8D0494-6EE2-47FE-B263-F09A5EA3D0B3}
- PCLExt.FileStorage.Portable.Abstractions
+
+ {5d529a12-f49c-40fe-b3c3-17747d73879e}
+ PCLExt.FileStorage.Standard.Abstractions
diff --git a/src/PCLExt.FileStorage.Core.Test/PCLExt.FileStorage.Core.Test.csproj b/src/PCLExt.FileStorage.Core.Test/PCLExt.FileStorage.Core.Test.csproj
index e4b0dea..7c3e509 100644
--- a/src/PCLExt.FileStorage.Core.Test/PCLExt.FileStorage.Core.Test.csproj
+++ b/src/PCLExt.FileStorage.Core.Test/PCLExt.FileStorage.Core.Test.csproj
@@ -2,9 +2,11 @@
netcoreapp2.0
+ false
+
diff --git a/src/PCLExt.FileStorage.Core.Test/Properties/AssemblyInfo.cs b/src/PCLExt.FileStorage.Core.Test/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..a0b51f0
--- /dev/null
+++ b/src/PCLExt.FileStorage.Core.Test/Properties/AssemblyInfo.cs
@@ -0,0 +1,4 @@
+using System.Reflection;
+
+[assembly: AssemblyTitle("PCLExt.FileStorage.Core.Test")]
+[assembly: AssemblyDescription("")]
\ No newline at end of file
diff --git a/src/PCLExt.FileStorage.Core/PCLExt.FileStorage.Core.csproj b/src/PCLExt.FileStorage.Core/PCLExt.FileStorage.Core.csproj
index 9d838fd..81e1726 100644
--- a/src/PCLExt.FileStorage.Core/PCLExt.FileStorage.Core.csproj
+++ b/src/PCLExt.FileStorage.Core/PCLExt.FileStorage.Core.csproj
@@ -30,10 +30,12 @@
-
+
+
-
-
+
+
+
diff --git a/src/PCLExt.FileStorage.NetFX.Test/FilesTest.cs b/src/PCLExt.FileStorage.NetFX.Test/FilesTest.cs
index ca83446..2c7b2af 100644
--- a/src/PCLExt.FileStorage.NetFX.Test/FilesTest.cs
+++ b/src/PCLExt.FileStorage.NetFX.Test/FilesTest.cs
@@ -3,6 +3,7 @@
using PCLExt.FileStorage.Exceptions;
using PCLExt.FileStorage.Extensions;
+
#if NUNIT
using NUnit.Framework;
diff --git a/src/PCLExt.FileStorage.NetFX.Test/FoldersTest.cs b/src/PCLExt.FileStorage.NetFX.Test/FoldersTest.cs
index 83ca280..91e716a 100644
--- a/src/PCLExt.FileStorage.NetFX.Test/FoldersTest.cs
+++ b/src/PCLExt.FileStorage.NetFX.Test/FoldersTest.cs
@@ -18,13 +18,13 @@
#endif
-#if __ANDROID__
+#if __ANDROID__ || __IOS__
-using RootFolder = PCLExt.FileStorage.Folders.LocalStorageFolder;
+using RootFolder = PCLExt.FileStorage.Folders.LocalRootFolder;
#else
-using RootFolder = PCLExt.FileStorage.Folders.ApplicationFolder;
+using RootFolder = PCLExt.FileStorage.Folders.ApplicationRootFolder;
#endif
diff --git a/src/PCLExt.FileStorage.NetFX.Test/PCLExt.FileStorage.NetFX.Test.csproj b/src/PCLExt.FileStorage.NetFX.Test/PCLExt.FileStorage.NetFX.Test.csproj
index 1245cb7..425a5f1 100644
--- a/src/PCLExt.FileStorage.NetFX.Test/PCLExt.FileStorage.NetFX.Test.csproj
+++ b/src/PCLExt.FileStorage.NetFX.Test/PCLExt.FileStorage.NetFX.Test.csproj
@@ -7,7 +7,7 @@
{119368DE-E6BD-4746-BCD8-BBFE458579CC}
Library
Properties
- PCLExt.FileStorage.NetFX.Test
+ PCLExt.FileStorage.Test
PCLExt.FileStorage.NetFX.Test
v4.6.1
512
@@ -48,6 +48,9 @@
+
+ Properties\CommonAssemblyInfo.cs
+
diff --git a/src/PCLExt.FileStorage.NetFX.Test/Properties/AssemblyInfo.cs b/src/PCLExt.FileStorage.NetFX.Test/Properties/AssemblyInfo.cs
index 77de599..401e577 100644
--- a/src/PCLExt.FileStorage.NetFX.Test/Properties/AssemblyInfo.cs
+++ b/src/PCLExt.FileStorage.NetFX.Test/Properties/AssemblyInfo.cs
@@ -1,20 +1,9 @@
using System.Reflection;
-using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
[assembly: AssemblyTitle("PCLExt.FileStorage.NetFX.Test")]
[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("PCLExt.FileStorage.NetFX.Test")]
-[assembly: AssemblyCopyright("Copyright © 2017")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
[assembly: Guid("119368de-e6bd-4746-bcd8-bbfe458579cc")]
-
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/src/PCLExt.FileStorage.NetFX.Test/StandardFoldersTest.cs b/src/PCLExt.FileStorage.NetFX.Test/StandardFoldersTest.cs
index c28a40d..268cc1b 100644
--- a/src/PCLExt.FileStorage.NetFX.Test/StandardFoldersTest.cs
+++ b/src/PCLExt.FileStorage.NetFX.Test/StandardFoldersTest.cs
@@ -32,27 +32,57 @@ public void FolderFromPath()
[TestMethod]
public void LocalStorageFolder() =>
-#if __ANDROID__
- Assert.IsTrue(new LocalStorageFolder().Exists);
+#if __ANDROID__ || __IOS__
+ Assert.IsTrue(new LocalRootFolder().Exists);
#else
- Assert.IsTrue(new LocalStorageFolder().Exists);
+ Assert.IsTrue(new LocalRootFolder().Exists);
#endif
[TestMethod]
public void RoamingStorageFolder() =>
-#if __ANDROID__
- Assert.IsFalse(new RoamingStorageFolder().Exists);
+#if __ANDROID__ || __IOS__
+ Assert.IsFalse(new RoamingRootFolder().Exists);
#else
- Assert.IsTrue(new RoamingStorageFolder().Exists);
+ Assert.IsTrue(new RoamingRootFolder().Exists);
#endif
[TestMethod]
public void ApplicationFolder() =>
#if __ANDROID__
- Assert.IsFalse(new ApplicationFolder().Exists);
+ Assert.IsFalse(new ApplicationRootFolder().Exists);
#else
- Assert.IsTrue(new ApplicationFolder().Exists);
+ Assert.IsTrue(new ApplicationRootFolder().Exists);
#endif
+
+ [TestMethod]
+ public void DocumentsFolder() =>
+//#if __ANDROID__ || __IOS__
+// Assert.IsFalse(new DocumentsRootFolder().Exists);
+//#else
+ Assert.IsTrue(new DocumentsRootFolder().Exists);
+//#endif
+
+ [TestMethod]
+ public void TempFolder() =>
+ Assert.IsTrue(new TempRootFolder().Exists);
+
+ [TestMethod]
+ public void TempFolderCreateTemp() =>
+ Assert.IsTrue(new TempRootFolder().CreateTempFile().Exists);
+
+ [TestMethod]
+ public void TempFolderCreateTempExtension() =>
+ Assert.IsTrue(new TempRootFolder().CreateTempFile("ps1").Exists);
+
+ [TestMethod]
+ public void TempFolderCreateTemp1()
+ {
+ var t1 = new DocumentsRootFolder();
+ var t2 = new ApplicationRootFolder();
+ var t3 = new LocalRootFolder();
+ var t4 = new RoamingRootFolder();
+ var t5 = new TempRootFolder();
+ }
}
}
\ No newline at end of file
diff --git a/src/PCLExt.FileStorage.NetFX.Test/TestFolder.cs b/src/PCLExt.FileStorage.NetFX.Test/TestFolder.cs
index 9539132..dabfe48 100644
--- a/src/PCLExt.FileStorage.NetFX.Test/TestFolder.cs
+++ b/src/PCLExt.FileStorage.NetFX.Test/TestFolder.cs
@@ -4,10 +4,10 @@ namespace PCLExt.FileStorage.Test
{
internal class TestFolder : BaseFolder
{
-#if __ANDROID__
- public TestFolder() : base(new LocalStorageFolder().CreateFolder("Testing", CreationCollisionOption.OpenIfExists)) { }
+#if __ANDROID__ || __IOS__
+ public TestFolder() : base(new LocalRootFolder().CreateFolder("Testing", CreationCollisionOption.OpenIfExists)) { }
#else
- public TestFolder() : base(new ApplicationFolder().CreateFolder("Testing", CreationCollisionOption.OpenIfExists)) { }
+ public TestFolder() : base(new ApplicationRootFolder().CreateFolder("Testing", CreationCollisionOption.OpenIfExists)) { }
#endif
}
}
\ No newline at end of file
diff --git a/src/PCLExt.FileStorage.NetFX/PCLExt.FileStorage.NetFX.csproj b/src/PCLExt.FileStorage.NetFX/PCLExt.FileStorage.NetFX.csproj
index 44beffb..09ac5d1 100644
--- a/src/PCLExt.FileStorage.NetFX/PCLExt.FileStorage.NetFX.csproj
+++ b/src/PCLExt.FileStorage.NetFX/PCLExt.FileStorage.NetFX.csproj
@@ -11,7 +11,8 @@
PCLExt.FileStorage
v4.5
512
-
+
+
true
@@ -21,6 +22,7 @@
TRACE;DEBUG;DESKTOP;COMMON;
prompt
4
+ false
true
@@ -29,6 +31,7 @@
prompt
4
bin\Release\PCLExt.FileStorage.xml
+ false
@@ -68,17 +71,23 @@
Files\FileFromPath.cs
-
- Folders\ApplicationFolder.cs
+
+ Folders\ApplicationRootFolder.cs
+
+
+ Folders\DocumentsRootFolder.cs
Folders\FolderFromPath.cs
-
- Folders\LocalStorageFolder.cs
+
+ Folders\LocalRootFolder.cs
+
+
+ Folders\RoamingRootFolder.cs
-
- Folders\RoamingStorageFolder.cs
+
+ Folders\TempRootFolder.cs
PortablePath.cs
diff --git a/src/PCLExt.FileStorage.Portable111/Extensions/FolderExtensions.cs b/src/PCLExt.FileStorage.Portable111/Extensions/FolderExtensions.cs
index b2bc3c3..78f60da 100644
--- a/src/PCLExt.FileStorage.Portable111/Extensions/FolderExtensions.cs
+++ b/src/PCLExt.FileStorage.Portable111/Extensions/FolderExtensions.cs
@@ -180,20 +180,22 @@ private static string ProductVersion
}
internal static IFolder GetDataFolder(this IFolder baseFolder)
{
- // TODO
- if(string.IsNullOrEmpty(CompanyName))
- throw new Exception();
-
if (string.IsNullOrEmpty(ProductName))
- throw new Exception();
+ throw new Exception("Please specify Product Name in the executable assembly");
+
+ IFolder folder = baseFolder;
+
+ if(!string.IsNullOrEmpty(CompanyName))
+ folder = folder.CreateFolder(CompanyName, CreationCollisionOption.OpenIfExists);
- if (string.IsNullOrEmpty(ProductVersion))
- throw new Exception();
+ if (!string.IsNullOrEmpty(ProductName))
+ folder = folder.CreateFolder(ProductName, CreationCollisionOption.OpenIfExists);
- return baseFolder
- .CreateFolder(CompanyName, CreationCollisionOption.OpenIfExists)
- .CreateFolder(ProductName, CreationCollisionOption.OpenIfExists)
- .CreateFolder(ProductVersion, CreationCollisionOption.OpenIfExists);
+ // -- I will disable this for now.
+ //if (!string.IsNullOrEmpty(ProductVersion))
+ // folder = folder.CreateFolder(ProductVersion, CreationCollisionOption.OpenIfExists);
+
+ return folder;
}
#endif
}
diff --git a/src/PCLExt.FileStorage.Portable111/Files/FileFromPath.cs b/src/PCLExt.FileStorage.Portable111/Files/FileFromPath.cs
index bbd281b..6e29a52 100644
--- a/src/PCLExt.FileStorage.Portable111/Files/FileFromPath.cs
+++ b/src/PCLExt.FileStorage.Portable111/Files/FileFromPath.cs
@@ -15,7 +15,10 @@ private static IFile GetFileFromPath(string path)
Requires.NotNullOrEmpty(path, "path");
#if DESKTOP || ANDROID || __IOS__ || MAC || NETSTANDARD2_0
- return System.IO.File.Exists(path) ? new DefaultFileImplementation(path) : null;
+ if(System.IO.File.Exists(path))
+ return new DefaultFileImplementation(path);
+ else
+ throw new Exceptions.FileNotFoundException($"File does not exists on {path}");
#endif
throw Exceptions.ExceptionsHelper.NotImplementedInReferenceAssembly();
diff --git a/src/PCLExt.FileStorage.Portable111/Folders/ApplicationFolder.cs b/src/PCLExt.FileStorage.Portable111/Folders/ApplicationRootFolder.cs
similarity index 57%
rename from src/PCLExt.FileStorage.Portable111/Folders/ApplicationFolder.cs
rename to src/PCLExt.FileStorage.Portable111/Folders/ApplicationRootFolder.cs
index 4bc9dba..616980b 100644
--- a/src/PCLExt.FileStorage.Portable111/Folders/ApplicationFolder.cs
+++ b/src/PCLExt.FileStorage.Portable111/Folders/ApplicationRootFolder.cs
@@ -3,25 +3,29 @@
///
/// A folder where the app is running.
///
- public class ApplicationFolder : BaseFolder
+ public class ApplicationRootFolder : BaseFolder
{
///
/// Returns the folder where the app is running.
///
-#if DESKTOP || ANDROID || __IOS__ || MAC || NETSTANDARD2_0
- public ApplicationFolder() : base(GetApplicationFolder()) { }
+#if !PORTABLE
+ public ApplicationRootFolder() : base(GetApplicationFolder()) { }
private static IFolder GetApplicationFolder()
{
-#if ANDROID || __IOS__
+#if ANDROID
return null;
+#elif __IOS__
+ return new DefaultFolderImplementation(Foundation.NSBundle.MainBundle.BundlePath);
#elif DESKTOP || MAC
return new DefaultFolderImplementation(System.AppDomain.CurrentDomain.BaseDirectory);
#elif NETSTANDARD2_0
return new DefaultFolderImplementation(System.AppContext.BaseDirectory);
+#elif WINDOWS_UWP
+ return null;
#endif
}
#else
- public ApplicationFolder() : base(null) => throw Exceptions.ExceptionsHelper.NotImplementedInReferenceAssembly();
+ public ApplicationRootFolder() : base(null) => throw Exceptions.ExceptionsHelper.NotImplementedInReferenceAssembly();
#endif
}
}
\ No newline at end of file
diff --git a/src/PCLExt.FileStorage.Portable111/Folders/DocumentsRootFolder.cs b/src/PCLExt.FileStorage.Portable111/Folders/DocumentsRootFolder.cs
new file mode 100644
index 0000000..a35dec2
--- /dev/null
+++ b/src/PCLExt.FileStorage.Portable111/Folders/DocumentsRootFolder.cs
@@ -0,0 +1,31 @@
+using PCLExt.FileStorage.Extensions;
+
+namespace PCLExt.FileStorage.Folders
+{
+ ///
+ /// A folder where the app is running.
+ ///
+ public class DocumentsRootFolder : BaseFolder
+ {
+ ///
+ /// Returns the folder where the app is running.
+ ///
+#if !PORTABLE
+ public DocumentsRootFolder() : base(GetDocumentsFolder()) { }
+ private static IFolder GetDocumentsFolder()
+ {
+#if ANDROID || __IOS__
+ return new DefaultFolderImplementation(System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments));
+#elif DESKTOP || MAC || NETSTANDARD2_0
+ return new DefaultFolderImplementation(System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments)).GetDataFolder();
+#elif WINDOWS_UWP
+ return null;
+ // TODO
+ return new DefaultFolderImplementation(Windows.Storage.KnownFolders.DocumentsLibrary.Path);
+#endif
+ }
+#else
+ public DocumentsRootFolder() : base(null) => throw Exceptions.ExceptionsHelper.NotImplementedInReferenceAssembly();
+#endif
+ }
+}
diff --git a/src/PCLExt.FileStorage.Portable111/Folders/LocalStorageFolder.cs b/src/PCLExt.FileStorage.Portable111/Folders/LocalRootFolder.cs
similarity index 72%
rename from src/PCLExt.FileStorage.Portable111/Folders/LocalStorageFolder.cs
rename to src/PCLExt.FileStorage.Portable111/Folders/LocalRootFolder.cs
index f404c27..36c44ff 100644
--- a/src/PCLExt.FileStorage.Portable111/Folders/LocalStorageFolder.cs
+++ b/src/PCLExt.FileStorage.Portable111/Folders/LocalRootFolder.cs
@@ -1,17 +1,17 @@
-using System;
-
-using PCLExt.FileStorage.Extensions;
+using PCLExt.FileStorage.Extensions;
namespace PCLExt.FileStorage.Folders
{
///
/// A folder representing storage which is local to the current device.
///
- public class LocalStorageFolder : BaseFolder
+ public class LocalRootFolder : BaseFolder
{
+ //public bool IsBackuping { get; }
+
#if MAC
[System.Runtime.InteropServices.DllImport(ObjCRuntime.Constants.FoundationLibrary)]
- static extern IntPtr NSHomeDirectory(); // Under the sandbox, need to read the HomeDirectory
+ static extern System.IntPtr NSHomeDirectory(); // Under the sandbox, need to read the HomeDirectory
static string MacHomeDirectory => ((Foundation.NSString) ObjCRuntime.Runtime.GetNSObject(NSHomeDirectory())).ToString();
#endif
@@ -19,8 +19,8 @@ public class LocalStorageFolder : BaseFolder
///
/// Creates a folder representing storage which is local to the current device
///
-#if DESKTOP || ANDROID || __IOS__ || MAC || NETSTANDARD2_0
- public LocalStorageFolder() : base(GetLocalFolder()) { }
+#if !PORTABLE
+ public LocalRootFolder() : base(GetLocalFolder()) { }
private static IFolder GetLocalFolder()
{
#if ANDROID
@@ -43,11 +43,14 @@ private static IFolder GetLocalFolder()
}
return new DefaultFolderImplementation(storage);
#elif DESKTOP || NETSTANDARD2_0
- return new DefaultFolderImplementation(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)).GetDataFolder();
+ return new DefaultFolderImplementation(System.Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData)).GetDataFolder();
+#elif WINDOWS_UWP
+ return null;
+ return new DefaultFolderImplementation(Windows.Storage.ApplicationData.Current.LocalFolder.Path);
#endif
}
#else
- public LocalStorageFolder() : base(null) => throw Exceptions.ExceptionsHelper.NotImplementedInReferenceAssembly();
+ public LocalRootFolder() : base(null) => throw Exceptions.ExceptionsHelper.NotImplementedInReferenceAssembly();
#endif
}
}
\ No newline at end of file
diff --git a/src/PCLExt.FileStorage.Portable111/Folders/RoamingRootFolder.cs b/src/PCLExt.FileStorage.Portable111/Folders/RoamingRootFolder.cs
new file mode 100644
index 0000000..a2c9600
--- /dev/null
+++ b/src/PCLExt.FileStorage.Portable111/Folders/RoamingRootFolder.cs
@@ -0,0 +1,32 @@
+using PCLExt.FileStorage.Extensions;
+
+namespace PCLExt.FileStorage.Folders
+{
+ ///
+ /// A folder representing storage which may be synced with other devices for the same user.
+ ///
+ public class RoamingRootFolder : BaseFolder
+ {
+ //public bool IsSynchronizing { get; }
+
+ ///
+ /// Creates a folder representing storage which may be synced with other devices for the same user.
+ ///
+#if !PORTABLE
+ public RoamingRootFolder() : base(GetRoamingFolder()) { }
+ private static IFolder GetRoamingFolder()
+ {
+#if ANDROID || __IOS__
+ return null;
+#elif DESKTOP || MAC || NETSTANDARD2_0
+ return new DefaultFolderImplementation(System.Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData)).GetDataFolder();
+#elif WINDOWS_UWP
+ return null;
+ return new DefaultFolderImplementation(Windows.Storage.ApplicationData.Current.RoamingFolder.Path);
+#endif
+ }
+#else
+ public RoamingRootFolder() : base(null) => throw Exceptions.ExceptionsHelper.NotImplementedInReferenceAssembly();
+#endif
+ }
+}
\ No newline at end of file
diff --git a/src/PCLExt.FileStorage.Portable111/Folders/RoamingStorageFolder.cs b/src/PCLExt.FileStorage.Portable111/Folders/RoamingStorageFolder.cs
deleted file mode 100644
index fd9178e..0000000
--- a/src/PCLExt.FileStorage.Portable111/Folders/RoamingStorageFolder.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-using System;
-
-using PCLExt.FileStorage.Extensions;
-
-namespace PCLExt.FileStorage.Folders
-{
- ///
- /// A folder representing storage which may be synced with other devices for the same user.
- ///
- public class RoamingStorageFolder : BaseFolder
- {
- ///
- /// Creates a folder representing storage which may be synced with other devices for the same user.
- ///
-#if DESKTOP || ANDROID || __IOS__ || MAC || NETSTANDARD2_0
- public RoamingStorageFolder() : base(GetRoamingFolder()) { }
- private static IFolder GetRoamingFolder()
- {
-#if ANDROID || __IOS__
- return null;
-#elif DESKTOP || MAC || NETSTANDARD2_0
- return new DefaultFolderImplementation(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)).GetDataFolder();
-#endif
- }
-#else
- public RoamingStorageFolder() : base(null) => throw Exceptions.ExceptionsHelper.NotImplementedInReferenceAssembly();
-#endif
- }
-}
\ No newline at end of file
diff --git a/src/PCLExt.FileStorage.Portable111/Folders/TempRootFolder.cs b/src/PCLExt.FileStorage.Portable111/Folders/TempRootFolder.cs
new file mode 100644
index 0000000..cd36c4a
--- /dev/null
+++ b/src/PCLExt.FileStorage.Portable111/Folders/TempRootFolder.cs
@@ -0,0 +1,41 @@
+namespace PCLExt.FileStorage.Folders
+{
+ ///
+ /// A folder representing storage that deals with temporary files.
+ ///
+ public class TempRootFolder : BaseFolder
+ {
+ ///
+ /// Creates a folder representing storage that deals with temporary files.
+ ///
+#if !PORTABLE
+ public TempRootFolder() : base(GetTempFolder()) { }
+ private static IFolder GetTempFolder()
+ {
+#if WINDOWS_UWP
+ return null;
+ return new DefaultFolderImplementation(Windows.Storage.ApplicationData.Current.TemporaryFolder.Path);
+#else
+ return new DefaultFolderImplementation(System.IO.Path.GetTempPath());
+#endif
+ }
+
+ ///
+ /// Creates a unique temporary file with given or default extension.
+ ///
+ /// Name of the extension, without the dot at the beginning.
+ ///
+ public IFile CreateTempFile(string extension = "tmp")
+ {
+ string fileName;
+ do
+ {
+ fileName = $"{System.Guid.NewGuid()}.{extension}";
+ } while (System.IO.File.Exists(System.IO.Path.Combine(Path, fileName)));
+ return CreateFile(fileName, CreationCollisionOption.FailIfExists); // -- Potential race condition?
+ }
+#else
+ public TempRootFolder() : base(null) => throw Exceptions.ExceptionsHelper.NotImplementedInReferenceAssembly();
+#endif
+ }
+}
\ No newline at end of file
diff --git a/src/PCLExt.FileStorage.Portable111/PCLExt.FileStorage.Portable111.csproj b/src/PCLExt.FileStorage.Portable111/PCLExt.FileStorage.Portable111.csproj
index e3f2538..b217c72 100644
--- a/src/PCLExt.FileStorage.Portable111/PCLExt.FileStorage.Portable111.csproj
+++ b/src/PCLExt.FileStorage.Portable111/PCLExt.FileStorage.Portable111.csproj
@@ -51,10 +51,12 @@
+
-
-
-
+
+
+
+
diff --git a/src/PCLExt.FileStorage.Standard.Abstractions/BaseFile.cs b/src/PCLExt.FileStorage.Standard.Abstractions/BaseFile.cs
index f53ff17..9d84e80 100644
--- a/src/PCLExt.FileStorage.Standard.Abstractions/BaseFile.cs
+++ b/src/PCLExt.FileStorage.Standard.Abstractions/BaseFile.cs
@@ -69,5 +69,8 @@ public abstract class BaseFile : IFile
public IFile Copy(string newPath, NameCollisionOption collisionOption = NameCollisionOption.ReplaceExisting) => _file.Copy(newPath, collisionOption);
///
public Task CopyAsync(string newPath, NameCollisionOption collisionOption = NameCollisionOption.ReplaceExisting, CancellationToken cancellationToken = default(CancellationToken)) => _file.CopyAsync(newPath, collisionOption, cancellationToken);
+
+
+ public override string ToString() => Path;
}
}
\ No newline at end of file
diff --git a/src/PCLExt.FileStorage.Standard.Abstractions/BaseFolder.cs b/src/PCLExt.FileStorage.Standard.Abstractions/BaseFolder.cs
index 299b34a..4da93e9 100644
--- a/src/PCLExt.FileStorage.Standard.Abstractions/BaseFolder.cs
+++ b/src/PCLExt.FileStorage.Standard.Abstractions/BaseFolder.cs
@@ -76,5 +76,8 @@ public abstract class BaseFolder : IFolder
public void Copy(IFolder folder, NameCollisionOption option = NameCollisionOption.ReplaceExisting) => _folder.Copy(folder, option);
///
public Task CopyAsync(IFolder folder, NameCollisionOption option = NameCollisionOption.ReplaceExisting, CancellationToken cancellationToken = new CancellationToken()) => _folder.CopyAsync(folder, option, cancellationToken);
+
+
+ public override string ToString() => Path;
}
}
\ No newline at end of file
diff --git a/src/PCLExt.FileStorage.UWP.Test/Assets/LockScreenLogo.scale-200.png b/src/PCLExt.FileStorage.UWP.Test/Assets/LockScreenLogo.scale-200.png
new file mode 100644
index 0000000..735f57a
Binary files /dev/null and b/src/PCLExt.FileStorage.UWP.Test/Assets/LockScreenLogo.scale-200.png differ
diff --git a/src/PCLExt.FileStorage.UWP.Test/Assets/SplashScreen.scale-200.png b/src/PCLExt.FileStorage.UWP.Test/Assets/SplashScreen.scale-200.png
new file mode 100644
index 0000000..023e7f1
Binary files /dev/null and b/src/PCLExt.FileStorage.UWP.Test/Assets/SplashScreen.scale-200.png differ
diff --git a/src/PCLExt.FileStorage.UWP.Test/Assets/Square150x150Logo.scale-200.png b/src/PCLExt.FileStorage.UWP.Test/Assets/Square150x150Logo.scale-200.png
new file mode 100644
index 0000000..af49fec
Binary files /dev/null and b/src/PCLExt.FileStorage.UWP.Test/Assets/Square150x150Logo.scale-200.png differ
diff --git a/src/PCLExt.FileStorage.UWP.Test/Assets/Square44x44Logo.scale-200.png b/src/PCLExt.FileStorage.UWP.Test/Assets/Square44x44Logo.scale-200.png
new file mode 100644
index 0000000..ce342a2
Binary files /dev/null and b/src/PCLExt.FileStorage.UWP.Test/Assets/Square44x44Logo.scale-200.png differ
diff --git a/src/PCLExt.FileStorage.UWP.Test/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/src/PCLExt.FileStorage.UWP.Test/Assets/Square44x44Logo.targetsize-24_altform-unplated.png
new file mode 100644
index 0000000..f6c02ce
Binary files /dev/null and b/src/PCLExt.FileStorage.UWP.Test/Assets/Square44x44Logo.targetsize-24_altform-unplated.png differ
diff --git a/src/PCLExt.FileStorage.UWP.Test/Assets/StoreLogo.png b/src/PCLExt.FileStorage.UWP.Test/Assets/StoreLogo.png
new file mode 100644
index 0000000..7385b56
Binary files /dev/null and b/src/PCLExt.FileStorage.UWP.Test/Assets/StoreLogo.png differ
diff --git a/src/PCLExt.FileStorage.UWP.Test/Assets/Wide310x150Logo.scale-200.png b/src/PCLExt.FileStorage.UWP.Test/Assets/Wide310x150Logo.scale-200.png
new file mode 100644
index 0000000..288995b
Binary files /dev/null and b/src/PCLExt.FileStorage.UWP.Test/Assets/Wide310x150Logo.scale-200.png differ
diff --git a/src/PCLExt.FileStorage.UWP.Test/PCLExt.FileStorage.UWP.Test.csproj b/src/PCLExt.FileStorage.UWP.Test/PCLExt.FileStorage.UWP.Test.csproj
new file mode 100644
index 0000000..e026293
--- /dev/null
+++ b/src/PCLExt.FileStorage.UWP.Test/PCLExt.FileStorage.UWP.Test.csproj
@@ -0,0 +1,175 @@
+
+
+
+
+ Debug
+ x86
+ {9E934708-D6C7-48E3-9E95-13144C4E86B5}
+ AppContainerExe
+ Properties
+ PCLExt.FileStorage.UWP.Test
+ PCLExt.FileStorage.UWP.Test
+ en-US
+ UAP
+ 10.0.16299.0
+ 10.0.10240.0
+ 14
+ 512
+ {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ PCLExt.FileStorage.UWP.Test_TemporaryKey.pfx
+ $(VisualStudioVersion)
+
+
+ true
+ bin\x86\Debug\
+ DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP
+ ;2008
+ full
+ x86
+ false
+ prompt
+ true
+
+
+ bin\x86\Release\
+ TRACE;NETFX_CORE;WINDOWS_UWP
+ true
+ ;2008
+ pdbonly
+ x86
+ false
+ prompt
+ true
+ true
+
+
+ true
+ bin\ARM\Debug\
+ DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP
+ ;2008
+ full
+ ARM
+ false
+ prompt
+ true
+
+
+ bin\ARM\Release\
+ TRACE;NETFX_CORE;WINDOWS_UWP
+ true
+ ;2008
+ pdbonly
+ ARM
+ false
+ prompt
+ true
+ true
+
+
+ true
+ bin\x64\Debug\
+ DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP
+ ;2008
+ full
+ x64
+ false
+ prompt
+ true
+
+
+ bin\x64\Release\
+ TRACE;NETFX_CORE;WINDOWS_UWP
+ true
+ ;2008
+ pdbonly
+ x64
+ false
+ prompt
+ true
+ true
+
+
+ PackageReference
+
+
+
+
+
+
+ Properties\CommonAssemblyInfo.cs
+
+
+ FilesTest.cs
+
+
+ FoldersTest.cs
+
+
+ StandardFoldersTest.cs
+
+
+ TestFolder.cs
+
+
+
+ UnitTestApp.xaml
+
+
+
+
+ MSBuild:Compile
+ Designer
+
+
+
+
+ Designer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 6.0.1
+
+
+ 1.1.18
+
+
+ 1.1.18
+
+
+
+
+ {5d529a12-f49c-40fe-b3c3-17747d73879e}
+ PCLExt.FileStorage.Standard.Abstractions
+
+
+ {d09beb59-933d-4446-90fa-c8760705e8e4}
+ PCLExt.FileStorage.UWP
+
+
+
+
+
+
+ 14.0
+
+
+
+
\ No newline at end of file
diff --git a/src/PCLExt.FileStorage.UWP.Test/Package.appxmanifest b/src/PCLExt.FileStorage.UWP.Test/Package.appxmanifest
new file mode 100644
index 0000000..9a09265
--- /dev/null
+++ b/src/PCLExt.FileStorage.UWP.Test/Package.appxmanifest
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+ PCLExt.FileStorage.UWP.Test
+ aragas
+ Assets\StoreLogo.png
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/PCLExt.FileStorage.UWP.Test/Properties/AssemblyInfo.cs b/src/PCLExt.FileStorage.UWP.Test/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..2dd47bc
--- /dev/null
+++ b/src/PCLExt.FileStorage.UWP.Test/Properties/AssemblyInfo.cs
@@ -0,0 +1,7 @@
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+[assembly: AssemblyTitle("PCLExt.FileStorage.UWP.Test")]
+[assembly: AssemblyDescription("")]
+
+[assembly: ComVisible(false)]
\ No newline at end of file
diff --git a/src/PCLExt.FileStorage.UWP.Test/Properties/UnitTestApp.rd.xml b/src/PCLExt.FileStorage.UWP.Test/Properties/UnitTestApp.rd.xml
new file mode 100644
index 0000000..efee59d
--- /dev/null
+++ b/src/PCLExt.FileStorage.UWP.Test/Properties/UnitTestApp.rd.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/PCLExt.FileStorage.UWP.Test/UnitTestApp.xaml b/src/PCLExt.FileStorage.UWP.Test/UnitTestApp.xaml
new file mode 100644
index 0000000..160e6a6
--- /dev/null
+++ b/src/PCLExt.FileStorage.UWP.Test/UnitTestApp.xaml
@@ -0,0 +1,8 @@
+
+
+
diff --git a/src/PCLExt.FileStorage.UWP.Test/UnitTestApp.xaml.cs b/src/PCLExt.FileStorage.UWP.Test/UnitTestApp.xaml.cs
new file mode 100644
index 0000000..2f18024
--- /dev/null
+++ b/src/PCLExt.FileStorage.UWP.Test/UnitTestApp.xaml.cs
@@ -0,0 +1,102 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Runtime.InteropServices.WindowsRuntime;
+using Windows.ApplicationModel;
+using Windows.ApplicationModel.Activation;
+using Windows.Foundation;
+using Windows.Foundation.Collections;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Controls.Primitives;
+using Windows.UI.Xaml.Data;
+using Windows.UI.Xaml.Input;
+using Windows.UI.Xaml.Media;
+using Windows.UI.Xaml.Navigation;
+
+namespace PCLExt.FileStorage.UWP.Test
+{
+ ///
+ /// Provides application-specific behavior to supplement the default Application class.
+ ///
+ sealed partial class App : Application
+ {
+ ///
+ /// Initializes the singleton application object. This is the first line of authored code
+ /// executed, and as such is the logical equivalent of main() or WinMain().
+ ///
+ public App()
+ {
+ this.InitializeComponent();
+ this.Suspending += OnSuspending;
+ }
+
+ ///
+ /// Invoked when the application is launched normally by the end user. Other entry points
+ /// will be used such as when the application is launched to open a specific file.
+ ///
+ /// Details about the launch request and process.
+ protected override void OnLaunched(LaunchActivatedEventArgs e)
+ {
+
+#if DEBUG
+ if (System.Diagnostics.Debugger.IsAttached)
+ {
+ this.DebugSettings.EnableFrameRateCounter = true;
+ }
+#endif
+
+ Frame rootFrame = Window.Current.Content as Frame;
+
+ // Do not repeat app initialization when the Window already has content,
+ // just ensure that the window is active
+ if (rootFrame == null)
+ {
+ // Create a Frame to act as the navigation context and navigate to the first page
+ rootFrame = new Frame();
+
+ rootFrame.NavigationFailed += OnNavigationFailed;
+
+ if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
+ {
+ //TODO: Load state from previously suspended application
+ }
+
+ // Place the frame in the current Window
+ Window.Current.Content = rootFrame;
+ }
+
+ Microsoft.VisualStudio.TestPlatform.TestExecutor.UnitTestClient.CreateDefaultUI();
+
+ // Ensure the current window is active
+ Window.Current.Activate();
+
+ Microsoft.VisualStudio.TestPlatform.TestExecutor.UnitTestClient.Run(e.Arguments);
+ }
+
+ ///
+ /// Invoked when Navigation to a certain page fails
+ ///
+ /// The Frame which failed navigation
+ /// Details about the navigation failure
+ void OnNavigationFailed(object sender, NavigationFailedEventArgs e)
+ {
+ throw new Exception("Failed to load Page " + e.SourcePageType.FullName);
+ }
+
+ ///
+ /// Invoked when application execution is being suspended. Application state is saved
+ /// without knowing whether the application will be terminated or resumed with the contents
+ /// of memory still intact.
+ ///
+ /// The source of the suspend request.
+ /// Details about the suspend request.
+ private void OnSuspending(object sender, SuspendingEventArgs e)
+ {
+ var deferral = e.SuspendingOperation.GetDeferral();
+ //TODO: Save application state and stop any background activity
+ deferral.Complete();
+ }
+ }
+}
diff --git a/src/PCLExt.FileStorage.UWP/PCLExt.FileStorage.UWP.csproj b/src/PCLExt.FileStorage.UWP/PCLExt.FileStorage.UWP.csproj
new file mode 100644
index 0000000..803211e
--- /dev/null
+++ b/src/PCLExt.FileStorage.UWP/PCLExt.FileStorage.UWP.csproj
@@ -0,0 +1,198 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {D09BEB59-933D-4446-90FA-C8760705E8E4}
+ Library
+ Properties
+ PCLExt.FileStorage.UWP
+ PCLExt.FileStorage
+ en-US
+ UAP
+ 10.0.16299.0
+ 10.0.10240.0
+ 14
+ 512
+ {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE;NETFX_CORE;WINDOWS_UWP
+ prompt
+ 4
+ bin\Release\PCLExt.FileStorage.XML
+
+
+ x86
+ true
+ bin\x86\Debug\
+ DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP
+ ;2008
+ full
+ x86
+ false
+ prompt
+
+
+ x86
+ bin\x86\Release\
+ TRACE;NETFX_CORE;WINDOWS_UWP
+ true
+ ;2008
+ pdbonly
+ x86
+ false
+ prompt
+
+
+ ARM
+ true
+ bin\ARM\Debug\
+ DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP
+ ;2008
+ full
+ ARM
+ false
+ prompt
+
+
+ ARM
+ bin\ARM\Release\
+ TRACE;NETFX_CORE;WINDOWS_UWP
+ true
+ ;2008
+ pdbonly
+ ARM
+ false
+ prompt
+
+
+ x64
+ true
+ bin\x64\Debug\
+ DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP
+ ;2008
+ full
+ x64
+ false
+ prompt
+
+
+ x64
+ bin\x64\Release\
+ TRACE;NETFX_CORE;WINDOWS_UWP
+ true
+ ;2008
+ pdbonly
+ x64
+ false
+ prompt
+
+
+ PackageReference
+
+
+
+ Properties\CommonAssemblyInfo.cs
+
+
+ DefaultFileImplementation.cs
+
+
+ DefaultFolderImplementation.cs
+
+
+ Exceptions\ExceptionsHelper.cs
+
+
+ Exceptions\FileExistException.cs
+
+
+ Exceptions\FileNotFoundException.cs
+
+
+ Exceptions\FolderExistException.cs
+
+
+ Exceptions\FolderNotFoundException.cs
+
+
+ Exceptions\RootFolderDeletionException.cs
+
+
+ Extensions\AwaitExtensions.cs
+
+
+ Extensions\FileExtensions.cs
+
+
+ Extensions\FolderExtensions.cs
+
+
+ Files\FileFromPath.cs
+
+
+ Folders\ApplicationRootFolder.cs
+
+
+ Folders\DocumentsRootFolder.cs
+
+
+ Folders\FolderFromPath.cs
+
+
+ Folders\LocalRootFolder.cs
+
+
+ Folders\RoamingRootFolder.cs
+
+
+ Folders\TempRootFolder.cs
+
+
+ PortablePath.cs
+
+
+ Requires.cs
+
+
+
+
+
+
+ 5.4.0
+
+
+
+
+ {5d529a12-f49c-40fe-b3c3-17747d73879e}
+ PCLExt.FileStorage.Standard.Abstractions
+
+
+
+ 14.0
+
+
+
+
\ No newline at end of file
diff --git a/src/PCLExt.FileStorage.UWP/Properties/AssemblyInfo.cs b/src/PCLExt.FileStorage.UWP/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..0e118ec
--- /dev/null
+++ b/src/PCLExt.FileStorage.UWP/Properties/AssemblyInfo.cs
@@ -0,0 +1,7 @@
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+[assembly: AssemblyTitle("PCLExt.FileStorage.UWP")]
+[assembly: AssemblyDescription("")]
+
+[assembly: ComVisible(false)]
\ No newline at end of file
diff --git a/src/PCLExt.FileStorage.UWP/Properties/PCLExt.FileStorage.UWP.rd.xml b/src/PCLExt.FileStorage.UWP/Properties/PCLExt.FileStorage.UWP.rd.xml
new file mode 100644
index 0000000..5719d0a
--- /dev/null
+++ b/src/PCLExt.FileStorage.UWP/Properties/PCLExt.FileStorage.UWP.rd.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/PCLExt.FileStorage.iOS.Test/PCLExt.FileStorage.iOS.Test.csproj b/src/PCLExt.FileStorage.iOS.Test/PCLExt.FileStorage.iOS.Test.csproj
index 83989bb..c3512b8 100644
--- a/src/PCLExt.FileStorage.iOS.Test/PCLExt.FileStorage.iOS.Test.csproj
+++ b/src/PCLExt.FileStorage.iOS.Test/PCLExt.FileStorage.iOS.Test.csproj
@@ -15,7 +15,7 @@
full
false
bin\iPhoneSimulator\Debug
- DEBUG
+ DEBUG;__UNIFIED__;__MOBILE__;__IOS__;NUNIT
prompt
4
false
@@ -86,6 +86,12 @@
Automatic:AppStore
iPhone Distribution
+
+ __UNIFIED__;__MOBILE__;__IOS__;NUNIT;
+
+
+ __UNIFIED__;__MOBILE__;__IOS__;NUNIT;
+
Properties\CommonAssemblyInfo.cs
diff --git a/src/PCLExt.FileStorage.iOS/PCLExt.FileStorage.iOS.csproj b/src/PCLExt.FileStorage.iOS/PCLExt.FileStorage.iOS.csproj
index 5001e7d..b8bac4e 100644
--- a/src/PCLExt.FileStorage.iOS/PCLExt.FileStorage.iOS.csproj
+++ b/src/PCLExt.FileStorage.iOS/PCLExt.FileStorage.iOS.csproj
@@ -86,17 +86,23 @@
Files\FileFromPath.cs
-
- Folders\ApplicationFolder.cs
+
+ Folders\ApplicationRootFolder.cs
+
+
+ Folders\DocumentsRootFolder.cs
Folders\FolderFromPath.cs
-
- Folders\LocalStorageFolder.cs
+
+ Folders\LocalRootFolder.cs
+
+
+ Folders\RoamingRootFolder.cs
-
- Folders\RoamingStorageFolder.cs
+
+ Folders\TempRootFolder.cs
PortablePath.cs
diff --git a/src/PCLExt.FileStorage.macOS/PCLExt.FileStorage.macOS.csproj b/src/PCLExt.FileStorage.macOS/PCLExt.FileStorage.macOS.csproj
index f2e9559..296a172 100644
--- a/src/PCLExt.FileStorage.macOS/PCLExt.FileStorage.macOS.csproj
+++ b/src/PCLExt.FileStorage.macOS/PCLExt.FileStorage.macOS.csproj
@@ -60,6 +60,21 @@
Properties\CommonAssemblyInfo.cs
+
+ Folders\ApplicationRootFolder.cs
+
+
+ Folders\DocumentsRootFolder.cs
+
+
+ Folders\LocalRootFolder.cs
+
+
+ Folders\RoamingRootFolder.cs
+
+
+ Folders\TempRootFolder.cs
+
Extensions\AwaitExtensions.cs
@@ -91,18 +106,9 @@
Files\FileFromPath.cs
-
- Folders\ApplicationFolder.cs
-
Folders\FolderFromPath.cs
-
- Folders\LocalStorageFolder.cs
-
-
- Folders\RoamingStorageFolder.cs
-
PortablePath.cs
@@ -117,11 +123,5 @@
PCLExt.FileStorage.Standard.Abstractions
-
-
-
-
-
-
-
+
\ No newline at end of file