首页 > 代码库 > C#单文件应用
C#单文件应用
网上有许多关于单文件打包的帖子,虽能拓展思路,质量却是一般。
这里只讲最简单的一种。
首先,将dll添加到项目中,并将它们的“生成操作”改为“嵌入的资源”。
其次,参考《CLR Via C#》给出的解决方案,添加几行代码,如下:
1. 先添加一个程序集加载失败的事件。
// 添加程序集解析事件 AppDomain.CurrentDomain.AssemblyResolve += (sender, args) => LoadFromResource(args.Name);
2. 根据文件名加载程序集(dll)。
/// <summary> /// 根据要加载的资源项名,加载对应的程序集。 /// </summary> /// <param name="argsName">要解析的项的名称。</param> /// <returns>返回对应项的程序集。</returns> private Assembly LoadFromResource(string argsName) { string dllName = new AssemblyName(argsName).Name + ".dll"; var assem = Assembly.GetExecutingAssembly(); var resourceName = assem.GetManifestResourceNames().FirstOrDefault(rn => rn.EndsWith(dllName)); if (resourceName == null) return null; // 没找到程序集。 using (Stream stream = assem.GetManifestResourceStream(resourceName)) { byte[] assemblyData = http://www.mamicode.com/new byte[stream.Length]; stream.Read(assemblyData, 0, assemblyData.Length); return Assembly.Load(assemblyData); } }
完。
C#单文件应用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。