您的程序集 xyz.dll 被编译为仅在 32 位进程中运行。这可能是有充分理由的(例如加载另一个仅适用于 32 位代码的本机 dll)。在这种情况下,请使用下面介绍的解决方案。这也可能没有充分的理由。在这种情况下,更改 xyz.dll 的目标平台。
程序 CSI.exe(C# 交互式编译器)的构建方式使其在 32 位版本的 Windows 上作为 32 位可执行文件运行,在 64 位版本的 Windows 中作为 64 位可执行文件运行。
当作为 64 位可执行文件运行时,它将无法加载构建为仅在 32 位进程中运行的程序集(例如您的 xyz.dll)。
为了改变这一点,您可以创建一个版本的 CSI.exe,即使在 64 位版本的 Windows 上也可以作为 32 位进程运行。跟着这些步骤:
- 找到文件 csi.exe,在同一目录中制作一份副本,并将副本重命名为 csi32.exe。您可以在类似于“C:\Program Files (x86)\MSBuild\14.0\Bin\csi.exe”的路径中找到 csi.exe
- 找到文件 CorFlags.exe。您可以在类似于“C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.2 Tools\CorFlags.exe”的路径中找到 CorFlags.exe
- 以管理员身份打开命令行窗口。
使用两个可执行文件的正确路径执行以下命令
C:\Path\To\CorFlags.exe /32bit+ /force C:\Path\To\csi32.exe
您现在可以使用 csi32.exe 代替 csi.exe 来运行需要仅在 32 位版本中可用的程序集/dll 的脚本。