Я не знаю, почему появляется эта ошибка. У меня нет ничего объявленного вне класса, мой полный код такой:
using System;
using Microsoft.CSharp;
using System.IO;
using System.CodeDom.Compiler;
using System.Text;
namespace test
{
public class comp
{
static void Main()
{
string code="0x4d,0x41,0x2......"; //and soo onnn
string Arch = " /platform:x86 /optimize";
string filePath = "C:/menmon.exe";
CSharpCodeProvider provider = new CSharpCodeProvider();
CompilerParameters parameters = new CompilerParameters();
parameters.ReferencedAssemblies.Add("System.Core.dll");
parameters.GenerateInMemory = false;
parameters.GenerateExecutable = true;
parameters.IncludeDebugInformation = false;
parameters.ReferencedAssemblies.Add("mscorlib.dll");
parameters.ReferencedAssemblies.Add("System.dll");
parameters.OutputAssembly = filePath;
parameters.CompilerOptions = "/target:exe" + Arch;
CompilerResults results = provider.CompileAssemblyFromSource(parameters, code);
if (results.Errors.HasErrors)
{
StringBuilder sb = new StringBuilder();
foreach (CompilerError error in results.Errors)
{
sb.AppendLine(String.Format("Error ({0}): {1}", error.ErrorNumber, error.ErrorText));
}
}
throw new InvalidOperationException(sb.ToString());
}
}
}
}
Скомпилировал это с помощью cmd on Windows машина включена. Net framework64 v4.0.30319 ошибка возникает после компиляции (при компиляции ошибка не отображается), когда я запускаю программу, появляется эта ошибка:
Необработанное исключение: System.InvalidOperationException : Ошибка (CS0116): Пространство имен не может напрямую содержать элементы, такие как поля или методы
в comp.Main ()
Я запустил cs c .exe следующим образом
cs c / t: exe /out:"C:\output.exe "" C: \ input.cs "