5

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

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

4

1 回答 1

1

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

CSharpCodeProvider prov = new CSharpCodeProvider();
CompilerParameters parms = new CompilerParameters();
parms.TempFiles = new TempFileCollection(tempdir);
于 2017-03-13T11:36:44.350 回答