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) };