clr相关内容

如何从 Excel VBA 调用 .NET 方法?

我找到了一种直接从 VBA 代码调用 .NET 2 代码的方法: 将 clr 变暗为 mscoree.CorRuntimeHost设置 clr = 新 mscoree.CorRuntimeHost启动Dim 域作为 mscorlib.AppDomainclr.GetDefaultDomain 域Dim myInstanceOfDotNetClass 作为对象设置 myInstanceOfDotN ..
发布时间:2021-12-03 16:34:01 C#/.NET

为什么是大对象堆,我们为什么要关心?

我已阅读有关代和大对象堆的信息.但我还是不明白拥有大对象堆的意义(或好处)是什么? 如果 CLR 仅依靠第 2 代(考虑到 Gen0 和 Gen1 的阈值很小,无法处理大对象)来存储大对象,会出现什么问题(在性能或内存方面)? 解决方案 垃圾回收不仅清除未引用的对象,还压缩堆.这是一个非常重要的优化.它不仅使内存使用更高效(没有未使用的漏洞),它还使 CPU 缓存更高效.缓存在现代处 ..
发布时间:2021-12-02 14:03:19 C#/.NET

ValueTypes 如何从 Object (ReferenceType) 派生并仍然是 ValueTypes?

C# 不允许结构派生自类,但所有 ValueType 派生自 Object.这种区别在哪里? CLR 如何处理这个问题? 解决方案 C# 不允许从类派生结构体 您的陈述不正确,因此您感到困惑.C#确实允许从类派生结构.所有结构都派生自同一个类 System.ValueType,后者派生自 System.Object.并且所有枚举都源自 System.Enum. 更新: ..
发布时间:2021-12-02 13:57:04 C#/.NET

在 C# 中,为什么 String 是一种行为类似于值类型的引用类型?

String 是一种引用类型,尽管它具有值类型的大部分特征,例如不可变和 == 重载以比较文本而不是确保它们引用相同的对象. 那为什么字符串不只是一种值类型? 解决方案 字符串不是值类型,因为它们可能很大,并且需要存储在堆中.值类型(在迄今为止的所有 CLR 实现中)存储在堆栈中.堆栈分配字符串会破坏各种事情:堆栈只有 1MB 用于 32 位和 4MB 用于 64 位,您必须将每个字 ..
发布时间:2021-12-01 09:28:05 C#/.NET

转换与在 CLR 中使用“as"关键字

