C#学习第24天:程序集和部署

程序集知识点


1.程序集的基本概念

  • 程序集是部署和版本控制的最小单位。
  • 它可以是可执行文件(.exe)或动态链接库(.dll)。
  • 包含元数据和清单(Manifest),描述程序集的内容和依赖关系。

2.程序集清单

  • 包含程序集的名称、版本、文化和公钥。
  • 列出程序集所包含的所有模块和类型。
  • 描述程序集对其他程序集的依赖。

3.强名称程序集

  • 使用强名称为程序集签名以确保其唯一性和安全性。
  • 包括程序集的简单名称、版本号、文化信息和公钥。
  • 使用 SN.exe 工具生成密钥对。

4.程序集版本控制

  • 支持主版本、次版本、内部版本和修订版本。
  • 使用 [assembly: AssemblyVersion("1.0.0.0")] 属性指定版本。
  • 支持绑定重定向以解决版本冲突。

5.程序集的类型

  • 私有程序集:存放在应用程序目录,供单个应用程序使用。
  • 共享程序集:存放在全局程序集缓存(GAC),可供多个应用程序共享。

6.程序集的部署

  • 私有程序集直接复制到应用程序目录。
  • 共享程序集需通过 GAC 工具注册。

Visual Studio示例


1. 创建一个类库项目

  1. 打开 Visual Studio。
  2. 选择"创建新项目"。
  3. 选择"类库(.NET Framework)"模板。
  4. 输入项目名称,例如 MyLibrary,选择保存位置,然后点击"创建"。
cs 复制代码
namespace MyLibrary
{
    public class Greeter
    {
        public string SayHello(string name)
        {
            return $"Hello, {name}!";
        }
    }
}

2. 设置程序集信息

  1. 在"解决方案资源管理器"中,找到 Properties,打开 AssemblyInfo.cs 文件。
cs 复制代码
using System.Reflection;
using System.Runtime.InteropServices;

[assembly: AssemblyTitle("MyLibrary")]
[assembly: AssemblyDescription("示例程序集")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("MyCompany")]
[assembly: AssemblyProduct("MyLibraryProduct")]
[assembly: AssemblyCopyright("Copyright © 2023")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

[assembly: ComVisible(false)]
[assembly: Guid("d9b1c3e2-b1e3-4ef1-8d91-2f6402c050f3")]

[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

3. 为程序集签名(强名称)

  1. 在"解决方案资源管理器"中右键点击项目 MyLibrary,选择"属性"。
  2. 切换到"签名"选项卡,勾选"为程序集签名"。
  3. 点击"新建..."创建一个新的密钥文件,输入名称(例如 MyLibraryKey),并设置密码(可选)。

4. 生成程序集

  1. 点击"生成"菜单,选择"生成解决方案"。

5. 使用程序集

创建一个新的"控制台应用程序"项目来引用并使用 MyLibrary。

  1. 在解决方案上右键点击,选择"添加" -> "新建项目"。
  2. 选择"控制台应用程序"模板,输入项目名称(例如 MyApp)。
  3. 在"解决方案资源管理器"中,右键点击 "MyApp" 项目,选择"添加" -> "项目引用"。
  4. 勾选 MyLibrary 项目。

在 Program.cs 中使用 MyLibrary:

cs 复制代码
using System;
using MyLibrary;

class Program
{
    static void Main()
    {
        Greeter greeter = new Greeter();
        Console.WriteLine(greeter.SayHello("World"));
    }
}

6. 运行程序

按下 Ctrl + F5 运行 MyApp 项目,应该会在控制台输出:

cs 复制代码
Hello, World!

7. (可选) 将程序集添加到 GAC

如果你希望将程序集添加到 GAC(全局程序集缓存),请使用"开发者命令提示符"执行以下命令:

cs 复制代码
gacutil -i "path\to\MyLibrary.dll"

使用场景


应用程序更新和版本管理:

  • 通过程序集版本控制和部署策略,便捷地管理应用程序的更新。

代码复用:

  • 使用共享程序集提高代码的复用性,减少冗余。

分布式部署:

  • 使用ClickOnce或安装程序,简化复杂应用程序的部署过程。

通过这,你可以在 Visual Studio 中创建和使用一个强名称的 C# 程序集,并在另一个项目中引用和使用它。如果有任何其他问题或需要进一步的解释,请随时问我!

相关推荐
在屏幕前出油20 分钟前
二、Python面向对象编程基础——理解self
开发语言·python
Java后端的Ai之路24 分钟前
【神经网络基础】-神经网络学习全过程(大白话版)
人工智能·深度学习·神经网络·学习
阿方索1 小时前
python文件与数据格式化
开发语言·python
cici158741 小时前
C#实现三菱PLC通信
java·网络·c#
k***92162 小时前
【C++】继承和多态扩展学习
java·c++·学习
weixin_440730502 小时前
java结构语句学习
java·开发语言·学习
JIngJaneIL2 小时前
基于java+ vue医院管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot
量子联盟2 小时前
功能完整的PHP站点导航管理系统php程序;开源免费下载
开发语言·php
仙俊红2 小时前
在 Java 中,`==` 和 `equals()` 的区别
java·开发语言·jvm
JIngJaneIL3 小时前
基于java + vue校园跑腿便利平台系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot