• C#之程序集


     
    程序集的定义:
               1.程序集是一个或多个托管模块,以及一些资源文件的逻辑组合。
               2.程序集是组件复用,以及实施安全策略和版本策略的最小单位。
               3.程序集是包含一个或者多个类型定义文件和资源文件的集合。在程序集包含的所有文件中,有一个文件用于保存清单。(清单是元数据部分中一组数据表的集合,其中包含了程序集中一部分文件的名称,描述了程序集的版本,语言文化,发布者,共有导出类型,以及组成该程序集的所有文件)。

     程序集的物理表现:
               1.可执行程序集:存在一个用于表示EXE的文件,这个文件是程序集的入口点。
               2.提供功能的程序集:存在一个用于表示DLL的文件,这个文件是程序集的入口点。

    程序集和托管模块的关系:
               1.可以使用       csc   /t:module       type1.cs  
                                         csc   /t:module       type2.cs  
                                         这样就可以生成两个托管模块: type1.netmodule  type2.netmodule
              2.使用命令将模块集成到程序集中:
                                         csc  /out:xxx.dll       /t:library  /addmodule: type1.netmodule type2.netmodule xxx.cs
               这样就有了程序集xxx.dll:    它由xxx.dll type1.netmodule type2.netmodule 组成。xxx.dll代表了这组程序集。xxx.dll也可以是xxx.exe。也可以使用al来创建:
              Al /out:xxx.dll /t:library type1.netmodule type2.netmodule.
             3.卫星程序集:
                     3.1创建资源文件:MyResource.cn.Resx 或者MyResource.cn.txt
                     3.2使用命令resgen MyResource.cn.resx  MyResource.cn.resources 编译资源          
                     3.3   al.exe /culture:cn /out:"cn/HelloWorld.Resources.dll" /embed:"MyResources.cn.resources" /template:"HelloWorld.exe"           
                     3.4在主程序集HelloWorld中如何访问卫星程序集:
                        System.Resources.ResourceManager resources =
                        new System.Resources.ResourceManager("HelloWorld.Resources.MyResources",
                        System.Reflection.Assembly.GetExecutingAssembly());

                    // Print out the "HelloWorld" resource string
                    Console.WriteLine(resources.GetString("HelloWorld"));
                   
                    // Get the new culture name
                    Console.Write(resources.GetString("NextCulture"));
                    3.5部署主程序集和卫星程序集 
    │  HelloWorld.exe
    ├─ko-kr
    │      HelloWorld.resources.dll
    ├─it
    │      HelloWorld.resources.dll
    ├─fr
    │      HelloWorld.resources.dll
    ├─es
    │      HelloWorld.resources.dll
    ├─en
    │      HelloWorld.resources.dll
    ├─en-us
    │      HelloWorld.resources.dll
    └─de
           HelloWorld.resources.dll
    通过AL工具来改变一个程序集的各种属性:
            可以参见AL的帮助
    通过AssemblyInfo.cs文件来改变一个程序集的属性:
           这个文件中最重要的几个特性是:
                  1、AssemblyVersion: 格式: Major Version ---- Minor  Version ------ Build  version ------  Revision
                  2、[assembly: AssemblyCulture("")]   
                  3、[assembly: AssemblyDelaySign(false)]
                  4、[assembly: AssemblyKeyFile("")]
                  5、[assembly: AssemblyKeyName("")]
          这几个各个程序集属性的探讨

    将程序集组成各种应用程序,进行程序集的部署:
           不考虑应用程序的类型,可以将程序集的部署分为私有部署和全局部署。
           私有部署:
               1.本地应用程序的部署结构
                     AppDir
                       |---- App.exe
                       |---- App.exe.config
                       |-----AuxFilesDir
                                 |------ xxx.dll
                                 |------ yyy.dll
                      在App.exe.config中可以配置影响CLR寻找程序集路径的选项。
               2.Asp.net应用程序和XML Web服务应用程序
                    对于asp.net Web窗口和XMLWeb服务应用程序,配置文件必须位于Web应用程序的虚拟根目录下,并且名称总是Web.config 。另外子目录也可以包含它们自己的Web.config文件,并继承上一目录的配置设置。
               3. 对于包含客户方空件、以微软的IE浏览器为宿主的程序集。(没有见过)
     
  • 相关阅读:
    检测Linux Rootkit入侵威胁——阿里云是基于行为特征如信号劫持或者文件隐藏,用户提权和网络隐藏,进程劫持等进行检测
    webshell拿到网站权限后使用MSF提权利用高权限进程提权,msf操作过程和永恒之蓝类似
    MySQL提权之启动项提权——开机启动的程序,那时候启动的程序权限都是system
    MSSQL提权之xp_cmdshell、SP_OACreate、沙盒提权
    windows漏洞扫描工具windowsvulnscan和wesng,本质是比较windows系统版本、systeminfo补丁信息来查看漏洞利用情况,EDR可以用;提权的话通常是系统内核溢出漏洞来提权,见内网安全攻防
    dmidecode 查看内存以及硬件信息
    SpringBoot整合Redisson 规格严格
    window启动tomcat的console窗口中文乱码问题 规格严格
    指定springboot启动文件 规格严格
    Cache 和 Buffer 都是缓存,主要区别是什么? 规格严格
  • 原文地址:https://www.cnblogs.com/encounter/p/2188828.html
Copyright © 2020-2023  润新知