zoukankan      html  css  js  c++  java
  • C#高级编程第11版

    导航

    第十九章 Libraries, Assemblies, Packages and NuGet

    19.1 库的地狱 423

    类库允许你在不同应用中进行代码复用。在Windows系统中,类库拥有悠久的历史,它的体系架构指南(architecture guidelines)为更新的技术提供了不少参考(take different directions)。在.NET之前,动态链接类库(dynamic link libraries,DLLS)可以在不同应用程序之间共享。这些DLLs可以安装在一个共享目录中。在同一个系统中,这些DLLs不允许存在不同版本,他们只能向前兼容(upward compatible)。当然,情况并非总是如此。如果你在安装新的应用程序的时候,没有仔细阅读旧程序的指南,不小心替换了它的某个共享类库。恭喜你,将会面临DLL地狱。

    .NET试图用程序集(assemblies)来解决这个问题。程序集和类库都可以被共享。与普通DLL不同的是,程序集包含了扩展的元数据信息,是带有版本号的类库,这样就可以在全局程序集缓存(global assembly cache)里,同时安装多个不同版本的类库。Microsoft试图通过这种方式来修复版本问题,但是这样子反而增加了另外一层复杂度。

    让我们假设你现在有一个应用程序X,并且它需要调用两个类库,一个A和一个B。如下图所示,X引用了1.1版本的类库A和1.0版本的类库B,这个时候,B还引用了1.0版本的类库A。因为一个进程里只能加载一个版本的类库,那么哪个版本的A会被加载?假如B先被调用,那么1.0版本的A类库就先被装载到进程里了。这个时候X程序自己又要调用A的话,问题就来了。

    类库调用

    19.2 程序集 425

    19.3 创建库 426

    19.3.1 .NET 标准 427

    19.3.2 创建.NET 标准库 428

    19.3.3 解决方案文件 428

    19.3.4 引用项目 429

    19.3.5 引用NuGet 包 429

    19.3.6 NuGet 的来源 430

    19.3.7 使用.NET Framework 库 431

    19.4 使用共享项目 433

    19.5 创建NuGet 包 435

    19.5.1 NuGet 包和命令行 435

    19.5.2 支持多个平台 435

    19.5.3 NuGet 包与Visual Studio 436

    19.6 小结 438

  • 相关阅读:
    开始编写正式的iOS 程序(iOS编程指导)
    iOS开发,新手入门指导
    轻松上手正则表达式
    windows phone 7 基本导航
    HexColorPicker 让选色变得更简单[for Mac]
    使用python处理子域名爆破工具subdomainsbrute结果txt
    一些关于Linux入侵应急响应的碎碎念
    Angular2 环境的搭建
    angularjs 动态加载指令编译服务$compile
    函数前的!
  • 原文地址:https://www.cnblogs.com/zenronphy/p/ProfessionalCSharp7Chapter19.html
Copyright © 2011-2022 走看看