resources at class library project

2019-01-26 06:49发布

I want to add some xml file as resource to my class library project . Any idea how to do so , and call it later? In windows application i would do it like ClassLibrary1.Properties.Resources.file.xml

But here it didn't worked any idea how i do it here ?

3条回答
Juvenile、少年°
2楼-- · 2019-01-26 07:15

In windows application i would do it like ClassLibrary1.Properties.Resources.file.xml

By default, the class generated to access the resources is internal, so you can't access it from another assembly. If you need to make it public, select the .resx file, go to its properties, and change the Custom tool property from "ResXFileCodeGenerator" to "PublicResXFileCodeGenerator". This custom tool generates public classes, which should solve your problem.

查看更多
疯言疯语
3楼-- · 2019-01-26 07:21

This article explain how to use embedded resources in C#.

It boils down to

  1. At 'Design time': Add file to project and mark it as an embedded resource (properties)
  2. At 'Run time': Get instance of Assembly that holds the resource you want, then get that resource out as a stream.

var assembly = Assembly.GetExecutingAssembly();

var stream = assembly.GetManifestResourceStream("fully.qualified.name.of.the.resource");

If you're struggling to work out the fq name of the resource, a lazy way is to use the reflector to open the assembly that holds it. Go to the Resources folder, right click on the particular resource and choose 'Copy'.

查看更多
地球回转人心会变
4楼-- · 2019-01-26 07:23

Right Click on Class Library Project, select properties, on tabs on the left choose Resources section.

Since your .resx files ares not recognizable by Visual Studio, add a new one. It will create a new .resx file.

Copy all your original content and paste into new one. Then you can delete old one. That's it!

You would need to repeat same process for your all supported languages.

查看更多
登录 后发表回答