Я попытался скомпилировать служебный EXE-файл как AnyCPU, x86 и x64.Это работает на моем Windows 7 x64 box.Я устанавливаю с помощью installutil, версия .NET 4.
При запуске службы выдается ошибка.Он ничего не говорит, но указывает на то, какие модули загружены.Потенциальный интерес:
LoadedModule [0] = D: \ yellowbook \ grapevine_service \ grapevinesystemservice.exe LoadedModule 3 = C: \ Windows \ system32 \ KERNEL32.dll LoadedModule 4 = C: \ Windows \ system32 \ KERNELBASE.dll LoadedModule [9] = C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ mscoreei.dll LoadedModule [17] = C: \ Windows \Microsoft.NET \ Framework64 \ v2.0.50727 \ mscorwks.dll LoadedModule [18] = C: \ Windows \ WinSxS \ amd64_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4927_none_88dce9872fb \80_c_80_c_80_c_c_c_c_c_c_64_c_c_64_c_c_64_c_c_64_c_c_64_c_c_2_c_2_c_2_64_c_p_0_2_символахNativeImages_v2.0.50727_64 \ mscorlib \ 9a017aa8d51322f18a40f414fa35872d \ mscorlib.ni.dll
Я могу запустить эту службу как консольное приложение с параметром командной строки, который выдает следующее:
Необработанное исключение: System.BadImageFormatException: Не удалось загрузить файл или сборку 'grapevinesystemservice.exe' или одну из ее зависимостей.Эта сборка создается средой выполнения, более новой, чем текущая загруженная среда, и не может быть загружена.Имя файла: 'grapevinesystemservice.exe'
Я пытался взломать реестр, чтобы принудительно использовать последнюю среду выполнения.Нет эффекта.Я посмотрел на установленный EXE-файл в отражении, чтобы убедиться, что он не был испорчен моим сервером сборки, но он нацелен на 4.0.30319.Мой локальный, сборочный и тестовый сервер имеют версию 30319 в качестве версии .NET 4.Ни у кого никогда не было бета / RC.
Они не были перечислены в загрузочных модулях, но я также использую log4net (перестроен в .NET 4 из исходного кода), StructureMap , NoRM ( MongoDB ), AutoMapper , Newtonsoft.Json и ряд других файлов DLL, созданных моей командой.