2011-08-11 108 views
5

我的WCF應用程序使用運行時編譯的代碼來計算報告的某些值。我使用CSharpCodeProvider.CompileAssemblyFromSource來編譯代碼。 如果客戶端(Silverlight應用程序)在計算另一個報表的同時請求報表,則CSharpCodeProvider.CompileAssemblyFromSource生成具有重複名稱的臨時文件,導致IOException(「文件'C:\ Windows \ TEMP \ uviewdyd.out'已經存在。「)防止CompileAssemblyFromSource生成重複文件名的臨時文件

有誰知道如何防止這種情況?

+0

這似乎是一個很古老的問題,我有一個類似的問題。你有任何解決方案? – Jemsworld

回答

0

我不認爲有。它看起來像所有三個變體(文件,DOM和源)創建臨時文件(source)。
最好的方法似乎是爲每個編譯使用不同的臨時路徑。見https://stackoverflow.com/a/37136996/5682035

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