C#命令行编译资源(csc.exe、resgen.exe)

本文介绍了如何使用C#的csc.exe和ResGen.exe命令行工具进行程序编译和资源处理。首先,通过ResGen.exe将文本资源转换为.resx文件,然后进一步转换为.resources二进制文件。在C#代码中,利用ResourceManager加载资源并执行程序。对于图像资源,文章提到了在VS2010中手动添加图像到.resx文件的两种方式,并指出在命令行编译图像资源的复杂性,建议在Visual Studio中处理图像资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近学习C#,刚开始使用的是vs2010学习,在公司里学习MTK的时候,发现大家编译程序使用命令行的,编程使用SourceInsight,调试才使用vs的。所以现在,尝试用命令行编译C#程序。

C#的编译使用的是csc.exe、编译资源使用的是ResGen.exe。这两个程序都设置在环境变量里就可以使用了。

打开命令行,输入,csc /help得到以下的结果

在这里插入图片描述
今天学习的主要是编译资源。为了更好的理解这里举一个例子。例子来源于
手动使用csc命令编译C#文件首先在实验文件夹下面创建一个myString.txt 文件,输入一个键值对:如下
在这里插入图片描述
打开命令行,使用Resgen myString.txt myString.resx。当前目录下会生成
在这里插入图片描述
查看文件,内容如下:
在这里插入图片描述

<data name="Huangbob" xml:space="preserve">
    <value>goodperson</value>
  </data>

得到如上结果,要编译到程序中,还要把.resx文件转换成.resources文件
转换命令如下

resgen myString.resx myString.resources

在这里插入图片描述
这是一个二进制文件

最后创建MyApp.cs文件

using System;
using System.Resources;
using System.Reflection;
public class ResApp
{
	private static void Main()
	{
		ResourceManager rm = new ResourceManager("myString", Assembly.GetExecutingAssembly());
		Console.WriteLine("Last taught a {0} class", rm.GetString("Huangxiaowei"));
		Console.ReadKey();
	}
}

加入命名空间:
using System;
using System.Resources;
资源的使用:
ResourceManager rm = new ResourceManager(“myString”, Assembly.GetExecutingAssembly());
myString是resources文件名去掉后缀。

最后的编译命令为:

csc /resource:myString.resources MyApp.cs

即可生成.exe文件

如果以上步骤生成了.exe文件,运行后会报以下错误:说明你以上几步可能写错了。
在这里插入图片描述
以上是关于字符串资源的编译

现在我要解决的是图像的编译。
有图像资源的resx文件,内容如下:
在这里插入图片描述
一长串二进制编码,这是在vs中手动加入图像资源后的内容显示。
接下来的问题是如何通过resgen命令编译出这个.resx文件。

经过本人半天的尝试,还是放弃了。编译资源文件成.resx文件,还是靠强大的vs吧。

vs2010中的操作如下:
第一步,随便创建一个C#窗体应用程序,
在这里插入图片描述
选择Resources.resx文件。
在这里插入图片描述
图中是我添加的两张图片。
选中其中一张图片。查看它的属性。属性中的Persistence有两个选项,在编译时链接、嵌入在.resx中。现在分别讨论这两种的差别。
在这里插入图片描述
嵌入在.resx中。得到的Resources.resx中的内容如下:
在这里插入图片描述
编译时链接。得到的Resources.resx中的内容如下:
在这里插入图片描述
最后可以把编辑好的.resx文件单独拿出来,和自己设置的.cs文件一起编译

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值