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

.Net multiple console apps projects in a solution to be a referenced in one console app project

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

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

现在,

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

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

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

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

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

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

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

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

在不知道更多的情况下,我真正建议的唯一方法是,你有 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
  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

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

copy App2.config and App3.config to App1's bin/debug folder..

它就像一个魅力! :)