如何在 C# 中修复 ''System.ArgumentException"?
How to fix ''System.ArgumentException" in c#?
我正在从事一个涉及编译代码的小项目。我不断收到此错误:'System.ArgumentException' 类型的未处理异常发生在 mscorlib.dll 路径中的非法字符。
我试过寻找问题的根源,这行代码似乎是问题所在:CompilerResults cr = provider.CompileAssemblyFromFile(parameters, source1);
这是我的代码 class:
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 在我的文档文件夹中生成。
编辑:这些是 source1 的内容:
// 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();
}
}
}
我已经修复了它,CompilerResults cr = provider.CompileAssemblyFromFile(parameters, source1);
,想要文件而不是文件的内容。
我正在从事一个涉及编译代码的小项目。我不断收到此错误:'System.ArgumentException' 类型的未处理异常发生在 mscorlib.dll 路径中的非法字符。
我试过寻找问题的根源,这行代码似乎是问题所在:CompilerResults cr = provider.CompileAssemblyFromFile(parameters, source1);
这是我的代码 class:
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 在我的文档文件夹中生成。
编辑:这些是 source1 的内容:
// 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();
}
}
}
我已经修复了它,CompilerResults cr = provider.CompileAssemblyFromFile(parameters, source1);
,想要文件而不是文件的内容。