防止CompileAssemblyFromSource生成具有重复文件名的临时文件

我的WCF应用程序使用在运行时编译的代码来计算报告的某些值。 我正在使用CSharpCodeProvider.CompileAssemblyFromSource来编译代码。 如果客户端(Silverlight应用程序)在计算另一个报告时请求报告,则CSharpCodeProvider.CompileAssemblyFromSource会生成具有重复名称的临时文件,这会导致IOException(“文件’C:\ Windows \ TEMP \ uviewdyd.out’已经存在的。“)

有谁知道如何防止这种情况?

我不认为有。 看起来所有三个变体(文件,DOM和源)都创建临时文件( 源 )。
最好的方法似乎是为每个编译使用不同的临时路径。 请参阅https://stackoverflow.com/a/37136996/5682035 :

CSharpCodeProvider prov = new CSharpCodeProvider(); CompilerParameters parms = new CompilerParameters(); parms.TempFiles = new TempFileCollection(tempdir);