CLR via C# 读书笔记2-2

学Simulink——四开关 Buck‑Boost(FSBB)变换器的无缝模式切换仿真 本文详细介绍了使用Simulink实现四开关Buck-Boost(FSBB)变换器无缝模式切换的仿真方法。FSBB变换器因其输入输出同极性、单电感和双向能量流特性,广泛应用于光伏储能、USB-PD和车载电源等场景。文章重点解决了模式切换中的直通风险和占空比跳变问题,通过统一电压PI控制、Stateflow模式仲裁和200ns死区设计,实现了Buck(26V→24V)、Pass-Through(24V±1V)和Boost(22V)三种工作模式的无缝过渡。仿真结果显示输出电压稳定在12V±0.15V,切换过程无 阅读详情
把类型编译成一个模块

先假设有这么一个简单的程序:

public sealed class Program 
{
	public static void Main() 
	{
		System.Console.WriteLine("Hi");
	}
}

该程序定义一个名为 Program 的类型,它拥有一个公有静态 (public, static) 方法 Main,该方法参照 System.Console。把源代码存为 Program.cs 执行以下命令行:

csc.exe /out:Program.exe /t:exe /r:MSCorLib.dll Program.cs

该命令行有以下功能:

  • 让 C# 编译器生成一可执行文件(/out:Program.exe)
  • 文件类型为Win32控制台程序(/t[arget]:exe)
  • 指示参照类型的程序集(/r:MSCorLib.dll),由于MSCorLib.dll 总被C# 编译器默认参照,所以可省略。特殊情况下(比如Microsoft 在编译MSCorLib.dll 本身时)用/nostdlib命令开关来取消默认参照
响应文件(Response file)

响应文件包含了一系列编译器的命令行开关,调用CSC.exe 时通过一个 @ 符号来告诉编译器使用指定的响应文件。例如:有一个名为 MyProject.rsp 并包含以下内容的响应文件。

/out:MyProject.exe
/target:winexe

使用以下命令告诉 CSC.exe 来使用这个文件:

csc.exe @MyProject.rsp CodeFile1.cs CodeFile2.cs

C# 编译器支持多个响应文件,除了你在命令行中指定的文件,编译器还自动查找 CSC.rsp(作为全局设定),一些需要适用到所有工程的设定可以写在这个文件中。如果同时存在互相矛盾的设定,那么本地设定比全局设定有更高的优先级,与此类似的是直接通过命令行指定的设定优先级比本地设定要高。
当你安装 .NET Framework 时,一个全局的 CSC.rsp 文件被安装到 %SystemRoot%\Microsoft.NET\Framework(64)\vX.X.X 目录 (X.X.X 为.NET Framework 版本号)。通常这个文件包含以下内容:

# This file contains command-line options that the C#
# command line compiler (CSC) will process as part
# of every compilation, unless the "/noconfig" option
# is specified.
# Reference the common Framework libraries
/r:Accessibility.dll
/r:Microsoft.CSharp.dll
/r:System.Configuration.dll
/r:System.Configuration.Install.dll
/r:System.Core.dll
/r:System.Data.dll
/r:System.Data.DataSetExtensions.dll
/r:System.Data.Linq.dll
/r:System.Data.OracleClient.dll
/r:System.Deployment.dll
/r:System.Design.dll
/r:System.DirectoryServices.dll
/r:System.dll
/r:System.Drawing.Design.dll
/r:System.Drawing.dll
/r:System.EnterpriseServices.dll
/r:System.Management.dll
/r:System.Messaging.dll
/r:System.Runtime.Remoting.dll
/r:System.Runtime.Serialization.dll
/r:System.Runtime.Serialization.Formatters.Soap.dll
/r:System.Security.dll
/r:System.ServiceModel.dll
/r:System.ServiceModel.Web.dll
/r:System.ServiceProcess.dll
/r:System.Transactions.dll
/r:System.Web.dll
/r:System.Web.Extensions.Design.dll
/r:System.Web.Extensions.dll
/r:System.Web.Mobile.dll
/r:System.Web.RegularExpressions.dll
/r:System.Web.Services.dll
/r:System.Windows.Forms.Dll
/r:System.Workflow.Activities.dll
/r:System.Workflow.ComponentModel.dll
/r:System.Workflow.Runtime.dll
/r:System.Xml.dll
/r:System.Xml.Linq.dll

