.Net多个控制台应用程序项目在一个解决方案项目中被引用

时间:2015-06-02 09:24:56

标签: c# .net dependencies console-application

我需要有多个控制台应用

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

现在,

1)我需要App1可以选择执行App2和App3,这是基于配置标志控制的。

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

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

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

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

我不知道更多我真正建议的唯一方法,就是你运行app1.exe,然后根据配置标志使用案例陈述来确定要运行的可执行文件:

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的工作目录
  3. 所以你会像这样启动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

答案 3 :(得分:0)

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

  

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

它就像一个魅力! :)