这篇文章将会通过一个简单例子,来演示如何用VS来编译ilasm,这个应该也还是有些实际用处的,也方便喜欢研究ilasm的朋友。
首先第一步,我们建立一个C++空项目(没错,是C++空项目,对VS而言,VC++是一种自定义项目,它最接近我们的需求)。
接下来我们右键点这个新建的项目,选择“工具生成顺序”,然后把那一堆C++工具全都选掉,只留下自定义生成工具就行了。
好 这样我们的项目就编译不了C++了。
接下来是重点,重新在VS中打开项目文件,然后右键点击“自定义生成规则”
然后我们新建一个规则文件,用来编译il文件。
新建一个规则文件之后新建规则,到这都很容易,就不用细说了。
新建规则稍微有些复杂了,首先我们来参考一下ILASM的文档:http://msdn.microsoft.com/zh-cn/library/496e4ekx(VS.80).aspx
我这里只是为了演示,没有把太多的ilasm编译选项做成属性
填好后一路确定就行了。可以在项目中改变自定义属性来切换exe和dll:
附上MSIL的helloworld以供大家验证:
// HelloWorld.il // This is our first IL program! .assembly extern mscorlib { } .assembly HelloWorld { .ver 1:0:1:0 } .module HelloWorld.exe .method privatescope static void Main() cil managed { .maxstack 1 .entrypoint ldstr "Hello World" call void [mscorlib]System.Console::WriteLine(string) ret }
附上整个项目压缩包:
http://files.cnblogs.com/winter-cn/ilasm.rar
原文: