首页 > 解决方案 > 创建控制台应用程序时编译 .exe

问题描述

我遇到了一些问题,我不确定它是由 Visual Studio 还是应用程序中的某些东西引起的。

我编写了一个简单的控制台应用程序来停止和启动服务。当我去调试/发布应用程序时,它会将应用程序编译成.dll。

我按照谷歌搜索获取 .exe 时发现的一些说明进行操作,但是当我这样做时,与脚本(60MB)相比,我的依赖输出文件夹很大。

我已经多次制作控制台应用程序,通常 .exe 存储在调试/发布文件夹中并且可以正常工作。我不确定这次有什么不同。

我想要的只是一个简单的.exe

构建的输出:

1>----- 构建开始:项目:FixAnyConnect,配置:调试任何 CPU ------ 1>FixAnyConnect -> C:\Users\jeh\Desktop\Projects\FixAnyConnect\FixAnyConnect\bin\Debug\ netcoreapp2.1\FixAnyConnect.dll ========== 构建:1 成功,0 失败,0 最新,0 跳过 ==========

完整代码:

using System;
using System.Diagnostics;
using System.ServiceProcess;


namespace FixAnyConnect
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] serviceList = { "Cisco AnyConnect Network Access Manager", "Cisco AnyConnect Network Access Manager Logon Module", "Cisco AnyConnect Secure Mobility Agent" };
            //string[] serviceList = { "Print Spooler", "Realtek Audio Service", "Themes" };
            Console.WriteLine("Restarting AnyConnect...");
            foreach (string serviceName in serviceList)
            {
                ServiceController service = new ServiceController(serviceName, ".");
                Console.WriteLine("Stopping " + serviceName);
                try
                {
                    service.Stop();
                    Console.WriteLine(serviceName + " Stopped");
                } 
                catch
                {
                }
                Console.WriteLine("Sleeping for 5 seconds");
                System.Threading.Thread.Sleep(5000);
                Console.WriteLine("Starting " + serviceName);
                try
                {
                    service.Start();
                    Console.WriteLine(serviceName + " Started");
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Failed to start service");
                    Console.WriteLine(ex.Message);
                    Console.WriteLine("Rerun script - if same error occurs, please reboot system");
                    Console.WriteLine("Press any key to close");
                    Console.ReadKey();
                    Environment.Exit(0);
                }
                Console.WriteLine("================");
            }
            Console.WriteLine("Starting AnyConnect Software");
            try
            {
                Process.Start("C:\\Program Files (x86)\\Cisco\\Cisco AnyConnect Secure Mobility Client\vpnui.exe");
            }
            catch (Exception ex)
            {
                Console.WriteLine("Failed to start Any Connect");
                Console.WriteLine(ex.Message);
                Console.WriteLine("Rerun script - if same error occurs, please reboot system");
                Console.WriteLine("Press any key to close");
                Console.ReadKey();
                Environment.Exit(0);
            }
            Console.WriteLine("AnyConnect has been sucessfuly restarted");
            Console.WriteLine("Press any key to close");
            Console.ReadKey();

        }
    }
}

标签: c#

解决方案


您正在制作一个 .NET Core 应用程序,而不是原始的仅 Windows 的 .NET Framework 应用程序。虽然 .NET Framework 应用程序可以假设所有必要的 Framework DLL 和运行时组件都由操作系统提供(因为您只能在 Windows 上运行,而 .NET Framework 是 Windows 功能),但 .NET Core 有多种部署策略来支持跨平台和并排安装。

因此,要么切换到 .NET Framework(仅适用于 Windows),要么将 .NET Core 应用程序发布为依赖于框架的部署


推荐阅读