diff --git a/src/libraries/Directory.Build.props b/src/libraries/Directory.Build.props
index bd273ec30c235b..8afb0d43d4fa9c 100644
--- a/src/libraries/Directory.Build.props
+++ b/src/libraries/Directory.Build.props
@@ -13,6 +13,7 @@
+
diff --git a/src/libraries/Microsoft.Extensions.Configuration.Json/pkg/Microsoft.Extensions.Configuration.Json.pkgproj b/src/libraries/Microsoft.Extensions.Configuration.Json/pkg/Microsoft.Extensions.Configuration.Json.pkgproj
new file mode 100644
index 00000000000000..b3f239fc3fd033
--- /dev/null
+++ b/src/libraries/Microsoft.Extensions.Configuration.Json/pkg/Microsoft.Extensions.Configuration.Json.pkgproj
@@ -0,0 +1,9 @@
+
+
+
+
+ net461;netcoreapp2.0;uap10.0.16299;$(AllXamarinFrameworks)
+
+
+
+
\ No newline at end of file
diff --git a/src/libraries/Microsoft.Extensions.Configuration.Json/ref/Microsoft.Extensions.Configuration.Json.cs b/src/libraries/Microsoft.Extensions.Configuration.Json/ref/Microsoft.Extensions.Configuration.Json.cs
index 886de43e81ae0e..1ddda5486f3da4 100644
--- a/src/libraries/Microsoft.Extensions.Configuration.Json/ref/Microsoft.Extensions.Configuration.Json.cs
+++ b/src/libraries/Microsoft.Extensions.Configuration.Json/ref/Microsoft.Extensions.Configuration.Json.cs
@@ -1,6 +1,9 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
+// ------------------------------------------------------------------------------
+// Changes to this file must follow the https://aka.ms/api-review process.
+// ------------------------------------------------------------------------------
namespace Microsoft.Extensions.Configuration
{
diff --git a/src/libraries/Microsoft.Extensions.Configuration.Json/ref/Microsoft.Extensions.Configuration.Json.csproj b/src/libraries/Microsoft.Extensions.Configuration.Json/ref/Microsoft.Extensions.Configuration.Json.csproj
index cc1299a16f6c39..b5abfdb5d97413 100644
--- a/src/libraries/Microsoft.Extensions.Configuration.Json/ref/Microsoft.Extensions.Configuration.Json.csproj
+++ b/src/libraries/Microsoft.Extensions.Configuration.Json/ref/Microsoft.Extensions.Configuration.Json.csproj
@@ -4,9 +4,9 @@
-
-
-
-
+
+
+
+
diff --git a/src/libraries/Microsoft.Extensions.Configuration.Json/src/JsonConfigurationExtensions.cs b/src/libraries/Microsoft.Extensions.Configuration.Json/src/JsonConfigurationExtensions.cs
index 173cf5d2788b34..a71e48ba7f1415 100644
--- a/src/libraries/Microsoft.Extensions.Configuration.Json/src/JsonConfigurationExtensions.cs
+++ b/src/libraries/Microsoft.Extensions.Configuration.Json/src/JsonConfigurationExtensions.cs
@@ -71,7 +71,7 @@ public static IConfigurationBuilder AddJsonFile(this IConfigurationBuilder build
}
if (string.IsNullOrEmpty(path))
{
- throw new ArgumentException(Resources.Error_InvalidFilePath, nameof(path));
+ throw new ArgumentException(SR.Error_InvalidFilePath, nameof(path));
}
return builder.AddJsonFile(s =>
diff --git a/src/libraries/Microsoft.Extensions.Configuration.Json/src/JsonConfigurationFileParser.cs b/src/libraries/Microsoft.Extensions.Configuration.Json/src/JsonConfigurationFileParser.cs
index 79a37d73ff8e65..18736057edfe54 100644
--- a/src/libraries/Microsoft.Extensions.Configuration.Json/src/JsonConfigurationFileParser.cs
+++ b/src/libraries/Microsoft.Extensions.Configuration.Json/src/JsonConfigurationFileParser.cs
@@ -36,7 +36,7 @@ private IDictionary ParseStream(Stream input)
{
if (doc.RootElement.ValueKind != JsonValueKind.Object)
{
- throw new FormatException(Resources.FormatError_UnsupportedJSONToken(doc.RootElement.ValueKind));
+ throw new FormatException(SR.Format(SR.Error_UnsupportedJSONToken, doc.RootElement.ValueKind));
}
VisitElement(doc.RootElement);
}
@@ -78,13 +78,13 @@ private void VisitValue(JsonElement value)
var key = _currentPath;
if (_data.ContainsKey(key))
{
- throw new FormatException(Resources.FormatError_KeyIsDuplicated(key));
+ throw new FormatException(SR.Format(SR.Error_KeyIsDuplicated, key));
}
_data[key] = value.ToString();
break;
default:
- throw new FormatException(Resources.FormatError_UnsupportedJSONToken(value.ValueKind));
+ throw new FormatException(SR.Format(SR.Error_UnsupportedJSONToken, value.ValueKind));
}
}
diff --git a/src/libraries/Microsoft.Extensions.Configuration.Json/src/JsonConfigurationProvider.cs b/src/libraries/Microsoft.Extensions.Configuration.Json/src/JsonConfigurationProvider.cs
index e629a64250a005..f179001f10329f 100644
--- a/src/libraries/Microsoft.Extensions.Configuration.Json/src/JsonConfigurationProvider.cs
+++ b/src/libraries/Microsoft.Extensions.Configuration.Json/src/JsonConfigurationProvider.cs
@@ -32,7 +32,7 @@ public override void Load(Stream stream)
}
catch (JsonException e)
{
- throw new FormatException(Resources.Error_JSONParseError, e);
+ throw new FormatException(SR.Error_JSONParseError, e);
}
}
}
diff --git a/src/libraries/Microsoft.Extensions.Configuration.Json/src/Microsoft.Extensions.Configuration.Json.csproj b/src/libraries/Microsoft.Extensions.Configuration.Json/src/Microsoft.Extensions.Configuration.Json.csproj
index 61d76b7820c27d..ec5e5086f5191b 100644
--- a/src/libraries/Microsoft.Extensions.Configuration.Json/src/Microsoft.Extensions.Configuration.Json.csproj
+++ b/src/libraries/Microsoft.Extensions.Configuration.Json/src/Microsoft.Extensions.Configuration.Json.csproj
@@ -1,24 +1,29 @@
- netstandard2.0;$(DefaultNetCoreTargetFramework)
- $(DefaultNetCoreTargetFramework)
+ $(NetCoreAppCurrent);netstandard2.0
true
$(NoWarn);3021
+ true
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
+
diff --git a/src/libraries/Microsoft.Extensions.Configuration.Json/src/Properties/InternalsVisibleTo.cs b/src/libraries/Microsoft.Extensions.Configuration.Json/src/Properties/InternalsVisibleTo.cs
new file mode 100644
index 00000000000000..0970d98a83e920
--- /dev/null
+++ b/src/libraries/Microsoft.Extensions.Configuration.Json/src/Properties/InternalsVisibleTo.cs
@@ -0,0 +1,7 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System.Runtime.CompilerServices;
+
+[assembly: InternalsVisibleTo("Microsoft.Extensions.Configuration.Json.Tests, PublicKey=00240000048000009400000006020000002400005253413100040000010001004b86c4cb78549b34bab61a3b1800e23bfeb5b3ec390074041536a7e3cbd97f5f04cf0f857155a8928eaa29ebfd11cfbbad3ba70efea7bda3226c6a8d370a4cd303f714486b6ebc225985a638471e6ef571cc92a4613c00b8fa65d61ccee0cbe5f36330c9a01f4183559f1bef24cc2917c6d913e3a541333a1d05d9bed22b38cb")]
diff --git a/src/libraries/Microsoft.Extensions.Configuration.Json/tests/JsonConfigurationTest.cs b/src/libraries/Microsoft.Extensions.Configuration.Json/tests/JsonConfigurationTest.cs
index 0539ed16c70743..c45f0ade6f0e78 100644
--- a/src/libraries/Microsoft.Extensions.Configuration.Json/tests/JsonConfigurationTest.cs
+++ b/src/libraries/Microsoft.Extensions.Configuration.Json/tests/JsonConfigurationTest.cs
@@ -181,7 +181,7 @@ public void ThrowExceptionWhenMissingCurlyBeforeFinishParsing()
[Fact]
public void ThrowExceptionWhenPassingNullAsFilePath()
{
- var expectedMsg = new ArgumentException(Resources.Error_InvalidFilePath, "path").Message;
+ var expectedMsg = new ArgumentException(SR.Error_InvalidFilePath, "path").Message;
var exception = Assert.Throws(() => new ConfigurationBuilder().AddJsonFile(path: null));
@@ -191,7 +191,7 @@ public void ThrowExceptionWhenPassingNullAsFilePath()
[Fact]
public void ThrowExceptionWhenPassingEmptyStringAsFilePath()
{
- var expectedMsg = new ArgumentException(Resources.Error_InvalidFilePath, "path").Message;
+ var expectedMsg = new ArgumentException(SR.Error_InvalidFilePath, "path").Message;
var exception = Assert.Throws(() => new ConfigurationBuilder().AddJsonFile(string.Empty));
diff --git a/src/libraries/Microsoft.Extensions.Configuration.Json/tests/Microsoft.Extensions.Configuration.Json.Tests.csproj b/src/libraries/Microsoft.Extensions.Configuration.Json/tests/Microsoft.Extensions.Configuration.Json.Tests.csproj
index 94bd9498e551d2..fa4a9e15cc7a4a 100644
--- a/src/libraries/Microsoft.Extensions.Configuration.Json/tests/Microsoft.Extensions.Configuration.Json.Tests.csproj
+++ b/src/libraries/Microsoft.Extensions.Configuration.Json/tests/Microsoft.Extensions.Configuration.Json.Tests.csproj
@@ -2,21 +2,23 @@
$(NetCoreAppCurrent);$(NetFrameworkCurrent)
+ true
-
-
+
+ Microsoft.Extensions.Configuration\tests\ConfigurationProviderTestBase.cs
+
+
+ Microsoft.Extensions.Configuration\tests\Common\ConfigurationProviderExtensions.cs
+
+
+ Microsoft.Extensions.Configuration\tests\Common\TestStreamHelpers.cs
+
-
-
-
-
-
-
-
+
diff --git a/src/libraries/pkg/baseline/packageIndex.json b/src/libraries/pkg/baseline/packageIndex.json
index 8ea122447fc6d3..353db9d6bf70ad 100644
--- a/src/libraries/pkg/baseline/packageIndex.json
+++ b/src/libraries/pkg/baseline/packageIndex.json
@@ -365,6 +365,33 @@
"5.0.0.0": "5.0.0"
}
},
+ "Microsoft.Extensions.Configuration.Json": {
+ "StableVersions": [
+ "1.0.0",
+ "1.0.1",
+ "1.0.2",
+ "1.1.0",
+ "1.1.1",
+ "1.1.2",
+ "2.0.0",
+ "2.0.1",
+ "2.0.2",
+ "2.1.0",
+ "2.1.1",
+ "2.2.0",
+ "3.0.0",
+ "3.0.1",
+ "3.0.2",
+ "3.0.3",
+ "3.1.0",
+ "3.1.1",
+ "3.1.2"
+ ],
+ "InboxOn": {},
+ "AssemblyVersionInPackageVersion": {
+ "5.0.0.0": "5.0.0"
+ }
+ },
"Microsoft.Extensions.DependencyInjection": {
"StableVersions": [
"1.0.0",