我创建了控制台应用程序,如果以exe身份运行,则使用Console与用户交互(出于调试目的),如果从bat-file运行,则必须安装topshelf服务。但现在我有一个问题,因为当执行这样的bat文件时:
cd "%~dp0"
TCPAgent.exe install
UserInteractive为true(因为bat文件创建了一个控制台窗口),我的程序出现了。如何安装topshelf服务?我不想创建一个bat文件来运行文件,因为对我而言,它看起来像是一种过度杀伤......
这是y Programm.cs的代码:
static void Main(string[] args)
{
if (Environment.UserInteractive)
{
var agent = new TcpAgent();
agent.Start();
Console.ReadLine();
agent.Stop();
}
else
{
HostFactory.Run(
x =>
{
x.Service<TCPAgentServiceControl>(
s =>
{
s.ConstructUsing(name => new TCPAgentServiceControl());
s.WhenStarted((control, hostControl) => control.Start(hostControl));
s.WhenStopped((control, hostControl) => control.Stop(hostControl));
});
x.UseNLog(LogManager.GetCurrentClassLogger().Factory);
x.RunAsLocalSystem();
});
}
}
我会感激任何帮助!
答案 0 :(得分:0)
我相信你应该将你的值作为bat文件中的命令行参数传递。当您在控制台中运行它时,项目将不会获得注释行参数,因此它将处于调试模式