Вопрос

Разработка в файловой системе и отладка серверного кода

Коллеги всем доброго времени суток!

Кто нибудь пробовал уже разрабатывать на системе ориентированной под linux?

Как там происходит разработка в ФС и отладка серверного кода, как подсоединятся к процессу и т.д., в общем весь тот процесс, что делаем на Windows?

Благодарю!

Нравится

4 комментария

Насколько понимаю, в версии на .NET Core, которая используется под Linux, сейчас возможности разработки ограничены. Там даже нет раздела «Конфигурация»:

Большинство инструментов разработки и кастомизации уже поддерживают работу на платформе .NET Core. Реализована поддержка Low-code инструментов: дизайнера процессов, мастера раздела, мастера деталей и мастера мобильного приложения.

Также поддерживают работу на платформе утилиты командной строки, которые помогают разрабатывать и автоматизировать процессы разработки: WorkspaceConsole, clio.

В процессе разработки поддержка раздела [Конфигурация]. Планируется также поддержка дизайнера объектов. Сейчас разработка этими инструментами может происходить на Windows, изменения, сделанные этими инструментами, переносятся пакетами на Linux.

Добрый день! Хотелось бы вернутся к вопросу отладки серверного кода под Linux. Спасибо!

Дмитрий Каплин,

В данном случае есть возможность провести отладку удалённо с Windows-машины. Рекомендуем использовать инструкцию ниже.

 

У вас на Linux развернут некий продукт (например по пути: '/home/user/creatioApps/Product'). В дальнейшем мы будем использовать пути, указанные для примера, у вас же будут свои пути.

 

Нужно:

1. На Linux по пути /home/user/creatioApps/Product/WorkspaceConsole/Terrasoft.Tools.WorkspaceConsole.dll.config

настраиваете конфигурационный файл, а именно соединение к базе данных, в секции <connectionStrings>.

Настройки соединения с базой данных можно скопировать с конфигурационого файла по пути /home/user/creatioApps/Product/ConnectionStrings.config

2. Для логов WorkspaceConsole на Linux создаете папку /home/user/creatioApps/Logs

3. На Linux переходите в папку /home/user/creatioApps/Product/WorkspaceConsole и запускаете следующую команду:

dotnet Terrasoft.Tools.WorkspaceConsole.dll -operation=UpdateWorkspaceSolution -workspaceName=Default -webApplicationPath="/home/user/creatioApps/Product" -confRuntimeParentDirectory="/home/user/creatioApps/Product" -logPath="/home/user/creatioApps/Logs" -autoExit=true

У Вас будут другие пути.

4. Файлы того же же продукта для Linux, который развернут на Linux, разместить на Windows (например, по пути: 'C:\Product').

Можно распаковать туда файлы из архива продукта для Linux.

5. Скопировать все файлы с Linux по пути /home/user/creatioApps/Product/Terrasoft.Configuration/Autogenerated/Src

на Windows машину по пути C:\Product\Terrasoft.Configuration\Autogenerated\Src

6. На Linux по пути /home/user/creatioApps/Product/Terrasoft.WebHost.dll.config

настраиваете конфигурационный файл, а именно меняете или добавлятете в секции  <appSettings> следующую насройку:

<add key="LoadAssemblyFromByteArray" value="false" />

Таким образом включается отладка для конфигурационной сборки.

ВНИМАНИЕ: чтобы отладка работала, среда .Net загружает сборку по прямой ссылке, однако она тогда же и блокирует перезапись этой сборки,

а перезапись сборки происходит во время компиляции и установки пакетов.

Поэтому ОТКЛЮЧАЙТЕ ОТЛАДКУ НА ПРОДУКТОВОЙ СРЕДЕ и ПЕРЕД КОМПИЛЯЦИЕЙ или УСТАНОВКОЙ ПАКЕТОВ

7. Перезапустите приложение на Linux

8. На Windows открываете проект по пути "C:\Product\Terrasoft.Configuration\Terrasoft.Configuration.Dev.csproj"

9. Подсоединяетесь к процессу на Linux, по инструкции "Удаленная отладка .NetCore приложений в Linux под Windows.pdf", которая находится во вложении.

10. Находите необходимый Вам файл в C:\Product\Terrasoft.Configuration\Autogenerated\Src и устанавливаете точку остановки.

 

Среда разработки может отображать точку остановки, как недоступную для отладки, но пусть это Вас не смущает, она отработает когда поток выполнения попадет в эту точку.

Так же необходимо подключить vsdbg, для того чтобы MSVS могла подключиться к .net процессу. 
Install vsdbg to remote host (following script install to ~/vsdbg)
curl -sSL https://aka.ms/getvsdbgsh | bash /dev/stdin -v latest -l ~/vsdbg

Тут есть два варианта, это пересобрать docker image, включив в него вышеописанную строку.  Или каждый раз после перезапуска докера, выполнять команду:
docker exec -it curl -sSL https://aka.ms/getvsdbgsh | bash /dev/stdin -v latest -l ~/vsdbg

Интонируя данный прокси MSVS для отладки.  Также можно воспользоваться Rider, он сам ставит нужный модуль, для отладки при первом подключении.

Добавить комментарий

Павел,

Можете ознакомиться с ответом выше.

Показать все комментарии