由于全局 CSC.rsp 文件参照了以上所有程序集,所以大多数编译情况下你不需要使用 /reference 开关就能使用 Microsoft 开发的程序集。

提示:当你使用 /reference 编译开关时,你可以通过完整的路径来指定一个文件。而当你没有指定完整的路径,编译器会依次搜索以下目录:
■ 工作目录(Working directory)
■ CSC.exe 所在目录。MSCorLib.dll 总在这个目录中,默认路径: %SystemRoot%\Microsoft.NET\Framework\v4.0.#####.
■ 通过 /lib 编译器开关指定的目录
■ LIB 环境变量制定的目录

最后如果想无视本地/全局响应文件,只需在编译命令行中使用 /noconfig 命令行。

蓝牙配对鉴权过程深度剖析:Just Works/Numeric Comparison/Passkey Entry/OOB 协议流程 当你新买的智能手表与手机配对时,是否遇到过这样的情况:有时只需在手机上点击 "确认" 即可完成配对,有时却需要在手表上输入手机显示的 6 位数字,而连接车载蓝牙时可能又需要输入固定密码?这些差异背后,是蓝牙配对鉴权机制在默默工作。蓝牙配对鉴权是设备间建立安全连接的核心环节,直接关系到数据传输的保密性和设备身份的真实性。​ 阅读详情

相关推荐

保姆级教程:在ROS Noetic下,手把手教你将自定义A*全局规划器打包成插件(附避坑指南)

本文提供了一份详细的ROS Noetic下自定义A*全局规划器插件开发指南,涵盖从环境准备、算法优化到插件配置与调试的全流程。通过实战案例和避坑技巧,帮助开发者高效实现机器人导航中的全局路径规划,特别适合需要优化ROS导航栈的开发者。

weixin_29168675的博客 282

CLR via C# 读书笔记2-7

简单的管理控制 (配置) 用户能够使用一个配置文件来控制程序的运行, CLR 会读取其中的内容来调整定位/载入程序集的策略。 这些配置文件以 XML 格式书写,并与某个程序/机器进行关联。使用一个独立的配置文件(而不是注册表)使得这些设定能够更容易的分发。这里先举个实际应用的例子: 计划配布的产品目录: AppDir directory (产品根目录) |- Program.exe |-

sqlchen的专栏 804

多目标跟踪中使用trackeval评估dancetrack运行结果

trackeval使用

qq_46144849的博客 1782

CLR via C# 读书笔记1-2

托管模块集成在程序集(Assemblies)中 CLR 实际上并不处理模块,它处理程序集。程序集是一个或多个模块/资源文件的集合,也是最小的可复用,安全性,版本化的最小单位。根据你选择的编译器,你可以生成一个或多个程序集。在 CLR 的概念中,这称之为组件(component)。 插图 1-2 将帮助你理解程序集到底是什么。托管模块和资源文件经过一个工具的处理集成为程序集,这个工具生成一个 P

sqlchen的专栏 634

TPS563201DDCR电路翻车实录:从原理图到PCB,我踩过的5个坑及补救方法

本文详细记录了使用TPS563201DDCR电源芯片设计电路时遇到的5个常见问题及解决方案,包括EN引脚配置、BST电容选型、反馈网络设计、PCB布局优化以及散热处理。通过实际案例和数据分析,帮助工程师避免类似错误,提升电源模块的可靠性和效率。

weixin_42532938的博客 527

三极管开关电路在脉冲应用中的性能瓶颈分析

深入探讨三极管开关电路在高频脉冲场景下的响应延迟与功耗问题,揭示其性能限制的关键因素。结合实际应用,分析开关速度与信号完整性之间的矛盾,为优化三极管开关电路设计提供实用参考。

weixin_42602368的博客 587

CLR via C# 读书笔记2-5

程序集的版本资源信息 使用 AL.exe 或 CSC.exe 生成的程序集都会包含一个标准 Win32 版本资源,通过查看这个文件的属性可以查看该信息,也可以在程序代码中调用System.Diagnostics.FileVersionInfo 的静态方法 GetVersionInfo 来查看。图 2-4 显示了之前生成的 MultiFileLibrary.dll 属性对话框: 可以通过设定

