如何从其他项目的类中访问C# .NET控制台输出文本
C# 跨项目调用自定义控制台输出类实现方案
核心失败原因排查
跨项目调用自定义类失败基本都是以下几个问题导致的,逐一排查即可:
- 自定义的
CoolConsole类没有加public访问修饰符,默认的internal级别只能在当前程序集内访问,外部项目根本看不到这个类 - 外部项目没有正确添加对
CoolConsole所在项目的引用 - 代码文件没有引入
CoolConsole所在的命名空间 - 把
CoolConsole写在了纯控制台输出的Exe项目里,没有开启引用程序集生成,.NET默认不会为Exe项目生成可供其他项目引用的程序集文件
分步实现
1. 编写自定义控制台工具类
在你自己的日志工具项目里添加如下代码,注意类和方法都必须用public static修饰:
using System; namespace MyCustomLogTool // 自定义命名空间,外部调用需要引用这个命名空间 { public static class CoolConsole { // 普通日志输出 public static void WriteLine(string message) { // 可自定义输出格式,比如加时间戳、日志标签 Console.WriteLine($"[{DateTime.Now:HH:mm:ss}] [INFO] {message}"); } // 第二类输出,比如错误日志,可自定义字体颜色 public static void WriteError(string errorMessage) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine($"[{DateTime.Now:HH:mm:ss}] [ERROR] {errorMessage}"); Console.ResetColor(); } } }
2. 配置项目可被外部引用
如果CoolConsole是放在独立的控制台应用项目里,需要打开该项目的.csproj文件,在第一个<PropertyGroup>节点里添加如下配置,让项目生成可供其他程序引用的程序集:
<GenerateReferenceAssemblies>true</GenerateReferenceAssemblies>
修改完成后重新生成一次项目。如果是把CoolConsole单独放在类库项目里,不需要加这个配置,直接生成即可。
3. 外部项目配置
在需要调用日志输出的外部项目里做两个配置:
- 右键项目依赖项,选择添加项目引用,勾选你存放
CoolConsole的项目完成引用 - 在需要调用输出的代码文件顶部,添加对应命名空间的引用,对应上面的示例代码就加:
using MyCustomLogTool;
调用验证
配置完成后就可以直接用你预期的形式调用,不需要额外实例化:
// 普通信息输出 CoolConsole.WriteLine("Hey"); // 第二类错误输出 CoolConsole.WriteError("Test error message");
补充说明:如果调用
CoolConsole的外部项目不是控制台类型(比如是类库、WinForm、WPF项目),默认不会弹出控制台窗口,需要在程序入口处调用Windows API手动分配控制台才能看到输出:// 放在Program.Main方法最开头执行一次即可 [System.Runtime.InteropServices.DllImport("kernel32.dll")] private static extern bool AllocConsole(); AllocConsole();
内容的提问来源于stack exchange,提问作者Adrian
相关产品推荐
相关产品推荐

