c#资源文件处理入门

c# 工程里面,经常会添加资源文件。

作用:

  1. 一处文本多个地方的UI使用,最好把文本抽成资源,多处调用使用一处资源。
  2. 多语言版本支持,一份代码支持多国语言。配置多国语言的资源文件,调用处引用资源。

入门资源,txt格式文本

新建一个txt,写两个资源,name 和 age

使用工具 resgen.exe 生成资源文件。

resgen my-resource.txt

 

查看产物:

 

查看二进制文件到底长啥样,可以看到里面写了我们存的两个资源。至于其他文本估计是微软自己搞得格式

现在我们编写最简单的c# code去使用我们的资源:

直接写成最朴素的txt文件,是为了等会用csc好具体看资源到底怎么工作的。

代码如下:

namespace MyTestResourceNamespace
{
    class Program
    {
        static void Main(string[] args)
        {
            var rm = new System.Resources.ResourceManager("my-resource",
                System.Reflection.Assembly.GetExecutingAssembly());
            var name = rm.GetString("name");
            System.Console.WriteLine(name);
        }
    }
}

  

使用csc工具,直接做成exe

csc test-resource.cs

  

产物:

直接调用exe自然会抛出异常,因为我们还没有嵌入我们的资源文件。

使用reflector查看:

这里有两种方法,一个是生成exe的时候就嵌入。还有一种是生成好的exe用AL.exe这个工具嵌入资源。

先使用方法1:

csc test-resource.cs -resource:my-resource.resources

 

这次再查看reflector瞅瞅,这次资源成功嵌入到exe啦

对比两次的exe二进制数据的不同,很容易发现,资源文件被嵌入到exe的某一段了。至于位置微软自己知道,不需要我们操心~

这次再次调用这个exe:

test-resource.exe

  

命令行输出:

zhangsan

  

未完待续~

猜你喜欢

转载自www.cnblogs.com/chenyingzuo/p/11968005.html