3

编码:

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 生成 Win32 资源时出错:访问被拒绝。

这是什么意思?

4

2 回答 2

5

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

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

它开始工作了!

于 2013-05-30T06:15:04.663 回答
0

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

string tempPath = Path.GetTempPath() + "\\mysubfolder";
Directory.CreateDirectory(tempPath);

var parameters = new CompilerParameters(includeAssemblies.ToArray())
                {                    
                    GenerateInMemory = true,
                    TempFiles = new TempFileCollection(tempPath)
                };
于 2018-09-06T13:19:05.660 回答