本页按端到端顺序带你完成第一个 .NET Framework 4.8 类库:新建「类库」项目 → 实现简单弹窗 API → 编译 → 在输出目录找到 .dll → 预告如何在窗体项目中引用。操作文案以 LCode 中文界面为准;凡有代码均同时给出 C# 5.0 与 VB.NET。类库不能单独作为启动项目运行(无 EXE 入口),验证靠「编译通过」与后续被窗体项目引用。

新建类库(.NET 4.8)

  1. 菜单 文件 → 新建 → 解决方案…(或开始页新建解决方案),打开「新建项目」对话框。
  2. 左侧类别选 C#VB
  3. 右侧模板选类库(模板文件 Library.xpt,输出类型 Library)。不要误选 Windows 应用程序、控制台或用户控件库。
  4. 填写名称与位置;目标框架选 .NET Framework 4.8(列表中的 v4.8)。
  5. 创建后,解决方案树中会出现类库项目;编译结果将是 DLL,而不是可双击运行的 EXE。
新建 C# 类库 DLL 项目
新建 C# 类库
新建 VB.NET 类库 DLL 项目
新建 VB.NET 类库
提示:语言与模板选型、多项目协作详见 解决方案与项目。若同一解决方案里还有窗体应用,请把启动项目设为窗体(或控制台),不要指望对类库按 F5 单独启动。

实现简单弹窗 API

在类库中新增一个公开类型,封装一次 MessageBox.Show 调用,供其他项目引用后调用。下面以静态方法 Greeter.SayHello 为例(C# 用 + 拼接字符串;VB.NET 用 &)。面向 C# 5.0 / .NET 4.8,请勿使用字符串插值($"")。

C#
using System.Windows.Forms;

namespace DemoLib
{
    public static class Greeter
    {
        public static void SayHello(string name)
        {
            MessageBox.Show("Hello, " + name);
        }
    }
}
VB.NET
Imports System.Windows.Forms

Public Class Greeter
    Public Shared Sub SayHello(name As String)
        MessageBox.Show("Hello, " & name)
    End Sub
End Class
提示:若编译提示找不到 MessageBoxSystem.Windows.Forms,在项目浏览器中为类库添加对 System.Windows.Forms 的程序集引用后再编译。类库默认不一定带上窗体程序集。

编译类库

类库没有可运行的主窗口,日常验证请用编译

编译成功后,输出面板应无错误。若失败,先根据错误信息补引用、改语法,再重新编译。菜单与配置说明见 运行与编译

找到输出目录中的 .dll

编译成功后,在资源管理器中打开解决方案文件夹 → 进入本类库项目文件夹 → 再进入输出目录:

其中可找到与程序集名称同名的 .dll(不要进 obj\ 中间目录)。若「项目选项」里改过输出路径,以选项中的路径为准。详表与易错点见 运行与编译「输出目录」。

下一步:在窗体项目中引用

拿到 DLL 之后,通常在同一解决方案中的「Windows 应用程序」里引用该类库(或浏览到上述 .dll),再在窗体代码中调用 Greeter.SayHello(...)。引用步骤、项目引用与文件引用的差别,见开发专题:

引用 DLL — 项目引用、浏览托管 DLL、C# / VB.NET 调用与非托管 DllImport / Declare

建议:同一解决方案内优先用项目引用指向类库工程,改完类库再编译解决方案,窗体侧会用到最新 DLL。先保证类库编译通过,再运行窗体项目。

相关阅读