parent
ee804e5841
commit
161d6ca5c0
|
|
@ -34,10 +34,6 @@ Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.Net.Http.Headers"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.Net.Http.Headers.Tests", "test\Microsoft.Net.Http.Headers.Tests\Microsoft.Net.Http.Headers.Tests.xproj", "{E6BB7AD1-BD10-4A23-B780-F4A86ADF00D1}"
|
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.Net.Http.Headers.Tests", "test\Microsoft.Net.Http.Headers.Tests\Microsoft.Net.Http.Headers.Tests.xproj", "{E6BB7AD1-BD10-4A23-B780-F4A86ADF00D1}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.Extensions.WebEncoders", "src\Microsoft.Extensions.WebEncoders\Microsoft.Extensions.WebEncoders.xproj", "{DD2CE416-765E-4000-A03E-C2FF165DA1B6}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.Extensions.WebEncoders.Tests", "test\Microsoft.Extensions.WebEncoders.Tests\Microsoft.Extensions.WebEncoders.Tests.xproj", "{7AE2731D-43CD-4CF8-850A-4914DE2CE930}"
|
|
||||||
EndProject
|
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{982F09D8-621E-4872-BA7B-BBDEA47D1EFD}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{982F09D8-621E-4872-BA7B-BBDEA47D1EFD}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "SampleApp", "samples\SampleApp\SampleApp.xproj", "{1D0764B4-1DEB-4232-A714-D4B7E846918A}"
|
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "SampleApp", "samples\SampleApp\SampleApp.xproj", "{1D0764B4-1DEB-4232-A714-D4B7E846918A}"
|
||||||
|
|
@ -196,30 +192,6 @@ Global
|
||||||
{E6BB7AD1-BD10-4A23-B780-F4A86ADF00D1}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
{E6BB7AD1-BD10-4A23-B780-F4A86ADF00D1}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||||
{E6BB7AD1-BD10-4A23-B780-F4A86ADF00D1}.Release|x86.ActiveCfg = Release|Any CPU
|
{E6BB7AD1-BD10-4A23-B780-F4A86ADF00D1}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
{E6BB7AD1-BD10-4A23-B780-F4A86ADF00D1}.Release|x86.Build.0 = Release|Any CPU
|
{E6BB7AD1-BD10-4A23-B780-F4A86ADF00D1}.Release|x86.Build.0 = Release|Any CPU
|
||||||
{DD2CE416-765E-4000-A03E-C2FF165DA1B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{DD2CE416-765E-4000-A03E-C2FF165DA1B6}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{DD2CE416-765E-4000-A03E-C2FF165DA1B6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{DD2CE416-765E-4000-A03E-C2FF165DA1B6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{DD2CE416-765E-4000-A03E-C2FF165DA1B6}.Debug|x86.ActiveCfg = Debug|Any CPU
|
|
||||||
{DD2CE416-765E-4000-A03E-C2FF165DA1B6}.Debug|x86.Build.0 = Debug|Any CPU
|
|
||||||
{DD2CE416-765E-4000-A03E-C2FF165DA1B6}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{DD2CE416-765E-4000-A03E-C2FF165DA1B6}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{DD2CE416-765E-4000-A03E-C2FF165DA1B6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{DD2CE416-765E-4000-A03E-C2FF165DA1B6}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{DD2CE416-765E-4000-A03E-C2FF165DA1B6}.Release|x86.ActiveCfg = Release|Any CPU
|
|
||||||
{DD2CE416-765E-4000-A03E-C2FF165DA1B6}.Release|x86.Build.0 = Release|Any CPU
|
|
||||||
{7AE2731D-43CD-4CF8-850A-4914DE2CE930}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{7AE2731D-43CD-4CF8-850A-4914DE2CE930}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{7AE2731D-43CD-4CF8-850A-4914DE2CE930}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
|
||||||
{7AE2731D-43CD-4CF8-850A-4914DE2CE930}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
|
||||||
{7AE2731D-43CD-4CF8-850A-4914DE2CE930}.Debug|x86.ActiveCfg = Debug|Any CPU
|
|
||||||
{7AE2731D-43CD-4CF8-850A-4914DE2CE930}.Debug|x86.Build.0 = Debug|Any CPU
|
|
||||||
{7AE2731D-43CD-4CF8-850A-4914DE2CE930}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{7AE2731D-43CD-4CF8-850A-4914DE2CE930}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{7AE2731D-43CD-4CF8-850A-4914DE2CE930}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
|
||||||
{7AE2731D-43CD-4CF8-850A-4914DE2CE930}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
|
||||||
{7AE2731D-43CD-4CF8-850A-4914DE2CE930}.Release|x86.ActiveCfg = Release|Any CPU
|
|
||||||
{7AE2731D-43CD-4CF8-850A-4914DE2CE930}.Release|x86.Build.0 = Release|Any CPU
|
|
||||||
{1D0764B4-1DEB-4232-A714-D4B7E846918A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{1D0764B4-1DEB-4232-A714-D4B7E846918A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{1D0764B4-1DEB-4232-A714-D4B7E846918A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{1D0764B4-1DEB-4232-A714-D4B7E846918A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{1D0764B4-1DEB-4232-A714-D4B7E846918A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
{1D0764B4-1DEB-4232-A714-D4B7E846918A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||||
|
|
@ -251,8 +223,6 @@ Global
|
||||||
{93C10E50-BCBB-4D8E-9492-D46E1396225B} = {F31FF137-390C-49BF-A3BD-7C6ED3597C21}
|
{93C10E50-BCBB-4D8E-9492-D46E1396225B} = {F31FF137-390C-49BF-A3BD-7C6ED3597C21}
|
||||||
{60AA2FDB-8121-4826-8D00-9A143FEFAF66} = {A5A15F1C-885A-452A-A731-B0173DDBD913}
|
{60AA2FDB-8121-4826-8D00-9A143FEFAF66} = {A5A15F1C-885A-452A-A731-B0173DDBD913}
|
||||||
{E6BB7AD1-BD10-4A23-B780-F4A86ADF00D1} = {F31FF137-390C-49BF-A3BD-7C6ED3597C21}
|
{E6BB7AD1-BD10-4A23-B780-F4A86ADF00D1} = {F31FF137-390C-49BF-A3BD-7C6ED3597C21}
|
||||||
{DD2CE416-765E-4000-A03E-C2FF165DA1B6} = {A5A15F1C-885A-452A-A731-B0173DDBD913}
|
|
||||||
{7AE2731D-43CD-4CF8-850A-4914DE2CE930} = {F31FF137-390C-49BF-A3BD-7C6ED3597C21}
|
|
||||||
{1D0764B4-1DEB-4232-A714-D4B7E846918A} = {982F09D8-621E-4872-BA7B-BBDEA47D1EFD}
|
{1D0764B4-1DEB-4232-A714-D4B7E846918A} = {982F09D8-621E-4872-BA7B-BBDEA47D1EFD}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
EndGlobal
|
EndGlobal
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,6 @@
|
||||||
"Microsoft.AspNet.Http.Features": { },
|
"Microsoft.AspNet.Http.Features": { },
|
||||||
"Microsoft.AspNet.Owin": { },
|
"Microsoft.AspNet.Owin": { },
|
||||||
"Microsoft.AspNet.WebUtilities": { },
|
"Microsoft.AspNet.WebUtilities": { },
|
||||||
"Microsoft.Extensions.WebEncoders": { },
|
|
||||||
"Microsoft.Net.Http.Headers": { }
|
"Microsoft.Net.Http.Headers": { }
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -1,63 +0,0 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved.
|
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Text.Encodings.Web;
|
|
||||||
using Microsoft.Extensions.DependencyInjection.Extensions;
|
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
using Microsoft.Extensions.WebEncoders;
|
|
||||||
|
|
||||||
namespace Microsoft.Extensions.DependencyInjection
|
|
||||||
{
|
|
||||||
public static class EncoderServiceCollectionExtensions
|
|
||||||
{
|
|
||||||
public static IServiceCollection AddWebEncoders(this IServiceCollection services)
|
|
||||||
{
|
|
||||||
if (services == null)
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException(nameof(services));
|
|
||||||
}
|
|
||||||
|
|
||||||
return AddWebEncoders(services, configureOptions: null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static IServiceCollection AddWebEncoders(this IServiceCollection services, Action<WebEncoderOptions> configureOptions)
|
|
||||||
{
|
|
||||||
if (services == null)
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException(nameof(services));
|
|
||||||
}
|
|
||||||
|
|
||||||
services.AddOptions();
|
|
||||||
|
|
||||||
// Register the default encoders
|
|
||||||
// We want to call the 'Default' property getters lazily since they perform static caching
|
|
||||||
services.TryAdd(ServiceDescriptor.Singleton<HtmlEncoder>(
|
|
||||||
CreateFactory(() => HtmlEncoder.Default, settings => HtmlEncoder.Create(settings))));
|
|
||||||
services.TryAdd(ServiceDescriptor.Singleton<JavaScriptEncoder>(
|
|
||||||
CreateFactory(() => JavaScriptEncoder.Default, settings => JavaScriptEncoder.Create(settings))));
|
|
||||||
services.TryAdd(ServiceDescriptor.Singleton<UrlEncoder>(
|
|
||||||
CreateFactory(() => UrlEncoder.Default, settings => UrlEncoder.Create(settings))));
|
|
||||||
|
|
||||||
if (configureOptions != null)
|
|
||||||
{
|
|
||||||
services.Configure(configureOptions);
|
|
||||||
}
|
|
||||||
|
|
||||||
return services;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static Func<IServiceProvider, T> CreateFactory<T>(
|
|
||||||
Func<T> defaultFactory,
|
|
||||||
Func<TextEncoderSettings, T> customSettingsFactory)
|
|
||||||
{
|
|
||||||
return serviceProvider =>
|
|
||||||
{
|
|
||||||
var settings = serviceProvider?.GetService<IOptions<WebEncoderOptions>>()?
|
|
||||||
.Value?
|
|
||||||
.TextEncoderSettings;
|
|
||||||
return (settings != null) ? customSettingsFactory(settings) : defaultFactory();
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,50 +0,0 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved.
|
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Text.Encodings.Web;
|
|
||||||
|
|
||||||
namespace Microsoft.Extensions.WebEncoders
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Contains extension methods for fetching encoders from an <see cref="IServiceProvider"/>.
|
|
||||||
/// </summary>
|
|
||||||
public static class EncoderServiceProviderExtensions
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Retrieves an <see cref="HtmlEncoder"/> from an <see cref="IServiceProvider"/>.
|
|
||||||
/// </summary>
|
|
||||||
/// <remarks>
|
|
||||||
/// This method is guaranteed never to return null.
|
|
||||||
/// It will return a default encoder instance if <paramref name="serviceProvider"/> does not contain one or is null.
|
|
||||||
/// </remarks>
|
|
||||||
public static HtmlEncoder GetHtmlEncoder(this IServiceProvider serviceProvider)
|
|
||||||
{
|
|
||||||
return (HtmlEncoder)serviceProvider?.GetService(typeof(HtmlEncoder)) ?? HtmlEncoder.Default;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Retrieves an <see cref="JavaScriptEncoder"/> from an <see cref="IServiceProvider"/>.
|
|
||||||
/// </summary>
|
|
||||||
/// <remarks>
|
|
||||||
/// This method is guaranteed never to return null.
|
|
||||||
/// It will return a default encoder instance if <paramref name="serviceProvider"/> does not contain one or is null.
|
|
||||||
/// </remarks>
|
|
||||||
public static JavaScriptEncoder GetJavaScriptEncoder(this IServiceProvider serviceProvider)
|
|
||||||
{
|
|
||||||
return (JavaScriptEncoder)serviceProvider?.GetService(typeof(JavaScriptEncoder)) ?? JavaScriptEncoder.Default;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Retrieves an <see cref="UrlEncoder"/> from an <see cref="IServiceProvider"/>.
|
|
||||||
/// </summary>
|
|
||||||
/// <remarks>
|
|
||||||
/// This method is guaranteed never to return null.
|
|
||||||
/// It will return a default encoder instance if <paramref name="serviceProvider"/> does not contain one or is null.
|
|
||||||
/// </remarks>
|
|
||||||
public static UrlEncoder GetUrlEncoder(this IServiceProvider serviceProvider)
|
|
||||||
{
|
|
||||||
return (UrlEncoder)serviceProvider?.GetService(typeof(UrlEncoder)) ?? UrlEncoder.Default;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<PropertyGroup>
|
|
||||||
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion>
|
|
||||||
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VSToolsPath)\DNX\Microsoft.DNX.Props" Condition="'$(VSToolsPath)' != ''" />
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>dd2ce416-765e-4000-a03e-c2ff165da1b6</ProjectGuid>
|
|
||||||
<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">..\..\artifacts\obj\$(MSBuildProjectName)</BaseIntermediateOutputPath>
|
|
||||||
<OutputPath Condition="'$(OutputPath)'=='' ">..\..\artifacts\bin\$(MSBuildProjectName)\</OutputPath>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup>
|
|
||||||
<SchemaVersion>2.0</SchemaVersion>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VSToolsPath)\DNX\Microsoft.DNX.targets" Condition="'$(VSToolsPath)' != ''" />
|
|
||||||
</Project>
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved.
|
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
||||||
|
|
||||||
using System.Reflection;
|
|
||||||
using System.Resources;
|
|
||||||
|
|
||||||
[assembly: AssemblyMetadata("Serviceable", "True")]
|
|
||||||
[assembly: NeutralResourcesLanguage("en-us")]
|
|
||||||
|
|
@ -1,104 +0,0 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved.
|
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.IO;
|
|
||||||
using System.Text.Encodings.Web;
|
|
||||||
|
|
||||||
namespace Microsoft.Extensions.WebEncoders.Testing
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Encoder used for unit testing.
|
|
||||||
/// </summary>
|
|
||||||
public sealed class HtmlTestEncoder : HtmlEncoder
|
|
||||||
{
|
|
||||||
public override int MaxOutputCharactersPerInputCharacter
|
|
||||||
{
|
|
||||||
get { return 1; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string Encode(string value)
|
|
||||||
{
|
|
||||||
if (value == null)
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException(nameof(value));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (value.Length == 0)
|
|
||||||
{
|
|
||||||
return string.Empty;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $"HtmlEncode[[{value}]]";
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Encode(TextWriter output, char[] value, int startIndex, int characterCount)
|
|
||||||
{
|
|
||||||
if (output == null)
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException(nameof(output));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (value == null)
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException(nameof(value));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (characterCount == 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
output.Write("HtmlEncode[[");
|
|
||||||
output.Write(value, startIndex, characterCount);
|
|
||||||
output.Write("]]");
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Encode(TextWriter output, string value, int startIndex, int characterCount)
|
|
||||||
{
|
|
||||||
if (output == null)
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException(nameof(output));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (value == null)
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException(nameof(value));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (characterCount == 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
output.Write("HtmlEncode[[");
|
|
||||||
output.Write(value.Substring(startIndex, characterCount));
|
|
||||||
output.Write("]]");
|
|
||||||
}
|
|
||||||
|
|
||||||
public override bool WillEncode(int unicodeScalar)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override unsafe int FindFirstCharacterToEncode(char* text, int textLength)
|
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override unsafe bool TryEncodeUnicodeScalar(
|
|
||||||
int unicodeScalar,
|
|
||||||
char* buffer,
|
|
||||||
int bufferLength,
|
|
||||||
out int numberOfCharactersWritten)
|
|
||||||
{
|
|
||||||
if (buffer == null)
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException(nameof(buffer));
|
|
||||||
}
|
|
||||||
|
|
||||||
numberOfCharactersWritten = 0;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,104 +0,0 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved.
|
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.IO;
|
|
||||||
using System.Text.Encodings.Web;
|
|
||||||
|
|
||||||
namespace Microsoft.Extensions.WebEncoders.Testing
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Encoder used for unit testing.
|
|
||||||
/// </summary>
|
|
||||||
public class JavaScriptTestEncoder : JavaScriptEncoder
|
|
||||||
{
|
|
||||||
public override int MaxOutputCharactersPerInputCharacter
|
|
||||||
{
|
|
||||||
get { return 1; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string Encode(string value)
|
|
||||||
{
|
|
||||||
if (value == null)
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException(nameof(value));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (value.Length == 0)
|
|
||||||
{
|
|
||||||
return string.Empty;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $"JavaScriptEncode[[{value}]]";
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Encode(TextWriter output, char[] value, int startIndex, int characterCount)
|
|
||||||
{
|
|
||||||
if (output == null)
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException(nameof(output));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (value == null)
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException(nameof(value));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (characterCount == 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
output.Write("JavaScriptEncode[[");
|
|
||||||
output.Write(value, startIndex, characterCount);
|
|
||||||
output.Write("]]");
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Encode(TextWriter output, string value, int startIndex, int characterCount)
|
|
||||||
{
|
|
||||||
if (output == null)
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException(nameof(output));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (value == null)
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException(nameof(value));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (characterCount == 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
output.Write("JavaScriptEncode[[");
|
|
||||||
output.Write(value.Substring(startIndex, characterCount));
|
|
||||||
output.Write("]]");
|
|
||||||
}
|
|
||||||
|
|
||||||
public override bool WillEncode(int unicodeScalar)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override unsafe int FindFirstCharacterToEncode(char* text, int textLength)
|
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override unsafe bool TryEncodeUnicodeScalar(
|
|
||||||
int unicodeScalar,
|
|
||||||
char* buffer,
|
|
||||||
int bufferLength,
|
|
||||||
out int numberOfCharactersWritten)
|
|
||||||
{
|
|
||||||
if (buffer == null)
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException(nameof(buffer));
|
|
||||||
}
|
|
||||||
|
|
||||||
numberOfCharactersWritten = 0;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,104 +0,0 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved.
|
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.IO;
|
|
||||||
using System.Text.Encodings.Web;
|
|
||||||
|
|
||||||
namespace Microsoft.Extensions.WebEncoders.Testing
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Encoder used for unit testing.
|
|
||||||
/// </summary>
|
|
||||||
public class UrlTestEncoder : UrlEncoder
|
|
||||||
{
|
|
||||||
public override int MaxOutputCharactersPerInputCharacter
|
|
||||||
{
|
|
||||||
get { return 1; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string Encode(string value)
|
|
||||||
{
|
|
||||||
if (value == null)
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException(nameof(value));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (value.Length == 0)
|
|
||||||
{
|
|
||||||
return string.Empty;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $"UrlEncode[[{value}]]";
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Encode(TextWriter output, char[] value, int startIndex, int characterCount)
|
|
||||||
{
|
|
||||||
if (output == null)
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException(nameof(output));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (value == null)
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException(nameof(value));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (characterCount == 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
output.Write("UrlEncode[[");
|
|
||||||
output.Write(value, startIndex, characterCount);
|
|
||||||
output.Write("]]");
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Encode(TextWriter output, string value, int startIndex, int characterCount)
|
|
||||||
{
|
|
||||||
if (output == null)
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException(nameof(output));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (value == null)
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException(nameof(value));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (characterCount == 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
output.Write("UrlEncode[[");
|
|
||||||
output.Write(value.Substring(startIndex, characterCount));
|
|
||||||
output.Write("]]");
|
|
||||||
}
|
|
||||||
|
|
||||||
public override bool WillEncode(int unicodeScalar)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override unsafe int FindFirstCharacterToEncode(char* text, int textLength)
|
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override unsafe bool TryEncodeUnicodeScalar(
|
|
||||||
int unicodeScalar,
|
|
||||||
char* buffer,
|
|
||||||
int bufferLength,
|
|
||||||
out int numberOfCharactersWritten)
|
|
||||||
{
|
|
||||||
if (buffer == null)
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException(nameof(buffer));
|
|
||||||
}
|
|
||||||
|
|
||||||
numberOfCharactersWritten = 0;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved.
|
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
||||||
|
|
||||||
using System.Text.Encodings.Web;
|
|
||||||
|
|
||||||
namespace Microsoft.Extensions.WebEncoders
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Specifies options common to all three encoders (HtmlEncode, JavaScriptEncode, UrlEncode).
|
|
||||||
/// </summary>
|
|
||||||
public sealed class WebEncoderOptions
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Specifies which code points are allowed to be represented unescaped by the encoders.
|
|
||||||
/// </summary>
|
|
||||||
/// <remarks>
|
|
||||||
/// If this property is null, then the encoders will use their default allow lists.
|
|
||||||
/// </remarks>
|
|
||||||
public TextEncoderSettings TextEncoderSettings { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
||||||
{
|
|
||||||
"version": "1.0.0-*",
|
|
||||||
"description": "Contains registration and configuration APIs for the core framework encoders.",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "git://github.com/aspnet/httpabstractions"
|
|
||||||
},
|
|
||||||
"compilationOptions": {
|
|
||||||
"warningsAsErrors": true,
|
|
||||||
"allowUnsafe": true,
|
|
||||||
"keyFile": "../../tools/Key.snk"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0-*",
|
|
||||||
"Microsoft.Extensions.Options": "1.0.0-*",
|
|
||||||
"System.Text.Encodings.Web": "4.0.0-*"
|
|
||||||
},
|
|
||||||
"frameworks": {
|
|
||||||
"net451": {
|
|
||||||
"frameworkAssemblies": {
|
|
||||||
"System.IO": "",
|
|
||||||
"System.Runtime": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"dotnet5.4": {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,15 +1,20 @@
|
||||||
{
|
{
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.AspNet.Http": "1.0.0-*",
|
"Microsoft.AspNet.WebUtilities": "1.0.0-*",
|
||||||
"Microsoft.AspNet.WebUtilities": "1.0.0-*",
|
"xunit.runner.aspnet": "2.0.0-aspnet-*"
|
||||||
"Microsoft.AspNet.Http.Core": "1.0.0-*",
|
},
|
||||||
"xunit.runner.aspnet": "2.0.0-aspnet-*"
|
"compilationOptions": {
|
||||||
},
|
"warningsAsErrors": true
|
||||||
"commands": {
|
},
|
||||||
"test": "xunit.runner.aspnet"
|
"commands": {
|
||||||
},
|
"test": "xunit.runner.aspnet"
|
||||||
"frameworks": {
|
},
|
||||||
"dnx451": { },
|
"frameworks": {
|
||||||
"dnxcore50": { }
|
"dnx451": { },
|
||||||
|
"dnxcore50": {
|
||||||
|
"dependencies": {
|
||||||
|
"System.Text.Encoding.Extensions": "4.0.11-*"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,90 +0,0 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved.
|
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
||||||
|
|
||||||
using System.Text.Encodings.Web;
|
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.WebEncoders.Testing;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace Microsoft.Extensions.WebEncoders
|
|
||||||
{
|
|
||||||
public class EncoderServiceCollectionExtensionsTests
|
|
||||||
{
|
|
||||||
[Fact]
|
|
||||||
public void AddWebEncoders_WithoutOptions_RegistersDefaultEncoders()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var serviceCollection = new ServiceCollection();
|
|
||||||
|
|
||||||
// Act
|
|
||||||
serviceCollection.AddWebEncoders();
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
var serviceProvider = serviceCollection.BuildServiceProvider();
|
|
||||||
Assert.Same(HtmlEncoder.Default, serviceProvider.GetRequiredService<HtmlEncoder>()); // default encoder
|
|
||||||
Assert.Same(HtmlEncoder.Default, serviceProvider.GetRequiredService<HtmlEncoder>()); // as singleton instance
|
|
||||||
Assert.Same(JavaScriptEncoder.Default, serviceProvider.GetRequiredService<JavaScriptEncoder>()); // default encoder
|
|
||||||
Assert.Same(JavaScriptEncoder.Default, serviceProvider.GetRequiredService<JavaScriptEncoder>()); // as singleton instance
|
|
||||||
Assert.Same(UrlEncoder.Default, serviceProvider.GetRequiredService<UrlEncoder>()); // default encoder
|
|
||||||
Assert.Same(UrlEncoder.Default, serviceProvider.GetRequiredService<UrlEncoder>()); // as singleton instance
|
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
|
||||||
public void AddWebEncoders_WithOptions_RegistersEncodersWithCustomCodeFilter()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var serviceCollection = new ServiceCollection();
|
|
||||||
|
|
||||||
// Act
|
|
||||||
serviceCollection.AddWebEncoders(options =>
|
|
||||||
{
|
|
||||||
options.TextEncoderSettings = new TextEncoderSettings();
|
|
||||||
options.TextEncoderSettings.AllowCharacters("ace".ToCharArray()); // only these three chars are allowed
|
|
||||||
});
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
var serviceProvider = serviceCollection.BuildServiceProvider();
|
|
||||||
|
|
||||||
var htmlEncoder = serviceProvider.GetRequiredService<HtmlEncoder>();
|
|
||||||
Assert.Equal("abcde", htmlEncoder.Encode("abcde"));
|
|
||||||
Assert.Same(htmlEncoder, serviceProvider.GetRequiredService<HtmlEncoder>()); // as singleton instance
|
|
||||||
|
|
||||||
var javaScriptEncoder = serviceProvider.GetRequiredService<JavaScriptEncoder>();
|
|
||||||
Assert.Equal(@"a\u0062c\u0064e", javaScriptEncoder.Encode("abcde"));
|
|
||||||
Assert.Same(javaScriptEncoder, serviceProvider.GetRequiredService<JavaScriptEncoder>()); // as singleton instance
|
|
||||||
|
|
||||||
var urlEncoder = serviceProvider.GetRequiredService<UrlEncoder>();
|
|
||||||
Assert.Equal("a%62c%64e", urlEncoder.Encode("abcde"));
|
|
||||||
Assert.Same(urlEncoder, serviceProvider.GetRequiredService<UrlEncoder>()); // as singleton instance
|
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
|
||||||
public void AddWebEncoders_DoesNotOverrideExistingRegisteredEncoders()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var serviceCollection = new ServiceCollection();
|
|
||||||
|
|
||||||
// Act
|
|
||||||
serviceCollection.AddSingleton<HtmlEncoder, HtmlTestEncoder>();
|
|
||||||
serviceCollection.AddSingleton<JavaScriptEncoder, JavaScriptTestEncoder>();
|
|
||||||
// we don't register an existing URL encoder
|
|
||||||
serviceCollection.AddWebEncoders(options =>
|
|
||||||
{
|
|
||||||
options.TextEncoderSettings = new TextEncoderSettings();
|
|
||||||
options.TextEncoderSettings.AllowCharacters("ace".ToCharArray()); // only these three chars are allowed
|
|
||||||
});
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
var serviceProvider = serviceCollection.BuildServiceProvider();
|
|
||||||
|
|
||||||
var htmlEncoder = serviceProvider.GetHtmlEncoder();
|
|
||||||
Assert.Equal("HtmlEncode[[abcde]]", htmlEncoder.Encode("abcde"));
|
|
||||||
|
|
||||||
var javaScriptEncoder = serviceProvider.GetJavaScriptEncoder();
|
|
||||||
Assert.Equal("JavaScriptEncode[[abcde]]", javaScriptEncoder.Encode("abcde"));
|
|
||||||
|
|
||||||
var urlEncoder = serviceProvider.GetUrlEncoder();
|
|
||||||
Assert.Equal("a%62c%64e", urlEncoder.Encode("abcde"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,103 +0,0 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved.
|
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Text.Encodings.Web;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace Microsoft.Extensions.WebEncoders
|
|
||||||
{
|
|
||||||
public class EncoderServiceProviderExtensionsTests
|
|
||||||
{
|
|
||||||
[Fact]
|
|
||||||
public void GetHtmlEncoder_ServiceProviderDoesNotHaveEncoder_UsesDefault()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var serviceProvider = new TestServiceProvider();
|
|
||||||
|
|
||||||
// Act
|
|
||||||
var retVal = serviceProvider.GetHtmlEncoder();
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
Assert.Same(HtmlEncoder.Default, retVal);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
|
||||||
public void GetHtmlEncoder_ServiceProviderHasEncoder_ReturnsRegisteredInstance()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var expectedEncoder = HtmlEncoder.Default;
|
|
||||||
var serviceProvider = new TestServiceProvider() { Service = expectedEncoder };
|
|
||||||
|
|
||||||
// Act
|
|
||||||
var retVal = serviceProvider.GetHtmlEncoder();
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
Assert.Same(expectedEncoder, retVal);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
|
||||||
public void GetJavaScriptEncoder_ServiceProviderDoesNotHaveEncoder_UsesDefault()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var serviceProvider = new TestServiceProvider();
|
|
||||||
|
|
||||||
// Act
|
|
||||||
var retVal = serviceProvider.GetJavaScriptEncoder();
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
Assert.Same(JavaScriptEncoder.Default, retVal);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
|
||||||
public void GetJavaScriptEncoder_ServiceProviderHasEncoder_ReturnsRegisteredInstance()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var expectedEncoder = JavaScriptEncoder.Default;
|
|
||||||
var serviceProvider = new TestServiceProvider() { Service = expectedEncoder };
|
|
||||||
|
|
||||||
// Act
|
|
||||||
var retVal = serviceProvider.GetJavaScriptEncoder();
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
Assert.Same(expectedEncoder, retVal);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
|
||||||
public void GetUrlEncoder_ServiceProviderDoesNotHaveEncoder_UsesDefault()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var serviceProvider = new TestServiceProvider();
|
|
||||||
|
|
||||||
// Act
|
|
||||||
var retVal = serviceProvider.GetUrlEncoder();
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
Assert.Same(UrlEncoder.Default, retVal);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
|
||||||
public void GetUrlEncoder_ServiceProviderHasEncoder_ReturnsRegisteredInstance()
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var expectedEncoder = UrlEncoder.Default;
|
|
||||||
var serviceProvider = new TestServiceProvider() { Service = expectedEncoder };
|
|
||||||
|
|
||||||
// Act
|
|
||||||
var retVal = serviceProvider.GetUrlEncoder();
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
Assert.Same(expectedEncoder, retVal);
|
|
||||||
}
|
|
||||||
|
|
||||||
private class TestServiceProvider : IServiceProvider
|
|
||||||
{
|
|
||||||
public object Service { get; set; }
|
|
||||||
|
|
||||||
public object GetService(Type serviceType)
|
|
||||||
{
|
|
||||||
return Service;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,26 +0,0 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved.
|
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
||||||
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace Microsoft.Extensions.WebEncoders.Testing
|
|
||||||
{
|
|
||||||
public class HtmlTestEncoderTest
|
|
||||||
{
|
|
||||||
[Theory]
|
|
||||||
[InlineData("", "")]
|
|
||||||
[InlineData("abcd", "HtmlEncode[[abcd]]")]
|
|
||||||
[InlineData("<<''\"\">>", "HtmlEncode[[<<''\"\">>]]")]
|
|
||||||
public void StringEncode_EncodesAsExpected(string input, string expectedOutput)
|
|
||||||
{
|
|
||||||
// Arrange
|
|
||||||
var encoder = new HtmlTestEncoder();
|
|
||||||
|
|
||||||
// Act
|
|
||||||
var output = encoder.Encode(input);
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
Assert.Equal(expectedOutput, output);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<PropertyGroup>
|
|
||||||
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion>
|
|
||||||
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VSToolsPath)\DNX\Microsoft.DNX.Props" Condition="'$(VSToolsPath)' != ''" />
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>7ae2731d-43cd-4cf8-850a-4914de2ce930</ProjectGuid>
|
|
||||||
<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">..\..\artifacts\obj\$(MSBuildProjectName)</BaseIntermediateOutputPath>
|
|
||||||
<OutputPath Condition="'$(OutputPath)'=='' ">..\..\artifacts\bin\$(MSBuildProjectName)\</OutputPath>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup>
|
|
||||||
<SchemaVersion>2.0</SchemaVersion>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VSToolsPath)\DNX\Microsoft.DNX.targets" Condition="'$(VSToolsPath)' != ''" />
|
|
||||||
</Project>
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
{
|
|
||||||
"dependencies": {
|
|
||||||
"Microsoft.Extensions.DependencyInjection": "1.0.0-*",
|
|
||||||
"Microsoft.Extensions.WebEncoders": "1.0.0-*",
|
|
||||||
"Newtonsoft.Json": "6.0.6",
|
|
||||||
"xunit.runner.aspnet": "2.0.0-aspnet-*"
|
|
||||||
},
|
|
||||||
"commands": {
|
|
||||||
"test": "xunit.runner.aspnet"
|
|
||||||
},
|
|
||||||
"compilationOptions": {
|
|
||||||
"allowUnsafe": true,
|
|
||||||
"warningsAsErrors": true,
|
|
||||||
"keyFile": "../../tools/Key.snk"
|
|
||||||
},
|
|
||||||
"frameworks": {
|
|
||||||
"dnx451": { },
|
|
||||||
"dnxcore50": {
|
|
||||||
"dependencies": {
|
|
||||||
"System.Text.Encoding.Extensions": "4.0.11-*"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue