Ответы пользователя по тегу Linux
  • Дружба C# и Linux, как?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    Можно запускать обычные сборки через Mono или .NET Core. Последнее предпочтительней.

    Программа уровня «Hello world» будет просто запускаться через выше указанные решения, например:

    mono helloworld.exe
    dotnet helloworld.exe
    # выполнение из исходного кода в текущем каталоге:
    dotnet run

    Для более сложных решений может потребоваться дополнительная адаптация кода. Под .NET Core это сделать удобней и проще. Писать и собирать код вполне можно в Visual Studio под Windows.
    Ответ написан
    4 комментария
  • Как скомпилировать проект на c# в dotnet?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    # клонируем рекурсивно, т.к. там ссылка на другой репозиторий
    git clone --recursive https://github.com/yar229/WebDavMailRuCloud.git
    # тянем последнюю версию nuget, если таковой еще нет
    wget https://dist.nuget.org/win-x86-commandline/latest/nuget.exe -O nuget.exe --no-check-certificate
    # восстанавливаем пакеты nuget
    mono nuget.exe restore WebDavMailRuCloud/WebDAVMailRuCloud.sln
    # пробуем выполнить сборку решения
    MONO_IOMAP=case xbuild WebDavMailRuCloud/WebDAVMailRuCloud.sln

    Если получаем ошибку:

    MailRuCloudApi.cs(1020,51): error CS0019: Operator `>' cannot be applied to operands of type `long' and `object'

    Вот эта строчка:
    https://github.com/yar229/Mail.Ru-.net-cloud-clien...

    Открываем локальную копию указанного файла и добавляем скобки (кстати, можно сделать pull request):

    return (fileStream.Length > 0) as object;

    Пробуем собрать еще раз:

    MONO_IOMAP=case xbuild WebDavMailRuCloud/WebDAVMailRuCloud.sln

    В случае успеха получаем что-то типа этого:

    18 Warning(s)
    0 Error(s)

    Пробуем запустить:

    mono WebDavMailRuCloud/WDMRC.Console/bin/Debug/wdmrc.exe --help

    Получаем:

    log4net:ERROR Could not create Appender [ColoredConsoleAppender] of type [log4net.Appender.ColoredConsoleAppender]. Reported error follows.
    System.EntryPointNotFoundException: GetConsoleOutputCP
    ...

    В суть не буду вникать, но очевидно, что какая-то проблема с log4net. Можно просто отключить log4net. Откройте файл конфигурации:

    nano WebDavMailRuCloud/WDMRC.Console/bin/Debug/wdmrc.exe.config

    Замените ветку <log4net>...</log4net> на:

    <log4net threshold="OFF" />

    У меня с параметром --help запустилось нормально, дальше не стал смотреть:

    mono WebDavMailRuCloud/WDMRC.Console/bin/Debug/wdmrc.exe --help
    WebDAVCloudMailRu 1.0.0.0
    yar229@yandex.ru
    
      -p, --port        Required. WebDAV server port
    
      -l, --login       Required. Login to Mail.ru Cloud
    
      -s, --password    Required. Password to Mail.ru Cloud
    
      --maxthreads      (Default: 5) Maximum concurrent connections to cloud.mail.ru
    
      --user-agent      "browser" user-agent
    
      --help            Display this help screen.
    
      --version         Display version information.

    UPD: Попробовал запустить с login и password, получил ошибку вида:

    Unhandled Exception:
    System.InvalidOperationException: Property 'enabled' not found in configuration element
    at System.Configuration.ConfigurationElement.get_Item (System.String property_name) <0xb50f5608 + 0x000a7> in :0
    at System.Configuration.ConfigurationElement.get_Item (System.Configuration.ConfigurationProperty property) <0xb50f55d8 + 0x0001f> in :0
    at System.Net.Configuration.DefaultProxySection.get_Enabled () <0xb506a270 + 0x0001b> in :0
    at MailRuCloudApi.Account.Login () <0xb50699f8 + 0x000af> in :0

    Проблема в получении значений прокси-сервера по умолчанию:
    https://github.com/yar229/Mail.Ru-.net-cloud-clien...

    По идее, прокси-сервер по умолчанию можно отключить/настроить в файле конфигурации приложения, добавив в секцию configuration нечто вроде этого:

    <system.net>
      <defaultProxy enabled="false" useDefaultCredentials="false">
        <proxy/>
        <bypasslist/>
        <module/>
      </defaultProxy>
    </system.net>

    Но у меня почему-то это не сработало. Можно удалить указанные строки (if (new DefaultProxySection().Enabled)...) из файла и собрать решение заново:

    nano WebDavMailRuCloud/MailRuNetCloudClient/MailRuCloudApi/Account.cs
    MONO_IOMAP=case xbuild WebDavMailRuCloud/WebDAVMailRuCloud.sln

    У меня с login и password запустилось:

    WebDAV server running. Press 'x' to quit.

    Если потребуется журналирование (log4net) и прокси, то придется разбираться в этих проблемах более углубленно.

    -----------------------------------------------------------------------------

    В проверке принимали участие:
    • Debian v8.1
    • Mono v4.2.3
    • XBuild Engine v12.0
    • Nuget v3.4.4.1321
    Ответ написан
    2 комментария