CompileAssemblyFromDom抛出访问拒绝异常

本文关键字:拒绝 异常 访问 CompileAssemblyFromDom | 更新日期: 2023-09-27 18:15:49

代码:

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

抛出异常:CS1567 Error generated Win32 resource: Access is denied.

这是什么意思?

CompileAssemblyFromDom抛出访问拒绝异常

我得到这个工作。问题是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)
                };