diff --git a/.appveyor.yml b/.appveyor.yml
deleted file mode 100644
index d45bd5a1f8..0000000000
--- a/.appveyor.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-init:
-- git config --global core.autocrlf true
-branches:
- only:
- - master
- - /^release\/.*$/
- - /^(.*\/)?ci-.*$/
-build_script:
-- ps: .\run.ps1 default-build
-clone_depth: 1
-environment:
- global:
- DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
- DOTNET_CLI_TELEMETRY_OPTOUT: 1
-test: 'off'
-deploy: 'off'
-os: Visual Studio 2017
diff --git a/.gitattributes b/.gitattributes
deleted file mode 100644
index d4ee1cb7f3..0000000000
--- a/.gitattributes
+++ /dev/null
@@ -1,52 +0,0 @@
-*.doc diff=astextplain
-*.DOC diff=astextplain
-*.docx diff=astextplain
-*.DOCX diff=astextplain
-*.dot diff=astextplain
-*.DOT diff=astextplain
-*.pdf diff=astextplain
-*.PDF diff=astextplain
-*.rtf diff=astextplain
-*.RTF diff=astextplain
-
-*.jpg binary
-*.png binary
-*.gif binary
-
-*.cs text=auto diff=csharp
-*.vb text=auto
-*.resx text=auto
-*.c text=auto
-*.cpp text=auto
-*.cxx text=auto
-*.h text=auto
-*.hxx text=auto
-*.py text=auto
-*.rb text=auto
-*.java text=auto
-*.html text=auto
-*.htm text=auto
-*.css text=auto
-*.scss text=auto
-*.sass text=auto
-*.less text=auto
-*.js text=auto
-*.lisp text=auto
-*.clj text=auto
-*.sql text=auto
-*.php text=auto
-*.lua text=auto
-*.m text=auto
-*.asm text=auto
-*.erl text=auto
-*.fs text=auto
-*.fsx text=auto
-*.hs text=auto
-
-*.csproj text=auto
-*.vbproj text=auto
-*.fsproj text=auto
-*.dbproj text=auto
-*.sln text=auto eol=crlf
-
-*.sh eol=lf
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
deleted file mode 100644
index 101a084f0a..0000000000
--- a/.github/ISSUE_TEMPLATE.md
+++ /dev/null
@@ -1,3 +0,0 @@
-THIS ISSUE TRACKER IS CLOSED - please log new issues here: https://github.com/aspnet/Home/issues
-
-For information about this change, see https://github.com/aspnet/Announcements/issues/283
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 1ce76e50c8..0000000000
--- a/.gitignore
+++ /dev/null
@@ -1,36 +0,0 @@
-[Oo]bj/
-[Bb]in/
-TestResults/
-.nuget/
-.build/
-.testPublish/
-*.sln.ide/
-_ReSharper.*/
-packages/
-artifacts/
-PublishProfiles/
-.vs/
-debugSettings.json
-project.lock.json
-*.user
-*.suo
-*.cache
-*.docstates
-_ReSharper.*
-nuget.exe
-*net45.csproj
-*net451.csproj
-*k10.csproj
-*.psess
-*.vsp
-*.pidb
-*.userprefs
-*DS_Store
-*.ncrunchsolution
-*.*sdf
-*.ipch
-*.sln.ide
-*launchSettings.json
-**/Resources/*.Designer.cs
-.vscode/
-global.json
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index ab3980055c..0000000000
--- a/.travis.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-language: csharp
-sudo: false
-dist: trusty
-env:
- global:
- - DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
- - DOTNET_CLI_TELEMETRY_OPTOUT: 1
-mono: none
-os:
-- linux
-- osx
-osx_image: xcode8.2
-addons:
- apt:
- packages:
- - libunwind8
-branches:
- only:
- - master
- - /^release\/.*$/
- - /^(.*\/)?ci-.*$/
-before_install:
-- if test "$TRAVIS_OS_NAME" == "osx"; then brew update; brew install openssl; ln -s
- /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib /usr/local/lib/; ln -s /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
- /usr/local/lib/; fi
-script:
-- ./build.sh
diff --git a/.vsts-pipelines/builds/ci-internal.yml b/.vsts-pipelines/builds/ci-internal.yml
deleted file mode 100644
index c2c5336fd0..0000000000
--- a/.vsts-pipelines/builds/ci-internal.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-trigger:
-- master
-- release/*
-
-resources:
- repositories:
- - repository: buildtools
- type: git
- name: aspnet-BuildTools
- ref: refs/heads/master
-
-phases:
-- template: .vsts-pipelines/templates/project-ci.yml@buildtools
diff --git a/.vsts-pipelines/builds/ci-public.yml b/.vsts-pipelines/builds/ci-public.yml
deleted file mode 100644
index 507c89b025..0000000000
--- a/.vsts-pipelines/builds/ci-public.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-trigger:
-- master
-- release/*
-
-# See https://github.com/aspnet/BuildTools
-resources:
- repositories:
- - repository: buildtools
- type: github
- endpoint: DotNet-Bot GitHub Connection
- name: aspnet/BuildTools
- ref: refs/heads/master
-
-phases:
-- template: .vsts-pipelines/templates/project-ci.yml@buildtools
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
deleted file mode 100644
index eac4268e4c..0000000000
--- a/CONTRIBUTING.md
+++ /dev/null
@@ -1,4 +0,0 @@
-Contributing
-======
-
-Information on contributing to this repo is in the [Contributing Guide](https://github.com/aspnet/Home/blob/master/CONTRIBUTING.md) in the Home repo.
diff --git a/Directory.Build.props b/Directory.Build.props
deleted file mode 100644
index 2c0546536f..0000000000
--- a/Directory.Build.props
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
- https://github.com/aspnet/Localization
- git
- $(MSBuildThisFileDirectory)
- $(MSBuildThisFileDirectory)build\Key.snk
- true
- true
-
-
diff --git a/Directory.Build.targets b/Directory.Build.targets
deleted file mode 100644
index 866bbb6d63..0000000000
--- a/Directory.Build.targets
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
- $(MicrosoftNETCoreAppPackageVersion)
- $(NETStandardLibrary20PackageVersion)
-
-
diff --git a/LICENSE.txt b/LICENSE.txt
deleted file mode 100644
index b3b180cd51..0000000000
--- a/LICENSE.txt
+++ /dev/null
@@ -1,201 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright (c) .NET Foundation and Contributors
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/Localization.sln b/Localization.sln
deleted file mode 100644
index 28d7473058..0000000000
--- a/Localization.sln
+++ /dev/null
@@ -1,122 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.26730.10
-MinimumVisualStudioVersion = 15.0.26730.03
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{FB313677-BAB3-4E49-8CDB-4FA4A9564767}"
- ProjectSection(SolutionItems) = preProject
- src\Directory.Build.props = src\Directory.Build.props
- EndProjectSection
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Localization", "src\Microsoft.Extensions.Localization\Microsoft.Extensions.Localization.csproj", "{29743CFF-120E-40EB-9B89-5818425946FA}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Localization", "src\Microsoft.AspNetCore.Localization\Microsoft.AspNetCore.Localization.csproj", "{23E3BC23-3464-4D9B-BF78-02CB2182BEF0}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Localization.Abstractions", "src\Microsoft.Extensions.Localization.Abstractions\Microsoft.Extensions.Localization.Abstractions.csproj", "{A1FCF259-70F6-4605-AA2D-E4B356BE771A}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{79878809-8D1C-4BD4-BA99-F1F13FF96FD8}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LocalizationSample", "samples\LocalizationSample\LocalizationSample.csproj", "{55D9501F-15B9-4339-A0AB-6082850E5FCE}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{B723DB83-A670-4BCB-95FB-195361331AD2}"
- ProjectSection(SolutionItems) = preProject
- test\Directory.Build.props = test\Directory.Build.props
- EndProjectSection
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Localization.Tests", "test\Microsoft.Extensions.Localization.Tests\Microsoft.Extensions.Localization.Tests.csproj", "{287AD58D-DF34-4F16-8616-FD78FA1CADF9}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Localization.Tests", "test\Microsoft.AspNetCore.Localization.Tests\Microsoft.AspNetCore.Localization.Tests.csproj", "{19A2A931-5C60-47A0-816A-0DC9C4CE5736}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LocalizationWebsite", "test\LocalizationWebsite\LocalizationWebsite.csproj", "{EF6C7431-2FB8-4396-8947-F50F31689AF4}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Localization.FunctionalTests", "test\Microsoft.AspNetCore.Localization.FunctionalTests\Microsoft.AspNetCore.Localization.FunctionalTests.csproj", "{B1B441BA-3AC8-49F8-850D-E5A178E77DE2}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ResourcesClassLibraryWithAttribute", "test\ResourcesClassLibraryWithAttribute\ResourcesClassLibraryWithAttribute.csproj", "{F27639B9-913E-43AF-9D64-BBD98D9A420A}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ResourcesClassLibraryNoAttribute", "test\ResourcesClassLibraryNoAttribute\ResourcesClassLibraryNoAttribute.csproj", "{34740578-D5B5-4FB4-AFD4-5E87B5443E20}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Localization.Routing", "src\Microsoft.AspNetCore.Localization.Routing\Microsoft.AspNetCore.Localization.Routing.csproj", "{E1B8DA18-7885-40ED-94ED-881BB0804F23}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Localization.Routing.Tests", "test\Microsoft.AspNetCore.Localization.Routing.Tests\Microsoft.AspNetCore.Localization.Routing.Tests.csproj", "{375B000B-5DC0-4D16-AC0C-A5432D8E7581}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{169AE1E1-72E6-45FB-B986-31E9A14DE3A9}"
- ProjectSection(SolutionItems) = preProject
- Directory.Build.props = Directory.Build.props
- Directory.Build.targets = Directory.Build.targets
- EndProjectSection
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Release|Any CPU = Release|Any CPU
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {29743CFF-120E-40EB-9B89-5818425946FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {29743CFF-120E-40EB-9B89-5818425946FA}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {29743CFF-120E-40EB-9B89-5818425946FA}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {29743CFF-120E-40EB-9B89-5818425946FA}.Release|Any CPU.Build.0 = Release|Any CPU
- {23E3BC23-3464-4D9B-BF78-02CB2182BEF0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {23E3BC23-3464-4D9B-BF78-02CB2182BEF0}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {23E3BC23-3464-4D9B-BF78-02CB2182BEF0}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {23E3BC23-3464-4D9B-BF78-02CB2182BEF0}.Release|Any CPU.Build.0 = Release|Any CPU
- {A1FCF259-70F6-4605-AA2D-E4B356BE771A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {A1FCF259-70F6-4605-AA2D-E4B356BE771A}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {A1FCF259-70F6-4605-AA2D-E4B356BE771A}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {A1FCF259-70F6-4605-AA2D-E4B356BE771A}.Release|Any CPU.Build.0 = Release|Any CPU
- {55D9501F-15B9-4339-A0AB-6082850E5FCE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {55D9501F-15B9-4339-A0AB-6082850E5FCE}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {55D9501F-15B9-4339-A0AB-6082850E5FCE}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {55D9501F-15B9-4339-A0AB-6082850E5FCE}.Release|Any CPU.Build.0 = Release|Any CPU
- {287AD58D-DF34-4F16-8616-FD78FA1CADF9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {287AD58D-DF34-4F16-8616-FD78FA1CADF9}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {287AD58D-DF34-4F16-8616-FD78FA1CADF9}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {287AD58D-DF34-4F16-8616-FD78FA1CADF9}.Release|Any CPU.Build.0 = Release|Any CPU
- {19A2A931-5C60-47A0-816A-0DC9C4CE5736}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {19A2A931-5C60-47A0-816A-0DC9C4CE5736}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {19A2A931-5C60-47A0-816A-0DC9C4CE5736}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {19A2A931-5C60-47A0-816A-0DC9C4CE5736}.Release|Any CPU.Build.0 = Release|Any CPU
- {EF6C7431-2FB8-4396-8947-F50F31689AF4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {EF6C7431-2FB8-4396-8947-F50F31689AF4}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {EF6C7431-2FB8-4396-8947-F50F31689AF4}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {EF6C7431-2FB8-4396-8947-F50F31689AF4}.Release|Any CPU.Build.0 = Release|Any CPU
- {B1B441BA-3AC8-49F8-850D-E5A178E77DE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {B1B441BA-3AC8-49F8-850D-E5A178E77DE2}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {B1B441BA-3AC8-49F8-850D-E5A178E77DE2}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {B1B441BA-3AC8-49F8-850D-E5A178E77DE2}.Release|Any CPU.Build.0 = Release|Any CPU
- {F27639B9-913E-43AF-9D64-BBD98D9A420A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {F27639B9-913E-43AF-9D64-BBD98D9A420A}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {F27639B9-913E-43AF-9D64-BBD98D9A420A}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {F27639B9-913E-43AF-9D64-BBD98D9A420A}.Release|Any CPU.Build.0 = Release|Any CPU
- {34740578-D5B5-4FB4-AFD4-5E87B5443E20}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {34740578-D5B5-4FB4-AFD4-5E87B5443E20}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {34740578-D5B5-4FB4-AFD4-5E87B5443E20}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {34740578-D5B5-4FB4-AFD4-5E87B5443E20}.Release|Any CPU.Build.0 = Release|Any CPU
- {E1B8DA18-7885-40ED-94ED-881BB0804F23}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {E1B8DA18-7885-40ED-94ED-881BB0804F23}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {E1B8DA18-7885-40ED-94ED-881BB0804F23}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {E1B8DA18-7885-40ED-94ED-881BB0804F23}.Release|Any CPU.Build.0 = Release|Any CPU
- {375B000B-5DC0-4D16-AC0C-A5432D8E7581}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {375B000B-5DC0-4D16-AC0C-A5432D8E7581}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {375B000B-5DC0-4D16-AC0C-A5432D8E7581}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {375B000B-5DC0-4D16-AC0C-A5432D8E7581}.Release|Any CPU.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(NestedProjects) = preSolution
- {29743CFF-120E-40EB-9B89-5818425946FA} = {FB313677-BAB3-4E49-8CDB-4FA4A9564767}
- {23E3BC23-3464-4D9B-BF78-02CB2182BEF0} = {FB313677-BAB3-4E49-8CDB-4FA4A9564767}
- {A1FCF259-70F6-4605-AA2D-E4B356BE771A} = {FB313677-BAB3-4E49-8CDB-4FA4A9564767}
- {55D9501F-15B9-4339-A0AB-6082850E5FCE} = {79878809-8D1C-4BD4-BA99-F1F13FF96FD8}
- {287AD58D-DF34-4F16-8616-FD78FA1CADF9} = {B723DB83-A670-4BCB-95FB-195361331AD2}
- {19A2A931-5C60-47A0-816A-0DC9C4CE5736} = {B723DB83-A670-4BCB-95FB-195361331AD2}
- {EF6C7431-2FB8-4396-8947-F50F31689AF4} = {B723DB83-A670-4BCB-95FB-195361331AD2}
- {B1B441BA-3AC8-49F8-850D-E5A178E77DE2} = {B723DB83-A670-4BCB-95FB-195361331AD2}
- {F27639B9-913E-43AF-9D64-BBD98D9A420A} = {B723DB83-A670-4BCB-95FB-195361331AD2}
- {34740578-D5B5-4FB4-AFD4-5E87B5443E20} = {B723DB83-A670-4BCB-95FB-195361331AD2}
- {E1B8DA18-7885-40ED-94ED-881BB0804F23} = {FB313677-BAB3-4E49-8CDB-4FA4A9564767}
- {375B000B-5DC0-4D16-AC0C-A5432D8E7581} = {B723DB83-A670-4BCB-95FB-195361331AD2}
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {23714C47-0F03-4BF3-9E01-1CC2AA537A46}
- EndGlobalSection
-EndGlobal
diff --git a/NuGet.config b/NuGet.config
deleted file mode 100644
index e32bddfd51..0000000000
--- a/NuGet.config
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/NuGetPackageVerifier.json b/NuGetPackageVerifier.json
deleted file mode 100644
index b153ab1515..0000000000
--- a/NuGetPackageVerifier.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "Default": {
- "rules": [
- "DefaultCompositeRule"
- ]
- }
-}
\ No newline at end of file
diff --git a/README.md b/README.md
deleted file mode 100644
index 3547f19c29..0000000000
--- a/README.md
+++ /dev/null
@@ -1,8 +0,0 @@
-Localization [Archived]
-=======================
-
-**This GitHub project has been archived.** Ongoing development on this project can be found in .
-
-Localization abstractions and implementations for ASP.NET Core applications.
-
-This project is part of ASP.NET Core. You can find samples, documentation and getting started instructions for ASP.NET Core at the [AspNetCore](https://github.com/aspnet/AspNetCore) repo.
diff --git a/build.cmd b/build.cmd
deleted file mode 100644
index c0050bda12..0000000000
--- a/build.cmd
+++ /dev/null
@@ -1,2 +0,0 @@
-@ECHO OFF
-PowerShell -NoProfile -NoLogo -ExecutionPolicy unrestricted -Command "[System.Threading.Thread]::CurrentThread.CurrentCulture = ''; [System.Threading.Thread]::CurrentThread.CurrentUICulture = '';& '%~dp0run.ps1' default-build %*; exit $LASTEXITCODE"
diff --git a/build.sh b/build.sh
deleted file mode 100755
index 98a4b22765..0000000000
--- a/build.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env bash
-
-set -euo pipefail
-DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-
-# Call "sync" between "chmod" and execution to prevent "text file busy" error in Docker (aufs)
-chmod +x "$DIR/run.sh"; sync
-"$DIR/run.sh" default-build "$@"
diff --git a/build/Key.snk b/build/Key.snk
deleted file mode 100644
index e10e4889c1..0000000000
Binary files a/build/Key.snk and /dev/null differ
diff --git a/build/dependencies.props b/build/dependencies.props
deleted file mode 100644
index 20ab2e419e..0000000000
--- a/build/dependencies.props
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
- $(MSBuildAllProjects);$(MSBuildThisFileFullPath)
-
-
- 3.0.0-build-20181114.5
- 3.0.0-alpha1-10742
- 3.0.0-alpha1-10742
- 3.0.0-alpha1-10742
- 3.0.0-alpha1-10742
- 3.0.0-alpha1-10742
- 3.0.0-alpha1-10742
- 3.0.0-preview-181113-11
- 3.0.0-preview-181113-11
- 3.0.0-preview-181113-11
- 3.0.0-preview-181113-11
- 3.0.0-preview-181113-11
- 3.0.0-preview-181113-11
- 3.0.0-preview-181113-11
- 3.0.0-preview-181113-11
- 3.0.0-preview-181113-11
- 3.0.0-preview1-26907-05
- 15.6.1
- 4.10.0
- 2.0.3
- 2.3.1
- 2.4.0
-
-
-
-
diff --git a/build/repo.props b/build/repo.props
deleted file mode 100644
index 11b348163e..0000000000
--- a/build/repo.props
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
- Internal.AspNetCore.Universe.Lineup
- https://dotnet.myget.org/F/aspnetcore-dev/api/v3/index.json
-
-
-
-
-
-
diff --git a/build/sources.props b/build/sources.props
deleted file mode 100644
index 9215df9751..0000000000
--- a/build/sources.props
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
- $(DotNetRestoreSources)
-
- $(RestoreSources);
- https://dotnet.myget.org/F/dotnet-core/api/v3/index.json;
- https://dotnet.myget.org/F/aspnetcore-dev/api/v3/index.json;
- https://dotnet.myget.org/F/aspnetcore-tools/api/v3/index.json;
-
-
- $(RestoreSources);
- https://api.nuget.org/v3/index.json;
-
-
-
diff --git a/korebuild-lock.txt b/korebuild-lock.txt
deleted file mode 100644
index 73613543d0..0000000000
--- a/korebuild-lock.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-version:3.0.0-build-20181114.5
-commithash:880e9a204d4ee4a18dfd83c9fb05a192a28bca60
diff --git a/korebuild.json b/korebuild.json
deleted file mode 100644
index 8a276a7f35..0000000000
--- a/korebuild.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "$schema": "https://raw.githubusercontent.com/aspnet/BuildTools/master/tools/korebuild.schema.json",
- "channel": "master"
-}
diff --git a/run.cmd b/run.cmd
deleted file mode 100644
index d52d5c7e68..0000000000
--- a/run.cmd
+++ /dev/null
@@ -1,2 +0,0 @@
-@ECHO OFF
-PowerShell -NoProfile -NoLogo -ExecutionPolicy unrestricted -Command "[System.Threading.Thread]::CurrentThread.CurrentCulture = ''; [System.Threading.Thread]::CurrentThread.CurrentUICulture = '';& '%~dp0run.ps1' %*; exit $LASTEXITCODE"
diff --git a/run.ps1 b/run.ps1
deleted file mode 100644
index 34604c7175..0000000000
--- a/run.ps1
+++ /dev/null
@@ -1,209 +0,0 @@
-#!/usr/bin/env powershell
-#requires -version 4
-
-<#
-.SYNOPSIS
-Executes KoreBuild commands.
-
-.DESCRIPTION
-Downloads korebuild if required. Then executes the KoreBuild command. To see available commands, execute with `-Command help`.
-
-.PARAMETER Command
-The KoreBuild command to run.
-
-.PARAMETER Path
-The folder to build. Defaults to the folder containing this script.
-
-.PARAMETER Channel
-The channel of KoreBuild to download. Overrides the value from the config file.
-
-.PARAMETER DotNetHome
-The directory where .NET Core tools will be stored.
-
-.PARAMETER ToolsSource
-The base url where build tools can be downloaded. Overrides the value from the config file.
-
-.PARAMETER Update
-Updates KoreBuild to the latest version even if a lock file is present.
-
-.PARAMETER Reinstall
-Re-installs KoreBuild
-
-.PARAMETER ConfigFile
-The path to the configuration file that stores values. Defaults to korebuild.json.
-
-.PARAMETER ToolsSourceSuffix
-The Suffix to append to the end of the ToolsSource. Useful for query strings in blob stores.
-
-.PARAMETER CI
-Sets up CI specific settings and variables.
-
-.PARAMETER Arguments
-Arguments to be passed to the command
-
-.NOTES
-This function will create a file $PSScriptRoot/korebuild-lock.txt. This lock file can be committed to source, but does not have to be.
-When the lockfile is not present, KoreBuild will create one using latest available version from $Channel.
-
-The $ConfigFile is expected to be an JSON file. It is optional, and the configuration values in it are optional as well. Any options set
-in the file are overridden by command line parameters.
-
-.EXAMPLE
-Example config file:
-```json
-{
- "$schema": "https://raw.githubusercontent.com/aspnet/BuildTools/master/tools/korebuild.schema.json",
- "channel": "master",
- "toolsSource": "https://aspnetcore.blob.core.windows.net/buildtools"
-}
-```
-#>
-[CmdletBinding(PositionalBinding = $false)]
-param(
- [Parameter(Mandatory = $true, Position = 0)]
- [string]$Command,
- [string]$Path = $PSScriptRoot,
- [Alias('c')]
- [string]$Channel,
- [Alias('d')]
- [string]$DotNetHome,
- [Alias('s')]
- [string]$ToolsSource,
- [Alias('u')]
- [switch]$Update,
- [switch]$Reinstall,
- [string]$ToolsSourceSuffix,
- [string]$ConfigFile = $null,
- [switch]$CI,
- [Parameter(ValueFromRemainingArguments = $true)]
- [string[]]$Arguments
-)
-
-Set-StrictMode -Version 2
-$ErrorActionPreference = 'Stop'
-
-#
-# Functions
-#
-
-function Get-KoreBuild {
-
- $lockFile = Join-Path $Path 'korebuild-lock.txt'
-
- if (!(Test-Path $lockFile) -or $Update) {
- Get-RemoteFile "$ToolsSource/korebuild/channels/$Channel/latest.txt" $lockFile $ToolsSourceSuffix
- }
-
- $version = Get-Content $lockFile | Where-Object { $_ -like 'version:*' } | Select-Object -first 1
- if (!$version) {
- Write-Error "Failed to parse version from $lockFile. Expected a line that begins with 'version:'"
- }
- $version = $version.TrimStart('version:').Trim()
- $korebuildPath = Join-Paths $DotNetHome ('buildtools', 'korebuild', $version)
-
- if ($Reinstall -and (Test-Path $korebuildPath)) {
- Remove-Item -Force -Recurse $korebuildPath
- }
-
- if (!(Test-Path $korebuildPath)) {
- Write-Host -ForegroundColor Magenta "Downloading KoreBuild $version"
- New-Item -ItemType Directory -Path $korebuildPath | Out-Null
- $remotePath = "$ToolsSource/korebuild/artifacts/$version/korebuild.$version.zip"
-
- try {
- $tmpfile = Join-Path ([IO.Path]::GetTempPath()) "KoreBuild-$([guid]::NewGuid()).zip"
- Get-RemoteFile $remotePath $tmpfile $ToolsSourceSuffix
- if (Get-Command -Name 'Microsoft.PowerShell.Archive\Expand-Archive' -ErrorAction Ignore) {
- # Use built-in commands where possible as they are cross-plat compatible
- Microsoft.PowerShell.Archive\Expand-Archive -Path $tmpfile -DestinationPath $korebuildPath
- }
- else {
- # Fallback to old approach for old installations of PowerShell
- Add-Type -AssemblyName System.IO.Compression.FileSystem
- [System.IO.Compression.ZipFile]::ExtractToDirectory($tmpfile, $korebuildPath)
- }
- }
- catch {
- Remove-Item -Recurse -Force $korebuildPath -ErrorAction Ignore
- throw
- }
- finally {
- Remove-Item $tmpfile -ErrorAction Ignore
- }
- }
-
- return $korebuildPath
-}
-
-function Join-Paths([string]$path, [string[]]$childPaths) {
- $childPaths | ForEach-Object { $path = Join-Path $path $_ }
- return $path
-}
-
-function Get-RemoteFile([string]$RemotePath, [string]$LocalPath, [string]$RemoteSuffix) {
- if ($RemotePath -notlike 'http*') {
- Copy-Item $RemotePath $LocalPath
- return
- }
-
- $retries = 10
- while ($retries -gt 0) {
- $retries -= 1
- try {
- Invoke-WebRequest -UseBasicParsing -Uri $($RemotePath + $RemoteSuffix) -OutFile $LocalPath
- return
- }
- catch {
- Write-Verbose "Request failed. $retries retries remaining"
- }
- }
-
- Write-Error "Download failed: '$RemotePath'."
-}
-
-#
-# Main
-#
-
-# Load configuration or set defaults
-
-$Path = Resolve-Path $Path
-if (!$ConfigFile) { $ConfigFile = Join-Path $Path 'korebuild.json' }
-
-if (Test-Path $ConfigFile) {
- try {
- $config = Get-Content -Raw -Encoding UTF8 -Path $ConfigFile | ConvertFrom-Json
- if ($config) {
- if (!($Channel) -and (Get-Member -Name 'channel' -InputObject $config)) { [string] $Channel = $config.channel }
- if (!($ToolsSource) -and (Get-Member -Name 'toolsSource' -InputObject $config)) { [string] $ToolsSource = $config.toolsSource}
- }
- }
- catch {
- Write-Host -ForegroundColor Red $Error[0]
- Write-Error "$ConfigFile contains invalid JSON."
- exit 1
- }
-}
-
-if (!$DotNetHome) {
- $DotNetHome = if ($env:DOTNET_HOME) { $env:DOTNET_HOME } `
- elseif ($env:USERPROFILE) { Join-Path $env:USERPROFILE '.dotnet'} `
- elseif ($env:HOME) {Join-Path $env:HOME '.dotnet'}`
- else { Join-Path $PSScriptRoot '.dotnet'}
-}
-
-if (!$Channel) { $Channel = 'master' }
-if (!$ToolsSource) { $ToolsSource = 'https://aspnetcore.blob.core.windows.net/buildtools' }
-
-# Execute
-
-$korebuildPath = Get-KoreBuild
-Import-Module -Force -Scope Local (Join-Path $korebuildPath 'KoreBuild.psd1')
-
-try {
- Set-KoreBuildSettings -ToolsSource $ToolsSource -DotNetHome $DotNetHome -RepoPath $Path -ConfigFile $ConfigFile -CI:$CI
- Invoke-KoreBuildCommand $Command @Arguments
-}
-finally {
- Remove-Module 'KoreBuild' -ErrorAction Ignore
-}
diff --git a/run.sh b/run.sh
deleted file mode 100755
index 4c1fed5646..0000000000
--- a/run.sh
+++ /dev/null
@@ -1,256 +0,0 @@
-#!/usr/bin/env bash
-
-set -euo pipefail
-
-#
-# variables
-#
-
-RESET="\033[0m"
-RED="\033[0;31m"
-YELLOW="\033[0;33m"
-MAGENTA="\033[0;95m"
-DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-[ -z "${DOTNET_HOME:-}" ] && DOTNET_HOME="$HOME/.dotnet"
-verbose=false
-update=false
-reinstall=false
-repo_path="$DIR"
-channel=''
-tools_source=''
-tools_source_suffix=''
-ci=false
-
-#
-# Functions
-#
-__usage() {
- echo "Usage: $(basename "${BASH_SOURCE[0]}") command [options] [[--] ...]"
- echo ""
- echo "Arguments:"
- echo " command The command to be run."
- echo " ... Arguments passed to the command. Variable number of arguments allowed."
- echo ""
- echo "Options:"
- echo " --verbose Show verbose output."
- echo " -c|--channel The channel of KoreBuild to download. Overrides the value from the config file.."
- echo " --config-file The path to the configuration file that stores values. Defaults to korebuild.json."
- echo " -d|--dotnet-home The directory where .NET Core tools will be stored. Defaults to '\$DOTNET_HOME' or '\$HOME/.dotnet."
- echo " --path The directory to build. Defaults to the directory containing the script."
- echo " -s|--tools-source|-ToolsSource The base url where build tools can be downloaded. Overrides the value from the config file."
- echo " --tools-source-suffix|-ToolsSourceSuffix The suffix to append to tools-source. Useful for query strings."
- echo " -u|--update Update to the latest KoreBuild even if the lock file is present."
- echo " --reinstall Reinstall KoreBuild."
- echo " --ci Apply CI specific settings and environment variables."
- echo ""
- echo "Description:"
- echo " This function will create a file \$DIR/korebuild-lock.txt. This lock file can be committed to source, but does not have to be."
- echo " When the lockfile is not present, KoreBuild will create one using latest available version from \$channel."
-
- if [[ "${1:-}" != '--no-exit' ]]; then
- exit 2
- fi
-}
-
-get_korebuild() {
- local version
- local lock_file="$repo_path/korebuild-lock.txt"
- if [ ! -f "$lock_file" ] || [ "$update" = true ]; then
- __get_remote_file "$tools_source/korebuild/channels/$channel/latest.txt" "$lock_file" "$tools_source_suffix"
- fi
- version="$(grep 'version:*' -m 1 "$lock_file")"
- if [[ "$version" == '' ]]; then
- __error "Failed to parse version from $lock_file. Expected a line that begins with 'version:'"
- return 1
- fi
- version="$(echo "${version#version:}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')"
- local korebuild_path="$DOTNET_HOME/buildtools/korebuild/$version"
-
- if [ "$reinstall" = true ] && [ -d "$korebuild_path" ]; then
- rm -rf "$korebuild_path"
- fi
-
- {
- if [ ! -d "$korebuild_path" ]; then
- mkdir -p "$korebuild_path"
- local remote_path="$tools_source/korebuild/artifacts/$version/korebuild.$version.zip"
- tmpfile="$(mktemp)"
- echo -e "${MAGENTA}Downloading KoreBuild ${version}${RESET}"
- if __get_remote_file "$remote_path" "$tmpfile" "$tools_source_suffix"; then
- unzip -q -d "$korebuild_path" "$tmpfile"
- fi
- rm "$tmpfile" || true
- fi
-
- source "$korebuild_path/KoreBuild.sh"
- } || {
- if [ -d "$korebuild_path" ]; then
- echo "Cleaning up after failed installation"
- rm -rf "$korebuild_path" || true
- fi
- return 1
- }
-}
-
-__error() {
- echo -e "${RED}error: $*${RESET}" 1>&2
-}
-
-__warn() {
- echo -e "${YELLOW}warning: $*${RESET}"
-}
-
-__machine_has() {
- hash "$1" > /dev/null 2>&1
- return $?
-}
-
-__get_remote_file() {
- local remote_path=$1
- local local_path=$2
- local remote_path_suffix=$3
-
- if [[ "$remote_path" != 'http'* ]]; then
- cp "$remote_path" "$local_path"
- return 0
- fi
-
- local failed=false
- if __machine_has wget; then
- wget --tries 10 --quiet -O "$local_path" "${remote_path}${remote_path_suffix}" || failed=true
- else
- failed=true
- fi
-
- if [ "$failed" = true ] && __machine_has curl; then
- failed=false
- curl --retry 10 -sSL -f --create-dirs -o "$local_path" "${remote_path}${remote_path_suffix}" || failed=true
- fi
-
- if [ "$failed" = true ]; then
- __error "Download failed: $remote_path" 1>&2
- return 1
- fi
-}
-
-#
-# main
-#
-
-command="${1:-}"
-shift
-
-while [[ $# -gt 0 ]]; do
- case $1 in
- -\?|-h|--help)
- __usage --no-exit
- exit 0
- ;;
- -c|--channel|-Channel)
- shift
- channel="${1:-}"
- [ -z "$channel" ] && __usage
- ;;
- --config-file|-ConfigFile)
- shift
- config_file="${1:-}"
- [ -z "$config_file" ] && __usage
- if [ ! -f "$config_file" ]; then
- __error "Invalid value for --config-file. $config_file does not exist."
- exit 1
- fi
- ;;
- -d|--dotnet-home|-DotNetHome)
- shift
- DOTNET_HOME="${1:-}"
- [ -z "$DOTNET_HOME" ] && __usage
- ;;
- --path|-Path)
- shift
- repo_path="${1:-}"
- [ -z "$repo_path" ] && __usage
- ;;
- -s|--tools-source|-ToolsSource)
- shift
- tools_source="${1:-}"
- [ -z "$tools_source" ] && __usage
- ;;
- --tools-source-suffix|-ToolsSourceSuffix)
- shift
- tools_source_suffix="${1:-}"
- [ -z "$tools_source_suffix" ] && __usage
- ;;
- -u|--update|-Update)
- update=true
- ;;
- --reinstall|-[Rr]einstall)
- reinstall=true
- ;;
- --ci|-[Cc][Ii])
- ci=true
- ;;
- --verbose|-Verbose)
- verbose=true
- ;;
- --)
- shift
- break
- ;;
- *)
- break
- ;;
- esac
- shift
-done
-
-if ! __machine_has unzip; then
- __error 'Missing required command: unzip'
- exit 1
-fi
-
-if ! __machine_has curl && ! __machine_has wget; then
- __error 'Missing required command. Either wget or curl is required.'
- exit 1
-fi
-
-[ -z "${config_file:-}" ] && config_file="$repo_path/korebuild.json"
-if [ -f "$config_file" ]; then
- if __machine_has jq ; then
- if jq '.' "$config_file" >/dev/null ; then
- config_channel="$(jq -r 'select(.channel!=null) | .channel' "$config_file")"
- config_tools_source="$(jq -r 'select(.toolsSource!=null) | .toolsSource' "$config_file")"
- else
- __error "$config_file contains invalid JSON."
- exit 1
- fi
- elif __machine_has python ; then
- if python -c "import json,codecs;obj=json.load(codecs.open('$config_file', 'r', 'utf-8-sig'))" >/dev/null ; then
- config_channel="$(python -c "import json,codecs;obj=json.load(codecs.open('$config_file', 'r', 'utf-8-sig'));print(obj['channel'] if 'channel' in obj else '')")"
- config_tools_source="$(python -c "import json,codecs;obj=json.load(codecs.open('$config_file', 'r', 'utf-8-sig'));print(obj['toolsSource'] if 'toolsSource' in obj else '')")"
- else
- __error "$config_file contains invalid JSON."
- exit 1
- fi
- elif __machine_has python3 ; then
- if python3 -c "import json,codecs;obj=json.load(codecs.open('$config_file', 'r', 'utf-8-sig'))" >/dev/null ; then
- config_channel="$(python3 -c "import json,codecs;obj=json.load(codecs.open('$config_file', 'r', 'utf-8-sig'));print(obj['channel'] if 'channel' in obj else '')")"
- config_tools_source="$(python3 -c "import json,codecs;obj=json.load(codecs.open('$config_file', 'r', 'utf-8-sig'));print(obj['toolsSource'] if 'toolsSource' in obj else '')")"
- else
- __error "$config_file contains invalid JSON."
- exit 1
- fi
- else
- __error 'Missing required command: jq or python. Could not parse the JSON file.'
- exit 1
- fi
-
- [ ! -z "${config_channel:-}" ] && channel="$config_channel"
- [ ! -z "${config_tools_source:-}" ] && tools_source="$config_tools_source"
-fi
-
-[ -z "$channel" ] && channel='master'
-[ -z "$tools_source" ] && tools_source='https://aspnetcore.blob.core.windows.net/buildtools'
-
-get_korebuild
-set_korebuildsettings "$tools_source" "$DOTNET_HOME" "$repo_path" "$config_file" "$ci"
-invoke_korebuild_command "$command" "$@"
diff --git a/samples/LocalizationSample/LocalizationSample.csproj b/samples/LocalizationSample/LocalizationSample.csproj
deleted file mode 100644
index 36eeda36d8..0000000000
--- a/samples/LocalizationSample/LocalizationSample.csproj
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
- netcoreapp3.0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/Directory.Build.props b/src/Directory.Build.props
deleted file mode 100644
index 1e0980f663..0000000000
--- a/src/Directory.Build.props
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/src/Microsoft.Extensions.Localization.Abstractions/IStringLocalizer.cs b/src/Microsoft.Extensions.Localization.Abstractions/IStringLocalizer.cs
deleted file mode 100644
index 0e1145bbca..0000000000
--- a/src/Microsoft.Extensions.Localization.Abstractions/IStringLocalizer.cs
+++ /dev/null
@@ -1,45 +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.Collections.Generic;
-using System.Globalization;
-
-namespace Microsoft.Extensions.Localization
-{
- ///
- /// Represents a service that provides localized strings.
- ///
- public interface IStringLocalizer
- {
- ///
- /// Gets the string resource with the given name.
- ///
- /// The name of the string resource.
- /// The string resource as a .
- LocalizedString this[string name] { get; }
-
- ///
- /// Gets the string resource with the given name and formatted with the supplied arguments.
- ///
- /// The name of the string resource.
- /// The values to format the string with.
- /// The formatted string resource as a .
- LocalizedString this[string name, params object[] arguments] { get; }
-
- ///
- /// Gets all string resources.
- ///
- ///
- /// A indicating whether to include strings from parent cultures.
- ///
- /// The strings.
- IEnumerable GetAllStrings(bool includeParentCultures);
-
- ///
- /// Creates a new for a specific .
- ///
- /// The to use.
- /// A culture-specific .
- IStringLocalizer WithCulture(CultureInfo culture);
- }
-}
\ No newline at end of file
diff --git a/src/Microsoft.Extensions.Localization.Abstractions/IStringLocalizerFactory.cs b/src/Microsoft.Extensions.Localization.Abstractions/IStringLocalizerFactory.cs
deleted file mode 100644
index 559fa69c30..0000000000
--- a/src/Microsoft.Extensions.Localization.Abstractions/IStringLocalizerFactory.cs
+++ /dev/null
@@ -1,29 +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;
-
-namespace Microsoft.Extensions.Localization
-{
- ///
- /// Represents a factory that creates instances.
- ///
- public interface IStringLocalizerFactory
- {
- ///
- /// Creates an using the and
- /// of the specified .
- ///
- /// The .
- /// The .
- IStringLocalizer Create(Type resourceSource);
-
- ///
- /// Creates an .
- ///
- /// The base name of the resource to load strings from.
- /// The location to load resources from.
- /// The .
- IStringLocalizer Create(string baseName, string location);
- }
-}
\ No newline at end of file
diff --git a/src/Microsoft.Extensions.Localization.Abstractions/IStringLocalizerOfT.cs b/src/Microsoft.Extensions.Localization.Abstractions/IStringLocalizerOfT.cs
deleted file mode 100644
index 695678a900..0000000000
--- a/src/Microsoft.Extensions.Localization.Abstractions/IStringLocalizerOfT.cs
+++ /dev/null
@@ -1,14 +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.
-
-namespace Microsoft.Extensions.Localization
-{
- ///
- /// Represents an that provides strings for .
- ///
- /// The to provide strings for.
- public interface IStringLocalizer : IStringLocalizer
- {
-
- }
-}
\ No newline at end of file
diff --git a/src/Microsoft.Extensions.Localization.Abstractions/LocalizedString.cs b/src/Microsoft.Extensions.Localization.Abstractions/LocalizedString.cs
deleted file mode 100644
index 6556da40a0..0000000000
--- a/src/Microsoft.Extensions.Localization.Abstractions/LocalizedString.cs
+++ /dev/null
@@ -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;
-
-namespace Microsoft.Extensions.Localization
-{
- ///
- /// A locale specific string.
- ///
- public class LocalizedString
- {
- ///
- /// Creates a new .
- ///
- /// The name of the string in the resource it was loaded from.
- /// The actual string.
- public LocalizedString(string name, string value)
- : this(name, value, resourceNotFound: false)
- {
- }
-
- ///
- /// Creates a new .
- ///
- /// The name of the string in the resource it was loaded from.
- /// The actual string.
- /// Whether the string was not found in a resource. Set this to true to indicate an alternate string value was used.
- public LocalizedString(string name, string value, bool resourceNotFound)
- : this(name, value, resourceNotFound, searchedLocation: null)
- {
- }
-
- ///
- /// Creates a new .
- ///
- /// The name of the string in the resource it was loaded from.
- /// The actual string.
- /// Whether the string was not found in a resource. Set this to true to indicate an alternate string value was used.
- /// The location which was searched for a localization value.
- public LocalizedString(string name, string value, bool resourceNotFound, string searchedLocation)
- {
- if (name == null)
- {
- throw new ArgumentNullException(nameof(name));
- }
-
- if (value == null)
- {
- throw new ArgumentNullException(nameof(value));
- }
-
- Name = name;
- Value = value;
- ResourceNotFound = resourceNotFound;
- SearchedLocation = searchedLocation;
- }
-
- public static implicit operator string(LocalizedString localizedString)
- {
- return localizedString?.Value;
- }
-
- ///
- /// The name of the string in the resource it was loaded from.
- ///
- public string Name { get; }
-
- ///
- /// The actual string.
- ///
- public string Value { get; }
-
- ///
- /// Whether the string was not found in a resource. If true, an alternate string value was used.
- ///
- public bool ResourceNotFound { get; }
-
- ///
- /// The location which was searched for a localization value.
- ///
- public string SearchedLocation { get; }
-
- ///
- /// Returns the actual string.
- ///
- /// The actual string.
- public override string ToString() => Value;
- }
-}
\ No newline at end of file
diff --git a/src/Microsoft.Extensions.Localization.Abstractions/Microsoft.Extensions.Localization.Abstractions.csproj b/src/Microsoft.Extensions.Localization.Abstractions/Microsoft.Extensions.Localization.Abstractions.csproj
deleted file mode 100644
index 8508eb071a..0000000000
--- a/src/Microsoft.Extensions.Localization.Abstractions/Microsoft.Extensions.Localization.Abstractions.csproj
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
- Microsoft .NET Extensions
- Abstractions of application localization services.
-Commonly used types:
-Microsoft.Extensions.Localization.IStringLocalizer
-Microsoft.Extensions.Localization.IStringLocalizer<T>
- netstandard2.0
- $(NoWarn);CS1591
- true
- localization
-
-
-
diff --git a/src/Microsoft.Extensions.Localization.Abstractions/StringLocalizerExtensions.cs b/src/Microsoft.Extensions.Localization.Abstractions/StringLocalizerExtensions.cs
deleted file mode 100644
index bde47f74f3..0000000000
--- a/src/Microsoft.Extensions.Localization.Abstractions/StringLocalizerExtensions.cs
+++ /dev/null
@@ -1,74 +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.Collections.Generic;
-
-namespace Microsoft.Extensions.Localization
-{
- public static class StringLocalizerExtensions
- {
- ///
- /// Gets the string resource with the given name.
- ///
- /// The .
- /// The name of the string resource.
- /// The string resource as a .
- public static LocalizedString GetString(
- this IStringLocalizer stringLocalizer,
- string name)
- {
- if (stringLocalizer == null)
- {
- throw new ArgumentNullException(nameof(stringLocalizer));
- }
-
- if (name == null)
- {
- throw new ArgumentNullException(nameof(name));
- }
-
- return stringLocalizer[name];
- }
-
- ///
- /// Gets the string resource with the given name and formatted with the supplied arguments.
- ///
- /// The .
- /// The name of the string resource.
- /// The values to format the string with.
- /// The formatted string resource as a .
- public static LocalizedString GetString(
- this IStringLocalizer stringLocalizer,
- string name,
- params object[] arguments)
- {
- if (stringLocalizer == null)
- {
- throw new ArgumentNullException(nameof(stringLocalizer));
- }
-
- if (name == null)
- {
- throw new ArgumentNullException(nameof(name));
- }
-
- return stringLocalizer[name, arguments];
- }
-
- ///
- /// Gets all string resources including those for parent cultures.
- ///
- /// The .
- /// The string resources.
- public static IEnumerable GetAllStrings(this IStringLocalizer stringLocalizer)
- {
- if (stringLocalizer == null)
- {
- throw new ArgumentNullException(nameof(stringLocalizer));
- }
-
- return stringLocalizer.GetAllStrings(includeParentCultures: true);
- }
- }
-}
diff --git a/src/Microsoft.Extensions.Localization.Abstractions/StringLocalizerOfT.cs b/src/Microsoft.Extensions.Localization.Abstractions/StringLocalizerOfT.cs
deleted file mode 100644
index 131c1126ec..0000000000
--- a/src/Microsoft.Extensions.Localization.Abstractions/StringLocalizerOfT.cs
+++ /dev/null
@@ -1,67 +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.Collections.Generic;
-using System.Globalization;
-
-namespace Microsoft.Extensions.Localization
-{
- ///
- /// Provides strings for .
- ///
- /// The to provide strings for.
- public class StringLocalizer : IStringLocalizer
- {
- private IStringLocalizer _localizer;
-
- ///
- /// Creates a new .
- ///
- /// The to use.
- public StringLocalizer(IStringLocalizerFactory factory)
- {
- if (factory == null)
- {
- throw new ArgumentNullException(nameof(factory));
- }
-
- _localizer = factory.Create(typeof(TResourceSource));
- }
-
- ///
- public virtual IStringLocalizer WithCulture(CultureInfo culture) => _localizer.WithCulture(culture);
-
- ///
- public virtual LocalizedString this[string name]
- {
- get
- {
- if (name == null)
- {
- throw new ArgumentNullException(nameof(name));
- }
-
- return _localizer[name];
- }
- }
-
- ///
- public virtual LocalizedString this[string name, params object[] arguments]
- {
- get
- {
- if (name == null)
- {
- throw new ArgumentNullException(nameof(name));
- }
-
- return _localizer[name, arguments];
- }
- }
-
- ///
- public IEnumerable GetAllStrings(bool includeParentCultures) =>
- _localizer.GetAllStrings(includeParentCultures);
- }
-}
\ No newline at end of file
diff --git a/src/Microsoft.Extensions.Localization.Abstractions/baseline.netcore.json b/src/Microsoft.Extensions.Localization.Abstractions/baseline.netcore.json
deleted file mode 100644
index 02ba71db8e..0000000000
--- a/src/Microsoft.Extensions.Localization.Abstractions/baseline.netcore.json
+++ /dev/null
@@ -1,413 +0,0 @@
-{
- "AssemblyIdentity": "Microsoft.Extensions.Localization.Abstractions, Version=2.1.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60",
- "Types": [
- {
- "Name": "Microsoft.Extensions.Localization.IStringLocalizer",
- "Visibility": "Public",
- "Kind": "Interface",
- "Abstract": true,
- "ImplementedInterfaces": [],
- "Members": [
- {
- "Kind": "Method",
- "Name": "get_Item",
- "Parameters": [
- {
- "Name": "name",
- "Type": "System.String"
- }
- ],
- "ReturnType": "Microsoft.Extensions.Localization.LocalizedString",
- "GenericParameter": []
- },
- {
- "Kind": "Method",
- "Name": "get_Item",
- "Parameters": [
- {
- "Name": "name",
- "Type": "System.String"
- },
- {
- "Name": "arguments",
- "Type": "System.Object[]",
- "IsParams": true
- }
- ],
- "ReturnType": "Microsoft.Extensions.Localization.LocalizedString",
- "GenericParameter": []
- },
- {
- "Kind": "Method",
- "Name": "GetAllStrings",
- "Parameters": [
- {
- "Name": "includeParentCultures",
- "Type": "System.Boolean"
- }
- ],
- "ReturnType": "System.Collections.Generic.IEnumerable",
- "GenericParameter": []
- },
- {
- "Kind": "Method",
- "Name": "WithCulture",
- "Parameters": [
- {
- "Name": "culture",
- "Type": "System.Globalization.CultureInfo"
- }
- ],
- "ReturnType": "Microsoft.Extensions.Localization.IStringLocalizer",
- "GenericParameter": []
- }
- ],
- "GenericParameters": []
- },
- {
- "Name": "Microsoft.Extensions.Localization.IStringLocalizerFactory",
- "Visibility": "Public",
- "Kind": "Interface",
- "Abstract": true,
- "ImplementedInterfaces": [],
- "Members": [
- {
- "Kind": "Method",
- "Name": "Create",
- "Parameters": [
- {
- "Name": "resourceSource",
- "Type": "System.Type"
- }
- ],
- "ReturnType": "Microsoft.Extensions.Localization.IStringLocalizer",
- "GenericParameter": []
- },
- {
- "Kind": "Method",
- "Name": "Create",
- "Parameters": [
- {
- "Name": "baseName",
- "Type": "System.String"
- },
- {
- "Name": "location",
- "Type": "System.String"
- }
- ],
- "ReturnType": "Microsoft.Extensions.Localization.IStringLocalizer",
- "GenericParameter": []
- }
- ],
- "GenericParameters": []
- },
- {
- "Name": "Microsoft.Extensions.Localization.IStringLocalizer",
- "Visibility": "Public",
- "Kind": "Interface",
- "Abstract": true,
- "ImplementedInterfaces": [
- "Microsoft.Extensions.Localization.IStringLocalizer"
- ],
- "Members": [],
- "GenericParameters": [
- {
- "ParameterName": "T",
- "ParameterPosition": 0,
- "BaseTypeOrInterfaces": []
- }
- ]
- },
- {
- "Name": "Microsoft.Extensions.Localization.LocalizedString",
- "Visibility": "Public",
- "Kind": "Class",
- "ImplementedInterfaces": [],
- "Members": [
- {
- "Kind": "Method",
- "Name": "op_Implicit",
- "Parameters": [
- {
- "Name": "localizedString",
- "Type": "Microsoft.Extensions.Localization.LocalizedString"
- }
- ],
- "ReturnType": "System.String",
- "Static": true,
- "Visibility": "Public",
- "GenericParameter": []
- },
- {
- "Kind": "Method",
- "Name": "get_Name",
- "Parameters": [],
- "ReturnType": "System.String",
- "Visibility": "Public",
- "GenericParameter": []
- },
- {
- "Kind": "Method",
- "Name": "get_Value",
- "Parameters": [],
- "ReturnType": "System.String",
- "Visibility": "Public",
- "GenericParameter": []
- },
- {
- "Kind": "Method",
- "Name": "get_ResourceNotFound",
- "Parameters": [],
- "ReturnType": "System.Boolean",
- "Visibility": "Public",
- "GenericParameter": []
- },
- {
- "Kind": "Method",
- "Name": "get_SearchedLocation",
- "Parameters": [],
- "ReturnType": "System.String",
- "Visibility": "Public",
- "GenericParameter": []
- },
- {
- "Kind": "Method",
- "Name": "ToString",
- "Parameters": [],
- "ReturnType": "System.String",
- "Virtual": true,
- "Override": true,
- "Visibility": "Public",
- "GenericParameter": []
- },
- {
- "Kind": "Constructor",
- "Name": ".ctor",
- "Parameters": [
- {
- "Name": "name",
- "Type": "System.String"
- },
- {
- "Name": "value",
- "Type": "System.String"
- }
- ],
- "Visibility": "Public",
- "GenericParameter": []
- },
- {
- "Kind": "Constructor",
- "Name": ".ctor",
- "Parameters": [
- {
- "Name": "name",
- "Type": "System.String"
- },
- {
- "Name": "value",
- "Type": "System.String"
- },
- {
- "Name": "resourceNotFound",
- "Type": "System.Boolean"
- }
- ],
- "Visibility": "Public",
- "GenericParameter": []
- },
- {
- "Kind": "Constructor",
- "Name": ".ctor",
- "Parameters": [
- {
- "Name": "name",
- "Type": "System.String"
- },
- {
- "Name": "value",
- "Type": "System.String"
- },
- {
- "Name": "resourceNotFound",
- "Type": "System.Boolean"
- },
- {
- "Name": "searchedLocation",
- "Type": "System.String"
- }
- ],
- "Visibility": "Public",
- "GenericParameter": []
- }
- ],
- "GenericParameters": []
- },
- {
- "Name": "Microsoft.Extensions.Localization.StringLocalizerExtensions",
- "Visibility": "Public",
- "Kind": "Class",
- "Abstract": true,
- "Static": true,
- "Sealed": true,
- "ImplementedInterfaces": [],
- "Members": [
- {
- "Kind": "Method",
- "Name": "GetString",
- "Parameters": [
- {
- "Name": "stringLocalizer",
- "Type": "Microsoft.Extensions.Localization.IStringLocalizer"
- },
- {
- "Name": "name",
- "Type": "System.String"
- }
- ],
- "ReturnType": "Microsoft.Extensions.Localization.LocalizedString",
- "Static": true,
- "Extension": true,
- "Visibility": "Public",
- "GenericParameter": []
- },
- {
- "Kind": "Method",
- "Name": "GetString",
- "Parameters": [
- {
- "Name": "stringLocalizer",
- "Type": "Microsoft.Extensions.Localization.IStringLocalizer"
- },
- {
- "Name": "name",
- "Type": "System.String"
- },
- {
- "Name": "arguments",
- "Type": "System.Object[]",
- "IsParams": true
- }
- ],
- "ReturnType": "Microsoft.Extensions.Localization.LocalizedString",
- "Static": true,
- "Extension": true,
- "Visibility": "Public",
- "GenericParameter": []
- },
- {
- "Kind": "Method",
- "Name": "GetAllStrings",
- "Parameters": [
- {
- "Name": "stringLocalizer",
- "Type": "Microsoft.Extensions.Localization.IStringLocalizer"
- }
- ],
- "ReturnType": "System.Collections.Generic.IEnumerable",
- "Static": true,
- "Extension": true,
- "Visibility": "Public",
- "GenericParameter": []
- }
- ],
- "GenericParameters": []
- },
- {
- "Name": "Microsoft.Extensions.Localization.StringLocalizer",
- "Visibility": "Public",
- "Kind": "Class",
- "ImplementedInterfaces": [
- "Microsoft.Extensions.Localization.IStringLocalizer"
- ],
- "Members": [
- {
- "Kind": "Method",
- "Name": "get_Item",
- "Parameters": [
- {
- "Name": "name",
- "Type": "System.String"
- }
- ],
- "ReturnType": "Microsoft.Extensions.Localization.LocalizedString",
- "Virtual": true,
- "ImplementedInterface": "Microsoft.Extensions.Localization.IStringLocalizer",
- "Visibility": "Public",
- "GenericParameter": []
- },
- {
- "Kind": "Method",
- "Name": "get_Item",
- "Parameters": [
- {
- "Name": "name",
- "Type": "System.String"
- },
- {
- "Name": "arguments",
- "Type": "System.Object[]",
- "IsParams": true
- }
- ],
- "ReturnType": "Microsoft.Extensions.Localization.LocalizedString",
- "Virtual": true,
- "ImplementedInterface": "Microsoft.Extensions.Localization.IStringLocalizer",
- "Visibility": "Public",
- "GenericParameter": []
- },
- {
- "Kind": "Method",
- "Name": "GetAllStrings",
- "Parameters": [
- {
- "Name": "includeParentCultures",
- "Type": "System.Boolean"
- }
- ],
- "ReturnType": "System.Collections.Generic.IEnumerable",
- "Sealed": true,
- "Virtual": true,
- "ImplementedInterface": "Microsoft.Extensions.Localization.IStringLocalizer",
- "Visibility": "Public",
- "GenericParameter": []
- },
- {
- "Kind": "Method",
- "Name": "WithCulture",
- "Parameters": [
- {
- "Name": "culture",
- "Type": "System.Globalization.CultureInfo"
- }
- ],
- "ReturnType": "Microsoft.Extensions.Localization.IStringLocalizer",
- "Virtual": true,
- "ImplementedInterface": "Microsoft.Extensions.Localization.IStringLocalizer",
- "Visibility": "Public",
- "GenericParameter": []
- },
- {
- "Kind": "Constructor",
- "Name": ".ctor",
- "Parameters": [
- {
- "Name": "factory",
- "Type": "Microsoft.Extensions.Localization.IStringLocalizerFactory"
- }
- ],
- "Visibility": "Public",
- "GenericParameter": []
- }
- ],
- "GenericParameters": [
- {
- "ParameterName": "TResourceSource",
- "ParameterPosition": 0,
- "BaseTypeOrInterfaces": []
- }
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/src/Microsoft.Extensions.Localization/IResourceNamesCache.cs b/src/Microsoft.Extensions.Localization/IResourceNamesCache.cs
deleted file mode 100644
index 90d104aa68..0000000000
--- a/src/Microsoft.Extensions.Localization/IResourceNamesCache.cs
+++ /dev/null
@@ -1,22 +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.Collections.Generic;
-
-namespace Microsoft.Extensions.Localization
-{
- ///
- /// Represents a cache of string names in resources.
- ///
- public interface IResourceNamesCache
- {
- ///
- /// Adds a set of resource names to the cache by using the specified function, if the name does not already exist.
- ///
- /// The resource name to add string names for.
- /// The function used to generate the string names for the resource.
- /// The string names for the resource.
- IList GetOrAdd(string name, Func> valueFactory);
- }
-}
diff --git a/src/Microsoft.Extensions.Localization/Internal/AssemblyWrapper.cs b/src/Microsoft.Extensions.Localization/Internal/AssemblyWrapper.cs
deleted file mode 100644
index b0c3c2bce1..0000000000
--- a/src/Microsoft.Extensions.Localization/Internal/AssemblyWrapper.cs
+++ /dev/null
@@ -1,28 +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.Reflection;
-
-namespace Microsoft.Extensions.Localization.Internal
-{
- public class AssemblyWrapper
- {
- public AssemblyWrapper(Assembly assembly)
- {
- if (assembly == null)
- {
- throw new ArgumentNullException(nameof(assembly));
- }
-
- Assembly = assembly;
- }
-
- public Assembly Assembly { get; }
-
- public virtual string FullName => Assembly.FullName;
-
- public virtual Stream GetManifestResourceStream(string name) => Assembly.GetManifestResourceStream(name);
- }
-}
diff --git a/src/Microsoft.Extensions.Localization/Internal/IResourceStringProvider.cs b/src/Microsoft.Extensions.Localization/Internal/IResourceStringProvider.cs
deleted file mode 100644
index b74bd80eda..0000000000
--- a/src/Microsoft.Extensions.Localization/Internal/IResourceStringProvider.cs
+++ /dev/null
@@ -1,13 +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.Collections.Generic;
-using System.Globalization;
-
-namespace Microsoft.Extensions.Localization.Internal
-{
- public interface IResourceStringProvider
- {
- IList GetAllResourceStrings(CultureInfo culture, bool throwOnMissing);
- }
-}
diff --git a/src/Microsoft.Extensions.Localization/Internal/ResourceManagerStringLocalizerLoggerExtensions.cs b/src/Microsoft.Extensions.Localization/Internal/ResourceManagerStringLocalizerLoggerExtensions.cs
deleted file mode 100644
index 456e07009e..0000000000
--- a/src/Microsoft.Extensions.Localization/Internal/ResourceManagerStringLocalizerLoggerExtensions.cs
+++ /dev/null
@@ -1,27 +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.Globalization;
-using Microsoft.Extensions.Logging;
-
-namespace Microsoft.Extensions.Localization.Internal
-{
- internal static class ResourceManagerStringLocalizerLoggerExtensions
- {
- private static readonly Action _searchedLocation;
-
- static ResourceManagerStringLocalizerLoggerExtensions()
- {
- _searchedLocation = LoggerMessage.Define(
- LogLevel.Debug,
- 1,
- $"{nameof(ResourceManagerStringLocalizer)} searched for '{{Key}}' in '{{LocationSearched}}' with culture '{{Culture}}'.");
- }
-
- public static void SearchedLocation(this ILogger logger, string key, string searchedLocation, CultureInfo culture)
- {
- _searchedLocation(logger, key, searchedLocation, culture, null);
- }
- }
-}
diff --git a/src/Microsoft.Extensions.Localization/Internal/ResourceManagerStringProvider.cs b/src/Microsoft.Extensions.Localization/Internal/ResourceManagerStringProvider.cs
deleted file mode 100644
index 9eef8c84a8..0000000000
--- a/src/Microsoft.Extensions.Localization/Internal/ResourceManagerStringProvider.cs
+++ /dev/null
@@ -1,80 +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.Collections;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Reflection;
-using System.Resources;
-
-namespace Microsoft.Extensions.Localization.Internal
-{
- public class ResourceManagerStringProvider : IResourceStringProvider
- {
- private readonly IResourceNamesCache _resourceNamesCache;
- private readonly ResourceManager _resourceManager;
- private readonly Assembly _assembly;
- private readonly string _resourceBaseName;
-
- public ResourceManagerStringProvider(
- IResourceNamesCache resourceCache,
- ResourceManager resourceManager,
- Assembly assembly,
- string baseName)
- {
- _resourceManager = resourceManager;
- _resourceNamesCache = resourceCache;
- _assembly = assembly;
- _resourceBaseName = baseName;
- }
-
- private string GetResourceCacheKey(CultureInfo culture)
- {
- var resourceName = _resourceManager.BaseName;
-
- return $"Culture={culture.Name};resourceName={resourceName};Assembly={_assembly.FullName}";
- }
-
- private string GetResourceName(CultureInfo culture)
- {
- var resourceStreamName = _resourceBaseName;
- if (!string.IsNullOrEmpty(culture.Name))
- {
- resourceStreamName += "." + culture.Name;
- }
- resourceStreamName += ".resources";
-
- return resourceStreamName;
- }
-
- public IList GetAllResourceStrings(CultureInfo culture, bool throwOnMissing)
- {
- var cacheKey = GetResourceCacheKey(culture);
-
- return _resourceNamesCache.GetOrAdd(cacheKey, _ =>
- {
- // We purposly don't dispose the ResourceSet because it causes an ObjectDisposedException when you try to read the values later.
- var resourceSet = _resourceManager.GetResourceSet(culture, createIfNotExists: true, tryParents: false);
- if (resourceSet == null)
- {
- if (throwOnMissing)
- {
- throw new MissingManifestResourceException(Resources.FormatLocalization_MissingManifest(GetResourceName(culture)));
- }
- else
- {
- return null;
- }
- }
-
- var names = new List();
- foreach (DictionaryEntry entry in resourceSet)
- {
- names.Add((string)entry.Key);
- }
-
- return names;
- });
- }
- }
-}
diff --git a/src/Microsoft.Extensions.Localization/LocalizationOptions.cs b/src/Microsoft.Extensions.Localization/LocalizationOptions.cs
deleted file mode 100644
index 1b7408fe67..0000000000
--- a/src/Microsoft.Extensions.Localization/LocalizationOptions.cs
+++ /dev/null
@@ -1,16 +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.
-
-namespace Microsoft.Extensions.Localization
-{
- ///
- /// Provides programmatic configuration for localization.
- ///
- public class LocalizationOptions
- {
- ///
- /// The relative path under application root where resource files are located.
- ///
- public string ResourcesPath { get; set; } = string.Empty;
- }
-}
diff --git a/src/Microsoft.Extensions.Localization/LocalizationServiceCollectionExtensions.cs b/src/Microsoft.Extensions.Localization/LocalizationServiceCollectionExtensions.cs
deleted file mode 100644
index 111c1c40d9..0000000000
--- a/src/Microsoft.Extensions.Localization/LocalizationServiceCollectionExtensions.cs
+++ /dev/null
@@ -1,76 +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 Microsoft.Extensions.DependencyInjection.Extensions;
-using Microsoft.Extensions.Localization;
-
-namespace Microsoft.Extensions.DependencyInjection
-{
- ///
- /// Extension methods for setting up localization services in an .
- ///
- public static class LocalizationServiceCollectionExtensions
- {
- ///
- /// Adds services required for application localization.
- ///
- /// The to add the services to.
- /// The so that additional calls can be chained.
- public static IServiceCollection AddLocalization(this IServiceCollection services)
- {
- if (services == null)
- {
- throw new ArgumentNullException(nameof(services));
- }
-
- services.AddOptions();
-
- AddLocalizationServices(services);
-
- return services;
- }
-
- ///
- /// Adds services required for application localization.
- ///
- /// The to add the services to.
- ///
- /// An to configure the .
- ///
- /// The so that additional calls can be chained.
- public static IServiceCollection AddLocalization(
- this IServiceCollection services,
- Action setupAction)
- {
- if (services == null)
- {
- throw new ArgumentNullException(nameof(services));
- }
-
- if (setupAction == null)
- {
- throw new ArgumentNullException(nameof(setupAction));
- }
-
- AddLocalizationServices(services, setupAction);
-
- return services;
- }
-
- // To enable unit testing
- internal static void AddLocalizationServices(IServiceCollection services)
- {
- services.TryAddSingleton();
- services.TryAddTransient(typeof(IStringLocalizer<>), typeof(StringLocalizer<>));
- }
-
- internal static void AddLocalizationServices(
- IServiceCollection services,
- Action setupAction)
- {
- AddLocalizationServices(services);
- services.Configure(setupAction);
- }
- }
-}
\ No newline at end of file
diff --git a/src/Microsoft.Extensions.Localization/Microsoft.Extensions.Localization.csproj b/src/Microsoft.Extensions.Localization/Microsoft.Extensions.Localization.csproj
deleted file mode 100644
index d0e6e26596..0000000000
--- a/src/Microsoft.Extensions.Localization/Microsoft.Extensions.Localization.csproj
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
- Microsoft .NET Extensions
- Application localization services and default implementation based on ResourceManager to load localized assembly resources.
- netstandard2.0
- $(NoWarn);CS1591
- true
- localization
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/Microsoft.Extensions.Localization/Properties/AssemblyInfo.cs b/src/Microsoft.Extensions.Localization/Properties/AssemblyInfo.cs
deleted file mode 100644
index 3e297b801e..0000000000
--- a/src/Microsoft.Extensions.Localization/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,6 +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.Runtime.CompilerServices;
-
-[assembly: InternalsVisibleTo("Microsoft.Extensions.Localization.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100f33a29044fa9d740c9b3213a93e57c84b472c84e0b8a0e1ae48e67a9f8f6de9d5f7f3d52ac23e48ac51801f1dc950abe901da34d2a9e3baadb141a17c77ef3c565dd5ee5054b91cf63bb3c6ab83f72ab3aafe93d0fc3c2348b764fafb0b1c0733de51459aeab46580384bf9d74c4e28164b7cde247f891ba07891c9d872ad2bb")]
diff --git a/src/Microsoft.Extensions.Localization/Properties/Resources.Designer.cs b/src/Microsoft.Extensions.Localization/Properties/Resources.Designer.cs
deleted file mode 100644
index 1123d648ad..0000000000
--- a/src/Microsoft.Extensions.Localization/Properties/Resources.Designer.cs
+++ /dev/null
@@ -1,62 +0,0 @@
-//
-namespace Microsoft.Extensions.Localization
-{
- using System.Globalization;
- using System.Reflection;
- using System.Resources;
-
- internal static class Resources
- {
- private static readonly ResourceManager _resourceManager
- = new ResourceManager("Microsoft.Extensions.Localization.Resources", typeof(Resources).GetTypeInfo().Assembly);
-
- ///
- /// The manifest '{0}' was not found.
- ///
- internal static string Localization_MissingManifest
- {
- get { return GetString("Localization_MissingManifest"); }
- }
-
- ///
- /// The manifest '{0}' was not found.
- ///
- internal static string FormatLocalization_MissingManifest(object p0)
- {
- return string.Format(CultureInfo.CurrentCulture, GetString("Localization_MissingManifest"), p0);
- }
-
- ///
- /// No manifests exist for the current culture.
- ///
- internal static string Localization_MissingManifest_Parent
- {
- get { return GetString("Localization_MissingManifest_Parent"); }
- }
-
- ///
- /// No manifests exist for the current culture.
- ///
- internal static string FormatLocalization_MissingManifest_Parent()
- {
- return GetString("Localization_MissingManifest_Parent");
- }
-
- private static string GetString(string name, params string[] formatterNames)
- {
- var value = _resourceManager.GetString(name);
-
- System.Diagnostics.Debug.Assert(value != null);
-
- if (formatterNames != null)
- {
- for (var i = 0; i < formatterNames.Length; i++)
- {
- value = value.Replace("{" + formatterNames[i] + "}", "{" + i + "}");
- }
- }
-
- return value;
- }
- }
-}
diff --git a/src/Microsoft.Extensions.Localization/ResourceLocationAttribute.cs b/src/Microsoft.Extensions.Localization/ResourceLocationAttribute.cs
deleted file mode 100644
index 5bf281d90e..0000000000
--- a/src/Microsoft.Extensions.Localization/ResourceLocationAttribute.cs
+++ /dev/null
@@ -1,33 +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;
-
-namespace Microsoft.Extensions.Localization
-{
- ///
- /// Provides the location of resources for an Assembly.
- ///
- [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = false, Inherited = false)]
- public class ResourceLocationAttribute : Attribute
- {
- ///
- /// Creates a new .
- ///
- /// The location of resources for this Assembly.
- public ResourceLocationAttribute(string resourceLocation)
- {
- if (string.IsNullOrEmpty(resourceLocation))
- {
- throw new ArgumentNullException(nameof(resourceLocation));
- }
-
- ResourceLocation = resourceLocation;
- }
-
- ///
- /// The location of resources for this Assembly.
- ///
- public string ResourceLocation { get; }
- }
-}
diff --git a/src/Microsoft.Extensions.Localization/ResourceManagerStringLocalizer.cs b/src/Microsoft.Extensions.Localization/ResourceManagerStringLocalizer.cs
deleted file mode 100644
index e2e1a3f234..0000000000
--- a/src/Microsoft.Extensions.Localization/ResourceManagerStringLocalizer.cs
+++ /dev/null
@@ -1,274 +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.Collections.Concurrent;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Reflection;
-using System.Resources;
-using Microsoft.Extensions.Localization.Internal;
-using Microsoft.Extensions.Logging;
-
-namespace Microsoft.Extensions.Localization
-{
- ///
- /// An that uses the and
- /// to provide localized strings.
- ///
- /// This type is thread-safe.
- public class ResourceManagerStringLocalizer : IStringLocalizer
- {
- private readonly ConcurrentDictionary _missingManifestCache = new ConcurrentDictionary();
- private readonly IResourceNamesCache _resourceNamesCache;
- private readonly ResourceManager _resourceManager;
- private readonly IResourceStringProvider _resourceStringProvider;
- private readonly string _resourceBaseName;
- private readonly ILogger _logger;
-
- ///
- /// Creates a new .
- ///
- /// The to read strings from.
- /// The that contains the strings as embedded resources.
- /// The base name of the embedded resource that contains the strings.
- /// Cache of the list of strings for a given resource assembly name.
- /// The .
- public ResourceManagerStringLocalizer(
- ResourceManager resourceManager,
- Assembly resourceAssembly,
- string baseName,
- IResourceNamesCache resourceNamesCache,
- ILogger logger)
- : this(
- resourceManager,
- new AssemblyWrapper(resourceAssembly),
- baseName,
- resourceNamesCache,
- logger)
- {
- }
-
- ///
- /// Intended for testing purposes only.
- ///
- public ResourceManagerStringLocalizer(
- ResourceManager resourceManager,
- AssemblyWrapper resourceAssemblyWrapper,
- string baseName,
- IResourceNamesCache resourceNamesCache,
- ILogger logger)
- : this(
- resourceManager,
- new ResourceManagerStringProvider(
- resourceNamesCache,
- resourceManager,
- resourceAssemblyWrapper.Assembly,
- baseName),
- baseName,
- resourceNamesCache,
- logger)
- {
- }
-
- ///
- /// Intended for testing purposes only.
- ///
- public ResourceManagerStringLocalizer(
- ResourceManager resourceManager,
- IResourceStringProvider resourceStringProvider,
- string baseName,
- IResourceNamesCache resourceNamesCache,
- ILogger logger)
- {
- if (resourceManager == null)
- {
- throw new ArgumentNullException(nameof(resourceManager));
- }
-
- if (resourceStringProvider == null)
- {
- throw new ArgumentNullException(nameof(resourceStringProvider));
- }
-
- if (baseName == null)
- {
- throw new ArgumentNullException(nameof(baseName));
- }
-
- if (resourceNamesCache == null)
- {
- throw new ArgumentNullException(nameof(resourceNamesCache));
- }
-
- if (logger == null)
- {
- throw new ArgumentNullException(nameof(logger));
- }
-
- _resourceStringProvider = resourceStringProvider;
- _resourceManager = resourceManager;
- _resourceBaseName = baseName;
- _resourceNamesCache = resourceNamesCache;
- _logger = logger;
- }
-
- ///
- public virtual LocalizedString this[string name]
- {
- get
- {
- if (name == null)
- {
- throw new ArgumentNullException(nameof(name));
- }
-
- var value = GetStringSafely(name, null);
-
- return new LocalizedString(name, value ?? name, resourceNotFound: value == null, searchedLocation: _resourceBaseName);
- }
- }
-
- ///
- public virtual LocalizedString this[string name, params object[] arguments]
- {
- get
- {
- if (name == null)
- {
- throw new ArgumentNullException(nameof(name));
- }
-
- var format = GetStringSafely(name, null);
- var value = string.Format(format ?? name, arguments);
-
- return new LocalizedString(name, value, resourceNotFound: format == null, searchedLocation: _resourceBaseName);
- }
- }
-
- ///
- /// Creates a new for a specific .
- ///
- /// The to use.
- /// A culture-specific .
- public IStringLocalizer WithCulture(CultureInfo culture)
- {
- return culture == null
- ? new ResourceManagerStringLocalizer(
- _resourceManager,
- _resourceStringProvider,
- _resourceBaseName,
- _resourceNamesCache,
- _logger)
- : new ResourceManagerWithCultureStringLocalizer(
- _resourceManager,
- _resourceStringProvider,
- _resourceBaseName,
- _resourceNamesCache,
- culture,
- _logger);
- }
-
- ///
- public virtual IEnumerable GetAllStrings(bool includeParentCultures) =>
- GetAllStrings(includeParentCultures, CultureInfo.CurrentUICulture);
-
- ///
- /// Returns all strings in the specified culture.
- ///
- ///
- /// The to get strings for.
- /// The strings.
- protected IEnumerable GetAllStrings(bool includeParentCultures, CultureInfo culture)
- {
- if (culture == null)
- {
- throw new ArgumentNullException(nameof(culture));
- }
-
- var resourceNames = includeParentCultures
- ? GetResourceNamesFromCultureHierarchy(culture)
- : _resourceStringProvider.GetAllResourceStrings(culture, true);
-
- foreach (var name in resourceNames)
- {
- var value = GetStringSafely(name, culture);
- yield return new LocalizedString(name, value ?? name, resourceNotFound: value == null, searchedLocation: _resourceBaseName);
- }
- }
-
- ///
- /// Gets a resource string from the and returns null instead of
- /// throwing exceptions if a match isn't found.
- ///
- /// The name of the string resource.
- /// The to get the string for.
- /// The resource string, or null if none was found.
- protected string GetStringSafely(string name, CultureInfo culture)
- {
- if (name == null)
- {
- throw new ArgumentNullException(nameof(name));
- }
-
- var keyCulture = culture ?? CultureInfo.CurrentUICulture;
-
- var cacheKey = $"name={name}&culture={keyCulture.Name}";
-
- _logger.SearchedLocation(name, _resourceBaseName, keyCulture);
-
- if (_missingManifestCache.ContainsKey(cacheKey))
- {
- return null;
- }
-
- try
- {
- return culture == null ? _resourceManager.GetString(name) : _resourceManager.GetString(name, culture);
- }
- catch (MissingManifestResourceException)
- {
- _missingManifestCache.TryAdd(cacheKey, null);
- return null;
- }
- }
-
- private IEnumerable GetResourceNamesFromCultureHierarchy(CultureInfo startingCulture)
- {
- var currentCulture = startingCulture;
- var resourceNames = new HashSet();
-
- var hasAnyCultures = false;
-
- while (true)
- {
-
- var cultureResourceNames = _resourceStringProvider.GetAllResourceStrings(currentCulture, false);
-
- if (cultureResourceNames != null)
- {
- foreach (var resourceName in cultureResourceNames)
- {
- resourceNames.Add(resourceName);
- }
- hasAnyCultures = true;
- }
-
- if (currentCulture == currentCulture.Parent)
- {
- // currentCulture begat currentCulture, probably time to leave
- break;
- }
-
- currentCulture = currentCulture.Parent;
- }
-
- if (!hasAnyCultures)
- {
- throw new MissingManifestResourceException(Resources.Localization_MissingManifest_Parent);
- }
-
- return resourceNames;
- }
- }
-}
\ No newline at end of file
diff --git a/src/Microsoft.Extensions.Localization/ResourceManagerStringLocalizerFactory.cs b/src/Microsoft.Extensions.Localization/ResourceManagerStringLocalizerFactory.cs
deleted file mode 100644
index 2eb737eaa7..0000000000
--- a/src/Microsoft.Extensions.Localization/ResourceManagerStringLocalizerFactory.cs
+++ /dev/null
@@ -1,270 +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.Collections.Concurrent;
-using System.IO;
-using System.Reflection;
-using System.Resources;
-using Microsoft.Extensions.Logging;
-using Microsoft.Extensions.Options;
-
-namespace Microsoft.Extensions.Localization
-{
- ///
- /// An that creates instances of .
- ///
- ///
- /// offers multiple ways to set the relative path of
- /// resources to be used. They are, in order of precedence:
- /// -> -> the project root.
- ///
- public class ResourceManagerStringLocalizerFactory : IStringLocalizerFactory
- {
- private readonly IResourceNamesCache _resourceNamesCache = new ResourceNamesCache();
- private readonly ConcurrentDictionary _localizerCache =
- new ConcurrentDictionary();
- private readonly string _resourcesRelativePath;
- private readonly ILoggerFactory _loggerFactory;
-
- ///
- /// Creates a new .
- ///
- /// The .
- /// The .
- public ResourceManagerStringLocalizerFactory(
- IOptions localizationOptions,
- ILoggerFactory loggerFactory)
- {
- if (localizationOptions == null)
- {
- throw new ArgumentNullException(nameof(localizationOptions));
- }
-
- if (loggerFactory == null)
- {
- throw new ArgumentNullException(nameof(loggerFactory));
- }
-
- _resourcesRelativePath = localizationOptions.Value.ResourcesPath ?? string.Empty;
- _loggerFactory = loggerFactory;
-
- if (!string.IsNullOrEmpty(_resourcesRelativePath))
- {
- _resourcesRelativePath = _resourcesRelativePath.Replace(Path.AltDirectorySeparatorChar, '.')
- .Replace(Path.DirectorySeparatorChar, '.') + ".";
- }
- }
-
- ///
- /// Gets the resource prefix used to look up the resource.
- ///
- /// The type of the resource to be looked up.
- /// The prefix for resource lookup.
- protected virtual string GetResourcePrefix(TypeInfo typeInfo)
- {
- if (typeInfo == null)
- {
- throw new ArgumentNullException(nameof(typeInfo));
- }
-
- return GetResourcePrefix(typeInfo, GetRootNamespace(typeInfo.Assembly), GetResourcePath(typeInfo.Assembly));
- }
-
- ///
- /// Gets the resource prefix used to look up the resource.
- ///
- /// The type of the resource to be looked up.
- /// The base namespace of the application.
- /// The folder containing all resources.
- /// The prefix for resource lookup.
- ///
- /// For the type "Sample.Controllers.Home" if there's a resourceRelativePath return
- /// "Sample.Resourcepath.Controllers.Home" if there isn't one then it would return "Sample.Controllers.Home".
- ///
- protected virtual string GetResourcePrefix(TypeInfo typeInfo, string baseNamespace, string resourcesRelativePath)
- {
- if (typeInfo == null)
- {
- throw new ArgumentNullException(nameof(typeInfo));
- }
-
- if (string.IsNullOrEmpty(baseNamespace))
- {
- throw new ArgumentNullException(nameof(baseNamespace));
- }
-
- if (string.IsNullOrEmpty(resourcesRelativePath))
- {
- return typeInfo.FullName;
- }
- else
- {
- // This expectation is defined by dotnet's automatic resource storage.
- // We have to conform to "{RootNamespace}.{ResourceLocation}.{FullTypeName - AssemblyName}".
- var assemblyName = new AssemblyName(typeInfo.Assembly.FullName).Name;
- return baseNamespace + "." + resourcesRelativePath + TrimPrefix(typeInfo.FullName, assemblyName + ".");
- }
- }
-
- ///
- /// Gets the resource prefix used to look up the resource.
- ///
- /// The name of the resource to be looked up
- /// The base namespace of the application.
- /// The prefix for resource lookup.
- protected virtual string GetResourcePrefix(string baseResourceName, string baseNamespace)
- {
- if (string.IsNullOrEmpty(baseResourceName))
- {
- throw new ArgumentNullException(nameof(baseResourceName));
- }
-
- if (string.IsNullOrEmpty(baseNamespace))
- {
- throw new ArgumentNullException(nameof(baseNamespace));
- }
-
- var assemblyName = new AssemblyName(baseNamespace);
- var assembly = Assembly.Load(assemblyName);
- var rootNamespace = GetRootNamespace(assembly);
- var resourceLocation = GetResourcePath(assembly);
- var locationPath = rootNamespace + "." + resourceLocation;
-
- baseResourceName = locationPath + TrimPrefix(baseResourceName, baseNamespace + ".");
-
- return baseResourceName;
- }
-
- ///
- /// Creates a using the and
- /// of the specified .
- ///
- /// The .
- /// The .
- public IStringLocalizer Create(Type resourceSource)
- {
- if (resourceSource == null)
- {
- throw new ArgumentNullException(nameof(resourceSource));
- }
-
- var typeInfo = resourceSource.GetTypeInfo();
-
- var baseName = GetResourcePrefix(typeInfo);
-
- var assembly = typeInfo.Assembly;
-
- return _localizerCache.GetOrAdd(baseName, _ => CreateResourceManagerStringLocalizer(assembly, baseName));
- }
-
- ///
- /// Creates a .
- ///
- /// The base name of the resource to load strings from.
- /// The location to load resources from.
- /// The .
- public IStringLocalizer Create(string baseName, string location)
- {
- if (baseName == null)
- {
- throw new ArgumentNullException(nameof(baseName));
- }
-
- if (location == null)
- {
- throw new ArgumentNullException(nameof(location));
- }
-
- return _localizerCache.GetOrAdd($"B={baseName},L={location}", _ =>
- {
- var assemblyName = new AssemblyName(location);
- var assembly = Assembly.Load(assemblyName);
- baseName = GetResourcePrefix(baseName, location);
-
- return CreateResourceManagerStringLocalizer(assembly, baseName);
- });
- }
-
- /// Creates a for the given input.
- /// The assembly to create a for.
- /// The base name of the resource to search for.
- /// A for the given and .
- /// This method is virtual for testing purposes only.
- protected virtual ResourceManagerStringLocalizer CreateResourceManagerStringLocalizer(
- Assembly assembly,
- string baseName)
- {
- return new ResourceManagerStringLocalizer(
- new ResourceManager(baseName, assembly),
- assembly,
- baseName,
- _resourceNamesCache,
- _loggerFactory.CreateLogger());
- }
-
- ///
- /// Gets the resource prefix used to look up the resource.
- ///
- /// The general location of the resource.
- /// The base name of the resource.
- /// The location of the resource within .
- /// The resource prefix used to look up the resource.
- protected virtual string GetResourcePrefix(string location, string baseName, string resourceLocation)
- {
- // Re-root the base name if a resources path is set
- return location + "." + resourceLocation + TrimPrefix(baseName, location + ".");
- }
-
- /// Gets a from the provided .
- /// The assembly to get a from.
- /// The associated with the given .
- /// This method is protected and virtual for testing purposes only.
- protected virtual ResourceLocationAttribute GetResourceLocationAttribute(Assembly assembly)
- {
- return assembly.GetCustomAttribute();
- }
-
- /// Gets a from the provided .
- /// The assembly to get a from.
- /// The associated with the given .
- /// This method is protected and virtual for testing purposes only.
- protected virtual RootNamespaceAttribute GetRootNamespaceAttribute(Assembly assembly)
- {
- return assembly.GetCustomAttribute();
- }
-
- private string GetRootNamespace(Assembly assembly)
- {
- var rootNamespaceAttribute = GetRootNamespaceAttribute(assembly);
-
- return rootNamespaceAttribute?.RootNamespace ??
- new AssemblyName(assembly.FullName).Name;
- }
-
- private string GetResourcePath(Assembly assembly)
- {
- var resourceLocationAttribute = GetResourceLocationAttribute(assembly);
-
- // If we don't have an attribute assume all assemblies use the same resource location.
- var resourceLocation = resourceLocationAttribute == null
- ? _resourcesRelativePath
- : resourceLocationAttribute.ResourceLocation + ".";
- resourceLocation = resourceLocation
- .Replace(Path.DirectorySeparatorChar, '.')
- .Replace(Path.AltDirectorySeparatorChar, '.');
-
- return resourceLocation;
- }
-
- private static string TrimPrefix(string name, string prefix)
- {
- if (name.StartsWith(prefix, StringComparison.Ordinal))
- {
- return name.Substring(prefix.Length);
- }
-
- return name;
- }
- }
-}
\ No newline at end of file
diff --git a/src/Microsoft.Extensions.Localization/ResourceManagerWithCultureStringLocalizer.cs b/src/Microsoft.Extensions.Localization/ResourceManagerWithCultureStringLocalizer.cs
deleted file mode 100644
index 65b6ae242c..0000000000
--- a/src/Microsoft.Extensions.Localization/ResourceManagerWithCultureStringLocalizer.cs
+++ /dev/null
@@ -1,164 +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.Collections.Generic;
-using System.Globalization;
-using System.Reflection;
-using System.Resources;
-using Microsoft.Extensions.Localization.Internal;
-using Microsoft.Extensions.Logging;
-
-namespace Microsoft.Extensions.Localization
-{
- ///
- /// An that uses the and
- /// to provide localized strings for a specific .
- ///
- public class ResourceManagerWithCultureStringLocalizer : ResourceManagerStringLocalizer
- {
- private readonly string _resourceBaseName;
- private readonly CultureInfo _culture;
-
- ///
- /// Creates a new .
- ///
- /// The to read strings from.
- /// The that can find the resources.
- /// The base name of the embedded resource that contains the strings.
- /// Cache of the list of strings for a given resource assembly name.
- /// The specific to use.
- /// The .
- internal ResourceManagerWithCultureStringLocalizer(
- ResourceManager resourceManager,
- IResourceStringProvider resourceStringProvider,
- string baseName,
- IResourceNamesCache resourceNamesCache,
- CultureInfo culture,
- ILogger logger)
- : base(resourceManager, resourceStringProvider, baseName, resourceNamesCache, logger)
- {
- if (resourceManager == null)
- {
- throw new ArgumentNullException(nameof(resourceManager));
- }
-
- if (resourceStringProvider == null)
- {
- throw new ArgumentNullException(nameof(resourceStringProvider));
- }
-
- if (baseName == null)
- {
- throw new ArgumentNullException(nameof(baseName));
- }
-
- if (resourceNamesCache == null)
- {
- throw new ArgumentNullException(nameof(resourceNamesCache));
- }
-
- if (culture == null)
- {
- throw new ArgumentNullException(nameof(culture));
- }
-
- if (logger == null)
- {
- throw new ArgumentNullException(nameof(logger));
- }
-
- _resourceBaseName = baseName;
- _culture = culture;
- }
-
- ///
- /// Creates a new .
- ///
- /// The to read strings from.
- /// The that contains the strings as embedded resources.
- /// The base name of the embedded resource that contains the strings.
- /// Cache of the list of strings for a given resource assembly name.
- /// The specific to use.
- /// The .
- public ResourceManagerWithCultureStringLocalizer(
- ResourceManager resourceManager,
- Assembly resourceAssembly,
- string baseName,
- IResourceNamesCache resourceNamesCache,
- CultureInfo culture,
- ILogger logger)
- : base(resourceManager, resourceAssembly, baseName, resourceNamesCache, logger)
- {
- if (resourceManager == null)
- {
- throw new ArgumentNullException(nameof(resourceManager));
- }
-
- if (resourceAssembly == null)
- {
- throw new ArgumentNullException(nameof(resourceAssembly));
- }
-
- if (baseName == null)
- {
- throw new ArgumentNullException(nameof(baseName));
- }
-
- if (resourceNamesCache == null)
- {
- throw new ArgumentNullException(nameof(resourceNamesCache));
- }
-
- if (culture == null)
- {
- throw new ArgumentNullException(nameof(culture));
- }
-
- if (logger == null)
- {
- throw new ArgumentNullException(nameof(logger));
- }
-
- _resourceBaseName = baseName;
- _culture = culture;
- }
-
- ///
- public override LocalizedString this[string name]
- {
- get
- {
- if (name == null)
- {
- throw new ArgumentNullException(nameof(name));
- }
-
- var value = GetStringSafely(name, _culture);
-
- return new LocalizedString(name, value ?? name, resourceNotFound: value == null, searchedLocation: _resourceBaseName);
- }
- }
-
- ///
- public override LocalizedString this[string name, params object[] arguments]
- {
- get
- {
- if (name == null)
- {
- throw new ArgumentNullException(nameof(name));
- }
-
- var format = GetStringSafely(name, _culture);
- var value = string.Format(_culture, format ?? name, arguments);
-
- return new LocalizedString(name, value, resourceNotFound: format == null, searchedLocation: _resourceBaseName);
- }
- }
-
- ///
- public override IEnumerable GetAllStrings(bool includeParentCultures) =>
- GetAllStrings(includeParentCultures, _culture);
- }
-}
\ No newline at end of file
diff --git a/src/Microsoft.Extensions.Localization/ResourceNamesCache.cs b/src/Microsoft.Extensions.Localization/ResourceNamesCache.cs
deleted file mode 100644
index 86e94c102a..0000000000
--- a/src/Microsoft.Extensions.Localization/ResourceNamesCache.cs
+++ /dev/null
@@ -1,23 +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.Collections.Concurrent;
-using System.Collections.Generic;
-
-namespace Microsoft.Extensions.Localization
-{
- ///
- /// An implementation of backed by a .
- ///
- public class ResourceNamesCache : IResourceNamesCache
- {
- private readonly ConcurrentDictionary> _cache = new ConcurrentDictionary>();
-
- ///
- public IList GetOrAdd(string name, Func> valueFactory)
- {
- return _cache.GetOrAdd(name, valueFactory);
- }
- }
-}
diff --git a/src/Microsoft.Extensions.Localization/Resources.resx b/src/Microsoft.Extensions.Localization/Resources.resx
deleted file mode 100644
index b679f04664..0000000000
--- a/src/Microsoft.Extensions.Localization/Resources.resx
+++ /dev/null
@@ -1,126 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- The manifest '{0}' was not found.
-
-
- No manifests exist for the current culture.
-
-
\ No newline at end of file
diff --git a/src/Microsoft.Extensions.Localization/RootNamespaceAttribute.cs b/src/Microsoft.Extensions.Localization/RootNamespaceAttribute.cs
deleted file mode 100644
index f28b4ea1fd..0000000000
--- a/src/Microsoft.Extensions.Localization/RootNamespaceAttribute.cs
+++ /dev/null
@@ -1,35 +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;
-
-namespace Microsoft.Extensions.Localization
-{
- ///
- /// Provides the RootNamespace of an Assembly. The RootNamespace of the assembly is used by Localization to
- /// determine the resource name to look for when RootNamespace differs from the AssemblyName.
- ///
- [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = false, Inherited = false)]
- public class RootNamespaceAttribute : Attribute
- {
- ///
- /// Creates a new .
- ///
- /// The RootNamespace for this Assembly.
- public RootNamespaceAttribute(string rootNamespace)
- {
- if (string.IsNullOrEmpty(rootNamespace))
- {
- throw new ArgumentNullException(nameof(rootNamespace));
- }
-
- RootNamespace = rootNamespace;
- }
-
- ///
- /// The RootNamespace of this Assembly. The RootNamespace of the assembly is used by Localization to
- /// determine the resource name to look for when RootNamespace differs from the AssemblyName.
- ///
- public string RootNamespace { get; }
- }
-}
diff --git a/src/Microsoft.Extensions.Localization/baseline.netcore.json b/src/Microsoft.Extensions.Localization/baseline.netcore.json
deleted file mode 100644
index 860db76899..0000000000
--- a/src/Microsoft.Extensions.Localization/baseline.netcore.json
+++ /dev/null
@@ -1,687 +0,0 @@
-{
- "AssemblyIdentity": "Microsoft.Extensions.Localization, Version=2.1.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60",
- "Types": [
- {
- "Name": "Microsoft.Extensions.DependencyInjection.LocalizationServiceCollectionExtensions",
- "Visibility": "Public",
- "Kind": "Class",
- "Abstract": true,
- "Static": true,
- "Sealed": true,
- "ImplementedInterfaces": [],
- "Members": [
- {
- "Kind": "Method",
- "Name": "AddLocalization",
- "Parameters": [
- {
- "Name": "services",
- "Type": "Microsoft.Extensions.DependencyInjection.IServiceCollection"
- }
- ],
- "ReturnType": "Microsoft.Extensions.DependencyInjection.IServiceCollection",
- "Static": true,
- "Extension": true,
- "Visibility": "Public",
- "GenericParameter": []
- },
- {
- "Kind": "Method",
- "Name": "AddLocalization",
- "Parameters": [
- {
- "Name": "services",
- "Type": "Microsoft.Extensions.DependencyInjection.IServiceCollection"
- },
- {
- "Name": "setupAction",
- "Type": "System.Action"
- }
- ],
- "ReturnType": "Microsoft.Extensions.DependencyInjection.IServiceCollection",
- "Static": true,
- "Extension": true,
- "Visibility": "Public",
- "GenericParameter": []
- }
- ],
- "GenericParameters": []
- },
- {
- "Name": "Microsoft.Extensions.Localization.IResourceNamesCache",
- "Visibility": "Public",
- "Kind": "Interface",
- "Abstract": true,
- "ImplementedInterfaces": [],
- "Members": [
- {
- "Kind": "Method",
- "Name": "GetOrAdd",
- "Parameters": [
- {
- "Name": "name",
- "Type": "System.String"
- },
- {
- "Name": "valueFactory",
- "Type": "System.Func>"
- }
- ],
- "ReturnType": "System.Collections.Generic.IList",
- "GenericParameter": []
- }
- ],
- "GenericParameters": []
- },
- {
- "Name": "Microsoft.Extensions.Localization.LocalizationOptions",
- "Visibility": "Public",
- "Kind": "Class",
- "ImplementedInterfaces": [],
- "Members": [
- {
- "Kind": "Method",
- "Name": "get_ResourcesPath",
- "Parameters": [],
- "ReturnType": "System.String",
- "Visibility": "Public",
- "GenericParameter": []
- },
- {
- "Kind": "Method",
- "Name": "set_ResourcesPath",
- "Parameters": [
- {
- "Name": "value",
- "Type": "System.String"
- }
- ],
- "ReturnType": "System.Void",
- "Visibility": "Public",
- "GenericParameter": []
- },
- {
- "Kind": "Constructor",
- "Name": ".ctor",
- "Parameters": [],
- "Visibility": "Public",
- "GenericParameter": []
- }
- ],
- "GenericParameters": []
- },
- {
- "Name": "Microsoft.Extensions.Localization.ResourceLocationAttribute",
- "Visibility": "Public",
- "Kind": "Class",
- "BaseType": "System.Attribute",
- "ImplementedInterfaces": [],
- "Members": [
- {
- "Kind": "Method",
- "Name": "get_ResourceLocation",
- "Parameters": [],
- "ReturnType": "System.String",
- "Visibility": "Public",
- "GenericParameter": []
- },
- {
- "Kind": "Constructor",
- "Name": ".ctor",
- "Parameters": [
- {
- "Name": "resourceLocation",
- "Type": "System.String"
- }
- ],
- "Visibility": "Public",
- "GenericParameter": []
- }
- ],
- "GenericParameters": []
- },
- {
- "Name": "Microsoft.Extensions.Localization.ResourceManagerStringLocalizer",
- "Visibility": "Public",
- "Kind": "Class",
- "ImplementedInterfaces": [
- "Microsoft.Extensions.Localization.IStringLocalizer"
- ],
- "Members": [
- {
- "Kind": "Method",
- "Name": "get_Item",
- "Parameters": [
- {
- "Name": "name",
- "Type": "System.String"
- }
- ],
- "ReturnType": "Microsoft.Extensions.Localization.LocalizedString",
- "Virtual": true,
- "ImplementedInterface": "Microsoft.Extensions.Localization.IStringLocalizer",
- "Visibility": "Public",
- "GenericParameter": []
- },
- {
- "Kind": "Method",
- "Name": "get_Item",
- "Parameters": [
- {
- "Name": "name",
- "Type": "System.String"
- },
- {
- "Name": "arguments",
- "Type": "System.Object[]",
- "IsParams": true
- }
- ],
- "ReturnType": "Microsoft.Extensions.Localization.LocalizedString",
- "Virtual": true,
- "ImplementedInterface": "Microsoft.Extensions.Localization.IStringLocalizer",
- "Visibility": "Public",
- "GenericParameter": []
- },
- {
- "Kind": "Method",
- "Name": "WithCulture",
- "Parameters": [
- {
- "Name": "culture",
- "Type": "System.Globalization.CultureInfo"
- }
- ],
- "ReturnType": "Microsoft.Extensions.Localization.IStringLocalizer",
- "Sealed": true,
- "Virtual": true,
- "ImplementedInterface": "Microsoft.Extensions.Localization.IStringLocalizer",
- "Visibility": "Public",
- "GenericParameter": []
- },
- {
- "Kind": "Method",
- "Name": "GetAllStrings",
- "Parameters": [
- {
- "Name": "includeParentCultures",
- "Type": "System.Boolean"
- }
- ],
- "ReturnType": "System.Collections.Generic.IEnumerable",
- "Virtual": true,
- "ImplementedInterface": "Microsoft.Extensions.Localization.IStringLocalizer",
- "Visibility": "Public",
- "GenericParameter": []
- },
- {
- "Kind": "Method",
- "Name": "GetAllStrings",
- "Parameters": [
- {
- "Name": "includeParentCultures",
- "Type": "System.Boolean"
- },
- {
- "Name": "culture",
- "Type": "System.Globalization.CultureInfo"
- }
- ],
- "ReturnType": "System.Collections.Generic.IEnumerable",
- "Visibility": "Protected",
- "GenericParameter": []
- },
- {
- "Kind": "Method",
- "Name": "GetStringSafely",
- "Parameters": [
- {
- "Name": "name",
- "Type": "System.String"
- },
- {
- "Name": "culture",
- "Type": "System.Globalization.CultureInfo"
- }
- ],
- "ReturnType": "System.String",
- "Visibility": "Protected",
- "GenericParameter": []
- },
- {
- "Kind": "Constructor",
- "Name": ".ctor",
- "Parameters": [
- {
- "Name": "resourceManager",
- "Type": "System.Resources.ResourceManager"
- },
- {
- "Name": "resourceAssembly",
- "Type": "System.Reflection.Assembly"
- },
- {
- "Name": "baseName",
- "Type": "System.String"
- },
- {
- "Name": "resourceNamesCache",
- "Type": "Microsoft.Extensions.Localization.IResourceNamesCache"
- },
- {
- "Name": "logger",
- "Type": "Microsoft.Extensions.Logging.ILogger"
- }
- ],
- "Visibility": "Public",
- "GenericParameter": []
- },
- {
- "Kind": "Constructor",
- "Name": ".ctor",
- "Parameters": [
- {
- "Name": "resourceManager",
- "Type": "System.Resources.ResourceManager"
- },
- {
- "Name": "resourceAssemblyWrapper",
- "Type": "Microsoft.Extensions.Localization.Internal.AssemblyWrapper"
- },
- {
- "Name": "baseName",
- "Type": "System.String"
- },
- {
- "Name": "resourceNamesCache",
- "Type": "Microsoft.Extensions.Localization.IResourceNamesCache"
- },
- {
- "Name": "logger",
- "Type": "Microsoft.Extensions.Logging.ILogger"
- }
- ],
- "Visibility": "Public",
- "GenericParameter": []
- },
- {
- "Kind": "Constructor",
- "Name": ".ctor",
- "Parameters": [
- {
- "Name": "resourceManager",
- "Type": "System.Resources.ResourceManager"
- },
- {
- "Name": "resourceStringProvider",
- "Type": "Microsoft.Extensions.Localization.Internal.IResourceStringProvider"
- },
- {
- "Name": "baseName",
- "Type": "System.String"
- },
- {
- "Name": "resourceNamesCache",
- "Type": "Microsoft.Extensions.Localization.IResourceNamesCache"
- },
- {
- "Name": "logger",
- "Type": "Microsoft.Extensions.Logging.ILogger"
- }
- ],
- "Visibility": "Public",
- "GenericParameter": []
- }
- ],
- "GenericParameters": []
- },
- {
- "Name": "Microsoft.Extensions.Localization.ResourceManagerStringLocalizerFactory",
- "Visibility": "Public",
- "Kind": "Class",
- "ImplementedInterfaces": [
- "Microsoft.Extensions.Localization.IStringLocalizerFactory"
- ],
- "Members": [
- {
- "Kind": "Method",
- "Name": "GetResourcePrefix",
- "Parameters": [
- {
- "Name": "typeInfo",
- "Type": "System.Reflection.TypeInfo"
- }
- ],
- "ReturnType": "System.String",
- "Virtual": true,
- "Visibility": "Protected",
- "GenericParameter": []
- },
- {
- "Kind": "Method",
- "Name": "GetResourcePrefix",
- "Parameters": [
- {
- "Name": "typeInfo",
- "Type": "System.Reflection.TypeInfo"
- },
- {
- "Name": "baseNamespace",
- "Type": "System.String"
- },
- {
- "Name": "resourcesRelativePath",
- "Type": "System.String"
- }
- ],
- "ReturnType": "System.String",
- "Virtual": true,
- "Visibility": "Protected",
- "GenericParameter": []
- },
- {
- "Kind": "Method",
- "Name": "GetResourcePrefix",
- "Parameters": [
- {
- "Name": "baseResourceName",
- "Type": "System.String"
- },
- {
- "Name": "baseNamespace",
- "Type": "System.String"
- }
- ],
- "ReturnType": "System.String",
- "Virtual": true,
- "Visibility": "Protected",
- "GenericParameter": []
- },
- {
- "Kind": "Method",
- "Name": "Create",
- "Parameters": [
- {
- "Name": "resourceSource",
- "Type": "System.Type"
- }
- ],
- "ReturnType": "Microsoft.Extensions.Localization.IStringLocalizer",
- "Sealed": true,
- "Virtual": true,
- "ImplementedInterface": "Microsoft.Extensions.Localization.IStringLocalizerFactory",
- "Visibility": "Public",
- "GenericParameter": []
- },
- {
- "Kind": "Method",
- "Name": "Create",
- "Parameters": [
- {
- "Name": "baseName",
- "Type": "System.String"
- },
- {
- "Name": "location",
- "Type": "System.String"
- }
- ],
- "ReturnType": "Microsoft.Extensions.Localization.IStringLocalizer",
- "Sealed": true,
- "Virtual": true,
- "ImplementedInterface": "Microsoft.Extensions.Localization.IStringLocalizerFactory",
- "Visibility": "Public",
- "GenericParameter": []
- },
- {
- "Kind": "Method",
- "Name": "CreateResourceManagerStringLocalizer",
- "Parameters": [
- {
- "Name": "assembly",
- "Type": "System.Reflection.Assembly"
- },
- {
- "Name": "baseName",
- "Type": "System.String"
- }
- ],
- "ReturnType": "Microsoft.Extensions.Localization.ResourceManagerStringLocalizer",
- "Virtual": true,
- "Visibility": "Protected",
- "GenericParameter": []
- },
- {
- "Kind": "Method",
- "Name": "GetResourcePrefix",
- "Parameters": [
- {
- "Name": "location",
- "Type": "System.String"
- },
- {
- "Name": "baseName",
- "Type": "System.String"
- },
- {
- "Name": "resourceLocation",
- "Type": "System.String"
- }
- ],
- "ReturnType": "System.String",
- "Virtual": true,
- "Visibility": "Protected",
- "GenericParameter": []
- },
- {
- "Kind": "Method",
- "Name": "GetResourceLocationAttribute",
- "Parameters": [
- {
- "Name": "assembly",
- "Type": "System.Reflection.Assembly"
- }
- ],
- "ReturnType": "Microsoft.Extensions.Localization.ResourceLocationAttribute",
- "Virtual": true,
- "Visibility": "Protected",
- "GenericParameter": []
- },
- {
- "Kind": "Method",
- "Name": "GetRootNamespaceAttribute",
- "Parameters": [
- {
- "Name": "assembly",
- "Type": "System.Reflection.Assembly"
- }
- ],
- "ReturnType": "Microsoft.Extensions.Localization.RootNamespaceAttribute",
- "Virtual": true,
- "Visibility": "Protected",
- "GenericParameter": []
- },
- {
- "Kind": "Constructor",
- "Name": ".ctor",
- "Parameters": [
- {
- "Name": "localizationOptions",
- "Type": "Microsoft.Extensions.Options.IOptions"
- },
- {
- "Name": "loggerFactory",
- "Type": "Microsoft.Extensions.Logging.ILoggerFactory"
- }
- ],
- "Visibility": "Public",
- "GenericParameter": []
- }
- ],
- "GenericParameters": []
- },
- {
- "Name": "Microsoft.Extensions.Localization.ResourceManagerWithCultureStringLocalizer",
- "Visibility": "Public",
- "Kind": "Class",
- "BaseType": "Microsoft.Extensions.Localization.ResourceManagerStringLocalizer",
- "ImplementedInterfaces": [],
- "Members": [
- {
- "Kind": "Method",
- "Name": "get_Item",
- "Parameters": [
- {
- "Name": "name",
- "Type": "System.String"
- }
- ],
- "ReturnType": "Microsoft.Extensions.Localization.LocalizedString",
- "Virtual": true,
- "Override": true,
- "ImplementedInterface": "Microsoft.Extensions.Localization.IStringLocalizer",
- "Visibility": "Public",
- "GenericParameter": []
- },
- {
- "Kind": "Method",
- "Name": "get_Item",
- "Parameters": [
- {
- "Name": "name",
- "Type": "System.String"
- },
- {
- "Name": "arguments",
- "Type": "System.Object[]",
- "IsParams": true
- }
- ],
- "ReturnType": "Microsoft.Extensions.Localization.LocalizedString",
- "Virtual": true,
- "Override": true,
- "ImplementedInterface": "Microsoft.Extensions.Localization.IStringLocalizer",
- "Visibility": "Public",
- "GenericParameter": []
- },
- {
- "Kind": "Method",
- "Name": "GetAllStrings",
- "Parameters": [
- {
- "Name": "includeParentCultures",
- "Type": "System.Boolean"
- }
- ],
- "ReturnType": "System.Collections.Generic.IEnumerable",
- "Virtual": true,
- "Override": true,
- "ImplementedInterface": "Microsoft.Extensions.Localization.IStringLocalizer",
- "Visibility": "Public",
- "GenericParameter": []
- },
- {
- "Kind": "Constructor",
- "Name": ".ctor",
- "Parameters": [
- {
- "Name": "resourceManager",
- "Type": "System.Resources.ResourceManager"
- },
- {
- "Name": "resourceAssembly",
- "Type": "System.Reflection.Assembly"
- },
- {
- "Name": "baseName",
- "Type": "System.String"
- },
- {
- "Name": "resourceNamesCache",
- "Type": "Microsoft.Extensions.Localization.IResourceNamesCache"
- },
- {
- "Name": "culture",
- "Type": "System.Globalization.CultureInfo"
- },
- {
- "Name": "logger",
- "Type": "Microsoft.Extensions.Logging.ILogger"
- }
- ],
- "Visibility": "Public",
- "GenericParameter": []
- }
- ],
- "GenericParameters": []
- },
- {
- "Name": "Microsoft.Extensions.Localization.ResourceNamesCache",
- "Visibility": "Public",
- "Kind": "Class",
- "ImplementedInterfaces": [
- "Microsoft.Extensions.Localization.IResourceNamesCache"
- ],
- "Members": [
- {
- "Kind": "Method",
- "Name": "GetOrAdd",
- "Parameters": [
- {
- "Name": "name",
- "Type": "System.String"
- },
- {
- "Name": "valueFactory",
- "Type": "System.Func>"
- }
- ],
- "ReturnType": "System.Collections.Generic.IList",
- "Sealed": true,
- "Virtual": true,
- "ImplementedInterface": "Microsoft.Extensions.Localization.IResourceNamesCache",
- "Visibility": "Public",
- "GenericParameter": []
- },
- {
- "Kind": "Constructor",
- "Name": ".ctor",
- "Parameters": [],
- "Visibility": "Public",
- "GenericParameter": []
- }
- ],
- "GenericParameters": []
- },
- {
- "Name": "Microsoft.Extensions.Localization.RootNamespaceAttribute",
- "Visibility": "Public",
- "Kind": "Class",
- "BaseType": "System.Attribute",
- "ImplementedInterfaces": [],
- "Members": [
- {
- "Kind": "Method",
- "Name": "get_RootNamespace",
- "Parameters": [],
- "ReturnType": "System.String",
- "Visibility": "Public",
- "GenericParameter": []
- },
- {
- "Kind": "Constructor",
- "Name": ".ctor",
- "Parameters": [
- {
- "Name": "rootNamespace",
- "Type": "System.String"
- }
- ],
- "Visibility": "Public",
- "GenericParameter": []
- }
- ],
- "GenericParameters": []
- }
- ]
-}
\ No newline at end of file
diff --git a/src/Microsoft.AspNetCore.Localization.Routing/Microsoft.AspNetCore.Localization.Routing.csproj b/src/Middleware/Localization.Routing/src/Microsoft.AspNetCore.Localization.Routing.csproj
similarity index 63%
rename from src/Microsoft.AspNetCore.Localization.Routing/Microsoft.AspNetCore.Localization.Routing.csproj
rename to src/Middleware/Localization.Routing/src/Microsoft.AspNetCore.Localization.Routing.csproj
index be1be0e733..18d5d0788e 100644
--- a/src/Microsoft.AspNetCore.Localization.Routing/Microsoft.AspNetCore.Localization.Routing.csproj
+++ b/src/Middleware/Localization.Routing/src/Microsoft.AspNetCore.Localization.Routing.csproj
@@ -10,11 +10,8 @@
-
-
-
-
-
+
+
diff --git a/src/Microsoft.AspNetCore.Localization.Routing/RouteDataRequestCultureProvider.cs b/src/Middleware/Localization.Routing/src/RouteDataRequestCultureProvider.cs
similarity index 100%
rename from src/Microsoft.AspNetCore.Localization.Routing/RouteDataRequestCultureProvider.cs
rename to src/Middleware/Localization.Routing/src/RouteDataRequestCultureProvider.cs
diff --git a/src/Microsoft.AspNetCore.Localization.Routing/baseline.netcore.json b/src/Middleware/Localization.Routing/src/baseline.netcore.json
similarity index 100%
rename from src/Microsoft.AspNetCore.Localization.Routing/baseline.netcore.json
rename to src/Middleware/Localization.Routing/src/baseline.netcore.json
diff --git a/src/Middleware/Localization.Routing/test/Microsoft.AspNetCore.Localization.Routing.Tests.csproj b/src/Middleware/Localization.Routing/test/Microsoft.AspNetCore.Localization.Routing.Tests.csproj
new file mode 100644
index 0000000000..90885d402f
--- /dev/null
+++ b/src/Middleware/Localization.Routing/test/Microsoft.AspNetCore.Localization.Routing.Tests.csproj
@@ -0,0 +1,13 @@
+
+
+
+ netcoreapp3.0
+
+
+
+
+
+
+
+
+
diff --git a/test/Microsoft.AspNetCore.Localization.Routing.Tests/RouteDataRequestCultureProviderTest.cs b/src/Middleware/Localization.Routing/test/RouteDataRequestCultureProviderTest.cs
similarity index 100%
rename from test/Microsoft.AspNetCore.Localization.Routing.Tests/RouteDataRequestCultureProviderTest.cs
rename to src/Middleware/Localization.Routing/test/RouteDataRequestCultureProviderTest.cs
diff --git a/src/Middleware/Localization/README.md b/src/Middleware/Localization/README.md
new file mode 100644
index 0000000000..d5d82d9a30
--- /dev/null
+++ b/src/Middleware/Localization/README.md
@@ -0,0 +1,26 @@
+Localization
+============
+
+Localization abstractions and implementations for ASP.NET Core applications.
+
+### Localization Samples
+
+Here are a few samples that demonstrate different localization features including: localized views, localized strings in data annotations, creating custom localization resources ... etc.
+
+ * [Localization.StarterWeb](https://github.com/aspnet/Entropy/tree/master/samples/Localization.StarterWeb) - comprehensive localization sample demonstrates almost all of the localization features
+ * [Localization.EntityFramework](https://github.com/aspnet/Entropy/tree/master/samples/Localization.EntityFramework) - localization sample that uses an EntityFramework based localization provider for resources
+ * [Localization.CustomResourceManager](https://github.com/aspnet/Entropy/tree/master/samples/Localization.CustomResourceManager) - localization sample that uses a custom `ResourceManagerStringLocalizer`
+
+### Localization Providers
+
+Community projects adapt _RequestCultureProvider_ for determining the culture information of an `HttpRequest`.
+
+ * [My.AspNetCore.Localization.Json](https://github.com/hishamco/My.AspNetCore.Localization.Json) - determines the culture information for a request from a JSON file.
+ * [My.AspNetCore.Localization.Session](https://github.com/hishamco/My.AspNetCore.Localization.Session) - determines the culture information for a request via values in the session state.
+
+ ### Localization Resources
+
+Community projects adapt _IStringLocalizer_ for fetching the localiztion resources.
+
+ * [My.Extensions.Localization.Json](https://github.com/hishamco/My.Extensions.Localization.Json) - fetches the localization resources from JSON file(s).
+ * [OrchardCore.Localization.PortableObject](https://github.com/OrchardCMS/OrchardCore/tree/dev/src/OrchardCore/OrchardCore.Localization.Core/PortableObject) - fetches the localization resources from PO file(s).
diff --git a/src/Middleware/Localization/sample/LocalizationSample.csproj b/src/Middleware/Localization/sample/LocalizationSample.csproj
new file mode 100644
index 0000000000..6fb61d7925
--- /dev/null
+++ b/src/Middleware/Localization/sample/LocalizationSample.csproj
@@ -0,0 +1,16 @@
+
+
+
+ netcoreapp3.0
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/LocalizationSample/My/Resources/Startup.es-ES.resx b/src/Middleware/Localization/sample/My/Resources/Startup.es-ES.resx
similarity index 100%
rename from samples/LocalizationSample/My/Resources/Startup.es-ES.resx
rename to src/Middleware/Localization/sample/My/Resources/Startup.es-ES.resx
diff --git a/samples/LocalizationSample/My/Resources/Startup.fr-FR.resx b/src/Middleware/Localization/sample/My/Resources/Startup.fr-FR.resx
similarity index 100%
rename from samples/LocalizationSample/My/Resources/Startup.fr-FR.resx
rename to src/Middleware/Localization/sample/My/Resources/Startup.fr-FR.resx
diff --git a/samples/LocalizationSample/My/Resources/Startup.ja-JP.resx b/src/Middleware/Localization/sample/My/Resources/Startup.ja-JP.resx
similarity index 100%
rename from samples/LocalizationSample/My/Resources/Startup.ja-JP.resx
rename to src/Middleware/Localization/sample/My/Resources/Startup.ja-JP.resx
diff --git a/samples/LocalizationSample/My/Resources/Startup.zh-CN.resx b/src/Middleware/Localization/sample/My/Resources/Startup.zh-CN.resx
similarity index 100%
rename from samples/LocalizationSample/My/Resources/Startup.zh-CN.resx
rename to src/Middleware/Localization/sample/My/Resources/Startup.zh-CN.resx
diff --git a/samples/LocalizationSample/My/Resources/Startup.zh.resx b/src/Middleware/Localization/sample/My/Resources/Startup.zh.resx
similarity index 100%
rename from samples/LocalizationSample/My/Resources/Startup.zh.resx
rename to src/Middleware/Localization/sample/My/Resources/Startup.zh.resx
diff --git a/samples/LocalizationSample/Startup.cs b/src/Middleware/Localization/sample/Startup.cs
similarity index 100%
rename from samples/LocalizationSample/Startup.cs
rename to src/Middleware/Localization/sample/Startup.cs
diff --git a/src/Microsoft.AspNetCore.Localization/AcceptLanguageHeaderRequestCultureProvider.cs b/src/Middleware/Localization/src/AcceptLanguageHeaderRequestCultureProvider.cs
similarity index 100%
rename from src/Microsoft.AspNetCore.Localization/AcceptLanguageHeaderRequestCultureProvider.cs
rename to src/Middleware/Localization/src/AcceptLanguageHeaderRequestCultureProvider.cs
diff --git a/src/Microsoft.AspNetCore.Localization/ApplicationBuilderExtensions.cs b/src/Middleware/Localization/src/ApplicationBuilderExtensions.cs
similarity index 100%
rename from src/Microsoft.AspNetCore.Localization/ApplicationBuilderExtensions.cs
rename to src/Middleware/Localization/src/ApplicationBuilderExtensions.cs
diff --git a/src/Microsoft.AspNetCore.Localization/CookieRequestCultureProvider.cs b/src/Middleware/Localization/src/CookieRequestCultureProvider.cs
similarity index 100%
rename from src/Microsoft.AspNetCore.Localization/CookieRequestCultureProvider.cs
rename to src/Middleware/Localization/src/CookieRequestCultureProvider.cs
diff --git a/src/Microsoft.AspNetCore.Localization/CustomRequestCultureProvider.cs b/src/Middleware/Localization/src/CustomRequestCultureProvider.cs
similarity index 100%
rename from src/Microsoft.AspNetCore.Localization/CustomRequestCultureProvider.cs
rename to src/Middleware/Localization/src/CustomRequestCultureProvider.cs
diff --git a/src/Microsoft.AspNetCore.Localization/IRequestCultureFeature.cs b/src/Middleware/Localization/src/IRequestCultureFeature.cs
similarity index 100%
rename from src/Microsoft.AspNetCore.Localization/IRequestCultureFeature.cs
rename to src/Middleware/Localization/src/IRequestCultureFeature.cs
diff --git a/src/Microsoft.AspNetCore.Localization/IRequestCultureProvider.cs b/src/Middleware/Localization/src/IRequestCultureProvider.cs
similarity index 100%
rename from src/Microsoft.AspNetCore.Localization/IRequestCultureProvider.cs
rename to src/Middleware/Localization/src/IRequestCultureProvider.cs
diff --git a/src/Microsoft.AspNetCore.Localization/Internal/RequestCultureProviderLoggerExtensions.cs b/src/Middleware/Localization/src/Internal/RequestCultureProviderLoggerExtensions.cs
similarity index 100%
rename from src/Microsoft.AspNetCore.Localization/Internal/RequestCultureProviderLoggerExtensions.cs
rename to src/Middleware/Localization/src/Internal/RequestCultureProviderLoggerExtensions.cs
diff --git a/src/Microsoft.AspNetCore.Localization/Microsoft.AspNetCore.Localization.csproj b/src/Middleware/Localization/src/Microsoft.AspNetCore.Localization.csproj
similarity index 51%
rename from src/Microsoft.AspNetCore.Localization/Microsoft.AspNetCore.Localization.csproj
rename to src/Middleware/Localization/src/Microsoft.AspNetCore.Localization.csproj
index 7fe6aaf4df..00f43deee7 100644
--- a/src/Microsoft.AspNetCore.Localization/Microsoft.AspNetCore.Localization.csproj
+++ b/src/Middleware/Localization/src/Microsoft.AspNetCore.Localization.csproj
@@ -10,13 +10,10 @@
-
-
-
-
-
-
-
+
+
+
+
diff --git a/src/Microsoft.AspNetCore.Localization/Properties/Resources.Designer.cs b/src/Middleware/Localization/src/Properties/Resources.Designer.cs
similarity index 100%
rename from src/Microsoft.AspNetCore.Localization/Properties/Resources.Designer.cs
rename to src/Middleware/Localization/src/Properties/Resources.Designer.cs
diff --git a/src/Microsoft.AspNetCore.Localization/ProviderCultureResult.cs b/src/Middleware/Localization/src/ProviderCultureResult.cs
similarity index 100%
rename from src/Microsoft.AspNetCore.Localization/ProviderCultureResult.cs
rename to src/Middleware/Localization/src/ProviderCultureResult.cs
diff --git a/src/Microsoft.AspNetCore.Localization/QueryStringRequestCultureProvider.cs b/src/Middleware/Localization/src/QueryStringRequestCultureProvider.cs
similarity index 100%
rename from src/Microsoft.AspNetCore.Localization/QueryStringRequestCultureProvider.cs
rename to src/Middleware/Localization/src/QueryStringRequestCultureProvider.cs
diff --git a/src/Microsoft.AspNetCore.Localization/RequestCulture.cs b/src/Middleware/Localization/src/RequestCulture.cs
similarity index 100%
rename from src/Microsoft.AspNetCore.Localization/RequestCulture.cs
rename to src/Middleware/Localization/src/RequestCulture.cs
diff --git a/src/Microsoft.AspNetCore.Localization/RequestCultureFeature.cs b/src/Middleware/Localization/src/RequestCultureFeature.cs
similarity index 100%
rename from src/Microsoft.AspNetCore.Localization/RequestCultureFeature.cs
rename to src/Middleware/Localization/src/RequestCultureFeature.cs
diff --git a/src/Microsoft.AspNetCore.Localization/RequestCultureProvider.cs b/src/Middleware/Localization/src/RequestCultureProvider.cs
similarity index 100%
rename from src/Microsoft.AspNetCore.Localization/RequestCultureProvider.cs
rename to src/Middleware/Localization/src/RequestCultureProvider.cs
diff --git a/src/Microsoft.AspNetCore.Localization/RequestLocalizationMiddleware.cs b/src/Middleware/Localization/src/RequestLocalizationMiddleware.cs
similarity index 100%
rename from src/Microsoft.AspNetCore.Localization/RequestLocalizationMiddleware.cs
rename to src/Middleware/Localization/src/RequestLocalizationMiddleware.cs
diff --git a/src/Microsoft.AspNetCore.Localization/RequestLocalizationOptions.cs b/src/Middleware/Localization/src/RequestLocalizationOptions.cs
similarity index 100%
rename from src/Microsoft.AspNetCore.Localization/RequestLocalizationOptions.cs
rename to src/Middleware/Localization/src/RequestLocalizationOptions.cs
diff --git a/src/Microsoft.AspNetCore.Localization/RequestLocalizationOptionsExtensions.cs b/src/Middleware/Localization/src/RequestLocalizationOptionsExtensions.cs
similarity index 100%
rename from src/Microsoft.AspNetCore.Localization/RequestLocalizationOptionsExtensions.cs
rename to src/Middleware/Localization/src/RequestLocalizationOptionsExtensions.cs
diff --git a/src/Microsoft.AspNetCore.Localization/Resources.resx b/src/Middleware/Localization/src/Resources.resx
similarity index 100%
rename from src/Microsoft.AspNetCore.Localization/Resources.resx
rename to src/Middleware/Localization/src/Resources.resx
diff --git a/src/Microsoft.AspNetCore.Localization/baseline.netcore.json b/src/Middleware/Localization/src/baseline.netcore.json
similarity index 100%
rename from src/Microsoft.AspNetCore.Localization/baseline.netcore.json
rename to src/Middleware/Localization/src/baseline.netcore.json
diff --git a/test/Microsoft.AspNetCore.Localization.FunctionalTests/LocalizationSampleTest.cs b/src/Middleware/Localization/test/FunctionalTests/LocalizationSampleTest.cs
similarity index 100%
rename from test/Microsoft.AspNetCore.Localization.FunctionalTests/LocalizationSampleTest.cs
rename to src/Middleware/Localization/test/FunctionalTests/LocalizationSampleTest.cs
diff --git a/test/Microsoft.AspNetCore.Localization.FunctionalTests/LocalizationTest.cs b/src/Middleware/Localization/test/FunctionalTests/LocalizationTest.cs
similarity index 100%
rename from test/Microsoft.AspNetCore.Localization.FunctionalTests/LocalizationTest.cs
rename to src/Middleware/Localization/test/FunctionalTests/LocalizationTest.cs
diff --git a/src/Middleware/Localization/test/FunctionalTests/Microsoft.AspNetCore.Localization.FunctionalTests.csproj b/src/Middleware/Localization/test/FunctionalTests/Microsoft.AspNetCore.Localization.FunctionalTests.csproj
new file mode 100644
index 0000000000..46b23f256c
--- /dev/null
+++ b/src/Middleware/Localization/test/FunctionalTests/Microsoft.AspNetCore.Localization.FunctionalTests.csproj
@@ -0,0 +1,19 @@
+
+
+
+ netcoreapp3.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/Microsoft.AspNetCore.Localization.Tests/AcceptLanguageHeaderRequestCultureProviderTest.cs b/src/Middleware/Localization/test/UnitTests/AcceptLanguageHeaderRequestCultureProviderTest.cs
similarity index 100%
rename from test/Microsoft.AspNetCore.Localization.Tests/AcceptLanguageHeaderRequestCultureProviderTest.cs
rename to src/Middleware/Localization/test/UnitTests/AcceptLanguageHeaderRequestCultureProviderTest.cs
diff --git a/test/Microsoft.AspNetCore.Localization.Tests/CookieRequestCultureProviderTest.cs b/src/Middleware/Localization/test/UnitTests/CookieRequestCultureProviderTest.cs
similarity index 100%
rename from test/Microsoft.AspNetCore.Localization.Tests/CookieRequestCultureProviderTest.cs
rename to src/Middleware/Localization/test/UnitTests/CookieRequestCultureProviderTest.cs
diff --git a/test/Microsoft.AspNetCore.Localization.Tests/CustomRequestCultureProviderTest.cs b/src/Middleware/Localization/test/UnitTests/CustomRequestCultureProviderTest.cs
similarity index 100%
rename from test/Microsoft.AspNetCore.Localization.Tests/CustomRequestCultureProviderTest.cs
rename to src/Middleware/Localization/test/UnitTests/CustomRequestCultureProviderTest.cs
diff --git a/src/Middleware/Localization/test/UnitTests/Microsoft.AspNetCore.Localization.Tests.csproj b/src/Middleware/Localization/test/UnitTests/Microsoft.AspNetCore.Localization.Tests.csproj
new file mode 100644
index 0000000000..0ad51bdc59
--- /dev/null
+++ b/src/Middleware/Localization/test/UnitTests/Microsoft.AspNetCore.Localization.Tests.csproj
@@ -0,0 +1,15 @@
+
+
+
+ netcoreapp3.0
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/Microsoft.AspNetCore.Localization.Tests/QueryStringRequestCultureProviderTest.cs b/src/Middleware/Localization/test/UnitTests/QueryStringRequestCultureProviderTest.cs
similarity index 100%
rename from test/Microsoft.AspNetCore.Localization.Tests/QueryStringRequestCultureProviderTest.cs
rename to src/Middleware/Localization/test/UnitTests/QueryStringRequestCultureProviderTest.cs
diff --git a/test/Microsoft.AspNetCore.Localization.Tests/RequestLocalizationOptionsExtensionsTest.cs b/src/Middleware/Localization/test/UnitTests/RequestLocalizationOptionsExtensionsTest.cs
similarity index 100%
rename from test/Microsoft.AspNetCore.Localization.Tests/RequestLocalizationOptionsExtensionsTest.cs
rename to src/Middleware/Localization/test/UnitTests/RequestLocalizationOptionsExtensionsTest.cs
diff --git a/test/Microsoft.AspNetCore.Localization.Tests/RequestLocalizationOptionsTest.cs b/src/Middleware/Localization/test/UnitTests/RequestLocalizationOptionsTest.cs
similarity index 100%
rename from test/Microsoft.AspNetCore.Localization.Tests/RequestLocalizationOptionsTest.cs
rename to src/Middleware/Localization/test/UnitTests/RequestLocalizationOptionsTest.cs
diff --git a/src/Middleware/Localization/testassets/LocalizationWebsite/LocalizationWebsite.csproj b/src/Middleware/Localization/testassets/LocalizationWebsite/LocalizationWebsite.csproj
new file mode 100644
index 0000000000..d9244e4330
--- /dev/null
+++ b/src/Middleware/Localization/testassets/LocalizationWebsite/LocalizationWebsite.csproj
@@ -0,0 +1,21 @@
+
+
+
+ netcoreapp3.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/LocalizationWebsite/Models/Customer.cs b/src/Middleware/Localization/testassets/LocalizationWebsite/Models/Customer.cs
similarity index 100%
rename from test/LocalizationWebsite/Models/Customer.cs
rename to src/Middleware/Localization/testassets/LocalizationWebsite/Models/Customer.cs
diff --git a/test/LocalizationWebsite/Models/Customer.fr-FR.resx b/src/Middleware/Localization/testassets/LocalizationWebsite/Models/Customer.fr-FR.resx
similarity index 100%
rename from test/LocalizationWebsite/Models/Customer.fr-FR.resx
rename to src/Middleware/Localization/testassets/LocalizationWebsite/Models/Customer.fr-FR.resx
diff --git a/test/LocalizationWebsite/Program.cs b/src/Middleware/Localization/testassets/LocalizationWebsite/Program.cs
similarity index 100%
rename from test/LocalizationWebsite/Program.cs
rename to src/Middleware/Localization/testassets/LocalizationWebsite/Program.cs
diff --git a/test/LocalizationWebsite/Resources/Models.Customer.fr-FR.resx b/src/Middleware/Localization/testassets/LocalizationWebsite/Resources/Models.Customer.fr-FR.resx
similarity index 100%
rename from test/LocalizationWebsite/Resources/Models.Customer.fr-FR.resx
rename to src/Middleware/Localization/testassets/LocalizationWebsite/Resources/Models.Customer.fr-FR.resx
diff --git a/test/LocalizationWebsite/Resources/StartupCustomCulturePreserved.en-US.resx b/src/Middleware/Localization/testassets/LocalizationWebsite/Resources/StartupCustomCulturePreserved.en-US.resx
similarity index 100%
rename from test/LocalizationWebsite/Resources/StartupCustomCulturePreserved.en-US.resx
rename to src/Middleware/Localization/testassets/LocalizationWebsite/Resources/StartupCustomCulturePreserved.en-US.resx
diff --git a/test/LocalizationWebsite/Resources/StartupResourcesInFolder.fr-FR.resx b/src/Middleware/Localization/testassets/LocalizationWebsite/Resources/StartupResourcesInFolder.fr-FR.resx
similarity index 100%
rename from test/LocalizationWebsite/Resources/StartupResourcesInFolder.fr-FR.resx
rename to src/Middleware/Localization/testassets/LocalizationWebsite/Resources/StartupResourcesInFolder.fr-FR.resx
diff --git a/test/LocalizationWebsite/Resources/Test.fr-FR.resx b/src/Middleware/Localization/testassets/LocalizationWebsite/Resources/Test.fr-FR.resx
similarity index 100%
rename from test/LocalizationWebsite/Resources/Test.fr-FR.resx
rename to src/Middleware/Localization/testassets/LocalizationWebsite/Resources/Test.fr-FR.resx
diff --git a/test/LocalizationWebsite/StartupBuilderAPIs.cs b/src/Middleware/Localization/testassets/LocalizationWebsite/StartupBuilderAPIs.cs
similarity index 100%
rename from test/LocalizationWebsite/StartupBuilderAPIs.cs
rename to src/Middleware/Localization/testassets/LocalizationWebsite/StartupBuilderAPIs.cs
diff --git a/test/LocalizationWebsite/StartupCustomCulturePreserved.cs b/src/Middleware/Localization/testassets/LocalizationWebsite/StartupCustomCulturePreserved.cs
similarity index 100%
rename from test/LocalizationWebsite/StartupCustomCulturePreserved.cs
rename to src/Middleware/Localization/testassets/LocalizationWebsite/StartupCustomCulturePreserved.cs
diff --git a/test/LocalizationWebsite/StartupGetAllStrings.cs b/src/Middleware/Localization/testassets/LocalizationWebsite/StartupGetAllStrings.cs
similarity index 100%
rename from test/LocalizationWebsite/StartupGetAllStrings.cs
rename to src/Middleware/Localization/testassets/LocalizationWebsite/StartupGetAllStrings.cs
diff --git a/test/LocalizationWebsite/StartupResourcesAtRootFolder.cs b/src/Middleware/Localization/testassets/LocalizationWebsite/StartupResourcesAtRootFolder.cs
similarity index 100%
rename from test/LocalizationWebsite/StartupResourcesAtRootFolder.cs
rename to src/Middleware/Localization/testassets/LocalizationWebsite/StartupResourcesAtRootFolder.cs
diff --git a/test/LocalizationWebsite/StartupResourcesAtRootFolder.fr-FR.resx b/src/Middleware/Localization/testassets/LocalizationWebsite/StartupResourcesAtRootFolder.fr-FR.resx
similarity index 100%
rename from test/LocalizationWebsite/StartupResourcesAtRootFolder.fr-FR.resx
rename to src/Middleware/Localization/testassets/LocalizationWebsite/StartupResourcesAtRootFolder.fr-FR.resx
diff --git a/test/LocalizationWebsite/StartupResourcesInClassLibrary.cs b/src/Middleware/Localization/testassets/LocalizationWebsite/StartupResourcesInClassLibrary.cs
similarity index 100%
rename from test/LocalizationWebsite/StartupResourcesInClassLibrary.cs
rename to src/Middleware/Localization/testassets/LocalizationWebsite/StartupResourcesInClassLibrary.cs
diff --git a/test/LocalizationWebsite/StartupResourcesInFolder.cs b/src/Middleware/Localization/testassets/LocalizationWebsite/StartupResourcesInFolder.cs
similarity index 100%
rename from test/LocalizationWebsite/StartupResourcesInFolder.cs
rename to src/Middleware/Localization/testassets/LocalizationWebsite/StartupResourcesInFolder.cs
diff --git a/test/LocalizationWebsite/Test.fr-FR.resx b/src/Middleware/Localization/testassets/LocalizationWebsite/Test.fr-FR.resx
similarity index 100%
rename from test/LocalizationWebsite/Test.fr-FR.resx
rename to src/Middleware/Localization/testassets/LocalizationWebsite/Test.fr-FR.resx
diff --git a/test/ResourcesClassLibraryNoAttribute/Model.cs b/src/Middleware/Localization/testassets/ResourcesClassLibraryNoAttribute/Model.cs
similarity index 100%
rename from test/ResourcesClassLibraryNoAttribute/Model.cs
rename to src/Middleware/Localization/testassets/ResourcesClassLibraryNoAttribute/Model.cs
diff --git a/test/ResourcesClassLibraryNoAttribute/Resources/Model.resx b/src/Middleware/Localization/testassets/ResourcesClassLibraryNoAttribute/Resources/Model.resx
similarity index 100%
rename from test/ResourcesClassLibraryNoAttribute/Resources/Model.resx
rename to src/Middleware/Localization/testassets/ResourcesClassLibraryNoAttribute/Resources/Model.resx
diff --git a/test/ResourcesClassLibraryNoAttribute/ResourcesClassLibraryNoAttribute.csproj b/src/Middleware/Localization/testassets/ResourcesClassLibraryNoAttribute/ResourcesClassLibraryNoAttribute.csproj
similarity index 100%
rename from test/ResourcesClassLibraryNoAttribute/ResourcesClassLibraryNoAttribute.csproj
rename to src/Middleware/Localization/testassets/ResourcesClassLibraryNoAttribute/ResourcesClassLibraryNoAttribute.csproj
diff --git a/test/ResourcesClassLibraryWithAttribute/AssemblyInfo.cs b/src/Middleware/Localization/testassets/ResourcesClassLibraryWithAttribute/AssemblyInfo.cs
similarity index 100%
rename from test/ResourcesClassLibraryWithAttribute/AssemblyInfo.cs
rename to src/Middleware/Localization/testassets/ResourcesClassLibraryWithAttribute/AssemblyInfo.cs
diff --git a/test/ResourcesClassLibraryWithAttribute/Model.cs b/src/Middleware/Localization/testassets/ResourcesClassLibraryWithAttribute/Model.cs
similarity index 100%
rename from test/ResourcesClassLibraryWithAttribute/Model.cs
rename to src/Middleware/Localization/testassets/ResourcesClassLibraryWithAttribute/Model.cs
diff --git a/test/ResourcesClassLibraryWithAttribute/ResourceFolder/Model.resx b/src/Middleware/Localization/testassets/ResourcesClassLibraryWithAttribute/ResourceFolder/Model.resx
similarity index 100%
rename from test/ResourcesClassLibraryWithAttribute/ResourceFolder/Model.resx
rename to src/Middleware/Localization/testassets/ResourcesClassLibraryWithAttribute/ResourceFolder/Model.resx
diff --git a/test/ResourcesClassLibraryWithAttribute/ResourcesClassLibraryWithAttribute.csproj b/src/Middleware/Localization/testassets/ResourcesClassLibraryWithAttribute/ResourcesClassLibraryWithAttribute.csproj
similarity index 65%
rename from test/ResourcesClassLibraryWithAttribute/ResourcesClassLibraryWithAttribute.csproj
rename to src/Middleware/Localization/testassets/ResourcesClassLibraryWithAttribute/ResourcesClassLibraryWithAttribute.csproj
index 692d903799..9d1523c3be 100644
--- a/test/ResourcesClassLibraryWithAttribute/ResourcesClassLibraryWithAttribute.csproj
+++ b/src/Middleware/Localization/testassets/ResourcesClassLibraryWithAttribute/ResourcesClassLibraryWithAttribute.csproj
@@ -6,7 +6,7 @@
-
+
diff --git a/test/Directory.Build.props b/test/Directory.Build.props
deleted file mode 100644
index 1e0980f663..0000000000
--- a/test/Directory.Build.props
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/test/LocalizationWebsite/LocalizationWebsite.csproj b/test/LocalizationWebsite/LocalizationWebsite.csproj
deleted file mode 100644
index 0547ec8dda..0000000000
--- a/test/LocalizationWebsite/LocalizationWebsite.csproj
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
- netcoreapp3.0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/test/Microsoft.AspNetCore.Localization.FunctionalTests/Microsoft.AspNetCore.Localization.FunctionalTests.csproj b/test/Microsoft.AspNetCore.Localization.FunctionalTests/Microsoft.AspNetCore.Localization.FunctionalTests.csproj
deleted file mode 100644
index ba3c8d5580..0000000000
--- a/test/Microsoft.AspNetCore.Localization.FunctionalTests/Microsoft.AspNetCore.Localization.FunctionalTests.csproj
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
- netcoreapp3.0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/test/Microsoft.AspNetCore.Localization.Routing.Tests/Microsoft.AspNetCore.Localization.Routing.Tests.csproj b/test/Microsoft.AspNetCore.Localization.Routing.Tests/Microsoft.AspNetCore.Localization.Routing.Tests.csproj
deleted file mode 100644
index 0f9fe43666..0000000000
--- a/test/Microsoft.AspNetCore.Localization.Routing.Tests/Microsoft.AspNetCore.Localization.Routing.Tests.csproj
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
- netcoreapp3.0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/test/Microsoft.AspNetCore.Localization.Tests/Microsoft.AspNetCore.Localization.Tests.csproj b/test/Microsoft.AspNetCore.Localization.Tests/Microsoft.AspNetCore.Localization.Tests.csproj
deleted file mode 100644
index 5a5f0a6caa..0000000000
--- a/test/Microsoft.AspNetCore.Localization.Tests/Microsoft.AspNetCore.Localization.Tests.csproj
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
- netcoreapp3.0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/test/Microsoft.Extensions.Localization.Tests/LocalizationServiceCollectionExtensionsTest.cs b/test/Microsoft.Extensions.Localization.Tests/LocalizationServiceCollectionExtensionsTest.cs
deleted file mode 100644
index d78581655c..0000000000
--- a/test/Microsoft.Extensions.Localization.Tests/LocalizationServiceCollectionExtensionsTest.cs
+++ /dev/null
@@ -1,68 +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.Linq;
-using Microsoft.Extensions.Localization;
-using Microsoft.Extensions.Options;
-using Xunit;
-
-namespace Microsoft.Extensions.DependencyInjection
-{
- public class LocalizationServiceCollectionExtensionsTest
- {
- [Fact]
- public void AddLocalization_AddsNeededServices()
- {
- // Arrange
- var collection = new ServiceCollection();
-
- // Act
- LocalizationServiceCollectionExtensions.AddLocalizationServices(collection);
-
- // Assert
- AssertContainsSingle(collection, typeof(IStringLocalizerFactory), typeof(ResourceManagerStringLocalizerFactory));
- AssertContainsSingle(collection, typeof(IStringLocalizer<>), typeof(StringLocalizer<>));
- }
-
- [Fact]
- public void AddLocalizationWithLocalizationOptions_AddsNeededServices()
- {
- // Arrange
- var collection = new ServiceCollection();
-
- // Act
- LocalizationServiceCollectionExtensions.AddLocalizationServices(
- collection,
- options => options.ResourcesPath = "Resources");
-
- AssertContainsSingle(collection, typeof(IStringLocalizerFactory), typeof(ResourceManagerStringLocalizerFactory));
- AssertContainsSingle(collection, typeof(IStringLocalizer<>), typeof(StringLocalizer<>));
- }
-
- private void AssertContainsSingle(
- IServiceCollection services,
- Type serviceType,
- Type implementationType)
- {
- var matches = services
- .Where(sd =>
- sd.ServiceType == serviceType &&
- sd.ImplementationType == implementationType)
- .ToArray();
-
- if (matches.Length == 0)
- {
- Assert.True(
- false,
- $"Could not find an instance of {implementationType} registered as {serviceType}");
- }
- else if (matches.Length > 1)
- {
- Assert.True(
- false,
- $"Found multiple instances of {implementationType} registered as {serviceType}");
- }
- }
- }
-}
diff --git a/test/Microsoft.Extensions.Localization.Tests/Microsoft.Extensions.Localization.Tests.csproj b/test/Microsoft.Extensions.Localization.Tests/Microsoft.Extensions.Localization.Tests.csproj
deleted file mode 100644
index 3d0113b6aa..0000000000
--- a/test/Microsoft.Extensions.Localization.Tests/Microsoft.Extensions.Localization.Tests.csproj
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
- netcoreapp3.0;net461
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/test/Microsoft.Extensions.Localization.Tests/ResourceManagerStringLocalizerFactoryTest.cs b/test/Microsoft.Extensions.Localization.Tests/ResourceManagerStringLocalizerFactoryTest.cs
deleted file mode 100644
index 7a18c0e4bd..0000000000
--- a/test/Microsoft.Extensions.Localization.Tests/ResourceManagerStringLocalizerFactoryTest.cs
+++ /dev/null
@@ -1,296 +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.Reflection;
-using Microsoft.Extensions.Logging;
-using Microsoft.Extensions.Logging.Abstractions;
-using Microsoft.Extensions.Options;
-using Moq;
-using Xunit;
-
-// This namespace intentionally matches the default assembly namespace.
-namespace Microsoft.Extensions.Localization.Tests
-{
- public class TestResourceManagerStringLocalizerFactory : ResourceManagerStringLocalizerFactory
- {
- private ResourceLocationAttribute _resourceLocationAttribute;
-
- private RootNamespaceAttribute _rootNamespaceAttribute;
-
- public Assembly Assembly { get; private set; }
- public string BaseName { get; private set; }
-
- public TestResourceManagerStringLocalizerFactory(
- IOptions localizationOptions,
- ResourceLocationAttribute resourceLocationAttribute,
- RootNamespaceAttribute rootNamespaceAttribute,
- ILoggerFactory loggerFactory)
- : base(localizationOptions, loggerFactory)
- {
- _resourceLocationAttribute = resourceLocationAttribute;
- _rootNamespaceAttribute = rootNamespaceAttribute;
- }
-
- protected override ResourceLocationAttribute GetResourceLocationAttribute(Assembly assembly)
- {
- return _resourceLocationAttribute;
- }
-
- protected override RootNamespaceAttribute GetRootNamespaceAttribute(Assembly assembly)
- {
- return _rootNamespaceAttribute;
- }
-
- protected override ResourceManagerStringLocalizer CreateResourceManagerStringLocalizer(Assembly assembly, string baseName)
- {
- BaseName = baseName;
- Assembly = assembly;
-
- return base.CreateResourceManagerStringLocalizer(assembly, baseName);
- }
- }
-
- public class ResourceManagerStringLocalizerFactoryTest
- {
- [Fact]
- public void Create_OverloadsProduceSameResult()
- {
- // Arrange
- var locOptions = new LocalizationOptions();
- var options = new Mock>();
- options.Setup(o => o.Value).Returns(locOptions);
-
- var resourceLocationAttribute = new ResourceLocationAttribute(Path.Combine("My", "Resources"));
- var loggerFactory = NullLoggerFactory.Instance;
- var typeFactory = new TestResourceManagerStringLocalizerFactory(
- options.Object,
- resourceLocationAttribute,
- rootNamespaceAttribute: null,
- loggerFactory: loggerFactory);
- var stringFactory = new TestResourceManagerStringLocalizerFactory(
- options.Object,
- resourceLocationAttribute,
- rootNamespaceAttribute: null,
- loggerFactory: loggerFactory);
- var type = typeof(ResourceManagerStringLocalizerFactoryTest);
- var assemblyName = new AssemblyName(type.GetTypeInfo().Assembly.FullName);
-
- // Act
- typeFactory.Create(type);
- stringFactory.Create(type.Name, assemblyName.Name);
-
- // Assert
- Assert.Equal(typeFactory.BaseName, stringFactory.BaseName);
- Assert.Equal(typeFactory.Assembly.FullName, stringFactory.Assembly.FullName);
- }
-
- [Fact]
- public void Create_FromType_ReturnsCachedResultForSameType()
- {
- // Arrange
- var locOptions = new LocalizationOptions();
- var options = new Mock>();
- options.Setup(o => o.Value).Returns(locOptions);
- var loggerFactory = NullLoggerFactory.Instance;
- var factory = new ResourceManagerStringLocalizerFactory(localizationOptions: options.Object, loggerFactory: loggerFactory);
-
- // Act
- var result1 = factory.Create(typeof(ResourceManagerStringLocalizerFactoryTest));
- var result2 = factory.Create(typeof(ResourceManagerStringLocalizerFactoryTest));
-
- // Assert
- Assert.Same(result1, result2);
- }
-
- [Fact]
- public void Create_FromType_ReturnsNewResultForDifferentType()
- {
- // Arrange
- var locOptions = new LocalizationOptions();
- var options = new Mock>();
- options.Setup(o => o.Value).Returns(locOptions);
- var loggerFactory = NullLoggerFactory.Instance;
- var factory = new ResourceManagerStringLocalizerFactory(localizationOptions: options.Object, loggerFactory: loggerFactory);
-
- // Act
- var result1 = factory.Create(typeof(ResourceManagerStringLocalizerFactoryTest));
- var result2 = factory.Create(typeof(LocalizationOptions));
-
- // Assert
- Assert.NotSame(result1, result2);
- }
-
- [Fact]
- public void Create_ResourceLocationAttribute_RootNamespaceIgnoredWhenNoLocation()
- {
- // Arrange
- var locOptions = new LocalizationOptions();
- var options = new Mock>();
- options.Setup(o => o.Value).Returns(locOptions);
- var loggerFactory = NullLoggerFactory.Instance;
-
- var resourcePath = Path.Combine("My", "Resources");
- var rootNamespace = "MyNamespace";
- var rootNamespaceAttribute = new RootNamespaceAttribute(rootNamespace);
-
- var typeFactory = new TestResourceManagerStringLocalizerFactory(
- options.Object,
- resourceLocationAttribute: null,
- rootNamespaceAttribute: rootNamespaceAttribute,
- loggerFactory: loggerFactory);
-
- var type = typeof(ResourceManagerStringLocalizerFactoryTest);
- // Act
- typeFactory.Create(type);
-
- // Assert
- Assert.Equal($"Microsoft.Extensions.Localization.Tests.ResourceManagerStringLocalizerFactoryTest", typeFactory.BaseName);
- }
-
- [Fact]
- public void Create_ResourceLocationAttribute_UsesRootNamespace()
- {
- // Arrange
- var locOptions = new LocalizationOptions();
- var options = new Mock>();
- options.Setup(o => o.Value).Returns(locOptions);
- var loggerFactory = NullLoggerFactory.Instance;
-
- var resourcePath = Path.Combine("My", "Resources");
- var rootNamespace = "MyNamespace";
- var resourceLocationAttribute = new ResourceLocationAttribute(resourcePath);
- var rootNamespaceAttribute = new RootNamespaceAttribute(rootNamespace);
-
- var typeFactory = new TestResourceManagerStringLocalizerFactory(
- options.Object,
- resourceLocationAttribute,
- rootNamespaceAttribute,
- loggerFactory);
-
- var type = typeof(ResourceManagerStringLocalizerFactoryTest);
- // Act
- typeFactory.Create(type);
-
- // Assert
- Assert.Equal($"MyNamespace.My.Resources.ResourceManagerStringLocalizerFactoryTest", typeFactory.BaseName);
- }
-
- [Fact]
- public void Create_FromType_ResourcesPathDirectorySeperatorToDot()
- {
- // Arrange
- var locOptions = new LocalizationOptions();
- locOptions.ResourcesPath = Path.Combine("My", "Resources");
- var options = new Mock>();
- options.Setup(o => o.Value).Returns(locOptions);
- var loggerFactory = NullLoggerFactory.Instance;
- var factory = new TestResourceManagerStringLocalizerFactory(
- options.Object,
- resourceLocationAttribute: null,
- rootNamespaceAttribute: null,
- loggerFactory: loggerFactory);
-
- // Act
- factory.Create(typeof(ResourceManagerStringLocalizerFactoryTest));
-
- // Assert
- Assert.Equal("Microsoft.Extensions.Localization.Tests.My.Resources." + nameof(ResourceManagerStringLocalizerFactoryTest), factory.BaseName);
- }
-
- [Fact]
- public void Create_FromNameLocation_ReturnsCachedResultForSameNameLocation()
- {
- // Arrange
- var locOptions = new LocalizationOptions();
- var options = new Mock>();
- options.Setup(o => o.Value).Returns(locOptions);
- var loggerFactory = NullLoggerFactory.Instance;
- var factory = new ResourceManagerStringLocalizerFactory(localizationOptions: options.Object, loggerFactory: loggerFactory);
- var location = typeof(ResourceManagerStringLocalizer).GetTypeInfo().Assembly.FullName;
-
- // Act
- var result1 = factory.Create("baseName", location);
- var result2 = factory.Create("baseName", location);
-
- // Assert
- Assert.Same(result1, result2);
- }
-
- [Fact]
- public void Create_FromNameLocation_ReturnsNewResultForDifferentName()
- {
- // Arrange
- var locOptions = new LocalizationOptions();
- var options = new Mock>();
- options.Setup(o => o.Value).Returns(locOptions);
- var loggerFactory = NullLoggerFactory.Instance;
- var factory = new ResourceManagerStringLocalizerFactory(localizationOptions: options.Object, loggerFactory: loggerFactory);
- var location = typeof(ResourceManagerStringLocalizer).GetTypeInfo().Assembly.FullName;
-
- // Act
- var result1 = factory.Create("baseName1", location);
- var result2 = factory.Create("baseName2", location);
-
- // Assert
- Assert.NotSame(result1, result2);
- }
-
- [Fact]
- public void Create_FromNameLocation_ReturnsNewResultForDifferentLocation()
- {
- // Arrange
- var locOptions = new LocalizationOptions();
- var options = new Mock>();
- options.Setup(o => o.Value).Returns(locOptions);
- var loggerFactory = NullLoggerFactory.Instance;
- var factory = new ResourceManagerStringLocalizerFactory(localizationOptions: options.Object, loggerFactory: loggerFactory);
- var location1 = new AssemblyName(typeof(ResourceManagerStringLocalizer).GetTypeInfo().Assembly.FullName).Name;
- var location2 = new AssemblyName(typeof(ResourceManagerStringLocalizerFactoryTest).GetTypeInfo().Assembly.FullName).Name;
-
- // Act
- var result1 = factory.Create("baseName", location1);
- var result2 = factory.Create("baseName", location2);
-
- // Assert
- Assert.NotSame(result1, result2);
- }
-
- [Fact]
- public void Create_FromNameLocation_ResourcesPathDirectorySeparatorToDot()
- {
- // Arrange
- var locOptions = new LocalizationOptions();
- locOptions.ResourcesPath = Path.Combine("My", "Resources");
- var options = new Mock>();
- options.Setup(o => o.Value).Returns(locOptions);
- var loggerFactory = NullLoggerFactory.Instance;
- var factory = new TestResourceManagerStringLocalizerFactory(
- options.Object,
- resourceLocationAttribute: null,
- rootNamespaceAttribute: null,
- loggerFactory: loggerFactory);
-
- // Act
- var result1 = factory.Create("baseName", location: "Microsoft.Extensions.Localization.Tests");
-
- // Assert
- Assert.Equal("Microsoft.Extensions.Localization.Tests.My.Resources.baseName", factory.BaseName);
- }
-
- [Fact]
- public void Create_FromNameLocation_NullLocationThrows()
- {
- // Arrange
- var locOptions = new LocalizationOptions();
- var options = new Mock>();
- options.Setup(o => o.Value).Returns(locOptions);
- var loggerFactory = NullLoggerFactory.Instance;
- var factory = new ResourceManagerStringLocalizerFactory(localizationOptions: options.Object, loggerFactory: loggerFactory);
-
- // Act & Assert
- Assert.Throws(() => factory.Create("baseName", location: null));
- }
- }
-}
diff --git a/test/Microsoft.Extensions.Localization.Tests/ResourceManagerStringLocalizerTest.cs b/test/Microsoft.Extensions.Localization.Tests/ResourceManagerStringLocalizerTest.cs
deleted file mode 100644
index ff7bfa9933..0000000000
--- a/test/Microsoft.Extensions.Localization.Tests/ResourceManagerStringLocalizerTest.cs
+++ /dev/null
@@ -1,299 +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.Globalization;
-using System.IO;
-using System.Linq;
-using System.Reflection;
-using System.Resources;
-using Microsoft.AspNetCore.Testing;
-using Microsoft.Extensions.Localization.Internal;
-using Microsoft.Extensions.Logging;
-using Microsoft.Extensions.Logging.Testing;
-using Xunit;
-
-namespace Microsoft.Extensions.Localization
-{
- public class ResourceManagerStringLocalizerTest
- {
- [Fact]
- public void EnumeratorCachesCultureWalkForSameAssembly()
- {
- // Arrange
- var resourceNamesCache = new ResourceNamesCache();
- var baseName = "test";
- var resourceAssembly = new TestAssemblyWrapper();
- var resourceManager = new TestResourceManager(baseName, resourceAssembly);
- var resourceStreamManager = new TestResourceStringProvider(
- resourceNamesCache,
- resourceManager,
- resourceAssembly.Assembly,
- baseName);
- var logger = Logger;
- var localizer1 = new ResourceManagerStringLocalizer(resourceManager,
- resourceStreamManager,
- baseName,
- resourceNamesCache,
- logger);
- var localizer2 = new ResourceManagerStringLocalizer(resourceManager,
- resourceStreamManager,
- baseName,
- resourceNamesCache,
- logger);
-
- // Act
- for (var i = 0; i < 5; i++)
- {
- localizer1.GetAllStrings().ToList();
- localizer2.GetAllStrings().ToList();
- }
-
- // Assert
- var expectedCallCount = GetCultureInfoDepth(CultureInfo.CurrentUICulture);
- Assert.Equal(expectedCallCount, resourceAssembly.ManifestResourceStreamCallCount);
- }
-
- [Fact]
- public void EnumeratorCacheIsScopedByAssembly()
- {
- // Arrange
- var resourceNamesCache = new ResourceNamesCache();
- var baseName = "test";
- var resourceAssembly1 = new TestAssemblyWrapper(typeof(ResourceManagerStringLocalizerTest));
- var resourceAssembly2 = new TestAssemblyWrapper(typeof(ResourceManagerStringLocalizer));
- var resourceManager1 = new TestResourceManager(baseName, resourceAssembly1);
- var resourceManager2 = new TestResourceManager(baseName, resourceAssembly2);
- var resourceStreamManager1 = new TestResourceStringProvider(resourceNamesCache, resourceManager1, resourceAssembly1.Assembly, baseName);
- var resourceStreamManager2 = new TestResourceStringProvider(resourceNamesCache, resourceManager2, resourceAssembly2.Assembly, baseName);
- var logger = Logger;
- var localizer1 = new ResourceManagerStringLocalizer(
- resourceManager1,
- resourceStreamManager1,
- baseName,
- resourceNamesCache,
- logger);
- var localizer2 = new ResourceManagerStringLocalizer(
- resourceManager2,
- resourceStreamManager2,
- baseName,
- resourceNamesCache,
- logger);
-
- // Act
- localizer1.GetAllStrings().ToList();
- localizer2.GetAllStrings().ToList();
-
- // Assert
- var expectedCallCount = GetCultureInfoDepth(CultureInfo.CurrentUICulture);
- Assert.Equal(expectedCallCount, resourceAssembly1.ManifestResourceStreamCallCount);
- Assert.Equal(expectedCallCount, resourceAssembly2.ManifestResourceStreamCallCount);
- }
-
- [Fact]
- public void GetString_PopulatesSearchedLocationOnLocalizedString()
- {
- // Arrange
- var baseName = "Resources.TestResource";
- var resourceNamesCache = new ResourceNamesCache();
- var resourceAssembly = new TestAssemblyWrapper();
- var resourceManager = new TestResourceManager(baseName, resourceAssembly);
- var resourceStreamManager = new TestResourceStringProvider(resourceNamesCache, resourceManager, resourceAssembly.Assembly, baseName);
- var logger = Logger;
- var localizer = new ResourceManagerStringLocalizer(
- resourceManager,
- resourceStreamManager,
- baseName,
- resourceNamesCache,
- logger);
-
- // Act
- var value = localizer["name"];
-
- // Assert
- Assert.Equal("Resources.TestResource", value.SearchedLocation);
- }
-
- [Fact]
- [ReplaceCulture("en-US", "en-US")]
- public void GetString_LogsLocationSearched()
- {
- // Arrange
- var baseName = "Resources.TestResource";
- var resourceNamesCache = new ResourceNamesCache();
- var resourceAssembly = new TestAssemblyWrapper();
- var resourceManager = new TestResourceManager(baseName, resourceAssembly);
- var resourceStreamManager = new TestResourceStringProvider(resourceNamesCache, resourceManager, resourceAssembly.Assembly, baseName);
- var logger = Logger;
-
- var localizer = new ResourceManagerStringLocalizer(
- resourceManager,
- resourceStreamManager,
- baseName,
- resourceNamesCache,
- logger);
-
- // Act
- var value = localizer["a key!"];
-
- // Assert
- var write = Assert.Single(Sink.Writes);
- Assert.Equal("ResourceManagerStringLocalizer searched for 'a key!' in 'Resources.TestResource' with culture 'en-US'.", write.State.ToString());
- }
-
- [Theory]
- [InlineData(true)]
- [InlineData(false)]
- public void ResourceManagerStringLocalizer_GetAllStrings_ReturnsExpectedValue(bool includeParentCultures)
- {
- // Arrange
- var baseName = "test";
- var resourceNamesCache = new ResourceNamesCache();
- var resourceAssembly = new TestAssemblyWrapper();
- var resourceManager = new TestResourceManager(baseName, resourceAssembly);
- var resourceStreamManager = new TestResourceStringProvider(resourceNamesCache, resourceManager, resourceAssembly.Assembly, baseName);
- var logger = Logger;
- var localizer = new ResourceManagerStringLocalizer(
- resourceManager,
- resourceStreamManager,
- baseName,
- resourceNamesCache,
- logger);
-
- // Act
- // We have to access the result so it evaluates.
- var strings = localizer.GetAllStrings(includeParentCultures).ToList();
-
- // Assert
- var value = Assert.Single(strings);
- Assert.Equal("TestName", value.Value);
- }
-
- [Theory]
- [InlineData(true)]
- [InlineData(false)]
- public void ResourceManagerStringLocalizer_GetAllStrings_MissingResourceThrows(bool includeParentCultures)
- {
- // Arrange
- var resourceNamesCache = new ResourceNamesCache();
- var baseName = "testington";
- var resourceAssembly = new TestAssemblyWrapper();
- resourceAssembly.HasResources = false;
- var resourceManager = new TestResourceManager(baseName, resourceAssembly);
- var logger = Logger;
-
- var localizer = new ResourceManagerWithCultureStringLocalizer(
- resourceManager,
- resourceAssembly.Assembly,
- baseName,
- resourceNamesCache,
- CultureInfo.CurrentCulture,
- logger);
-
- // Act & Assert
- var exception = Assert.Throws(() =>
- {
- // We have to access the result so it evaluates.
- localizer.GetAllStrings(includeParentCultures).ToArray();
- });
-
- var expectedTries = includeParentCultures ? 3 : 1;
- var expected = includeParentCultures
- ? "No manifests exist for the current culture."
- : $"The manifest 'testington.{CultureInfo.CurrentCulture}.resources' was not found.";
- Assert.Equal(expected, exception.Message);
- Assert.Equal(expectedTries, resourceAssembly.ManifestResourceStreamCallCount);
- }
-
- private static Stream MakeResourceStream()
- {
- var stream = new MemoryStream();
- var resourceWriter = new ResourceWriter(stream);
- resourceWriter.AddResource("TestName", "value");
- resourceWriter.Generate();
- stream.Position = 0;
- return stream;
- }
-
- private static int GetCultureInfoDepth(CultureInfo culture)
- {
- var result = 0;
- var currentCulture = culture;
-
- while (true)
- {
- result++;
-
- if (currentCulture == currentCulture.Parent)
- {
- break;
- }
-
- currentCulture = currentCulture.Parent;
- }
-
- return result;
- }
-
-
- private TestSink Sink { get; } = new TestSink();
-
- private ILogger Logger => new TestLoggerFactory(Sink, enabled: true).CreateLogger();
-
- public class TestResourceManager : ResourceManager
- {
- private AssemblyWrapper _assemblyWrapper;
-
- public TestResourceManager(string baseName, AssemblyWrapper assemblyWrapper)
- : base(baseName, assemblyWrapper.Assembly)
- {
- _assemblyWrapper = assemblyWrapper;
- }
-
- public override string GetString(string name, CultureInfo culture) => null;
-
- public override ResourceSet GetResourceSet(CultureInfo culture, bool createIfNotExists, bool tryParents)
- {
- var resourceStream = _assemblyWrapper.GetManifestResourceStream(BaseName);
-
- return resourceStream != null ? new ResourceSet(resourceStream) : null;
- }
- }
-
- public class TestResourceStringProvider : ResourceManagerStringProvider
- {
- public TestResourceStringProvider(
- IResourceNamesCache resourceCache,
- TestResourceManager resourceManager,
- Assembly assembly,
- string resourceBaseName)
- : base(resourceCache, resourceManager, assembly, resourceBaseName)
- {
- }
- }
-
- public class TestAssemblyWrapper : AssemblyWrapper
- {
- public TestAssemblyWrapper()
- : this(typeof(TestAssemblyWrapper))
- {
- }
-
- public TestAssemblyWrapper(Type type)
- : base(type.GetTypeInfo().Assembly)
- {
- }
-
- public bool HasResources { get; set; } = true;
-
- public int ManifestResourceStreamCallCount { get; private set; }
-
- public override Stream GetManifestResourceStream(string name)
- {
- ManifestResourceStreamCallCount++;
-
- return HasResources ? MakeResourceStream() : null;
- }
- }
- }
-}
diff --git a/version.props b/version.props
deleted file mode 100644
index 71a78cddd8..0000000000
--- a/version.props
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
- 3.0.0
- alpha1
- $(VersionPrefix)
- $(VersionPrefix)-$(VersionSuffix)-final
- t000
- a-
- $(FeatureBranchVersionPrefix)$(VersionSuffix)-$([System.Text.RegularExpressions.Regex]::Replace('$(FeatureBranchVersionSuffix)', '[^\w-]', '-'))
- $(VersionSuffix)-$(BuildNumber)
-
-