Sponsor: Do you build complex software systems? See how NServiceBus makes it easier to design, build, and manage software systems that use message queues to achieve loose coupling. Get started for free.
In my
previous blog about adding gzip compression when using NancyFX, I wanted to test the compression by outputting a large json data file in one of my endpoints.
At first I was just going to generate some random data and serialize it at runtime but then I found
Mockaroo, which provided a small dataset of random data that I could download.
So now that I had this generated file, I wanted to include the file in my project as an embedded resource in which would be read and at returned as output.
If you have any questions, please follow me on Twitter.
Project.json
The project.json file is new to ASP.NET Core, which defines project information and dependencies, similar to the combination of a web.config, csproj files, package.config is in ASP.NET 4.
There is a resource section in the project.json which is for adding resources to your assemblies as embedded resources. The values are relative to the project.json file itself and allows you to specify glob patterns (wildcards).
In my demo project, I had a fakedata.json file which resides in the same path as the project.json file. Here is my project.json file, including the new resource section.
Stream
All of your resources will be included in the assembly when built. You can read those resources by getting a stream of the resource.
Exclude
If you use a glob in your resource path to possibly include all files within a directory, but want to exclude specific files, you can do so with the resourceExclude.
Docs
If you are looking for more information about the project.json, I’d recommend taking a look at the
GitHub wiki. The asp.net docs are helpful but I couldn’t find a ton of info the project.json file specifically (yet). I assume the asp.net docs will improve over time and they are a work in progress.
Pingback: The Morning Brew - Chris Alcock » The Morning Brew #2027
I have an embedded resource (*.RESX) file in a 4.5.1 Class Library. I have an ASP.NET Core 1.0 (RC1, Update 1) referencing this Class Library – and at runtime when referencing the embedded resource (*.RESX) file I get a IO.FileNotFound exception.
I’ve tried adding the embedded resource to project.json, but it’s not working.
I know this is not the scenario you were describing, but I was wondering if you knew the trick to get an ASP.NET Core web app to properly use a 4.5.1 Library that has an embedded resource.
This may not be exactly what you are looking for, but may lead you down the right path.
http://weblogs.asp.net/jeff/beating-localization-into-submission-on-asp-net-5
Awesome Derek, there are some good tips there. it looks like ‘naming’ is the key. I’m not 100% of how to properly format the namespace in the .json file – but this looks like it’s the right track. Thanks!
Assembly.GetExecutingAssembly() is not available in .NET Core.
Assembly.GetEntryAssembly() works fine