Embed lightweight JSON resources into your .NET application using MSBuild Task, instead of traditional .resx files.
- Compile JSON resources to binary .resources files, and embed them into assembly, results the same functionality as ResX.
- Cleaner, more human-readable content compared to ResX, even outside IDEs. (Without IDEs the .resx file is totally a mess)
- Easy to use. Just a few lines to include all JSON resources, so you won't mess up your project file.
- Support nested JSON structures.
First install this package using package manager or using dotnet CLI:
dotnet add package NekoSpace.Build.Resources.Json
Then, add a single line to your csproj file:
<ItemGroup>
<!-- Embed our JSON resources. -->
<JsonResourceInclude="**\*.json"Exclude="bin\**\*; obj\**\*"/>
</ItemGroup>Create a simple JSON file, for example called ExampleResource.json:
{
"ExampleKey": "English Content",
"Group": {
"ExampleSubKey": "Another English content"
}
}Here is a example for using the resources:
// Get the assembly which embedded our resources.varassembly=typeof(Program).Assembly;// Instantiate the ResourceManager to manage our resources.varmanager=newResourceManager("UsingJsonResources.ExampleResource",assembly);// Resource defined in ExampleResource.json, and get parsed, embedded automatically.Console.WriteLine(manager.GetString("ExampleKey"));// Access nested resource.Console.WriteLine(manager.GetString("Group:ExampleSubKey"));Same as ResX, our resources can be easily localized!
Create another JSON file called ExampleResource.zh-Hans.json:
{
"ExampleKey": "中文内容"
}Then get the resource string by passing a specified culture:
// Override the culture.Console.WriteLine(manager.GetString("ExampleKey",newCultureInfo("zh-Hans")));You can find more examples in the examples folder, such as combining usage with Microsoft.Extensions.Localization.
This project is under MIT license.