C#无法识别我的变量

C#无法识别我的变量,c#,C#,我正在尝试从exe文件加载代码,然后将其创建到新的.exe文件中。但它无法识别我的变量“SourceCode”。它表示当前上下文中不存在名称“SourceCode” private void button1_Click(object sender, EventArgs e) { using (FileStream SourceCode = new FileStream("thecode.exe", FileMode.Open, FileAccess.ReadW

我正在尝试从exe文件加载代码,然后将其创建到新的.exe文件中。但它无法识别我的变量“SourceCode”。它表示当前上下文中不存在名称“SourceCode”

     private void button1_Click(object sender, EventArgs e)
    {

        using (FileStream SourceCode = new FileStream("thecode.exe", FileMode.Open, FileAccess.ReadWrite, FileShare.None));
        string Output = textBox3.Text;
        String[] Assembly = { "System.dll", "System.Drawing.dll", "System.Windows.Forms.dll" };
        CodeDomProvider CodeCompiler = CodeDomProvider.CreateProvider("CSharp");
        CompilerParameters Parameters = new CompilerParameters(Assembly, "");

        Parameters.OutputAssembly = Output;
        Parameters.GenerateExecutable = true;
        Parameters.GenerateInMemory = false;
        Parameters.WarningLevel = 3;
        Parameters.TreatWarningsAsErrors = true;
        Parameters.CompilerOptions = "/optimize+ /target:winexe";
        string Errors = null;
        try
        {
            CompilerResults Results = null;
            Results = CodeCompiler.CompileAssemblyFromSource(Parameters, SourceCode); //This here is giving me an error
            if (Results.Errors.Count > 0)
            {
                Errors = "";
                foreach (System.CodeDom.Compiler.CompilerError CompileError in Results.Errors)
                {
                    Errors += "Line number " + CompileError.Line + ", Error Number: " + CompileError.ErrorNumber + ", '" + CompileError.ErrorText + ";\r\n\r\n";
                }

下一行以分号“;”结尾

using (FileStream SourceCode = new FileStream("thecode.exe", FileMode.Open, FileAccess.ReadWrite, FileShare.None));
在C#中,分号是语句终止符,而不是行终止符。 您应该使用这样的语句声明您的

using(var Bar = new Foo())
{
}
因此,使您的代码:

using (FileStream SourceCode = new FileStream("thecode.exe", FileMode.Open, FileAccess.ReadWrite, FileShare.None))
{
}

下一行以分号“;”结尾

using (FileStream SourceCode = new FileStream("thecode.exe", FileMode.Open, FileAccess.ReadWrite, FileShare.None));
在C#中,分号是语句终止符,而不是行终止符。 您应该使用这样的语句声明您的

using(var Bar = new Foo())
{
}
因此,使您的代码:

using (FileStream SourceCode = new FileStream("thecode.exe", FileMode.Open, FileAccess.ReadWrite, FileShare.None))
{
}

顶部的using语句有一个
在末尾。使用块用于确保在块的末端布置可处置资源。在这种情况下,如果没有
{}
,您的using语句就没有什么用处了。要么使用
{}
展开代码块,要么只声明变量而不使用using语句。希望这有帮助

顶部的using语句有一个
在末尾。使用块用于确保在块的末端布置可处置资源。在这种情况下,如果没有
{}
,您的using语句就没有什么用处了。要么使用
{}
展开代码块,要么只声明变量而不使用using语句。希望这有帮助

希望你已经解决了。请你在其中一个答案上做个记号好吗?希望你能把问题解决。请你在其中一个正确答案上划线好吗?