我想要一些代码来编译我的TextBox中的代码(例如).我的意思是我想在运行程序后编译代码.我怎样才能做到这一点?
所以我正在创建 dll 类型文件,运行它们,然后我想删除它们。
然而,当我尝试删除它们时,我得到一个异常,因为它声称它们仍在被另一个进程使用。
我假设用于创建文件的代码没有正确处理资源以允许删除文件,这是我创建文件的代码。
if (!Directory.Exists(PathToRobots + Generation))
{
Directory.CreateDirectory(PathToRobots + Generation);
}
File.WriteAllText(Path.Combine(PathToRobots + Generation, NameSpace + GetRobotName() + robotNumber + ".cs"), code);
CSharpCodeProvider provider = new CSharpCodeProvider();
CompilerParameters parameters = new CompilerParameters()
{
GenerateInMemory = false,
GenerateExecutable = false, // True = EXE, False = DLL
IncludeDebugInformation = true,
OutputAssembly = Path.Combine(FileName + ".dll") // Compilation name
};
parameters.ReferencedAssemblies.Add(@"robocode.dll");
CompilerResults results = provider.CompileAssemblyFromSource(parameters, code);
if (results.Errors.HasErrors)
{
StringBuilder sb = new StringBuilder();
foreach (CompilerError error in results.Errors) …Run Code Online (Sandbox Code Playgroud) 我有一个应用程序使用一些代码脚本在运行时生成DLL并根据需要调用它们并在我继续编码之前遇到一些问题!
是否可以在不需要时从内存中卸载它们?如果不是 - 将它们加载到单独的appdomains并使用某些ipc等调用调用会对性能产生什么影响 - 顺便说一下,这需要具有高性能/实时性
或者,如何加载生成的程序集的多个实例(当然使用不同版本的#)?我假设如果你释放所有未使用的引用,它可能会被gc/framework卸载?
还有一个Q - 在这种情况下是否会出现任何"碰撞"(不确定这是否是正确的词?)?