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