我需要有多个控制台应用
例如,App1执行任务A,App2执行任务B,App3执行任务C
现在,
1)我需要App1可以选择执行App2和App3,这是基于配置标志控制的。
2)App2和App3应该是可以独立执行的。
更新我可以选择让App1执行App2和App3,主要问题是App2和App3有自己的配置,并且它们不会在App1中生成bin文件夹,所以当我从那里执行App2或App3时,它会抱怨丢失的配置。
请让我知道实现这一目标的最佳方法。 如果您需要更多信息,请告诉我。
答案 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,其参数为:
所以你会像这样启动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文件夹..
它就像一个魅力! :)