6

我正在将 Windows 脚本主机用于某种安装程序应用程序,并且正在使用它在开始菜单中创建快捷方式。切换到x64环境时出现这个问题(win7 Ultimate x64+vs2010)

我添加了对 Windows 脚本宿主对象模型的引用(来自 c:\windows\syswow64\wshom.ocx),它生成了 Interop.IWshRuntimeLibrary dll。

我添加了“使用 IWshRuntimeLibrary;” 到我的 .cs 文件,但是当我尝试创建

WshShell sh = new WshShellClass(); 

它抛出一个异常:

无法加载文件或程序集“Interop.IWshRuntimeLibrary,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。试图加载格式不正确的程序。

我假设我需要该 wshom.ocx 的 64 位版本才能工作,但我不知道我应该尝试什么。

或者我只是转储 Windows 脚本的东西,但我需要另一种方法来从 .net 应用程序创建开始菜单快捷方式。

4

1 回答 1

6

.NET 似乎需要所有程序集都是相同的 32 位或 64 位,并且不会让您混合搭配。因此,如果您的应用程序在 32 位下运行,您应该尝试设置编译器选项(在项目属性中)以显式生成“x86”(即 32 位)应用程序(应在 32 位和 64 位上运行) -少量)。这可能比追踪 64 位版本的脚本主机更容易。

请注意,默认编译器选项似乎是“Any”,它在 64 位操作系统上以 64 位运行 .NET 程序集,在 32 位操作系统上以 32 位运行。

于 2010-02-19T03:51:57.230 回答