sqlchen的专栏 844

LabVIEW+数据库应用系列保姆级教程,第二篇增删查改

2021-7-2 先挖好坑

wwplh5520370的博客 7362

CLR via C# 读书笔记2-4 追记

使用程序集连接器 (Assembly Linker) 除了使用 C# 编译器,你也可以使用 Assembly Linker 工具(AL.exe)来作成包含多个模块(这些模块可以是不同开发语言编译器编译的产物)的程序集。通过这种方法能够生成纯资源程序集 (术名: satellite assemblies),专门用来对应本地化。再次拿前文生成MultiFileLibrary.dll的例子来说明,这次

sqlchen的专栏 804

别再手动折腾了!PICO Unity SDK 一键配置开发环境保姆级教程(含PDC串流调试)

本文详细介绍了PICO Unity SDK的一键配置功能,帮助开发者快速搭建VR开发环境。通过自动化配置流程,大幅减少手动设置时间,提升开发效率。文章还涵盖了PDC串流调试技巧和常见问题解决方案,是PICO VR开发的实用指南。

weixin_30335575的博客 447

华为OD机试真题 新系统【网络数据包收发处理】

华为OD机试 新系统真题【网络数据包收发处理】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【网络数据包收发处理】多语言题解。

qq_45776114的博客 442

CLR via C# 读书笔记2-3

初识元数据(Metadata) 前文已经介绍过,编译后生成的托管文件包含4 部分内容:PE32(+) 头,CLR 头,元数据以及 IL 代码。 metadata 是一块包含若干个表的二进制数据,这些标分为3 种类别: 定义表(definition tables), 参照表(reference tables) 以及 manifest 表。表 2-1 列出了一些常见的定义表: 表2-1 常见

sqlchen的专栏 927

Open3D 计算点云的主曲率

本文介绍了点云主曲率计算的方法与实现。通过分析曲面局部几何形状的主曲率(最大和最小方向),基于法线构建投影矩阵和协方差矩阵,使用奇异值分解计算曲率。代码采用Open3D实现,包括点云加载、法线估计、邻域搜索和曲率映射可视化功能。系统支持交互式点云文件选择,将曲率值映射为色彩进行直观展示,为点云处理中的特征提取和分割任务提供基础几何特征。实现过程包含了法线去中心化、协方差矩阵构建和特征值归一化等关键步骤,完整展示了从理论到实践的曲率分析流程。

点云侠的博客 543

CLR via C# 读书笔记2-4

从模块到程序集 前文的 Program.exe 不仅是一个包含元数据的 PE 文件,也是一个程序集。所谓的程序集是一个或多个包含类型定义或资源的文件的集合。程序集中的一个文件被用来存放 manifest,这个 manifest 是另一个元数据表的集合,其中包含了程序集中所有文件的名称,以及程序集的版本,culture,发布者,公有类型等信息。CLR 处理程序及时,总是首先打开这个程序集中的 ma

sqlchen的专栏 1013

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

读书笔记—CLR via C#章节1-2

这本书这几年零零散散读过两三遍了,作为经典书籍,应该重复读反复读,既然我现在开始写博了,我也准备把以前觉得经典的好书重读细读一遍,并且将笔记整理到博客中,好记性不如烂笔头,同时也在写的过程中也可以加深自己理解的深度,当然同时也和技术社区的朋友们共享。 程序集 描述:一个或多个类型定义文件及资源文件的集合 特征:可重用、可保护、可版本控制的单元 生成:可通过C#编译器(或其他编译器)或A...

weixin_34038652的博客 111

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

CLR via C# 读书笔记2-6

Culture 程序集包含有 culture 信息,并作为其标示的一部分,程序集能被限定为某一特定的 culture (German, US English 等等),Culture 使用一个字符串(RFC 1766)来标示。 通常一个仅包含源代码的程序集,并不包含特定的 culture 信息,所以也就不需要特别指定,这样的程序集是中性 culture (culture neutral)的。

sqlchen的专栏 740

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

CLR via C# 读书笔记2-1

