nuBacuk
@nuBacuk
Python/Linux

Как скомпилировать проект на c# в dotnet?

Пытаюсь скомпилировать проект https://github.com/yar229/WebDavMailRuCloud в debian, но нечего не получается. Первый раз столкнулся с этим, пытался через моно запустить exe уже готовый, тоже не вышло куча ошибок. Как лучше сделать?
  • Вопрос задан
  • 2429 просмотров
Решения вопроса 1
# клонируем рекурсивно, т.к. там ссылка на другой репозиторий
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
GavriKos
@GavriKos
Ну так а как вы пытались скомпилировать? Команды +выхлоп сюда приведите.
Ответ написан
Комментировать
@yar229
wdmrc-mono-*.tar.gz

Проверял под Elementary OS и Lubuntu, sudo apt install apt mono-complete и работает
Собираю с помощью https://travis-ci.com/
Обсуждалось тут
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы