#544 target framework changes

This commit is contained in:
Todd 2020-09-07 12:14:04 -05:00
parent 09418e53a1
commit 63f61cb309
7 changed files with 22 additions and 116 deletions

View File

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>net471;netcoreapp2.0;</TargetFrameworks> <TargetFrameworks>net461;netcoreapp2.0;</TargetFrameworks>
<TargetFrameworks Condition="'$(OS)' != 'Windows_NT'">netcoreapp2.0</TargetFrameworks> <TargetFrameworks Condition="'$(OS)' != 'Windows_NT'">netcoreapp2.0</TargetFrameworks>
</PropertyGroup> </PropertyGroup>
@ -19,7 +19,7 @@
<ProjectReference Include="..\..\src\Flurl.Http\Flurl.Http.csproj" /> <ProjectReference Include="..\..\src\Flurl.Http\Flurl.Http.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net471'"> <ItemGroup Condition="'$(TargetFramework)' == 'net461'">
<Reference Include="System.Net.Http" /> <Reference Include="System.Net.Http" />
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
</ItemGroup> </ItemGroup>

View File

@ -1,33 +1,10 @@
using System.IO; using System.IO;
#if NETSTANDARD1_1
using System.Linq;
#endif
using System.Threading.Tasks; using System.Threading.Tasks;
namespace Flurl.Http namespace Flurl.Http
{ {
internal static class FileUtil internal static class FileUtil
{ {
#if NETSTANDARD1_1
internal static string GetFileName(string path) {
return path?.Split(PCLStorage.PortablePath.DirectorySeparatorChar).Last();
}
internal static string CombinePath(params string[] paths) {
return PCLStorage.PortablePath.Combine(paths);
}
internal static async Task<Stream> OpenReadAsync(string path, int bufferSize) {
var file = await PCLStorage.FileSystem.Current.GetFileFromPathAsync(path).ConfigureAwait(false);
return await file.OpenAsync(PCLStorage.FileAccess.Read).ConfigureAwait(false);
}
internal static async Task<Stream> OpenWriteAsync(string folderPath, string fileName, int bufferSize) {
var folder = await PCLStorage.FileSystem.Current.LocalStorage.CreateFolderAsync(folderPath, PCLStorage.CreationCollisionOption.OpenIfExists).ConfigureAwait(false);
var file = await folder.CreateFileAsync(fileName, PCLStorage.CreationCollisionOption.ReplaceExisting).ConfigureAwait(false);
return await file.OpenAsync(PCLStorage.FileAccess.ReadAndWrite).ConfigureAwait(false);
}
#else
internal static string GetFileName(string path) { internal static string GetFileName(string path) {
return Path.GetFileName(path); return Path.GetFileName(path);
} }
@ -45,7 +22,7 @@ namespace Flurl.Http
var filePath = Path.Combine(folderPath, fileName); var filePath = Path.Combine(folderPath, fileName);
return Task.FromResult<Stream>(new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None, bufferSize, useAsync: true)); return Task.FromResult<Stream>(new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None, bufferSize, useAsync: true));
} }
#endif
/// <summary> /// <summary>
/// Replaces invalid path characters with underscores. /// Replaces invalid path characters with underscores.
/// </summary> /// </summary>

View File

