问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

全局程序集GlobalAssemblyInfo.cs及WinForm程序如何在Debug模式下启动控制台窗口Console

发布网友 发布时间:2022-04-23 01:58

我来回答

1个回答

热心网友 时间:2022-04-23 03:27

但是,你会发现一个问题,这些AssemblyInfo.cs当中有一部分在重复的,若能把它们提取出来放入一个单一文件中,修改AssemblyInfo中的诸如产品名、产品版本、版本等信息会变得轻松。那么,这个程序集信息文件,我们叫做它——GlobalAssemblyInfo.cs 制作步骤:在解决方案中添加名为GlobalAssemblyInfo.cs的C#类文件清除GlobalAssemblyInfo.cs中的代码,然后将如下代码粘贴进去
/* ============================== * 全局程序集信息 * GlobalAssemblyInfo.cs * * 请把此文件引用到其他的项目中 ==============================*/ using System.Reflection; using System.Runtime.InteropServices; [assembly: ComVisible(false)] [assembly: AssemblyProct("全局程序集和能输出调试信息到控制台的WinForm项目的演示")] [assembly: AssemblyCompany("Oyi319的公司")] [assembly: AssemblyVersion(RevisionClass.FullVersion)] #if DEBUG [assembly : AssemblyConfiguration("Debug")] #else [assembly: AssemblyConfiguration("Release")] #endif [assembly: AssemblyCopyright("版权所有 2010 Oyi319")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] internal static class RevisionClass { public const string Major = "1"; public const string Minor = "0"; public const string Build = "0"; public const string Revision = "0"; public const string MainVersion = Major + "." + Minor; public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision; } /* 其他程序集的AssemblyInfo.cs简化如下内容所有信息数据单独填写 using System; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; [assembly: AssemblyTitle("程序集标题")] [assembly: AssemblyDescription("程序集描述")] // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID [assembly: Guid("6a6263f2-35d2-4077-a1aa-cc775ca7cf84")] [assembly: CLSCompliant(true)] [assembly: StringFreezing()] */ 为每个项目引用GlobalAssemblyInfo.cs文件。
右键项目->添加->现有项,浏览到GlobalAssemblyInfo.cs文件,注意点击“添加”下拉菜单的“添加为链接”将它添加到项目,
然后将这个链接到GlobalAssemblyInfo.cs的文件移到到Properties文件夹下,使它与AssemblyInfo.cs处于同一个文件夹修改AssemblyInfo.cs文件,将GlobalAssemblyInfo.cs中已经包含的信息去除,例如:
using System; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; [assembly: AssemblyTitle("程序集标题")] [assembly: AssemblyDescription("程序集描述")] // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID [assembly: Guid("6a6263f2-35d2-4077-a1aa-cc775ca7cf84")] [assembly: CLSCompliant(true)] [assembly: StringFreezing()]将其他需要全局程序集的项目做同样处理,最后的“解决方案资源管理器”窗口的截图类似这样:
2.WinForm程序和控制台窗口Console如果你调试过SharpDevelop的源程序,会发现它在DEBUG模式时会出现一个控制台窗口,以显示日志信息。或许我使用的方法与其不同,不过你可以试一试,写出我们自己的调试日志代码。 首先要解决的问题是如何在Debug模式时显示Console窗口。我确定,这是一个WinForm项目,也没有改过它的输出类型。我们需要在项目的入口点使用一些API函数将控制台显示出来:它们是 AllocConsole 和 FreeConsole。[DllImport("kernel32.dll")] public static extern Boolean AllocConsole(); [DllImport("kernel32.dll")] public static extern Boolean FreeConsole();然后我们使它在Main()开始处判断DEBUG编译标记,调用AllocConsole方法显示控制台,然后在Main()的结束处判断DEBUG编译标记,调用FreeConsole方法关闭控制台。这样,我们就可以使用Console.Write等方法将调试信息显示在这个控制台窗口里。 为了达到更好的效果,我们写一个Shell类,用它来封装Console.WriteLine方法,输出个性化信息。我是这样做的,根据输出到控制台的文本的前几个字判断为“警告”、“错误”、“注意”时,输出带有*、红色、绿色的文字,其他输出信息输出控制台缺省的灰色文字,以起到区分效果,还要在每条信息前加上输出信息的当时时间。 这个Shell类是这样的:/// <summary> /// 与控制台交互 /// </summary> static class Shell { /// <summary> /// 输出信息 /// </summary> /// <param name="format"></param> /// <param name="args"></param> public static void WriteLine(string format, params object[] args) { WriteLine(string.Format(format, args)); } /// <summary> /// 输出信息 /// </summary> /// <param name="output"></param> public static void WriteLine(string output) { Console.ForegroundColor = GetConsoleColor(output); Console.WriteLine(@"[{0}]{1}", DateTimeOffset.Now, output); } /// <summary> /// 根据输出文本选择控制台文字颜色 /// </summary> /// <param name="output"></param> /// <returns></returns> private static ConsoleColor GetConsoleColor(string output) { if (output.StartsWith("警告")) return ConsoleColor.Yellow; if (output.StartsWith("错误")) return ConsoleColor.Red; if (output.StartsWith("注意")) return ConsoleColor.Green; return ConsoleColor.Gray; } } 那么程序入口函数Main代码如下:/// <summary> /// 应用程序的主入口点。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
流量保险是什么 会计的基本常识是什么 我奶奶这几天总是拉肚子,而且只能躺着一站起来眼睛就发黑,医生说她贫血... win7c盘里找不到users,用户里也没有c:usersadministrator... C盘里没有users文件夹 pvc天然气管能用多久 PVC天然气管的寿命是多久?  请教大神这怎么搞?天然气排烟管怎么弄? ...时不用在手机确认电脑登陆微信如何不用手机确认 急性胰腺炎护理 急性胰腺炎非手术治疗的护理措施 孕妇每天玩手机,这样对胎儿究竟有哪些影响? “cat”这个英文单词怎么读? lol官逼为什么不削弱不详之刃,是不是马化腾脑子有逼屎! 搞笑的回答 天猫卡特户外旗舰店的鞋是正品吗 动物死了牌怎么刻字? 注销需要多久啊?里面说60天,需要那么久吗? 注销需要多久啊?里面说60天,需要那么久吗? 哪里能买到月球车系列鞋或者工装靴啊? 被官方注销的+监测期是多长时间 被官方注销的+监测期是多长时间 现在买什么鞋子,大黄靴还是板鞋? 注销要多久成功? 注销要多久成功? NBA0708赛季各队当家球星? 注销多久生效 大家都是穿哪个品牌的工装裤大黄靴呢? 注销多久生效 nba篮球运动员 cat卡特品牌大黄靴在哪里能买到?10月据说他们有推出新款? 孕妇每天玩电脑不到半个小时,玩手机时间比较长,对胎儿会有什么影响? 什么网可以买汽车票 大家买汽车票上哪个网? 如何使用信用卡?平安信用卡还款需要注意什么? 荣耀magic3有,更多设置在哪里荣耀magic3,微信美颜功能怎么开?_百度问一问 小米4如何选择情景模式 小米3为什么设置里面找不到情景模式或通话设置 牛市价差期权的介绍 多头差价看涨期权交易怎么解释? 有没有一首可以让人心静如水的歌? 注销需要多久啊?里面说60天,需要那么久吗? 注销要多久时间? 注销需要多久啊?里面说60天,需要那么久吗? qtcreatr怎么输出到debuger console 注销多久生效 注销要多久成功? 被官方注销的+监测期是多长时间 注销需要多久啊?里面说60天,需要那么久吗? 想要一份荒木毬菜目前翻唱的中文歌曲 水瓶座今天多幸运