在编写接口时,我发现我在做很多强制转换或对象类型转换. 这两种转换方式有区别吗?如果是,是否存在费用差异或这对我的计划有何影响? 公共接口 IMyInterface{void AMethod();}公共类 MyClass : IMyInterface{公共无效 AMethod(){//做工作}//其他辅助方法....}公共类实现{IMyInterface _MyObj;MyClass _m ..
发布时间:2021-12-01 09:07:25 C#/.NET

我如何决定对新的 C++ 项目使用 ATL、MFC、Win32 还是 CLR?

我刚刚开始我的第一个 C++ 项目.我正在使用 Visual Studio 2008.它是一个单一形式的 Windows 应用程序,它访问几个数据库并启动一个 WebSphere MQ 事务.我基本上了解 ATL、MFC、Win32(实际上我对那个有点模糊)和 CLR 之间的区别,但我不知道应该如何选择. 其中一个或多个是否只是为了向后兼容? CLR 一个坏主意吗? 感谢任何建议 ..
发布时间:2021-11-30 14:02:11 C/C++开发

在“任何 CPU".NET 程序集上强制 x86 CLR

在 .NET 中,“平台目标:任何 CPU"编译器选项允许 .NET 程序集在 x64 机器上以 64 位运行,在 x86 机器上以 32 位运行.还可以使用“平台目标:x86"编译器选项强制程序集在 x64 机器上作为 x86 运行. 是否可以运行带有“Any CPU"标志的程序集,但要确定它应该在 x86 还是 x64 CLR 中运行?通常这个决定是由 CLR/OS 加载器(根据我的理解 ..
发布时间:2021-11-26 14:50:37 C#/.NET

.NET Core 中没有 AppDomains!为什么?

微软选择在 .NET Core 中不支持 AppDomains 是否有充分的理由? AppDomains 在构建长时间运行的服务器应用程序时特别有用,我们可能希望在不关闭服务器的情况下以一种优雅的方式更新服务器加载的程序集. 如果没有 AppDomains,我们将如何在长时间运行的服务器进程中替换我们的程序集? AppDomains 还为我们提供了一种隔离服务器代码不同部分的方法 ..
发布时间:2021-11-26 12:44:27 C#/.NET

已签名的 .net 程序集在加载时是否经过完全验证,以检查它们是否未被修改?

我曾经认为已签名和/或强命名的 .net 程序集在加载时由 CLR 验证,这意味着某人不可能编辑 IL 并且仍然拥有有效的程序集.然后我听了这个很棒的牧群代码播客Jon McCoy 说这并没有真正发生(在播客中大约 12:47) - 即任何人都可以编辑 IL 并弄乱您的程序集,而 CLR 不会关心.我知道这听起来很奇怪,但他似乎知道他在说什么,所以也许只是我不知道他指的是什么场景. 有人可以 ..
发布时间:2021-11-26 12:20:07 C#/.NET

MSSQL 2012 为 WCF 创建 CLR 触发器失败

我创建了使用 CLR 触发器连接到 WCF 服务器并通知它有关数据库更改的系统.它在 SQL Server 2008 R2 上运行正常.现在我正在尝试在 SQL Server 2012 上进行迁移.要使用 WCF,我需要加载 SMDiagnostics.dll 程序集以及其他程序集.我检查了 clr 在 db 中启用,并将 trustworthy 设置为“on",我禁用了 WCF 调试,我检查了 ..
发布时间:2021-11-26 12:16:04 其他开发

调用 Assembly.Load(byte[]) 可以引发 AppDomain.AssemblyResolve 事件吗?

假设我有一个 AppDomain.AssemblyResolve 事件,并在处理程序中构造一个字节数组并调用方法 Assembly.Load(字节[]).此方法本身是否会导致 AssemblyResolve 事件再次引发,并导致我的处理程序重新进入? 我的问题不仅限于可以使用 C# 编译器生成的程序集,它们还可以包含 CLR 支持的 abritrary 元数据和可执行代码. 我做了一些 ..
发布时间:2021-11-26 12:03:25 C#/.NET

检索 JIT 输出

我有兴趣查看 C# 程序(不是 CLR 字节码指令)的实际 x86 程序集输出.有什么好的办法吗? 解决方案 您应该将 WinDbg 与 SOS/SOSEX 一起使用,确保您要查看 x86 代码的方法在方法表中进行了 JIT,然后使用 查看实际反汇编u 命令.这样你就会看到实际的代码. 正如这里其他人提到的,使用 ngen 您可以看到与实际 JIT 编译结果不完全匹配的代码.使用 V ..
发布时间:2021-11-26 11:54:46 C#/.NET

.NET 4.5 会引入新版本的 CLR 吗?

在过去,并非每个新版本的 .NET 都带有新版本的 CLR.我知道 .NET 1.0、1.1、2.0 和 4.0 有,但 .NET 3.0 和 3.5 没有. .NET 4.5 会引入新的 CLR 吗?如何判断是否有新的 CLR? 解决方案 是的,.NET 4.5 有一个全新的 CLR 版本,您可以在以下位置阅读有关改进的信息; http://blogs.microsoft.c ..
发布时间:2021-11-26 11:16:16 C#/.NET

如何在运行时检测 .NET 4.5 版当前正在运行您的代码?

我从 http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=27541,它“替代"了 .NET 4.0 版本. 但是,检测 .NET 框架版本的旧方法似乎返回 4.0(在我的 PC 上更准确地说是 4.0.30319.17020),而不是 4.5(当然可能是为了向后兼容,或者?): 使用系统;命名空间控制台应 ..
发布时间:2021-11-26 11:02:18 C#/.NET

如何强制应用程序使用 .NET 3.5 或更高版本?

我们的应用程序是使用 VS 2008 构建的,使用 Linq 并将目标框架设置为 .NET Framework3.5. 当机器上只安装了 .NET 3.5 或 4 时它工作正常. 但是,在安装了 .NET 2(或 3.0)和 .NET 4 的机器上,应用程序加载了 .NET 2,并在访问 Linq 时崩溃,因为它会查找 .NET 3.5 库. 在 app.config 中使用标记 ..
发布时间:2021-11-26 10:19:27 C#/.NET

.NET 2.0 运行时上的 LINQ

支持 LINQ 的应用能否在仅安装了 .NET 2.0 运行时的机器上运行? 理论上,LINQ 只不过是语法糖,生成的 IL 代码应该与 .NET 2.0 中的代码看起来一样. 如何在不使用 .NET 3.5 库的情况下编写 LINQ?它会在 .NET 2.0 上运行吗? 解决方案 有一些“技巧"涉及使用 3.5 框架中的 System.Core.dll 使其与 .net 2. ..
发布时间:2021-11-26 09:53:16 C#/.NET

Intel x64 FPU 中的 NaN 算法有多慢?

提示和指控比比皆是,在硬件 FPU 中使用 NaN 进行算术可能“慢".特别是在现代 x64 FPU 中,例如在 Nehalem i7 上,这仍然是真的吗?无论操作数的值如何,FPU 乘法都会以相同的速度产生吗? 我有一些插值代码可能会偏离我们定义的数据的边缘,我正在尝试确定是否更快地检查此处和任何地方的 NaN(或其他一些标记值),或者只是在方便的点. 是的,我将对我的特定情况进行基 ..
发布时间:2021-11-25 07:08:52 C#

如何在运行时延迟绑定 32 位/64 位库

我遇到了一个类似于此处描述的问题,但略有不同.a>(加载程序集及其依赖项). 我有一个用于 3D 渲染的 C++ DLL,这是我们卖给客户的.对于 .NET 用户,我们将有一个 CLR 包装器围绕它.C++ DLL 可以在 32 位和 64 位版本中构建,但我认为这意味着我们需要有两个 CLR 包装器,因为 CLR 绑定到特定的 DLL? 现在假设我们的客户有一个 .NET 应用程序, ..
发布时间:2021-11-25 06:19:24 C#

CorFlags.exe、System.Data.SQLite.dll 和 BadImageFormatException

运行 CorFlags.exe针对 System.Data.SQLite.dll 来自 http://sqlite.phxsoftware.com/a> 产生以下输出. 版本:v2.0.50727CLR 标头:2.5聚乙烯:PE32CorFlags : 24国际:032位:0签名:1 如您所见,没有指定32BIT,PE 等于PE32.根据从 32 位移动到 64-.NET Framework ..
发布时间:2021-11-25 06:03:32 C#