控制台程序转化为窗体程序调用控制台

用户“葉天楓”对问题“.NET应用程序将作为控制台应用程序运行,但不作为Windows窗体,调试工作怎么解决?”的回答 - 问答 - 云+社区 - 腾讯云云+社区首页我有一个在.NET 2.0上工作过一次的Windows应用程序,我只是想将它转发给.NET Framework 4.在这之前我已经完成了数百次,没有问题。长话短说:升级后,我可以从调试和发布模式运行Windows应用程序(用C#编写)。所有我的程序集都设置为构建目标(x86),以确保任何32位依赖项都能在Windows 7 x64上运行。奇怪的是,当我从bin \ x86 \ Debug或Release目录运行可执行文件时,没有任何反应。毫无意义。应用程序启动后立即停止,并且没有错误消息,没有崩溃,没有写入事件日志的项目。它刚开始然后停下来。疯狂的部分是如果我将项目输出类型切换到“控制台应用程序”,那么它可以从exe文件运行它!(在运行的应用程序后面只有一个令人讨厌和丑陋的控制台窗口)。有没有人听说过这样的事情?以下是我尝试过的更多信息:在事件日志中查找有关错误的任何提及试图以管理员身份运行我已经是完全访问所有目录的计算机管理员尝试在Main()函数中放置MessageBox.Show语句尝试在Main()函数中放入Console.WriteLine语句试图将主要功能公开。尝试通过双击它启动应用程序exe,并从命令行运行它(控制台输出没有出现在这种情况下)。尝试为Debug AND Release编译的可执行文件尝试删除调用来启动MainForm.cs,其中只有MessageBox代码保留。其他纯.NET 4.0的Windows Forms应用程序可以在其可执行文件中正常运行。.NET Framework 4.0似乎没有损坏,但是,我没有尝试完全重新安装它。尝试在主函数中添加try / catch来捕获和报告任何错误。Windows 7,64位Visual Studio 2010Windows更新定期执行C#的所有代码有没有人看过类似的东西?我一直在使用C#超过14年,并没有看到过这种行为。从Program.cs中添加代码,减去名称空间标记和使用语句static class Program
/// &summary&
/// The main entry point for the application.
/// &/summary&
[STAThread]
static void Main()
MessageBox.Show(&Start&);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
MessageBox.Show(&End&);
catch (Exception exp)
ExceptionDisplay.LaunchUnexpected(exp);
}ExceptionDisplay类只是一个简单的窗体,用于显示和报告意外错误。在这种情况下,try / catch块是否存在并不重要。可执行文件发生同样的行为。在调试模式下添加退出代码The thread 'vshost.RunParkingWindow' (0xf70) has exited with code 0 (0x0).
The thread '&No Name&' (0x25c0) has exited with code 0 (0x0).
The program '[13496] MyProgram.vshost.exe: Managed (v4.0.30319)' has exited with code 0 (0x0).从.csproj文件中添加PropertyGroup项&PropertyGroup&
&Configuration Condition=& '$(Configuration)' == '' &&Debug&/Configuration&
&Platform Condition=& '$(Platform)' == '' &&AnyCPU&/Platform&
&ProductVersion&9.0.30729&/ProductVersion&
&SchemaVersion&2.0&/SchemaVersion&
&ProjectGuid&{C5FE7F9D-57BB-4A6F-AD53-43BE99BAB6CF}&/ProjectGuid&
&OutputType&WinExe&/OutputType&
&AppDesignerFolder&Properties&/AppDesignerFolder&
&RootNamespace&MyNamespace&/RootNamespace&
&AssemblyName&MyAssemblyName&/AssemblyName&
&TargetFrameworkVersion&v4.0&/TargetFrameworkVersion&
&FileAlignment&512&/FileAlignment&
&FileUpgradeFlags&
&/FileUpgradeFlags&
&UpgradeBackupLocation&
&/UpgradeBackupLocation&
&OldToolsVersion&3.5&/OldToolsVersion&
&TargetFrameworkProfile /&
&IsWebBootstrapper&true&/IsWebBootstrapper&
&PublishUrl&http://localhost/MyNamespace/&/PublishUrl&
&Install&true&/Install&
&InstallFrom&Web&/InstallFrom&
&UpdateEnabled&true&/UpdateEnabled&
&UpdateMode&Foreground&/UpdateMode&
&UpdateInterval&7&/UpdateInterval&
&UpdateIntervalUnits&Days&/UpdateIntervalUnits&
&UpdatePeriodically&false&/UpdatePeriodically&
&UpdateRequired&false&/UpdateRequired&
&MapFileExtensions&true&/MapFileExtensions&
&ApplicationRevision&0&/ApplicationRevision&
&ApplicationVersion&1.0.0.%2a&/ApplicationVersion&
&UseApplicationTrust&false&/UseApplicationTrust&
&BootstrapperEnabled&true&/BootstrapperEnabled&
&/PropertyGroup&
&PropertyGroup Condition=& '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' &&
&DebugSymbols&true&/DebugSymbols&
&DebugType&full&/DebugType&
&Optimize&false&/Optimize&
&OutputPath&bin\Debug\&/OutputPath&
&DefineConstants&DEBUG;TRACE&/DefineConstants&
&ErrorReport&prompt&/ErrorReport&
&WarningLevel&4&/WarningLevel&
&/PropertyGroup&
&PropertyGroup Condition=& '$(Configuration)|$(Platform)' == 'Release|AnyCPU' &&
&DebugType&pdbonly&/DebugType&
&Optimize&true&/Optimize&
&OutputPath&bin\Release\&/OutputPath&
&DefineConstants&TRACE&/DefineConstants&
&ErrorReport&prompt&/ErrorReport&
&WarningLevel&4&/WarningLevel&
&/PropertyGroup&
&PropertyGroup Condition=& '$(Configuration)|$(Platform)' == 'Debug|x86' &&
&DebugSymbols&true&/DebugSymbols&
&OutputPath&bin\x86\Debug\&/OutputPath&
&DefineConstants&DEBUG;TRACE&/DefineConstants&
&DebugType&full&/DebugType&
&PlatformTarget&x86&/PlatformTarget&
&ErrorReport&prompt&/ErrorReport&
&/PropertyGroup&
&PropertyGroup Condition=& '$(Configuration)|$(Platform)' == 'Release|x86' &&
&OutputPath&bin\x86\Release\&/OutputPath&
&DefineConstants&TRACE&/DefineConstants&
&Optimize&true&/Optimize&
&DebugType&pdbonly&/DebugType&
&PlatformTarget&x86&/PlatformTarget&
&ErrorReport&prompt&/ErrorReport&
&/PropertyGroup&
&PropertyGroup&
&ApplicationIcon&security.ico&/ApplicationIcon&
&/PropertyGroup&
&PropertyGroup&
&SignAssembly&true&/SignAssembly&
&/PropertyGroup&
&PropertyGroup&
&AssemblyOriginatorKeyFile&company.snk&/AssemblyOriginatorKeyFile&
&/PropertyGroup&
&PropertyGroup&
&StartupObject /&
&/PropertyGroup&我试着将所有的文件从一个项目移动到另一个新项目,并且在我编译完成后,exe文件正在工作。然后,为准备部署,我为项目做了一些事情(包括用强名称签名,更改程序图标等),然后exe停止工作。在将其缩小到我执行的最新事件序列之后,我一次切换最近更改的每个项目,并发现导致该exe无法构建的项目是设置非默认图标。如果我将默认图标切换到.ico文件,那么它将进行调试但不运行exe。如果我将图标切换回应用程序&&资源&&图标和清单下的(默认图标),那么exe会在调试器外面正常运行?有没有人有任何想法为什么改变一些无害的程序的默认图标会使EXE不能运行?在我意识到导致它不运行的部分后,我会进一步调查这个问题。写回答邀请回答.NET应用程序将作为控制台应用程序运行,但不作为Windows窗体,调试工作怎么解决?写回答问题在于应用程序的图标。进一步排除故障后,我注意到当我创建一个新项目时,将所有文件添加到项目中并编译它 - 程序将从EXE文件运行。我一直在对项目进行更改,然后在最后一次触摸(包括更改应用程序图标,添加强名称以及我在其他应用程序上完成的其他操作)之后,我注意到EXE突然停止双击它时工作。我最终缩小了这个事实,即当我有一个默认应用程序图标(Project Properties && Application && Icon)时,应用程序在从EXE启动时运行良好。但是,当我将图标更改为我正在使用的图标时,EXE停止工作。我之前使用过应用程序图标,所以我创建了一个什么都不做的测试项目,但是我将应用程序图标更改为这个项目。果然,当我这样做时,测试程序的EXE停止工作。接下来,我尝试使用与我使用的图标不同的图标,并且该图标的EXE正常工作。所以,现在我已经缩小了它与我正在使用的特定图标有关的问题。我注意到那个工作的人在里面有一个16x16的4位和32x32的4位图像。然后我打开了非工作的一个。非工作人员对每个(4位,8位和32位托盘)都有48,32,24和16个像素图标。尝试了几种从图标中删除各种图像的组合后,我发现8位颜色托盘图标图像导致了问题!
从图标中删除所有8位图像后,程序正常运行!因此,故事的寓意是:虽然带有8位图像的图标可能适用于表单和其他用途,但它们不适合.NET应用程序作为应用程序图标回答过的其他问题就我个人理解而言,我推荐你可以使用三种方法:完全自定义,基于框架和基于产品。
你可以采用API网关的标准从头开始构建你的API网关,但是,不建议我这样做,除非你使用开放的源代码或第三方软件来构建你的API,否则完全从0开始构建起你的API网关,这将是非常没有效率的。不要重复发...... 机房在那是无所谓的,使用方法都是一样的。一个账号只能享受一次权益。这个登录问题还是自己先看看新手帮助。不然会很麻烦的。会采用队列上传的方式保障视频文件的顺序上传。如果有特别的需求,例如数十TB甚至PB级超大容量的文件上传,请联系腾讯云的官方:工单:客服咨询电话: 可以使用普通和简单的netcat方式通过UDP发送读数。将以下内容保存在Raspberry Pi中的文件中$HOME/transmit。它每秒钟都会读取gattool,然后通过UDP传输到手机: #!/bin/bash
# Change these to suit your ...... 梦想是要有的,万一实现了呢usingSusingSystem.Collections.GusingSystem.LusingSystem.TnamespaceUserLogin{cla
一、作品题目毕业设计管理系统相关类的设计二、作品详细要求:1、在学生选题前,先由各指导教师拟题。2、学生选题。选题包括学生预选和教师确认两个步骤,以此实现师生的双向选择。即学生预选后,与指导教师当面交
usingSusingSystem.Collections.GusingSystem.LusingSystem.TusingSystem.Threading.
刚刚,在云大使群里面看到消息说云大使2.0正式公开上线。 之前云大使一直在阿里的控制台里面,现在是独立出来了页面。https://promotion.aliyun.com/ntms/yunparter/personal-center.html 根据截图,可以
概览 日志查询分析框全面增强 SLB日志分发支持国内Region,仪表盘优化 支持数据永久保存 图表属性相关开放国际站和日本站 可视化图形细节提升 部分已知bug修复 日志查询分析框全面增强 提升可视区域,支持换行编辑查询分析语句 关键字、操作符、函数高亮,
目前,在操作迁移实例到专有网络时,ECS控制台支持一键将实例的经典网络安全组克隆到专有网络。 适用条件 使用主账号操作,需要保有经典网络实例。 功能特点 在进行迁移经典网络实例到专有网络时,点击克隆实例的经典网络安全组到专有网络,克隆完成后,克隆的专有网络安
PostGreSQL 安装前的准备 yum install \ vim \ wget \ firewalld \ gcc \ gcc-c++ \ openssl-devel \ readline \ readline-devel \ zlib \ zlib-
RAM (Resource Access Management) 是阿里云为客户提供的用户身份管理与访问控制服务。使用RAM,您可以创建、管理用户账号(比如员工、系统或应用程序),并可以控制这些用户账号对您名下资源具有的操作权限。当您在 弹性伸缩控制台 操作
摘要 表格存储(TableStore)是构建在阿里云飞天分布式系统之上的 NoSQL 数据存储服务,提供海量结构化数据的存储和实时访问,数据读写是表格存储产品化最重要的功能之一。 本文首先介绍了表格存储原有的数据读写工具及不足之处,接着介绍了表格存储的数据模
摘要 号,表格存储新版控制台的监控功能正式上线,优化后的监控功能,不仅可以为用户提供自定义时间段的监控信息查看,增加了对错误率的展示,还提供了更丰富的监控指标,能够清晰的看到指定时间段内诸如总访问量、CU总消耗、请求行数、流量等监控指标,同
GET请求,可以接收客户端的请求,也可以向客户端发送请求 Post请求,只能接受Request中客户端发来的请求 下面我们用Springboot+SpringMVC做个试验: 我们都知道mvc可以直接访问@RequestMapping或者@GetMappin
\x select * 这个和MySQL的有点区别,在查询之前使用\x进行显示的开启 注意:只需要用一次即可,以后的查询都是以竖行进行显示。 ==&如有问题,请联系我:easonjim#163.com,或者下方发表评论。&==
在这几个文件,各自都设置一下: /etc/motd /etc/issue 在/etc/ssh/sshd_config添加“Banner /etc/ssh/ssh_login_banner” 内容: \r 显示KERNEL内核版本号; \l 显示虚拟控制台号;
购买阿里云服务器 链接:https://pan.baidu.com/s/1T_4mfUptauYtfLvnVMcNGQ 密码:8eb5 QQ名称为Friday~的网友把他自己买MQTT的过程截图发给了我,今天就说一下如何购买阿里云,安装MQTT可以参考 htt
概览 查询界面全新视图 支持查询页面以及仪表盘页面内嵌 支持OSS访问日志向导以及安骑士访问日志向导 时间选择器全面加强 部分细节优化和已知bug修复 一.查询界面全新视图 左侧标签页替换为资源树状结构,直接展示用户的日志库、快速查询和仪表盘列表。同时,可以
本文介绍了阿里云访问控制中的角色扮演和临时身份特性。这两个特性帮助客户管理好对合作伙伴, 云服务协同应用, 以及客户应用服务的信任与访问授权, 构成了阿里云安全受控的合作生态的技术基础设施的一部分。 信任管理 云平台中的资源, 我们可以授权给信任的员工, 合
直接在SQL语句后面加\G即可,如: select * from user limit 10\G; 如果想要知道这些参数可以直接在命令行后面加入\?
==&如有问题,请联系我:easonjim#163.com,或者下方发表评论。&==
信息摘要: 安全日报改版、解决“告警风暴”,对于不太重要或低危的事件不再默认推送适用客户: 态势感知所有客户版本/规格功能: 1、安全日报改版,提取了最重要的信息进行推送,每天9点您可以收到前1天的日报,无需频繁登录控制台即可每日获取安全概况; 2、解决“告警
阿里云 CodePipeline 已增加对码云 Gitee 代码库接入的支持,用户托管在码云上的代码可通过阿里云 CodePipeline 在云端实现从代码到应用的持续集成和交付,方便您快速的对您的产品进行功能迭代和演进。 阿里云 CodePipeline:1、类库项目引用System.Windows.Forms并添加引用后,才可创建窗体。
2、控制台应用程序调用中间库(DLL)中的方法创建窗体;中间类库使用反射下的Assembly加载包含窗体的类库及创建实例。
注意:1)创建实例时,参数为窗体类的全名(命名空间+类名)。
  && 2)返回值是Object类型,需转化为Form类型。
