c#资源文件处理入门

2021-01-26 18:14

阅读:433

标签:对比   异常   配置   new   mic   地方   tst   col   二进制   

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

  

 

未完待续~

c#资源文件处理入门

标签:对比   异常   配置   new   mic   地方   tst   col   二进制   

原文地址:https://www.cnblogs.com/chenyingzuo/p/11968005.html


评论


亲,登录后才可以留言!