美文网首页
.Net 打包及释放第三方程序

.Net 打包及释放第三方程序

作者: Raven7 | 来源:发表于2017-06-22 09:02 被阅读0次

    把第三方程序打包在assembly里, 运行时释放并调用, 两种方法

    1. 使用resx文件
    • 创建一个resx文件,如MyResources.resx. 把想要添加的exe, dll啥的放进去, 右击Run Custom Tool, vs自动生成MyResources.Designer.cs.
      添加代码释放
    var mgr = new ResourceManager(typeof(MyResources)); //MyResources 类在MyResources.Designer.cs里
    bool Extract(string name)
    { 
            var buff = (byte[])mgr.GetObject(name.Split('.').First()); // 添加进resx的文件名称是没有扩展名的
            if (buff == null)
                return false; 
            using (var file = new FileStream(name, FileMode.Create))
            { 
                file.Write(buff, 0, buff.Length); 
                return true;
            }
    }
    
    • 运行三方程序
    async Task Run(string exe, string args)
    {
          var si = new ProcessStartInfo 
          { 
                FileName = Path.GetFullPath(exe), 
                Arguments = args,
                UseShellExecute = false, 
                CreateNoWindow = true, 
                RedirectStandardOutput = true 
          }; 
          await Task.Run(() => 
          {
                var p = new Process {StartInfo = si}; 
                p.OutputDataReceived += (sender, e) => Log.Info(e.Data);            
                p.Start(); 
                p.BeginOutputReadLine(); 
                p.WaitForExit(); 
                if (p.ExitCode != 0) 
                    Log.Error($"{exe} return errors."); 
           });
    }
    
    1. Application.GetContentStream(Uri) (wpf only)
    • 工程里建文件夹, 如Resources, 添加文件,属性设置Build Action为Content
    • 用Application.GetContentStream(Uri)释放指定的文件。
    • 剩下的同第一种方法

    相关文章

      网友评论

          本文标题:.Net 打包及释放第三方程序

          本文链接:https://www.haomeiwen.com/subject/obmxcxtx.html