CompileAssemblyFromDom抛出访问被拒绝的exception

代码:

using (var codeProvider = new CSharpCodeProvider()) { var compilerParameter = new CompilerParameters( _assemblies, assemblyName, false) { GenerateInMemory = true, CompilerOptions = "/optimize" }; var compilerResults = codeProvider.CompileAssemblyFromDom( compilerParameter, templateResults.Select(r => r.GeneratedCode) .ToArray()); } 

它抛出exception:CS1567生成Win32资源时出错:访问被拒绝。

这是什么意思?

我得到了这个工作。 问题是assemblyName是文件名而不是路径,所以我改变了

 assemblyName = Path.Combine(Path.GetTempPath(), assemblyName); 

它开始工作了!

我得到了同样的错误,但AssemblyName没有为我修复它。 我能够通过使用TempFiles参数来修复它。 此外,由于某种原因它在临时路径本身不起作用,只有在我在那里创建自己的子文件夹时才有效。

 string tempPath = Path.GetTempPath() + "\\mysubfolder"; Directory.CreateDirectory(tempPath); var parameters = new CompilerParameters(includeAssemblies.ToArray()) { GenerateInMemory = true, TempFiles = new TempFileCollection(tempPath) };