问题标签 [clr4.0]
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 - 此程序集由比当前加载的运行时更新的运行时构建,无法加载
这就是我有两个盒子,一个是 win 2003 服务器 IIS6,另一个是 win2008 服务器 IIS 7.0 我有一个独立的应用程序,名为 Util(win 应用程序),内置于 .net 2.0(VS2005)中,试图加载 .net 4.0 dll/程序集(VS2010)。这需要在应用程序中进行一个简单的设置,即创建一个“Util.exe.config”并添加以下设置
这将基本上确保 .net 2.0 使用 CLR 4.0
在 winserver2008 框中像一个魅力一样工作,但在 win2003 服务器中用上面的消息大喊???
有任何想法吗??
@update:两台机器都安装了 .net 4.0 框架。
c# - 最后一个 CLR 中的尾调用优化
我(偶然)发现最后一个 CLR 进行了尾调用优化。我已经用一段代码对其进行了测试,但坦率地说,它的行为并不符合我的预期。我认为当函数中的最后一件事是函数调用时,可能会发生尾调用优化。
我正在尝试“破坏”此代码以防止表单尾调用操作。
然而 Foo 仍然是优化的。怎么来的?
clr - System.AccessViolation 异常和堆块在 PInvokes 期间修改超过请求的大小
尝试从托管代码 PInvoke 本机调用时,我遇到了 System.AccessViolation 异常,并且堆块已修改超过请求的大小。本机代码是 COBOL win32 dll。该问题仅在 .NET 4.0 中出现,在 3.5 中不是问题。
这是 PInvoke 的 VB 代码
fExt
和由本机代码更新wa
。cEXT
字符串是固定长度的,并且在针对 3.5 进行编译时,相同的代码不会引发异常。
这是生成的 IL 代码
这是例外
和托管调用堆栈
和本机调用堆栈
我已启用PInvokeStackInbalanceMDA来调试问题。
IMO 这是System.StubHelpers.VBByValStrMarshaler::ClearNative(native int)
由 IL Stubs 生成的指令引起的
这里是生成的 ILStub,尤其是对清除本机的调用
任何帮助,将不胜感激。
c# - typeof(T) 可能返回 null
typeof
在通过 TypeBuilder 创建的类型上使用运算符时,该运算符将返回 null。
我很好奇为什么会发生这种情况以及如何防止它。
我开始认为这是即时窗口中的 VS 错误,但我不太确定。首先责备别人是很容易的。
好的...重现问题的代码:
如果您在变量后放置一个断点并在 VS Immediate Windows 中o
键入,您将遇到问题。typeof(MyType)
c# - 为什么 .NET 4 中的 BeforeFieldInit 行为发生了变化?
在 C# 4 中,没有beforefieldinit
标志的类型的行为发生了变化,因此现在类型初始化程序可以在首次使用类的任何静态字段之前调用。
我的问题是为什么 C#/.NET 团队改变了这种行为?主要原因是什么?你能举出任何实际例子来说明这种变化是有意义的吗?
c# - 获取 SQLAgent 用户名失败
我有下面的 Windows 控制台程序代码,它应该显示NT Authoroty\Network Service但令人惊讶的是它拼写NetworkService没有空格......当我检查 SQLAgent 正在运行的帐户时,它确实是Network Service。
为什么这段代码会删除空格?由于NetworkService不存在,它会破坏我的所有解决方案。
PS:我不想硬编码用户;我必须自动得到它。
.net - 全局程序集缓存查看器工具(查看器)
要查看全局程序集缓存中的程序集列表,请在命令提示符处键入以下命令:gacutil –l
在早期版本的 .NET Framework 中,Shfusion.dll Windows shell 扩展使您能够在 Windows 资源管理器中查看全局程序集缓存。从 .NET Framework 版本 4 开始,Shfusion.dll 已过时。
任何可视化工具都可以查看 .NET 4.0 - CLR 4.0 中全局程序集缓存的内容?我想要查看器工具而不是执行命令行(gacutil -l)。
更新:
Nirsoft.net 的 GACView 不支持 .NET 4.0 (CLR 4.0)
http://www.nirsoft.net/dot_net_tools/gac_viewer.html
2012 年 3 月更新:
广汽浏览器 http://gacbrowser.blogspot.com/2008/03/gac-browser-introduction.html
.net - CLR 版本控制 + 框架目标,预期的行为是什么?
关于程序集将加载到哪个版本的 CLR 中有很多错误的信息,因此希望合并一些答案以消除与 CLR 版本相关的问题
当我以 .Net Framework 的第 4 版为目标并在 VS2010 中构建时,我会使用 clr 第 4 版吗?如果我不在app.config 文件中添加任何配置,我引用的程序集将使用哪个版本的 CLR?
我可以强制我的应用程序使用不同版本的 CLR 吗?如果是,如何?
当我以 .Net Framework 的 2 或 3.5 版本为目标并在 VS2010 中构建时,编译的程序集将使用哪个 clr 版本?
如果我不在app.config 文件中添加任何配置,我引用的程序集将使用哪个版本的 CLR?
我可以强制我的应用程序使用不同版本的 CLR(例如版本 4)吗?如果是,如何?
在以 v4 为目标的新项目中引用 v2 程序集是否安全?为什么?
c# - 实现 IDisposable 接口会将对象移动到 Finalize 列表吗?
我现在正在阅读有关 CLR ( 4.0 ) 上的 Dispose 和 Finalize 方法我不明白的东西......
如果我将 Finalize ( ~className1 ) 的实现添加到我的代码 => 则 Finalize List 具有指向托管堆中的对象实例的指针。
现在,假设我没有实现 Finalize ( ~className2 ),而我只是在我的代码上实现了 IDisposable 接口 - 对象是否会有来自 Finalize List 的指针?
c# - 使用锁根据先前值修改两个相关字段的最有效方法?
我知道他们使用 Interlocked.CompareExchange 是更快\更好的方法,但如果您仅限于锁定,我只是在寻找最佳方法。
还可以安全地根据其先前的值分配一个新的 ProgressStatus 对象(例如,可以“增加” PercentComplete 值)——无需锁定超过一行代码。
编辑:根据@drch 的回答更新了代码。等待看看是否有办法用更小\更有效的锁来做到这一点。这个锁的读、写和新建构造函数都在锁中。希望有一个更小\更有效的锁。谢谢。