【问题标题】:.Net multiple console apps projects in a solution to be a referenced in one console app project.Net 解决方案中的多个控制台应用程序项目,以便在一个控制台应用程序项目中引用
【发布时间】:2015-06-02 20:33:15
【问题描述】:

我需要拥有多个控制台应用程序

例如,App1 执行任务 A,App2 执行任务 B,App3 执行任务 C

现在,

1) 我需要 App1 能够选择性地执行 App2 和 App3,这由配置标志控制..

2) App2 和 App3 应该是独立可执行的。

更新: 我可以让 App1 选择性地执行 App2 和 App3,主要问题是 App2 和 App3 有自己的配置并且它们不会在 App1 的 bin 文件夹中生成,所以当我从那里执行 App2 或 App3,它抱怨缺少配置。

请告诉我实现这一目标的最佳方法。 如果您需要更多信息,请告诉我。

【问题讨论】:

  • 我已经更新了我的答案@Ocelot

标签: c# .net dependencies console-application


【解决方案1】:

您最好的选择是将共享功能放入库项目中。在需要该功能的控制台应用程序中引用此库项目。

【讨论】:

  • 在这种情况下,如果我需要一个库配置,或者一个log4net配置,那么它不会抱怨找不到配置吗?这就是我尝试使用控制台应用程序时遇到的问题,..
  • 库应该使用它引用的应用程序的配置。
  • 你能给我举个例子吗?
【解决方案2】:

创建一个将三个控制台应用程序作为项目的新解决方案。根据需要定义 App2 和 App3。然后,为 App3 添加其他应用程序作为参考。现在,在 App3 的代码中,您可以根据需要调用其他应用程序的主要方法。这行得通。但是,请注意,添加一个应用程序作为参考有点奇怪。

通常,您应该有一个引用其他 dll 的可执行文件。

您可以做的是,创建一个类库 (dll) 项目。在这个项目中编写所有 3 个功能。然后,创建 3 个单独的控制台应用程序,它们都引用此共享 dll,并根据配置和输入参数的要求使用共享 dll 提供的各种功能。

【讨论】:

    【解决方案3】:

    如果不知道更多,我真正建议的唯一方法是运行 app1.exe,然后根据配置标志使用 case 语句来确定要运行的可执行文件:

    int configFlag = 1;
    switch (configFlaf)
    {
        case 1:
            process.start("app2.exe");
            break;
        case 2:
            Console.WriteLine("app3.exe");
            break;
        default:
            Console.WriteLine("Invalid Config Flag");
            break;
    }
    

    或者你可以使用 if 语句:

    if(configFlag1 && configFlag2) 
       process.start("app2.exe")
    else
       process.start("app3.exe");
    

    如果您提供更多信息,我很乐意在此解释中加入更多信息和细节。

    更新 1 信息的扩展 我可以看到解决缺少的配置问题的唯一方法(特别是如果部署时可执行文件不在同一个文件夹中)将启动 app2.exe 和 app3.exe 并使用以下参数之一:

    1. 配置文件的目录。
    2. app1.exe 的工作目录

    所以你会像这样启动 app2.exe:

    process.start("app2.exe", "c:\config\");
    

    process.start("app2.exe", Directory.GetCurrentDirectory());
    

    然后在app2.exe中:

    class app2.
    {
        static void Main(string[] args)
        {
            if (args.Length > 0"))
                Environment.CurrentDirectory = (args[0]);
        }
    }
    

    您可以在此处找到有关使用命令行参数的更多信息: https://msdn.microsoft.com/en-us/library/aa288457%28v=vs.71%29.aspx

    【讨论】:

      【解决方案4】:

      我的问题的解决方案非常简单。我所要做的就是,

      将 App2.config 和 App3.config 复制到 App1 的 bin/debug 文件夹..

      它就像一个魅力! :)

      【讨论】:

      • 啊,好吧,我明白了。我以为您希望程序运行,无论它们是否分开!很高兴你开始工作了。
      猜你喜欢
      • 1970-01-01
      • 2012-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-28
      • 2015-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多