.NET Framework 开发的目标 原先的Windows程序有以下3个不足: 采用的 dynamic-link libraries (DLLs) 方式在升级后经常对已有程序造成影响,被戏称为 “DLL hell”。 安装一个程序的时候总是会影响到整个系统(比如:目录,注册表,快捷方式等等),这使得一个程序并不是一个单独的个体,从而无法简便的备份该程序也无法简单地从一台电脑迁移到另一台

sqlchen的专栏 673

CLR via C# 读书笔记 1-2 创建线程的成本

在clr中创建线程的代价还是比较高的 ,他需要两个部分 内存: 线程核心对象, 存放描述线程的一些内容和上下文 . (内存消耗:700B-2500B)线程环境,存放例如异常处理链之类. (内存消耗 1Page  4k-8k)用户模式堆栈, 存放 参数 变量等  ,这也就是平时我们说的堆栈和堆的区别中的堆栈  (内存消耗:1MB)核心模式堆栈, (内存消耗12KB-24KB) 基本

bytxl的专栏 762

CLR via C# 读书笔记 6-2 不同AppDomain之间的通信 z

跨AppDomain通信有两种方式   1.Marshal By reference : 传递引用   2.Marshal By Value : 把需要传递的对象 通过序列化反序列化的方式传递过去(值拷贝)     只有标记为 可序列化 Serializable 的类才能通过 Marshal By Value的方式通信 以下代码描述了几种跨域通信的情况 1.AppDoma...

afeyfre41671的博客 198

《CLR via C#》读书笔记(2) -- .NET程序的运行模型(上)

平台确定 通过第一节,我们知道:编译器在PE文件中写入了大量的元数据。其中在PE32(+)中有一个machine字段用来标识该程序集所面向的平台(一般应该是x86,x64,不确定(Any CPU)). 在当前运行平台与程序集面向平台兼容的情况下,程序集为以所指定的平台类型运行(比如:面向x86则分配32从位...

Sinolife0605的博客 221

CLR via C# 读书笔记 6-2 不同AppDomain之间的通信

原文:http://www.cnblogs.com/PurpleTide/archive/2011/01/06/1927643.html 跨AppDomain通信有两种方式   1.Marshal By reference : 传递引用   2.Marshal By Value : 把需要传递的对象 通过序列化反序列化的方式传递过去(值拷贝)     只有标记为 可序列化 Se

xuefeiliuyuxiu的专栏 635

CLR via C# 读书笔记 5-2 为什么不使用Finalize

1.在创建对象的时候,Finalize需要更多的时间, 因为需要把对象放到Finalization List 中 2.Finalize会让你的应用程序运行的更慢,因为在GC的时候需要对每个对象执行额外的检查 3.Finalize会对内存造成更大的压力(Heap的内存分配问题) 4.Finalize执行时间是不确定的,如果是使用需要独占的资源例如File, 那么下一个想使用文件的人无法确...

weixin_30596023的博客 95

CLR via C# 3 读书笔记(2):第1章 CLR执行模型 — 1.2 将托管模块组合为程序集

实际上,CLR直接打交道的是程序集,而不是模块。程序集是一个抽象的概念,首先,它是一个或多个模块或资源文件的逻辑组合(即程序集由多个模块和资源文件组成)。其次,它是复用、安全、版本的最小单元。根据所选择的编译器和工具的不同,可以生成单一文件或多个文件的程序集。在CLR世界里,程序集就是我们称作组件(component)的东西。 程序集提供了一种方式,将一组文件看作一个单独的实体。 下图解释了什么是...

weixin_30916125的博客 90

CLR via C# 读书笔记 3-2 AutoResetEvent ManualResetEvent 和Semaphore

这三个对象都经常用于线程同步 下面是一些他们的异同点 1.当多个线程在等待一个 AutoResetEvent的时候,每次调用AutoResetEvent.Set()方法只会唤醒一个线程 2.当多个线程在等待一个ManualResetEvent的时候,每次调用ManualResetEvent.Set()方法会唤醒所有等待的线程 3.当多个线程在等待一个Semaphore的时候,每次调用...

weixin_30322405的博客 111
上一篇: CLR via C# 读书笔记2-1
下一篇: CLR via C# 读书笔记2-3
sqlchen
博客等级 码龄24年 10粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值