c# - 创建控制台应用程序时编译 .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();
}
}
}
解决方案
您正在制作一个 .NET Core 应用程序,而不是原始的仅 Windows 的 .NET Framework 应用程序。虽然 .NET Framework 应用程序可以假设所有必要的 Framework DLL 和运行时组件都由操作系统提供(因为您只能在 Windows 上运行,而 .NET Framework 是 Windows 功能),但 .NET Core 有多种部署策略来支持跨平台和并排安装。
因此,要么切换到 .NET Framework(仅适用于 Windows),要么将 .NET Core 应用程序发布为依赖于框架的部署。
推荐阅读
- bash - 显示您正在运行的 SSH 命令的正确方法
- javascript - Tensorflow.js 连续预测比单一预测慢得多
- sql - 我想根据条件查看查询结果为“通过”或“失败”
- javascript - ERROR 错误:找不到具有名称的控件:'[object Object]
- assembly - MIPS 伪随机模式生成器
- javascript - Vue/Vuetify - 未知的自定义元素:您是否正确注册了组件?
- c++ - 如何链接两个 ArUco 标记的姿势?
- django - 我现在正在尝试连接我的 postgres 数据库,但对我应该放置数据库信息的位置有点不熟悉
- javascript - 如何修复javascript计时器以使秒数达到60然后重置为零
- syntax - MariaDB 10.1 中窗口函数的替代方案