public void Porcess()
{
//需要编译的脚本所在文件夹
string _scriptDir = Common.GetPath(CommonPath.TableProtoScriptPath);
string[] files = Directory.GetFiles(_scriptDir ,"*.cs");
string dllPath = Common.GetPath(CommonPath.TableProtoDllPath) + "\\TableProto.dll";
CompilerDll(files, dllPath);
}
/// <summary>
/// 动态编译并执行代码
/// </summary>
/// <param name="code">代码</param>
/// <returns>返回输出内容</returns>
public CompilerResults CompilerDll(string[] _class, string newPath)
{
CodeDomProvider complier = CodeDomProvider.CreateProvider("CSharp");
//设置编译参数
CompilerParameters paras = new CompilerParameters();
//引入第三方dll
paras.ReferencedAssemblies.Add("System.dll");
paras.ReferencedAssemblies.Add("System.RunTime.dll");
paras.ReferencedAssemblies.Add("GoogleProtobuf.dll");
//是否内存中生成输出
paras.GenerateInMemory = false;
//是否生成可执行文件
paras.GenerateExecutable = false;
//输出的Dll目录
paras.OutputAssembly = newPath;
//编译代码
CompilerResults result = complier.CompileAssemblyFromFile(paras, _class);
foreach (var item in result.Errors)
{
// 错误信息
Console.WriteLine(item.ToString());
//自定义log显示方法 -- 使用时自己实现
Debug.Log(item.ToString());
}
return result;
}
本地代码文件如下:
生成的DLL
反编译DLL结果:
文章来源:https://www.toymoban.com/news/detail-507577.html
注意:.net 5及以上已不支持,请使用.net 5以下的版本文章来源地址https://www.toymoban.com/news/detail-507577.html
到了这里,关于C# 代码创建DLL的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!