Я собирал небольшое приложение в Mono с помощью Gtk #. Это мое первое приложение Gtk # + Mono, но я развиваюсь с .NET Framework в течение достаточного количества времени.Моно приложение, скомпилированное под Linux, не работает в Windows
Конечная цель приложения заключается в том, чтобы он запускался на всех трех основных платформах (хотя у меня есть только 2 для тестирования). До сих пор я достиг этой цели вид.
Иногда я разрабатываю под Linux, иногда под Windows. Обе системы имеют Mono 4.0.2 с последним Gtk #. Тем не менее, существует расхождение между компиляцией Linux exe и скомпилированным exe-файлом Windows.
Я использую тот же .sln при компиляции, синхронизированный через git (GitHub, если быть точным, если это имеет значение). Конкретные параметры включают
- Target Gtk # Версия: 2,12 Вт/Gettext поддержка (Mono.Unix.Catalog мой класс Gettext, загрузчик ресурсов класс Gdk.Pixbuf)
- Целевые рамки: Mono/.NET 4.5. Используя механизм msbuild, цель компиляции - Executable w/GUI, выбран значок Win32.
- x86 Целевая
Я строю под Linux: успешная сборка, без ошибок, работает отлично под Linux. Размер файла 142 kb. Это важно. Еще одно замечание: под Windows у него нет значка (это значок программы по умолчанию).
Затем я создаю тот же источник, те же настройки, под Windows: размер файла 228kb, есть значок, работает нормально.
Когда я запустил exe Linux, он говорит: «LuaModuleManager.exe перестает работать». «Дополнительные сведения» заключается в следующем:
Problem signature:
Problem Event Name: CLR20r3
Problem Signature 01: luamodulemanager.exe
Problem Signature 02: 0.7.0.6
Problem Signature 03: 0
Problem Signature 04: LuaModuleManager
Problem Signature 05: 0.7.0.6
Problem Signature 06: 0
Problem Signature 07: f
Problem Signature 08: 13
Problem Signature 09: System.IO.FileNotFoundException
OS Version: 6.1.7601.2.1.0.256.1
Locale ID: 1033
Additional Information 1: 0a9e
Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
Additional Information 3: 0a9e
Additional Information 4: 0a9e372d3b4ad19135b953a78882e789
Это действительно интересно что это System.IO.FileNotFoundException. Кажется, я не могу понять, что это за жизнь.
Еще одна вещь, которую следует отметить: Скомпилированные exe-файлы Windows отлично работают в Windows и Linux, но Linux-сборник exe работает только в Linux. И вызывает ошибку «LuaModuleManager.exe перестала работать».
Так что может быть проблемой? Загрузка в виртуальную машину Windows (или перезагрузка всей моей системы, чтобы перейти на мою установку Windows) - это немного неудобство только для компиляции и выталкивания новой сборки программы.
Я вижу, так что будет временное решение до тех пор? Я просто искал, что такое gettext, и если это для перевода, должно быть безопасно отключить gettext, потому что мое приложение не использует никаких переводов. – MrMiketheripper
Методы обхода: 1) не использовать Mono.Posix. 2) Попробуйте ссылаться на определенную версию (2.0.0.0) - не уверен, что это сработает. 3) Разверните Mono.Posix с вашим приложением. –
Я не снял gettext и удалил все ссылки на Mono.Posix. Теперь все работает, просто пожелать, чтобы иконописи собирались в Linux. Спасибо! – MrMiketheripper