2017-07-19 176 views
0

我有一個.net核心應用程序,我想在後臺運行,但似乎無法擺脫Kestrel的控制檯窗口。有沒有辦法隱藏它,而無需將應用程序作爲Windows服務運行?我試圖刪除任何有關記錄器的參考,它沒有幫助。
這裏是我的Program.Main:如何隱藏紅隼控制檯?

  var config = new ConfigurationBuilder() 
       .SetBasePath(Directory.GetCurrentDirectory()) 
       .AddJsonFile("hosting.json", optional: true) 
       .Build(); 
      var hostingUrl = config.GetValue<string>("HostingUrl"); 
      if (string.IsNullOrEmpty(hostingUrl)) 
      { 
       var xmlString = File.ReadAllText(Consts.WebHostBaseFolder + "\\web.config"); 
       var confDoc = XDocument.Parse(xmlString); 
       hostingUrl = confDoc.Element("configuration").Element("appSettings")?.Elements("add")?.FirstOrDefault(e => e.Attribute("key").Value == "HostingUrl")?.Attribute("value")?.Value ?? ""; 

      } 
      var host = new WebHostBuilder() 
          .UseKestrel() 
          .UseContentRoot(Consts.WebHostBaseFolder) 
          .UseStartup<Startup>() 
          .UseUrls(hostingUrl) 
          .Build(); 

       host.Run(); 

感謝

+0

是不是隻是調試解決方案? –

+0

nope。我添加了Program.Main代碼,並且當我以發行模式構建並運行.exe文件 –

回答

1

使用editbin.exe這裏描述https://github.com/AvaloniaUI/Avalonia/wiki/Hide-console-window-for-self-contained-.NET-Core-application

editbin.exe /subsystem:windows yourapp.exe 
+0

或僅在[在Windows服務中託管aspnet核心應用程序](https://docs.microsoft.com/en-us/downloads/default.aspx)時,它也顯示控制檯。 com/en-us/aspnet/core/hosting/windows-service) – QuantumHive

+0

Windows服務是一個完全不同的用例,它有很多限制和令人頭痛的問題。當我需要的只是一個簡單的Windows應用程序時,沒有理由去那裏 –