【问题标题】:Embed exe file in a Class library在类库中嵌入 exe 文件
【发布时间】:2014-05-16 22:19:54
【问题描述】:

是否可以在类库(dll文件)中嵌入exe文件?

我想使用此 exe 而无需手动将其复制到我的工作站。换句话说,如果我想在另一个应用程序中使用我的 C# 类库,我不需要将这些 exe 文件复制到一个文件夹中并在我的应用程序中传递这个文件夹的路径。

如果有办法做到这一点,那就太好了。


对不起,我的意思只是,我使用 Selenium Webdriver 创建了一个截图库,当创建一个新的 webdriver 对象时,我需要传递 webdriver 的 exe 文件。 我最需要的是,如果我将使用这个库到另一个工作站,我不想复制 exe 文件,例如,我希望将所有内容打包为一个文件 谢谢你

【问题讨论】:

  • 如果这个 EXE 是您自己制作的 .NET 应用程序并拥有代码?

标签: c# .net dll exe class-library


【解决方案1】:

嗯,技术上您可以将二进制文件作为资源嵌入到 DLL 中(通过项目属性将文件添加为二进制资源),但您仍然需要保存文件到磁盘以便执行它(这是假设您正在尝试做的事情)并且可能会出现安全问题,除非您的应用程序完全受信任。

如果二进制文件是资源,您可以从静态 Properties 类中提取字节:

byte[] exe = Properties.Resources.MyExe;

并像任何其他字节数组一样将其保存到磁盘。

【讨论】:

  • 当然,你必须有将它复制到磁盘的权限,以及复制后执行它的权限。
  • 对不起,我的意思只是,我使用 Selenium Webdriver 制作了一个截图库,在创建新的 webdriver 对象时,我需要传递 webdriver 的 exe 文件。我最需要的是,如果我将在另一个工作站或另一个项目中使用这个库,我不想复制 exe 文件,例如,我希望将所有内容打包在一个文件中
【解决方案2】:

如果您拥有 EXE 的代码,那么将您的 EXE 代码转换为库会更好。然后,您将能够从任何地方引用该库并调用它具有的任何公共功能。这是一种更好的方法。

如果您仍需要将该代码作为独立进程运行,没有什么能阻止您创建一个新的 EXE 前端来引用同一个库。

现在,如果您没有代码,那么根据您的部署策略,您可能更喜欢创建可附加到其他应用程序设置的可重用部署组件/模块。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-08
    • 2012-08-07
    • 1970-01-01
    • 2013-04-21
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    相关资源
    最近更新 更多