美文网首页
Windows .net全局程序集缓存 (GAC) 的使用

Windows .net全局程序集缓存 (GAC) 的使用

作者: CodingCode | 来源:发表于2023-11-17 09:55 被阅读0次
    1. 定义assembly的在GAC中的属性

    为一个assembly生成一个key:

    C:\> sn -k myassembly.key
    

    生成一个key文件,这个文件会被配置到assembly的配置文件里面。

    定义assembly的配置属性(AssemblyInfo.cs):

    using System.Reflection;
    using System.Runtime.CompilerServices;
    
    [assembly: AssemblyTitle("")]
    [assembly: AssemblyDescription("")]
    [assembly: AssemblyConfiguration("")]
    [assembly: AssemblyCompany("")]
    [assembly: AssemblyProduct("")]
    [assembly: AssemblyCopyright("")]
    [assembly: AssemblyTrademark("")]
    [assembly: AssemblyCulture("")]
    
    [assembly: AssemblyVersion("1.0.0.1")]
    
    [assembly: AssemblyDelaySign(false)]
    [assembly: AssemblyKeyFile("myassembly.key")]
    [assembly: AssemblyKeyName("")]
    

    和assemble源代码文件和配置属性文件一起编译:

    C:\> csc.exe /out:myassembly.dll /target:library myassembly.cs AssemblyInfo.cs
    
    1. 安装
    C:\> gacutil.exe /i path\to\myassembly.dll
    

    安装到的目的路径为:%windir%\Microsoft.NET\assembly,其下有三个子目录:

    GAC_32   : for assemblies targeting 32-bit.
    GAC_64   : for assemblies targeting 64-bit.
    GAC_MSIL : for assemblies targeting 'Any' platform.
    

    在上述例子中,因为没有指定target,所以会被安装到GAC_MSIL目录下面:

    GAC_MSIL
           + myassembly
                      + v4.0_1.0.0.1__26893dcbecf3cd71
                                                     + myassembly.dll
    

    其中1.0.0.1是在配置文件中定义的版本,而26893dcbecf3cd71是key值。

    1. 使用

    安装完之后就是如何使用了。目前所知道的是(不完全准确,需要更新):

    1. csc.exe编译的时候并不能直接使用GAC中的dll
      所以还需要传统本地目录下面有一份dll,然后通过/reference:path\to\dll来引用。
    2. GAC中的dll会在运行时自动搜索,所以也就不需要把assembly拷贝到可执行程序相同目录,或者配置.exe.config文件了。
    1. 删除和查询
    C:\> gacutil.exe /u <assembly-name>
    C:\> gacutil.exe /l <assembly-name>
    

    相关文章

      网友评论

          本文标题:Windows .net全局程序集缓存 (GAC) 的使用

          本文链接:https://www.haomeiwen.com/subject/aiiywdtx.html