&&&&&&&& 3)exe(控制台程序)、中间类库(dll)、窗体所在类库(dll)在同一目录下。
&&&&&&&& 4)Load(空间名,窗体类全名),LoadFrom(*.dll,窗体类全名)
具体代码如下:
窗体类库:
using System.Collections.G
using System.ComponentM
using System.D
using System.D
using System.L
using System.T
using System.Threading.T
using System.Windows.F
namespace TestForm
public partial class Test : Form
public Test()
InitializeComponent();
中间类库:
using System.Collections.G
using System.L
using System.R
using System.T
using System.Threading.T
using System.Windows.F
namespace Anxin.Factory
public class FormFactory
/// &summary&
/// 创建窗体
/// &/summary&
/// &param name="val_classFullName"&&/param&
/// &returns&&/returns&
public static Form CreateForm(string val_classFullName)
string nameSpace = val_classFullName.Substring(0,val_classFullName.LastIndexOf('.'));
return (Form)Assembly.Load(nameSpace).CreateInstance(val_classFullName);
/// &summary&
/// 创建窗体
/// &/summary&
/// &param name="val_nameSpace"&命名空间&/param&
/// &param name="val_className"&窗体类名&/param&
/// &returns&&/returns&
public static Form CreateForm(string val_nameSpace, string val_className)
//string className = val_classN
//仅使用类名创建示例失败。
string classFullName = string.Format("{0}.{1}",val_nameSpace,val_className);
//MessageBox.Show(Assembly.GetExecutingAssembly().Location);
return (Form)Assembly.Load(val_nameSpace).CreateInstance(classFullName);
public static Form CreateForm(string val_formAssemblyFile, string val_formFullName, Object[] val_formArgs)
return CreateForm(val_formAssemblyFile, val_formFullName, val_formArgs, null);
public static Form CreateForm(string val_formAssemblyFile,string val_formFullName,Object[] val_formArgs,string val_formText)
string assemblyPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
string assemblyFullName = assemblyPath + val_formAssemblyF
if (!assemblyPath.EndsWith("\\"))
assemblyFullName = assemblyPath + "\\" + val_formAssemblyF
//MessageBox.Show(assemblyFullName);
Assembly formAssembly = Assembly.LoadFrom(assemblyFullName);
form = formAssembly.CreateInstance(val_formFullName) as F
if(null == form)
string strError = string.Format("创建窗体失败!\n程序集{0}\n窗体类名称{1}",
val_formAssemblyFile,
val_formFullName);
if (!string.IsNullOrEmpty(val_formText))
strError += "窗体标题" + val_formT
throw new Exception(strError);
if (!string.IsNullOrEmpty(val_formText))
form.Text = val_formT
控制台程序:
using System.Collections.G
using System.L
using System.T
using System.Threading.T
using Anxin.F
using System.Windows.F
namespace TestFactory
class Program
static void Main(string[] args)
string nameSpace = "TestForm";
string className = "Test";
//窗体类名
//string className = "Example";
//窗体文件名 (报错)
Form testForm = FormFactory.CreateForm(nameSpace,className);
string classFullName = nameSpace + "." + classN
testForm = FormFactory.CreateForm(classFullName);
string dllName = "TestForm.dll";
//string classFullName = "TestForm.Test";
testForm = FormFactory.CreateForm(dllName,classFullName,null);
string formText = "OK 加油!";
testForm = FormFactory.CreateForm(dllName, classFullName, null,formText);
if (null != testForm)
testForm.ShowDialog();
Console.WriteLine("通过调用Dll,创建窗体失败!\n");
//使用窗体文件名创建时失败!
阅读(...) 评论()没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!豆丁微信公众号
君,已阅读到文档的结尾了呢~~
C#语言程序设计 控制台与窗体应用程序
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
C#语言程序设计 控制台与窗体应用程序
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口}

我要回帖

更多关于 c 窗体应用程序教程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信