Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
408 views
in Technique[技术] by (71.8m points)

c# - Compile assembly in runtime and save dll in a folder

This is my code:

Microsoft.CSharp.CSharpCodeProvider provider = new CSharpCodeProvider();
ICodeCompiler compiler = provider.CreateCompiler();
CompilerParameters compilerparams = new CompilerParameters();
compilerparams.GenerateInMemory = false;
CompilerResults results = compiler.CompileAssemblyFromSource(compilerparams, code);

if (results.Errors.HasErrors)
{
    StringBuilder errors = new StringBuilder("Compiler Errors :
");
    foreach (CompilerError error in results.Errors )
    {
        errors.AppendFormat("Line {0},{1}: {2}
", 
               error.Line, error.Column, error.ErrorText);
    }
    throw new Exception(errors.ToString());
}
else
{
    return results.CompiledAssembly;
}

How do I save the created dll to my own specific folder? When I debug, somehow the assembly location is at 'AppData/Local/Temp/' folder.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

You could use the OutputAssembly property of CompilerParameters to sets the name (path) of the output assembly. From your example:

...
CompilerParameters compilerparams = new CompilerParameters();
compilerparams.GenerateInMemory = false;

compilerparams.OutputAssembly = "OutputAssembly.dll";

CompilerResults results = compiler.CompileAssemblyFromSource(compilerparams, code);
...

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...