我的程序经常编译c#-代码,有时我得到一个类似于“文件名”C:\ ArgumentException --\AppData\Local\Temp\wvpc3m5m.0.cs‘的集合。参数名: fileName“。
下一个是编译器的设置:
public void Init()
{
this.compilerParameters = new CompilerParameters
{
GenerateExecutable = false,
GenerateInMemory = true
};
}汇编:
public CompilerResults Compile(String code)
{
CompilerResults result = this.codeProvider
.CompileAssemblyFromSource(this.compilerParameters, code);
return result;
}我认为codeProvider写将字符串传递到文件中,有时他尝试写入一个和同一个文件两次。
发布于 2014-03-25 11:10:32
问题是,所有CSharpCodeProvider的实例都可以每隔一段时间编译一次代码。此代码解决了以下问题:
private readonly Object lockCompile = new Object();
public CompilerResults Compile(String code)
{
CompilerResults result = null;
lock (lockCompile)
{
using (CSharpCodeProvider codeProvider = new CSharpCodeProvider())
{
result = codeProvider
.CompileAssemblyFromSource(this.compilerParameters, code);
}
}
return result;
}https://stackoverflow.com/questions/22630202
复制相似问题