最近学习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文件一起编译