问题标签 [corflags]

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.

0 投票
1 回答
1222 浏览

.net - 了解带有 CorFlags 的程序集标头(为什么我的程序集加载到 32 位地址空间中?)

我发现了一些与.NET 程序集应如何根据程序集标头中设置的标志加载有关的信息。诸如在托管图像上翻转位以使它们以正确的位数加载之类的页面似乎表明如果您有如下标题。

它已被编译为“任何 CPU”,我可以预期它可以在 32 位平台上加载 32 位CLR,在 64 位平台上加载 64 位 CLR。这正是我所期望和想要的行为。

不幸的是,在我的 Windows 7 64 位机器上似乎并非如此。程序集加载到 32 位地址空间中。我知道我应该能够通过使用 x64 构建在编译时强制解决问题,但为什么它首先做错了事情?

我该如何解决这个问题?是我还没有偶然发现的一些注册表或环境问题吗?

0 投票
3 回答
22137 浏览

c# - PE32+和PE32有什么区别?

在某些 DLL 文件上运行CorFlags时,有些显示为 PE32,有些显示为 PE32+。有什么不同?

0 投票
1 回答
826 浏览

c# - ILOnly = 0 是否意味着 C++/CLI?

使用 corflags 时 ILOnly=0 是否意味着程序集是使用 C++/CLI 构建的?

0 投票
2 回答
33131 浏览

visual-studio-2010 - CorFlags.exe 在哪里?(.NET 框架工具)

在哪里可以找到CorFlags.exe 工具?我完全搜索了我的硬盘驱动器,但没有找到。

我有:.NET Framework 4.0、Visual C# 2010 Express、Visual C++ 2010 Express。操作系统是 Windows 7 Ultimate 32 位。

0 投票
1 回答
433 浏览

32bit-64bit - 如何生成仅限 32 位的托管 C++ 程序集

我需要在 Visual Studio 2005 的托管 C++ 中编译一个 DLL。

我想要它与 32Bit corflag。请参阅http://illuminatedcomputing.com/blog/?p=117以供参考。

默认情况下,我选择 Win32 平台并在 liker 中设置 /MACHINE:X86 选项,但生成的 DLL 已关闭 32bit corflag。您可以通过从命令行执行来查看它

corflags MyDll.dll

在 Windows 64 位中运行该 dll 时遇到问题。所以我需要强制 dll 为 32 位。

关于如何配置 Visual Studio 2005 编译器的任何想法?

0 投票
5 回答
6745 浏览

.net - 如何使 .NET 可执行文件在 64 位操作系统上作为 32 位进程运行?

我想让我的 .NET 应用程序在具有 .NET1.1 的 64 位机器上作为 32 位进程运行。目标平台选项是在更高版本的 VS(2005) 中引入的,但我使用的是 VS2003 和 .NET1.1,没有机会使用其他 VS 或 .Net

这可能吗?

PS我不知道这是否相关,但我的一位同事说我应该使用“cor flags”或“core flags”,但谷歌搜索并没有得出任何有趣的结果

0 投票
1 回答
658 浏览

.net - 运行将 32 位 dll 作为 64 位服务加载的 32 位窗口服务

情况是这样的——

我正在编码的窗口服务使用 Linq2Excel,它坚持调用应用程序要符合 x86。

但是,窗口服务要安装在 64 位 Windows 服务器上。

使用 corflags,我可以安装 32 位窗口服务。但是,它会拒绝加载 Linq2Excel。这是所有荣耀中的例外:

使该服务正常工作的解决方案是什么?(将服务器改为32位是不会发生的,使用Linq2Excel是必须的)

0 投票
6 回答
19631 浏览

.net-3.5 - 如何强制 .NET 应用程序以 32 位模式运行

我正在尝试在 Win7 x64 上运行我的 .NET 3.5 WinForms 应用程序。该应用程序使用 NHibernate 和 System.Data.OracleClient 来访问 Oracle 数据库。Oracle 客户端是 32 位的。

启动应用程序时,我收到以下错误消息

尝试加载 Oracle 客户端库会引发 BadImageFormatException。在安装了 32 位 Oracle 客户端组件的 64 位模式下运行时会出现此问题。

作为回应,我将我的构建定位到 x86 平台:

构建设置的屏幕截图

令我惊讶的是,在 Win7 平台上尝试执行新版本时出现了同样的错误消息。

NHibernate 程序集在运行时由Assembly.Load("...");.

可能是 NHibernate DLL 仍然以 64 位模式运行,而主机 exe 以 32 位模式运行。这对我来说听起来很奇怪。或者可能是出于某种原因,我的应用程序在 64 位模式下运行,即使它是针对 x86 的?


更新:

我使用 CorFlags 检查了我的二进制文件,它被标记为 32 位:

我还在任务管理器中检查了它,它有一个*32后缀。

我还尝试并使用 CorFlags 将 32 位标志添加到我的应用程序附带的所有程序集中。它仍然会产生相同的错误消息。

我纳闷……纳闷……纳闷……

0 投票
1 回答
747 浏览

visual-studio-2010 - VS升级后互操作库上的corflags问题

我将我的 Visual Studio 解决方案从 2008 年转换为 2010 年。一个项目引用了 ShDocVw。当我运行程序时,我得到一个 BadImageFormatException。谷歌搜索让我检查了带有 corflags 的互操作库:

果然,设置了 32BIT 标志,因此我在 64 位机器上构建为 Any CPU 的应用程序无法加载此库。如果我运行 corflags /32BIT- 我可以关闭 32BIT 标志并且一切正常。问题是,为什么这个 Interop 库是使用该标志集生成的?VS2008我没有这个问题,这只是在升级后才开始发生。

更重要的是,我怎样才能修复它,这样我就不必运行 corflags 来关闭位?我认为这可能是由于我不太了解的一些 MSBuild-fu 造成的。反正我什么都看不出来。

0 投票
1 回答
807 浏览

.net - Windows 7 x64 版和 Visual Studio 2010 dll 参考

我曾经使用 Visual Studio 2008。然后我决定采用 Windows 7 x64 和 Visual Studio 2010 在我们的开发周期等中使用新的 IDE 功能。

我们的一个项目是使用 Microsoft.SqlServer.Smo.dll 和相关的一些 SQL 服务器管理 DLL。当我尝试编译新项目时遇到了很多问题。

这是我的问题。

  • 我创建了一个非常简单的控制台项目,然后添加了 Microsoft.SqlServer.Smo.dll 引用,并在 main() 函数中添加了一个简单的下一行。

    /li>

ApplicationRole类来自 Microsoft.SqlServer.Smo.dll,我将项目的目标框架属性更改为 .Net Framework 4(不是客户端配置文件)。它编译成功。

当我尝试将目标框架更改为 .Net Framework 2.0 时,它给出的错误是

错误 1 ​​命名空间“Microsoft.SqlServer.Management.Smo”中不存在类型或命名空间名称“ApplicationRole”(您是否缺少程序集引用?) C:\Users\fatihy\documents\visual studio 2010\Projects\ConsoleApplication2 \ConsoleApplication2\Program.cs 14 52 ConsoleApplication2

这是我遇到的小错误,但我确信其他人与这个问题有关。

当我使用 corflags 工具检查 Microsoft.SqlServer.Smo.dll 时,请参见下文,

如您所见,此 dll 支持 .net 2.0 CRL。

示例项目也可以从这里下载

我做错了什么?

谢谢