2011-08-11 26 views
5

Ứng dụng WCF của tôi sử dụng mã được biên dịch trong thời gian chạy để tính toán một số giá trị của báo cáo. Tôi đang sử dụng CSharpCodeProvider.CompileAssemblyFromSource để biên dịch mã. Nếu ứng dụng khách (ứng dụng Silverlight) yêu cầu báo cáo trong khi một báo cáo khác đang được tính toán, CSharpCodeProvider.CompileAssemblyFromSource sẽ tạo các tệp tạm thời có tên trùng lặp, dẫn đến IOException ("Tệp" C: \ Windows \ TEMP \ uviewdyd.out ' đã tồn tại. ")Ngăn tệp CompileAssemblyFromSource tạo các tệp tạm thời với tên tệp trùng lặp

Có ai biết cách ngăn chặn điều này không?

+0

Điều này có vẻ là một câu hỏi rất cũ, tôi có một vấn đề tương tự. Bạn có giải pháp nào không? – Jemsworld

Trả lời

0

Tôi không nghĩ là có. Dường như cả ba biến thể (tệp, DOM và nguồn) đều tạo các tệp tạm thời (source).
Cách tốt nhất dường như sử dụng các đường dẫn tạm thời khác nhau cho mỗi biên dịch. Xem https://stackoverflow.com/a/37136996/5682035:

CSharpCodeProvider prov = new CSharpCodeProvider(); 
CompilerParameters parms = new CompilerParameters(); 
parms.TempFiles = new TempFileCollection(tempdir); 
Các vấn đề liên quan