с помощью хоста сценариев Windows

Я использую хост сценариев Windows для какого-то приложения-установщика и создаю с ним ярлыки в меню «Пуск». Эта проблема возникла, когда я переключился на среду x64 (win7 Ultimate x64+vs2010).

Я добавил ссылку на объектную модель Windows Script Host (из c:\windows\syswow64\wshom.ocx), она сгенерировала dll Interop.IWshRuntimeLibrary.

Я добавил «используя IWshRuntimeLibrary»; в мои файлы .cs, но когда я попытался создать

WshShell sh = new WshShellClass(); 

он выдает исключение:

Не удалось загрузить файл или сборку «Interop.IWshRuntimeLibrary, версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = null» или одна из ее зависимостей. Была предпринята попытка загрузить программу с неверным форматом.

Я предполагаю, что для этого мне понадобится 64-битная версия этого wshom.ocx, но я не знаю, что мне попробовать.

Или я просто выгружу материал Windows Script, но мне нужен другой способ создания ярлыков меню «Пуск» из приложения .net.


person Axarydax    schedule 18.02.2010    source источник


Ответы (1)


Кажется, что .NET требует, чтобы все сборки были одинаковыми 32-битными или 64-битными, и не позволяет вам смешивать и сочетать. Поэтому, если ваше приложение работало в 32-разрядной версии, вам следует попробовать установить параметры компилятора (в свойствах проекта), чтобы явно создать приложение «x86» (т. е. 32-разрядное) (которое должно работать как на 32-разрядной, так и на 64-разрядной -кусочек). Это может быть проще, чем отследить 64-битную версию хоста сценариев.

Обратите внимание, что параметр компилятора по умолчанию, кажется, «Любой», который будет запускать сборку .NET как 64-разрядную в 64-разрядной ОС и 32-разрядную в 32-разрядных ОС.

person Andy Jacobs    schedule 19.02.2010
comment
+1 Энди, хорошая работа. Я столкнулся с этой же проблемой при обновлении решения с VS 2008 до VS 2010 при работе на x64. Несмотря на то, что обе версии VS 2008 и VS 2010 созданы для AnyCPU, только версия VS 2008 работала правильно. Переключение версии VS 2010 на «x86» все же исправило, слава богу. Остается загадкой, почему версия VS 2008 правильно работает на моей машине x64 при настройке AnyCPU, но я просто рад, что теперь она работает. Спасибо, Энди! - person Mike Rosenblum; 08.05.2010
comment
понятия не имею, почему это происходит. Получение той же проблемы. Мне нужен AnyCPU для работы. - person Adam Dymitruk; 12.09.2012