C#无法识别我的变量

时间:2015-08-16 22:34:36

标签: c#

我正在尝试从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";
                }

2 个答案:

答案 0 :(得分:8)

以下行以分号';'

结尾
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))
{
}

答案 1 :(得分:3)

您在顶部的使用声明最后有一个;。使用块用于确保在块的末尾放置Disposable资源。在这种情况下,如果没有{ },您的using语句就没用了。您可以使用{ }扩展代码块,也可以只使用using语句声明变量。希望这有帮助!