首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【AssemblyInfo.cs】为程序设置版本和帮助信息

    图 2-1 作用   AssemblyInfo.cs配置文件主要是通过特性来设置生成的有关程序集的常规信息参数,如:程序集名称、描述、所属公司等。...图 4-1   下面来详细解释各个特性的意义: //设置程序集标题 [assembly: AssemblyTitle(".NET Pet Shop Model")] //设置程序集描述信息 [assembly...AssemblyCopyright("Copyright ©2005 Microsoft Corporation")] //设置合法商标信息 [assembly: AssemblyTrademark("")] //指定程序集支持的区域性...如果需要从 COM 访问此程序集中的类型, // 则将该类型上的 ComVisible 属性设置为 true。...-ad7e-d95aaa3d4a9f")] // 程序集的版本信息由下面四个值组成: // // 主版本 // 次版本 // 内部版本号 // 修订号 // // 可以指定所有这些值,也可以使用“内部版本号

    93030

    C#语法——元组类型

    元组Tuple   我们现在使用的C#语法已经可以满足日常的开发需求,但C#语法还在进行版本的更新,在创造更多更优秀的语义来让我们使用。这里介绍一下C#5.0里的提供的语法——元组。   ...在C#中定义Tuple对象,转到定义查看,我们会看到如下代码 #region 程序集 mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken...就是元组是可以存贮多种类型的对象,可以想象一下当一个函数拥有多个不同类型的返回值时,我们除了定义了一个返回值以外,还要定义多个out或ref类型返回值才能解决这个需求;当然我们也可以定义一个对象保存多个返回值...元组Tuple是可以存贮多种类型的数据的。NET Framework 直接支持具有 1 到 7 元素的元组。...元组常用四种方法︰   1,用来表示一组数据。 例如,一个元组可以表示的数据库记录,并且其组件可以表示每个字段的记录。   2,若要提供轻松访问和数据集的操作。

    40330

    C#反射与特性(一):反射基础

    程序集操作 2.1 获取 程序集对象(Assembly) 2.1.1 运行时获取程序集 2.1.2 使用方法 2.1.3 从文件加载程序集 2.1.4 使用方法 2.2 Assembly 使用 2.2.1...Assembly ass = Assembly.GetExecutingAssembly(); 2.1.3 从文件加载程序集 函数 说明 LoadFrom(String) 已知程序集的文件名或路径,加载程序集...属性 说明 CodeBase 获取或设置程序集的 URL 位置。 ContentType 获取或设置指示程序集包含的内容类型的值。 CultureInfo 获取或设置程序集支持的区域性。...Version 获取或设置程序集的主版本号、次版本号、内部版本号和修订号。 VersionCompatibility 获取或设置与程序集同其他程序集的兼容性相关的信息。...2.3.1 Assembly.Load() Assembly.Load() 以强类型的方式去加载程序集, 强名称和程序集签名 指的是 程序集具有唯一的和不可更改的标识。 何以为强类型?

    1.4K50

    .NET Core跨平台的奥秘:全新的布局

    虽然我们编程过程中使用到的绝大部分基础类型都定义在System.Private.CoreLib.dll程序集中,但是这却是一个“私有”的程序集,我们可以从其命名看出这一点。...我们通过图2-24所示的输出结果,我们不仅仅知道了这个核心程序集的名称,还知道了该程序集目前的版本(4.0.0.0); ?...通过在不同类型(.NET Framework和.NET Core)的应用中调用这个方法,我们就可以确定它们在运行时究竟是从那个程序集中加载的。...具体来说,.NET Framework环境下的这三个类型分别定义在mscorlib.dll、System.dll和System.Xml.dll中;当切换到.NET Core环境下后,运行时则会从三个私有的程序集...简单来说,.NET Framework环境下的垫片程序集netstandard.dll将这两个类型分别转移到了程序集mscorlib.dll和System.dll之中。

    1.1K70

    .NET应用程序调试—原理、工具、方法

    .设置符号文件(公有符号、私有符号) 5.2.加载.NET程序扩展调试包(SOS.DLL、SOSEX.DLL) 5.3.调试的三种命令类型(标准命令、元命令、扩展命令) 6.调试扩展的几个比较常用的命令...这个文件和SOS扩展文件一样,都有这不同的版本,当加载不同类型的.NET程序时会使用到不同版本的mscordacwks.dll文件,当然大部分情况下此文件时自动加载的,只有出现你分析的文件与生成调试文件的环境不一致时才会出现头疼的问题...3.调试程序类型(客户端程序、服务端程序) .NET程序主要分为两类,一类是客户端程序,另一类是服务端程序。...\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll Fields:       MT    Field   Offset                 Type...这个问题是当前SOS.dll和.NET程序所使用的.NET版本不一致,这个问题的出现一般都是我们通过.load xx\xx\SOS.dll,手动方式加载的。 图22: ?

    82200

    .NET应用程序调试—原理、工具、方法

    .设置符号文件(公有符号、私有符号) 5.2.加载.NET程序扩展调试包(SOS.DLL、SOSEX.DLL) 5.3.调试的三种命令类型(标准命令、元命令、扩展命令) 6.调试扩展的几个比较常用的命令...这个文件和SOS扩展文件一样,都有这不同的版本,当加载不同类型的.NET程序时会使用到不同版本的mscordacwks.dll文件,当然大部分情况下此文件时自动加载的,只有出现你分析的文件与生成调试文件的环境不一致时才会出现头疼的问题...3.调试程序类型(客户端程序、服务端程序) .NET程序主要分为两类,一类是客户端程序,另一类是服务端程序。...\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll Fields:       MT    Field   Offset                 Type...这个问题是当前SOS.dll和.NET程序所使用的.NET版本不一致,这个问题的出现一般都是我们通过.load xx\xx\SOS.dll,手动方式加载的。 图22: ?

    1.2K60

    Windbg分析高内存占用问题

    1. 问题简介 最近产品发布大版本补丁更新,一商超客户升级后,反馈系统经常奔溃,导致超市的收银系统无法正常收银,现场排队付款的顾客更是抱怨声声。...既然直接从任务管理器无法创建,就使用第三方工具收集Dump吧。...从输出的结果来看: 其中占用内存最多当属System.String类型,接近4G的大小(是不是很吃惊?!)。 其次System.Object[]类型占有1.3G大小。...从以上输出可以看出: 该String类型被一个Hashset所持有。 从Cache关键字可以看出该String类型是被缓存所持有。...最后来简单总结下,Windbg分析问题的步骤: 创建完整Dump文件 Windbg加载Dump文件 根据不同问题类型,使用相关的命令进行分析 耐心分析,抽丝剥茧 边分析边猜测边验证 结合源码验证猜想 修复验证

    4.3K30

    CLR中的程序集加载

    TypeRef和AssemblyRef元数据表来确定哪一个程序集定义了所引用的类型。...JIT编译器将该标识匹配的一个程序集加载到AppDomain中。】      CLR内部加载程序集提供了4中方法,在System.Refleetion.Assembly类中:     1.    ...采用静态方法Load()加载程序集,可调用它显示的将一个程序集加载到AppDomain中: 【注:Assembly类的Load()存在两个重载版本】 /// /// 通过给定的程序集的显示名称来加载程序集...3.采用Assembly的LoadFile方法,这个方法可以从任意路径加载一个程序集,并可将具有相同标识的一个程序集多次加载到一个AppDoamin中。...ReflectionOnlyLoad方法会在GAC、应用程序基目录、私有路径和codebase指定的位置搜索指定的程序集,该方法不会应用版本控制策略,因此在指定的是那个版本,获取的就是那个版本。

    1.1K80

    厚积薄发,拥抱 .NET 2016

    使用 ILDASM 反编译程序集 1.C# 编译器将源代码转换成IL代码后存储到程序集中(DLL 或者 EXE)。 2.IL 代码语句就像汇编语言指令,它们被.NET 的虚拟机也就是 CLR执行。...在运行时,CLR 从程序集中加载 IL 代码,然后 JIT 编译器编译成 Native Code,最后交由 CPU执行。...在 Developer Command Prompt 输入 ildasm HelloWorldApp.exe,你会看到ILDASM 工具加载编译过后的程序集: ?...可以看到.NET Metadata 的版本是 4.0.30319,并且依赖外部的程序集mscorlib,它的版本是4.0.0.0,上述截图告诉我们,要运行这个应用程序需要安装.NET Framework...IL 的 EXE 应用程序并且依赖mscorlib程序集 ,而使用.NET Core 的应用程序编译之后生成包含 IL 的DLL,依赖System.Console 和 System.Runtime 程序集

    1.2K150

    Windbg分析高内存占用问题

    问题简介 最近产品发布大版本补丁更新,一商超客户升级后,反馈系统经常奔溃,导致超市的收银系统无法正常收银,现场排队付款的顾客更是抱怨声声。...既然直接从任务管理器无法创建,就使用第三方工具收集Dump吧。...从输出的结果来看: 其中占用内存最多当属System.String类型,接近4G的大小(是不是很吃惊?!)。 其次System.Object[]类型占有1.3G大小。...从以上输出可以看出: 该String类型被一个Hashset所持有。 从Cache关键字可以看出该String类型是被缓存所持有。...最后来简单总结下,Windbg分析问题的步骤: 创建完整Dump文件 Windbg加载Dump文件 根据不同问题类型,使用相关的命令进行分析 耐心分析,抽丝剥茧 边分析边猜测边验证 结合源码验证猜想 修复验证

    2.3K20

    MSIL学习------从HelloWorld开始

    )的元数据项,标记了这个程序使用的外部托管应用程序,类似using语句  mscorlib.dll:.NET程序集类库的主程序集。....assembly  [assemblyName] {}    定义一个程序集的元数据项,如果一个不定义此项,这个文件就不完全是一个应用程序,无法独立指定 .module [moduleName] 定义一个模块元数据项...下面再来介绍下修饰与class和method中的关键字 1.class private  访问修饰符,没什么好说的,IL支持6种访问修饰符,C#7.2版本才加入第六种(private protected...) auto  [可选]  定义类的布局风格,auto是自动布局(默认值),只加载程序时可以使用它认为合适的方式进行布局   其它布局风格有sequential(加载程序时保留实例字段的顺序)和explicit...} }   在上面代码中程序集引用中使用的是auto,这是IL2.0版本加入,会自动搜索指定名称程序集   然后在开发者工具使用命令进行编辑 ilasm HelloWorld_IL.il /output

    56930

    通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?

    而从其ResolutionScope指向位于0x23000001而得之,该类型存在于mscorlib程序集。...程序集的加载方式 对于自身程序集内定义的类型,我们可以直接从自身程序集中的元数据中获取,对于在其它程序集中定义的类型,CLR会通过一组规则来在磁盘中找到该程序集并加载在内存。...此时A引用B,就会报:发现同一依赖程序集的不同版本间存在无法解决的冲突 这一警告。...第二种:对每个版本指定codeBase路径,然后分别放上不同版本的程序集,这样就可以加载两个相同的程序集。...除了程序集版本不同外,还有一种情况就是,我一个项目同时引用了程序集A和程序集B,但程序集A和程序集B中的命名空间和类型名称完全一模一样,这个时候我调用任意一个类型都无法区分它是来自于哪个程序集的,那么这种情况我们可以使用

    4.6K30

    通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?

    而从其ResolutionScope指向位于0x23000001而得之,该类型存在于mscorlib程序集。...程序集的加载方式 对于自身程序集内定义的类型,我们可以直接从自身程序集中的元数据中获取,对于在其它程序集中定义的类型,CLR会通过一组规则来在磁盘中找到该程序集并加载在内存。...比如: A程序集引用了 C盘:\Newtonsoft.Json 6.0程序集 B程序集引用了 从Nuget下载下来的Newtonsoft.Json 10.0程序集 此时A引用B,就会报:发现同一依赖程序集的不同版本间存在无法解决的冲突...第二种:对每个版本指定codeBase路径,然后分别放上不同版本的程序集,这样就可以加载两个相同的程序集。 如何同时调用两个两个相同命名空间和类型的程序集?...除了程序集版本不同外,还有一种情况就是,我一个项目同时引用了程序集A和程序集B,但程序集A和程序集B中的命名空间和类型名称完全一模一样,这个时候我调用任意一个类型都无法区分它是来自于哪个程序集的,那么这种情况我们可以使用

    2.8K63

    .Net 框架

    mscorlib.dll这个程序集。...mscorlib.dll中包含的命名空间 可以看到该程序集下包含的主要是System命名空间,稍微细心一点的读者会发现,在新建项目的时候,还包含了System.dll程序集,并且其中所包含的类型与mscorlib...这里又存在一个“鸡生蛋问题”:根据不同的程序集信息会加载不同版本的CLR,因此加载CLR的组件就应该只有一个,不能再根据CLR的版本去决定加载CLR的组件的版本。...加载了MsCorEE.dll之后,会调用其中的_CorExeMain()函数,该函数会加载合适版本的CLR。在CLR运行之后,程序的执行权就交给了CLR。...CLR中一个名为Class loader(类加载程序)的组件负责这项工作。它会从GAC、配置文件、程序集元数据中寻找这个类型,然后将它的类型信息加载到内存中的数据结构中。

    1.9K21
    领券