C#学习第24天:程序集和部署
程序集知识点
1.程序集的基本概念
- 程序集是部署和版本控制的最小单位。
- 它可以是可执行文件(.exe)或动态链接库(.dll)。
- 包含元数据和清单(Manifest),描述程序集的内容和依赖关系。
2.程序集清单
- 包含程序集的名称、版本、文化和公钥。
- 列出程序集所包含的所有模块和类型。
- 描述程序集对其他程序集的依赖。
3.强名称程序集
- 使用强名称为程序集签名以确保其唯一性和安全性。
- 包括程序集的简单名称、版本号、文化信息和公钥。
- 使用 SN.exe 工具生成密钥对。
4.程序集版本控制
- 支持主版本、次版本、内部版本和修订版本。
- 使用 [assembly: AssemblyVersion("1.0.0.0")] 属性指定版本。
- 支持绑定重定向以解决版本冲突。
5.程序集的类型
- 私有程序集:存放在应用程序目录,供单个应用程序使用。
- 共享程序集:存放在全局程序集缓存(GAC),可供多个应用程序共享。
6.程序集的部署
- 私有程序集直接复制到应用程序目录。
- 共享程序集需通过 GAC 工具注册。
Visual Studio示例
1. 创建一个类库项目
- 打开 Visual Studio。
- 选择“创建新项目”。
- 选择“类库(.NET Framework)”模板。
- 输入项目名称,例如 MyLibrary,选择保存位置,然后点击“创建”。
namespace MyLibrary
{public class Greeter{public string SayHello(string name){return $"Hello, {name}!";}}
}
2. 设置程序集信息
- 在“解决方案资源管理器”中,找到 Properties,打开 AssemblyInfo.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. 为程序集签名(强名称)
- 在“解决方案资源管理器”中右键点击项目 MyLibrary,选择“属性”。
- 切换到“签名”选项卡,勾选“为程序集签名”。
- 点击“新建...”创建一个新的密钥文件,输入名称(例如 MyLibraryKey),并设置密码(可选)。
4. 生成程序集
- 点击“生成”菜单,选择“生成解决方案”。
5. 使用程序集
创建一个新的“控制台应用程序”项目来引用并使用 MyLibrary。
- 在解决方案上右键点击,选择“添加” -> “新建项目”。
- 选择“控制台应用程序”模板,输入项目名称(例如 MyApp)。
- 在“解决方案资源管理器”中,右键点击 “MyApp” 项目,选择“添加” -> “项目引用”。
- 勾选 MyLibrary 项目。
在 Program.cs 中使用 MyLibrary:
using System;
using MyLibrary;class Program
{static void Main(){Greeter greeter = new Greeter();Console.WriteLine(greeter.SayHello("World"));}
}
6. 运行程序
按下 Ctrl + F5 运行 MyApp 项目,应该会在控制台输出:
Hello, World!
7. (可选) 将程序集添加到 GAC
如果你希望将程序集添加到 GAC(全局程序集缓存),请使用“开发者命令提示符”执行以下命令:
gacutil -i "path\to\MyLibrary.dll"
使用场景
应用程序更新和版本管理:
- 通过程序集版本控制和部署策略,便捷地管理应用程序的更新。
代码复用:
- 使用共享程序集提高代码的复用性,减少冗余。
分布式部署:
- 使用ClickOnce或安装程序,简化复杂应用程序的部署过程。
通过这,你可以在 Visual Studio 中创建和使用一个强名称的 C# 程序集,并在另一个项目中引用和使用它。如果有任何其他问题或需要进一步的解释,请随时问我!