@ -1,8 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>net45;net46;netstandard1.1;netstandard1.3;netstandard2.0;</TargetFrameworks> <TargetFrameworks>netstandard2.0;net461</TargetFrameworks>
<TargetFrameworks Condition="'$(OS)' != 'Windows_NT'">netstandard1.1;netstandard1.3;netstandard2.0;</TargetFrameworks>
<GeneratePackageOnBuild>True</GeneratePackageOnBuild> <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
<PackageId>Flurl.Http</PackageId> <PackageId>Flurl.Http</PackageId>
<Version>3.0.0-pre4</Version> <Version>3.0.0-pre4</Version>
@ -14,7 +12,7 @@
<RepositoryUrl>https://github.com/tmenier/Flurl.git</RepositoryUrl> <RepositoryUrl>https://github.com/tmenier/Flurl.git</RepositoryUrl>
<RepositoryType>git</RepositoryType> <RepositoryType>git</RepositoryType>
<PackageLicenseExpression>MIT</PackageLicenseExpression> <PackageLicenseExpression>MIT</PackageLicenseExpression>
<PackageTags>httpclient rest json http fluent url uri tdd assert async</PackageTags> <PackageTags>rest http httpclient json url uri tdd</PackageTags>
<PackageReleaseNotes>https://github.com/tmenier/Flurl/releases</PackageReleaseNotes> <PackageReleaseNotes>https://github.com/tmenier/Flurl/releases</PackageReleaseNotes>
<IncludeProjectPriFile>false</IncludeProjectPriFile> <IncludeProjectPriFile>false</IncludeProjectPriFile>
</PropertyGroup> </PropertyGroup>
@ -26,7 +24,11 @@
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<DocumentationFile>bin\Release\Flurl.Http.xml</DocumentationFile> <DocumentationFile>bin\Release\Flurl.xml</DocumentationFile>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DocumentationFile>bin\Debug\Flurl.xml</DocumentationFile>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
@ -36,39 +38,11 @@
<None Include="..\..\icon.png" Pack="true" PackagePath="\"/> <None Include="..\..\icon.png" Pack="true" PackagePath="\"/>
</ItemGroup> </ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard1.3'">
<PackageReference Include="System.IO.FileSystem" Version="4.3.0" />
<PackageReference Include="System.Text.Encoding.CodePages" Version="4.5.1" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'"> <ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
<PackageReference Include="System.Text.Encoding.CodePages" Version="4.5.1" /> <PackageReference Include="System.Text.Encoding.CodePages" Version="4.5.1" />
</ItemGroup> </ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard1.1'"> <ItemGroup Condition="'$(TargetFramework)' == 'net461'">
<PackageReference Include="PCLStorage" Version="1.0.2" />
</ItemGroup>
<PropertyGroup>
<PackageTargetFallback Condition="'$(TargetFramework)'=='netstandard1.1'">portable-net45+win8+wp8</PackageTargetFallback>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net45|AnyCPU'">
<DocumentationFile>bin\Debug\Flurl.Http.xml</DocumentationFile>
<WarningsAsErrors />
<NoWarn />
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net45|AnyCPU'">
<WarningsAsErrors />
<NoWarn />
</PropertyGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net45'">
<Reference Include="System.Net.Http" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net46'">
<Reference Include="System.Net.Http" /> <Reference Include="System.Net.Http" />
</ItemGroup> </ItemGroup>

View File

@ -190,7 +190,7 @@ namespace Flurl.Http
_capturedBody?.ToString(); _capturedBody?.ToString();
} }
#if NETSTANDARD1_3 || NETSTANDARD2_0 #if NETSTANDARD2_0
// https://stackoverflow.com/questions/46119872/encoding-issues-with-net-core-2 (#86) // https://stackoverflow.com/questions/46119872/encoding-issues-with-net-core-2 (#86)
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance); System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
#endif #endif

View File

@ -12,9 +12,7 @@ namespace Flurl.Http.Testing
/// An object whose existence puts Flurl.Http into test mode where actual HTTP calls are faked. Provides a response /// An object whose existence puts Flurl.Http into test mode where actual HTTP calls are faked. Provides a response
/// queue, call log, and assertion helpers for use in Arrange/Act/Assert style tests. /// queue, call log, and assertion helpers for use in Arrange/Act/Assert style tests.
/// </summary> /// </summary>
#if NET45
[Serializable] [Serializable]
#endif
public class HttpTest : HttpTestSetup, IDisposable public class HttpTest : HttpTestSetup, IDisposable
{ {
private readonly ConcurrentQueue<FlurlCall> _calls = new ConcurrentQueue<FlurlCall>(); private readonly ConcurrentQueue<FlurlCall> _calls = new ConcurrentQueue<FlurlCall>();
@ -106,17 +104,8 @@ namespace Flurl.Http.Testing
SetCurrentTest(null); SetCurrentTest(null);
} }
#if NET45
private static void SetCurrentTest(HttpTest test) => System.Runtime.Remoting.Messaging.CallContext.LogicalSetData("FlurlHttpTest", test);
private static HttpTest GetCurrentTest() => System.Runtime.Remoting.Messaging.CallContext.LogicalGetData("FlurlHttpTest") as HttpTest;
#elif NETSTANDARD1_1
private static HttpTest _test;
private static void SetCurrentTest(HttpTest test) => _test = test;
private static HttpTest GetCurrentTest() => _test;
#else
private static readonly System.Threading.AsyncLocal<HttpTest> _test = new System.Threading.AsyncLocal<HttpTest>(); private static readonly System.Threading.AsyncLocal<HttpTest> _test = new System.Threading.AsyncLocal<HttpTest>();
private static void SetCurrentTest(HttpTest test) => _test.Value = test; private static void SetCurrentTest(HttpTest test) => _test.Value = test;
private static HttpTest GetCurrentTest() => _test.Value; private static HttpTest GetCurrentTest() => _test.Value;
#endif
} }
} }

View File

@ -1,8 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>net40;netstandard1.0;netstandard1.3;netstandard2.0;</TargetFrameworks> <TargetFrameworks>netstandard2.0;net461</TargetFrameworks>
<TargetFrameworks Condition="'$(OS)' != 'Windows_NT'">netstandard1.0;netstandard1.3;netstandard2.0;</TargetFrameworks>
<GeneratePackageOnBuild>True</GeneratePackageOnBuild> <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
<PackageId>Flurl</PackageId> <PackageId>Flurl</PackageId>
<Version>3.0.0-pre4</Version> <Version>3.0.0-pre4</Version>
@ -29,36 +27,19 @@
<DocumentationFile>bin\Release\Flurl.xml</DocumentationFile> <DocumentationFile>bin\Release\Flurl.xml</DocumentationFile>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net40|AnyCPU'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<WarningsAsErrors />
<NoWarn />
<DocumentationFile>bin\Debug\Flurl.xml</DocumentationFile> <DocumentationFile>bin\Debug\Flurl.xml</DocumentationFile>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net40|AnyCPU'">
<WarningsAsErrors />
<NoWarn />
</PropertyGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\icon.png" Pack="true" PackagePath="\" /> <None Include="..\..\icon.png" Pack="true" PackagePath="\" />
</ItemGroup> </ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net40'"> <ItemGroup Condition="'$(TargetFramework)' == 'net461'">
<PackageReference Include="System.ValueTuple" Version="4.5.0" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard1.0'">
<PackageReference Include="System.ValueTuple" Version="4.5.0" /> <PackageReference Include="System.ValueTuple" Version="4.5.0" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0" PrivateAssets="All"/> <PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0" PrivateAssets="All"/>
</ItemGroup> </ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard1.3'">
<PackageReference Include="System.Reflection.TypeExtensions" Version="4.4.0" />
<PackageReference Include="System.ValueTuple" Version="4.5.0" />
</ItemGroup>
</Project> </Project>

View File

@ -42,9 +42,7 @@ namespace Flurl.Util
obj == null ? null : obj == null ? null :
obj is DateTime dt ? dt.ToString("o", CultureInfo.InvariantCulture) : obj is DateTime dt ? dt.ToString("o", CultureInfo.InvariantCulture) :
obj is DateTimeOffset dto ? dto.ToString("o", CultureInfo.InvariantCulture) : obj is DateTimeOffset dto ? dto.ToString("o", CultureInfo.InvariantCulture) :
#if !NETSTANDARD1_0
obj is IConvertible c ? c.ToString(CultureInfo.InvariantCulture) : obj is IConvertible c ? c.ToString(CultureInfo.InvariantCulture) :
#endif
obj is IFormattable f ? f.ToString(null, CultureInfo.InvariantCulture) : obj is IFormattable f ? f.ToString(null, CultureInfo.InvariantCulture) :
obj.ToString(); obj.ToString();
} }
@ -70,31 +68,18 @@ namespace Flurl.Util
return Url.ParseQueryParams(s).Select(p => new KeyValuePair<string, object>(p.Name, p.Value)); return Url.ParseQueryParams(s).Select(p => new KeyValuePair<string, object>(p.Name, p.Value));
} }
private static IEnumerable<KeyValuePair<string, object>> ObjectToKV(object obj) { private static IEnumerable<KeyValuePair<string, object>> ObjectToKV(object obj) =>
#if NETSTANDARD1_0 from prop in obj.GetType().GetProperties()
return from prop in obj.GetType().GetRuntimeProperties()
let getter = prop.GetMethod
where getter?.IsPublic == true
let val = getter.Invoke(obj, null)
select new KeyValuePair<string, object>(prop.Name, val);
#else
return from prop in obj.GetType().GetProperties()
let getter = prop.GetGetMethod(false) let getter = prop.GetGetMethod(false)
where getter != null where getter != null
let val = getter.Invoke(obj, null) let val = getter.Invoke(obj, null)
select new KeyValuePair<string, object>(prop.Name, val); select new KeyValuePair<string, object>(prop.Name, val);
#endif
}
private static IEnumerable<KeyValuePair<string, object>> CollectionToKV(IEnumerable col) { private static IEnumerable<KeyValuePair<string, object>> CollectionToKV(IEnumerable col) {
bool TryGetProp(object obj, string name, out object value) { bool TryGetProp(object obj, string name, out object value) {
#if NETSTANDARD1_0
var prop = obj.GetType().GetRuntimeProperty(name);
var field = obj.GetType().GetRuntimeField(name);
#else
var prop = obj.GetType().GetProperty(name); var prop = obj.GetType().GetProperty(name);
var field = obj.GetType().GetField(name); var field = obj.GetType().GetField(name);
#endif
if (prop != null) { if (prop != null) {
value = prop.GetValue(obj, null); value = prop.GetValue(obj, null);
return true; return true;