【问题标题】:Use of same EXE application as DLL to some other Application将与 DLL 相同的 EXE 应用程序用于其他应用程序
【发布时间】:2016-08-19 17:46:54
【问题描述】:

我在 .Net 中有一个要求,即作为 .EXE 运行的应用程序(例如 A.EXE 可执行文件)在另一个又是另一个 .EXE 的应用程序(例如 B.EXE 可执行文件)中使用

A 也是这样,它使用第三方 API,需要强制运行 A.EXE 才能运行。

所以现在,我们正在安排从 B 打开 A 作为可执行文件本身。该应用程序以 exe 形式打开。这使得三个可执行文件同时运行以实现一个小功能。 (A.EXE、B.EXE 和 someAPI.EXE)

如果不同时打开这么多应用程序,是否有更好的设计可能性。 当然我们不能避免 A 对第三方 API 的依赖,但是我们可以修改 A 使​​其作为 EXE 运行,并且一些功能可以在 B.EXE 中使用。

但是如何?请提出建议。

【问题讨论】:

    标签: c# .net windows tsql


    【解决方案1】:

    我会将 A.EXE 和 B.EXE 使用的所有功能放在一个程序集中(我们将其命名为 SharedFunctionality.dll)。因此,exe 都可以使用该程序集,而 A.EXE 可以另外使用 3rd-party API。

    【讨论】:

    • 感谢您的回复,我想这将是把通用功能放在可重用的地方的最佳方法,但不幸的是,我们无法对已经构建和测试的代码进行如此多的重构。至少在构建下一个应用程序时,我会牢记这一点。
    【解决方案2】:

    可执行的 .Net 程序集可以被另一个 .Net 程序集用作库,就好像它是 .dll 一样。您只需要像使用库一样公开 API。

    假设你在 A 中的 DoTheBusiness() 方法中获得了你想要的功能,那么你可以在公共 API 类中公开它并在 A 和 B 中使用它。但不要忘记做一个引用到 B 的项目中的A.exe(或A.*proj)。

    简体A:

    namespace A
    {
        public class Aapi
        {
            public static void DoTheBusiness()
            {
                Console.WriteLine("Aapi::DoTheBusiness: DONE!");
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
                Aapi.DoTheBusiness();
            }
        }
    }
    

    简体 B:

    namespace B
    {
        class Program
        {
            static void Main(string[] args)
            {
                A.Aapi.DoTheBusiness();
            }
        }
    }
    

    【讨论】:

    • 感谢您的回复,正在尝试以这种方式实现。让我们看看它是如何工作的。
    猜你喜欢
    • 2018-03-29
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    • 2013-11-06
    • 1970-01-01
    • 1970-01-01
    • 2017-10-15
    相关资源
    最近更新 更多