代码:
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资源时出错:访问被拒绝。
这是什么意思?
答案 0 :(得分:5)
我得到了这个工作。问题是assemblyName是文件名而不是路径,所以我改变了
assemblyName = Path.Combine(Path.GetTempPath(), assemblyName);
它开始工作了!
答案 1 :(得分:0)
我遇到了同样的错误,但是AssemblyName并没有为我修复它。我可以使用TempFiles参数修复它。另外,由于某种原因,它在临时路径本身中不起作用,仅当我在此处创建自己的子文件夹时才起作用。
string tempPath = Path.GetTempPath() + "\\mysubfolder";
Directory.CreateDirectory(tempPath);
var parameters = new CompilerParameters(includeAssemblies.ToArray())
{
GenerateInMemory = true,
TempFiles = new TempFileCollection(tempPath)
};