如何解决重新启动计算机正常工作后,动态编译C#时出错,
我创建了一些方法(这只是测试方法,可以将问题与非常大的系统隔离开来):
private void CompileHalloWorld()
{
System.Threading.Thread.Sleep((30000));
if (!Directory.Exists(_workingDir))
{
Directory.CreateDirectory(_workingDir);
}
Directory.SetCurrentDirectory(_workingDir);
var csc = new CSharpCodeProvider(new Dictionary<string,string>() { { "CompilerVersion","v4.0" } });
var parameters = new CompilerParameters(new[] { "mscorlib.dll","System.Core.dll" },"foo.exe",true);
parameters.GenerateExecutable = true;
CompilerResults results = null;
try
{
results = csc.CompileAssemblyFromSource(parameters,@"using System;
class Program {
public static void Main(string[] args) {
Console.WriteLine(""Hallo World!"");
}
}");
}
catch (Exception e)
{
int a = 2;
}
results.Errors.Cast<CompilerError>().ToList().ForEach(error => Console.WriteLine(error.ErrorText));
}
在99%的计算机上,此方法效果很好,但是在一台计算机上存在一些问题。我认为服务器工作几次(几天)后,Windows发生了故障。然后,当我从exe应用程序运行CompileHalloWorld()时一切正常,但是当我从简单的空服务运行此方法时,在结果结构中调用CompileAssemblyFromSourceinvoke之后,集合中没有错误,但是csc.exe返回退出代码-1073741502 ...重新启动服务器后,一切恢复正常,但我不能每天重新启动服务器...
我尝试在SO中找到一些解决方案。我在任务管理器中签入,没有csc.exe进程挂起,没有Visual Studio工作,没有VBCSCompiler.exe挂起...
请帮助我。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。