Запуск Mono на CentOS 5 CLI

Запуск Mono на CentOS 5 CLI

У меня есть VPS-сервер (виртуальный частный сервер), работающий на Linux CentOS 5 32 бит, я установил vncserverX-Windows, GNOME и среду KDE и подключаюсь к VNC-серверу из vncviewer на моем рабочем столе Windows 7.

теперь я выполняю команду

mono Radegast.exe

в терминале и я получил

[ERROR]: - Unhandled System.TypeInitializationException: An exception was thrown by the type initializer for System.Windows.Forms.XplatUI ---> System.ArgumentNullException: Could not open display (X-Server required. Check you DISPLAY environment variable)
    Parameter name: Display
      at System.Windows.Forms.XplatUIX11.SetDisplay (IntPtr display_handle) [0x00000]
      at System.Windows.Forms.XplatUIX11..ctor () [0x00000]
      at System.Windows.Forms.XplatUIX11.GetInstance () [0x00000]
      at System.Windows.Forms.XplatUI..cctor () [0x00000]
      --- End of inner exception stack trace ---
      at System.Windows.Forms.Application.EnableVisualStyles () [0x00000]
      at Radegast.MainProgram.RunRadegast (System.String[] args) [0x00000]
      at Radegast.MainProgram.Main (System.String[] args) [0x00000] : An exception was thrown by the type initializer for System.Windows.Forms.XplatUI
      at System.Windows.Forms.Application.EnableVisualStyles () [0x00000]
      at Radegast.MainProgram.RunRadegast (System.String[] args) [0x00000]
      at Radegast.MainProgram.Main (System.String[] args) [0x00000]

моно версия есть

# mono -V
Mono JIT compiler version 2.4.2.3 (tarball Sat Apr 20 19:49:33 MSD 2013)
Copyright (C) 2002-2008 Novell, Inc and Contributors. www.mono-project.com
        TLS:           __thread
        GC:            Included Boehm (with typed GC)
        SIGSEGV:       altstack
        Notifications: epoll
        Architecture:  x86
        Disabled:      none 

решение1

Вы не указали это прямо в своем вопросе, но ошибка, с которой вы столкнулись:

[ОШИБКА]: - Необработанное исключение System.TypeInitializationException: Исключение было сгенерировано инициализатором типа для System.Windows.Forms.XplatUI ---> System.ArgumentNullException: Не удалось открыть дисплей (требуется X-Server. Проверьте переменную среды DISPLAY) Имя параметра: Дисплей

Похоже, вы пытаетесь сделать одно из двух:

  1. запустить приложение mono в оболочке, не имеющей доступа к X Desktop
  2. запускается от имени пользователя, не имеющего прав доступа к дисплею

Эта тема наРадегаст форумпохоже, у вас та же проблема.

Возможные решения

Вам необходимо будет либо:

  1. установите переменную среды $DISPLAY на ":0.0" после подключения по ssh к vps от имени того же пользователя, которому принадлежит X Desktop
  2. запустите xhost +команду mono от имени пользователя, которому принадлежит рабочий стол, прежде чем запускать ее от имени другого пользователя (не забудьте также установить переменную $DISPLAY для этого другого пользователя!)

Я полагаю, что вы также можете запустить команду mono следующим образом:

% XAUTHORITY=/home/$YOURUSER/.Xauthority DISPLAY=:0.0 mono Radegast.exe

ПРИМЕЧАНИЕ:$YOURUSER — пользователь, которому принадлежит X Desktop.

решение2

Если ваш код C# имеет GUI, вам нужно назначить ему $DISPLAY. Вы можете сначала дать $DISPLAY с echo $DISPLAYвашего удаленного linux.

  1. Если вы хотите использоватьРДП(протокол удаленного рабочего стола), вы можете установить пакетxrdp.

    $ sudo apt-get install xrdp
    
  2. подключение к удаленному серверу (Remmina, ).

  3. откройте терминал и получите $DISPLAY.

    $echo $DISPLAY
    :10.0
    
  4. запустить программу mono с помощью ssh:

    $ ssh [email protected]
    $ export DISPLAY=:10.0
    $ mono server.exe > /dev/null 2> /dev/null &
    

Связанный контент