运行时C#从代码中的文件夹中编译所有文件



我使用以下代码成功地进行运行时编译。除了输入 *.cs文件的数量很大时,我会收到以下错误。

system.SystemException:运行mono.exe的错误:文件名或扩展太长。

我相信这是由于命令行长度限制所致。

这是代码

var codeProvider = new CSharpCodeProvider (
                   new Dictionary<string, string> { { "CompilerVersion", "v4.0" } });
string EngineOutput = Path.GetFileName(dir) + ".dll";
parameters.GenerateExecutable = false;
parameters.OutputAssembly = EngineOutput;
CompilerResults results = codeProvider.CompileAssemblyFromFile (parameters, engineFiles.ToArray ());

由于所有源文件都在一个文件夹中,如果有一种方法可以使用-RECORSE通过编程方式传递该文件夹。或者,如果有一种方法可以采用codeprovider.com等文件夹。

我尝试了以下操作,但没有用。编译器仅选择伪造的cs,而不是/recurse指定的文件夹。

parameters.CompilerOptions += " /recurse:" + dir + System.IO.Path.PathSeparator + "*.cs";
results = codeProvider.CompileAssemblyFromFile (parameters, new string[1] { "fake.cs" });

感谢您的进步。

我刚刚用DirectorySeparator替换了PathSeparator,然后起作用。

parameters.CompilerOptions += " /recurse:" + dir + System.IO.Path.DirectorySeparatorChar + "*.cs";

相关内容

  • 没有找到相关文章

最新更新