如何修复c#中的“System.ArgumentException”?

问题描述 投票:0回答:2

我正在开发一个涉及编译代码的小项目。我不断收到此错误: mscorlib.dll 中发生类型为

System.ArgumentException
的未处理异常 路径中存在非法字符。

我尝试找到问题的根源,这行代码似乎是问题所在:

CompilerResults cr = provider.CompileAssemblyFromFile(parameters, source1);

这是我的班级代码:

using System;
using System.IO;
using Microsoft.CSharp;
using System.CodeDom.Compiler;

namespace Plugin___Prototype
{
    class CompileCode
    {
        public void Compile()
        {
            string source1 = File.ReadAllText(System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\test.cs");
            //string source2 = File.ReadAllText(@"Source path here");
            Console.WriteLine(source1);
            CSharpCodeProvider provider = new CSharpCodeProvider();
            CompilerParameters parameters = new CompilerParameters();
            parameters.ReferencedAssemblies.Add("System.dll");
            parameters.GenerateExecutable = true;
            parameters.OutputAssembly = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\app1.exe";
            Console.WriteLine(parameters.OutputAssembly);
            parameters.GenerateInMemory = false;
            CompilerResults cr = provider.CompileAssemblyFromFile(parameters, source1);

            if (cr.Errors.Count == 0)
                Console.WriteLine("No Errors");
            else
            {
                foreach (CompilerError error in cr.Errors)
                    Console.WriteLine(error.ErrorText);
            }
            Console.ReadLine();
        }
    }
}

这是输出:

An unhandled exception of type 'System.ArgumentException' occurred in mscorlib.dll
Illegal characters in path.

The program '[14128] Plugin - Prototype.exe' has exited with code -1 (0xffffffff). 

我的预期结果是在我的文档文件夹中生成 app1.exe。

编辑:这些是源1的内容:

// A Hello World! program in C#.
using System;
namespace HelloWorld
{
    class Hello
    {
        static void Main()
        {
            Console.WriteLine("Hello World!");

            // Keep the console window open in debug mode.
            Console.WriteLine("Press any key to exit.");
            Console.ReadKey();
        }
    }
}
c# codedom
2个回答
1
投票

我已经修复了它,

CompilerResults cr = provider.CompileAssemblyFromFile(parameters, source1);
,想要的是文件而不是文件的内容。


1
投票

如果其他人也遇到相同的错误,但上述修复对您不起作用,那么您可能需要检查机密文件的内容是否存在拼写错误、信任服务器以及您的密码是否与您的服务器匹配。

© www.soinside.com 2019 - 2024. All rights reserved.