c# - 如何以编程方式设置或清除 32BIT 标志?

标签 c# .net runtime corflags

编译时,我总是设置为Any CPU。但是,有些客户没有所需二进制文件的 64 位版本,即使在 x64 系统上运行也是如此。在这些情况下,我要求他们使用 corflags.exe/32BIT+ 选项修改我的二进制文件:

http://msdn.microsoft.com/en-us/library/ms164699(VS.80).aspx

如果 64 位版本不存在,我想让它变得透明并在安装期间自己修改二进制文件。我宁愿自己不要调用 corflags.exe,因为这意味着我需要重新分发应用程序,而这在我们的运输要求中是不允许的。

所以我的问题是;有什么方法可以自己以编程方式修改此标志,或者直接修改二进制文件(它只是在文件本身的某处设置一个字节)?

最佳答案

我还没有尝试过这个但是你能在二进制文件的副本上运行 corflags 并做一个二进制差异来确定修改了什么偏移量。您可以将此作为安装脚本的构建操作来执行,并将偏移量存储在安装程序中。

在安装时,只需根据需要更改偏移量即可。

当然我永远不会认可这样的行为,只是说说而已

;-)

顺便说一句,如果您不断需要将程序集标记为 32 位,您可以考虑只针对该平台,而不是事后将其更改为 32 位。

干杯。

关于c# - 如何以编程方式设置或清除 32BIT 标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/937206/

相关文章:

java - 从 Java 运行时执行批处理文件时, native DOS 命令无法运行

c# - 开发支持多个数据库的应用程序

c# - 使用 C# 与 Twitter 交互的最成熟的库?

gcc - 在运行时确定 ARM Cortex M3 RAM 大小

c# - 我只需要处理特定选定表的列名

.net - 将 SqlAzureExecutionStrategy 与 Amazon EC2 结合使用的 Entity Framework 6

java - Jackson:如何在运行时使用泛型解码到类?

c# - bool doesExist = command.ExecuteScalar() != null 由于某种原因不断评估为 true

c# - System.Data.Entity.Infrastructure.DbUpdateConcurrencyException。存储更新、插入或删除语句影响了意外的行数 (0)

c# - Winforms中OleDb参数查询(C#) : no errors but no rows updated