问题标签 [clr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - .NET 2.0 运行时上的 LINQ
启用 LINQ 的应用程序能否在仅安装了 .NET 2.0 运行时的机器上运行?
从理论上讲,LINQ 只不过是语法糖,生成的 IL 代码应该与 .NET 2.0 中的代码相同。
如何在不使用 .NET 3.5 库的情况下编写 LINQ?它会在 .NET 2.0 上运行吗?
compiler-construction - 混合 C++/CLI TypeLoadException 内部限制:字段太多
为了将一些新的 UI 迁移到托管/C# 领域,我最近在一个大型遗留项目上打开了公共语言运行时支持 (/clr),该项目在共享 DLL 中使用 MFC,并依赖于我们内部的大约十几个其他项目整体解决方案。这个项目是我们应用程序的核心,它将驱动生成的任何托管 UI 代码(因此需要打开 clr 对互操作的支持)。
在修复了大量的小错误和警告之后,我终于设法让应用程序编译。但是,运行应用程序会导致 EETypeLoadException 并且让我无法调试......
做了一些挖掘,我发现原因是“System.TypeLoadException:内部限制:字段太多”。这发生在编译结束时。然后我找到了这个链接,它建议将程序集分解为两个或多个 dll。但是,在我的情况下这是不可能的,因为我的限制是遗留代码基本上保持不变。
任何人都可以提出任何其他可能的解决方案吗?我在这里真的走投无路了。
c# - 如何在运行时后期绑定 32 位/64 位库
我遇到了一个与此处描述的问题相似但略有不同的问题(加载程序集及其依赖项)。
我有一个用于 3D 渲染的 C++ DLL,这是我们卖给客户的。对于 .NET 用户,我们将有一个 CLR 包装器。C++ DLL 可以在 32 位和 64 位版本中构建,但我认为这意味着我们需要有两个 CLR 包装器,因为 CLR 绑定到特定的 DLL?
现在假设我们的客户有一个可以是 32 位或 64 位的 .NET 应用程序,并且它是一个纯 .NET 应用程序,它让 CLR 从一组程序集中解决它。问题是应用程序代码如何在运行时在我们的 32 位和 64 位 CLR/DLL 组合之间动态选择?
更具体地说,对上述问题的建议答案是否也适用于此处(即创建一个 ResolveEvent 处理程序)?
.net - 如何确定 .Net Appdomain 消耗了多少内存?
我正在尝试以编程方式限制在 .Net AppDomain 中运行的插件的内存消耗,但我找不到任何设置参数,也找不到查询 AppDomain 以确定它消耗多少内存的方法. 有任何想法吗?
memory - CLR Profiler - 附加到现有进程
我想在.Net 2.0上使用CLR Profiles之类的东西来查看在任何给定时间(ASP.Net工作进程的)哪些对象在堆中占用更多空间。
但是,CLR Profiler 只允许我启动一个应用程序,而不是附加到现有的应用程序。我认为这是因为它也跟踪分配和 GC,但我对此不是很感兴趣。我想要一些东西,它可以对堆的当前状态进行快照,并向我展示那里有什么,每种类型的对象有多少,以及每种对象类型总共使用了多少字节。
有任何想法吗?
c# - Java 的 JVM 和 .NET 的 CLR 的内部工作方式有什么区别?
Java 的 JVM 和 .NET 的 CLR 的内部工作方式有什么区别?
也许一个起点是,它们在各自的环境中是否基本相同(Java > JVM > 机器代码)(C# > CLR > IL)。
更新: 有几个人提到了我试图涵盖的要点:
- 垃圾收集
- 装箱/拆箱
- 即时调试
- 泛型/模板
- 请随意提出其他区分这两者的好主题。
@George Mauer - 这听起来很有趣:
已经发布过一次,但这里是对 c# 首席语言设计师 Anders Hejlsberg的一系列采访。
.net - 有什么方法可以更改 .NET JIT 编译器以提高性能而不是编译时间?
我想知道是否有任何方法可以通过指定更深入优化的首选项来改变 .NET JIT 编译器的行为。如果做不到这一点,如果它还没有做某种配置文件引导的优化,那就太好了。
.net - VB.NET 可选参数如何“在幕后”工作?它们是否符合 CLS 标准?
假设我们有以下方法声明:
VB.NET 如何使可选参数在 CLR 范围内工作?可选参数是否符合 CLS?
.net - 如何在运行时为类型解析添加额外的逻辑?
是否有一种通用方法,无需创建和管理您自己的 CLR 主机,就可以在找不到该类型时接管定位和加载该类型?
下面只是一个例子。在您急于成为第一个答案时,不要建议使用新的插件框架或 MEF 作为我的问题的解决方案。
一个示例是带有加载项的示例。您的应用程序会读取一个文件,其中列出了用于特定功能的类型。该应用程序尝试实例化这些类型。如果它们当前尚未加载到 appdomain 中,则该方法将失败。我正在寻找一个我可以处理的事件或一个我可以提供我自己的实现的组件,这将使我能够优雅地处理这些情况并为加载这些程序集提供额外的逻辑。
据我所知(除非有人有一个有效的例子)到目前为止提到的 AppDomain 事件都不会在找不到类型时触发。
等等,显然这是有效的!不知道我之前做错了什么,但这个事件很好而且很好。
error-handling - SQL Try-Catch 块可以处理抛出的 CLR 错误吗?
我们正在使用 SQL 2005 和 try-catch 功能来处理数据库中的所有错误处理。我们目前正在部署一个 .NET CLR 函数以在数据库中进行一些 WCF 调用。此 WCF 过程在 CLR 中编写,然后部署到 SQL。如果我在 CLR 代码中放置一个 try-catch 块,它会很好地捕获错误。但是,我似乎无法将错误抛出到 SQL 中的 try-catch 块。SQL 似乎忽略了我抛出的内容并捕获了它发现的错误。两者之间是否没有关系(即我不能从一个扔到另一个?)
如果我可以从 CLR 中抛出到 SQL 中的调用过程,是否需要任何特殊格式?我尝试了捕获抛出的错误,然后抛出不同的错误的特定情况,但是 SQL 忽略了我抛出的错误并捕获了原始错误,就好像它忽略了抛出的错误一样。