Почему цель моей платформы = Любой проект службы Windows CPU запускается в WOW64 как 32-битный процесс при установке? - PullRequest
2 голосов
/ 05 апреля 2011

У меня есть несколько проектов Windows Service в одном решении в Visual Studio 2010, все они на C #, и для каждого из них в качестве цели платформы установлено значение AnyCPU.

Ни у одного из них нет ссылок или зависимостей на 32-битные библиотеки.

У меня есть проект установки смешанной платформы, созданный с помощью расширенного установщика Caphyon.Когда я запускаю этот установщик на компьютере с Windows 7 x64, все установленные службы запускаются как 64-битные процессы, кроме 1 ?????

. Я дважды проверял вкладку свойств сборки проекта в Visual Studio на предмет отладки иВыпустив конфигурацию, я просмотрел проект установки и не могу найти ничего, что могло бы заставить эту единственную службу работать в WOW64 как 32-битный процесс.

Если я вручную собираю и устанавливаю службуиспользуя InstalUtil он работает как 64-битный процесс.Поэтому может показаться, что проблема заключается в установщике, но у него нет проблем с другими службами, и я не могу найти ничего, что отличало бы эту 1 службу от других.

Может кто-нибудь придумать что-либо, что я долженпропустили?

Я уже проверял подобные вопросы здесь, и ни один из них, похоже, не относится к моей проблеме.

Ответы [ 2 ]

3 голосов
/ 05 апреля 2011

Doh!

Откройте страницы свойств для решения. (Щелкните правой кнопкой мыши решение в обозревателе решений, выберите Свойства)

Выберите свойства конфигурации на левой панели.

Найдите свой проект в списке и проверьте правильность выбора для каждой конфигурации (отладка / выпуск)

В моем случае флажок Build был снят! Круиз-контроль даже не строил проект! он публиковал старую сборку x86.

Кроме того, похоже, что синхронизация файлов в Advanced Installer ненадежна, мне пришлось вручную открыть проект установщика и обновить папку, содержащую служебные файлы, и перестроить ее, прежде чем все это заработает.

1 голос
/ 05 апреля 2011

Обычно это обрабатывается Windows на основе файловых зависимостей. Я предлагаю снова проверить наличие зависимостей, потому что это наиболее вероятная причина.

То, что делает InstallUtil, на самом деле не имеет значения, потому что InstallUtil использует конкретную платформу для установки ресурсов (32-разрядных или 64-разрядных). Поэтому, если вы используете 64-битную версию InstallUtil, вы будете устанавливать 64-битные ресурсы. В этом случае вы заставляете определенную платформу, вы не позволяете Windows решать.

...