Как удаленно отлаживать приложение Mono ASP.NET из Visual Studio 2017? [Дубликат]

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" />
    <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>    

</head>
<body>
    <form id="form1" runat="server">
        <div class="ui-widget">
            <asp:TextBox ID="txtDepartment" runat="server"  ClientIDMode="Static" />            
        </div>
    </form>
    <script>       

        $(function () {

            $("[id$=txtDepartment]").autocomplete({
                source: function (request, response) {
                    $.ajax({
                        url: "FetchDropdownList.aspx/GetDepartment",
                        data: "{'departmentName':'" + document.getElementById('txtDepartment').value + "'}",
                        dataType: "json",
                        type: "POST",
                        contentType: "application/json; charset=utf-8",
                        dataFilter: function (data) { return data; },
                        success: function (data) {
                            response($.map(data.d, function (item) {
                                return {
                                    value: item.Name
                                }
                            }))
                        },
                        error: function (XMLHttpRequest, textStatus, errorThrown) {
                            alert(textStatus);
                        }
                    });
                },
                minLength: 1
            });
        });        
    </script>
</body>
</html>

public class Department
        {
            public int Id { get; set; }
            public string Name { get; set; }
        }

        private static List<Department> GetDepartment()
        {
            List<Department> departments = new List<Department>();
            for (int i = 0; i < 10000; i++)
            {
                Department department = new Department();
                department.Id = i;
                department.Name = "Department " + i.ToString();
                departments.Add(department);
            }
            return departments;
        }

        [WebMethod]
        public static List<Department> GetDepartment(string departmentName)
        {            
            int totalDepartments = GetDepartment().Count;
            List<Department> departments = GetDepartment().Where(d => d.Name.ToLower().StartsWith(departmentName.ToLower())).Take(20).ToList();

            return departments;
        }
29
задан Anlo 16 April 2014 в 12:55
поделиться

5 ответов

Я нашел это руководство , объясняющее, как выполнять удаленное отладку в Linux, из Windows, используя Xamarin Studio, которая теперь бесплатна, за исключением iOS & amp; Разработка Android. Я расширил его с помощью исправлений для проблем, с которыми я столкнулся, тестируя его на малине Pi Zero W под управлением Raspbian Jessie Lite (2017-04-10).

  1. Загрузите и установите Xamarin Studio , GTK # для .NET и .NET Framework 4.6.2 . Xamarin Studio требует .NET 4.5, но для GTK # требуется .NET 4.6. Я использовал Xamarin Studio версии 6.1.2 (сборка 44) и GTK # версии 2.12.44.
  2. Я установил Xamarin Studio на виртуальную машину, отличную от моей машины VS2015, поэтому мне нужно было скачать и установить MSBuild Tools 2013 и MSBuild Tools 2015 .
  3. Создайте переменную окружения MONODEVELOP_SDB_TEST = 1 (Мой компьютер -> Свойства -> Расширенные настройки системы -> Окружающая среда Переменные).
  4. Запустить Xamarin Studio. Если окно не отображается, проверьте файлы журнала в папке %localappdata%\XamarinStudio-6.0\Logs, чтобы узнать, что не удалось.
  5. Я создал консольное приложение .NET 4.6 в Visual Studio 2015 и добавил пакет NuGet Mono.Unofficial.pdb2mdb , Я использовал версию 4.2.3.4. Пакет Mono.pdb2mdb версии 0.1.0.20130128, похоже, не работает с сборками, созданными VS2015 (PdbDebugException: Unknown custom metadata item kind: 6).
  6. Загрузите файл .sln или .csproj из Visual Studio в Xamarin Studio. Создайте решение и используйте инструмент pdb2mdb из папки пакетов NuGet для создания файла .mdb: pdb2mdb MyProgram.exe
  7. Я использовал WinSCP для копирования MyProgram.exe и MyProgram.exe. mdb для моей малины Pi.
  8. Я вошел в систему с помощью Putty , используя SSH, и установил версию Mono 3.2.8 на Pi: sudo apt-get install mono-complete.
  9. Start Mono runtime с флагами отладчика: mono --debug --debugger-agent=transport=dt_socket,address=0.0.0.0:12345,server=y /path/to/MyProgram.exe. Это запустит программу, но прекратит выполнение до тех пор, пока не будет отладчик Xamarin Studio.
  10. Установите точку останова в Xamarin Studio и выберите пункт меню Run -> Run with -> Custom Configuration... и выберите Run Action = Debug - Custom Command Mono Soft Debugger. Нажмите Debug.
  11. Заполните поля IP и Port IP-адресом вашей Linux-системы и портом 12345, как указано в командной строке Mono. Нажмите Connect, и выполнение начнется, остановившись на задании точки останова.

Можно установить условные точки останова, / из / над кодом, смотреть примитивы и объекты и т. д., и это довольно быстро. Я предпочел бы отлаживать непосредственно из Visual Studio, но это похоже на полностью работоспособное решение.

3
ответ дан Anlo 24 August 2018 в 02:15
поделиться

На основе ответа Gutemberg Ribeiro мне удалось получить MonoRemoteDebugger , работающий с VS2015 на малине Pi Zero W, работающем на Raspbian Jessie Lite (2017-04-10). Хитрость заключалась в том, чтобы установить версию Mono позже 3.2.8:

  1. Установить расширение MonoRemoteDebugger Visual Studio, я использовал версию 1.2.0.
  2. Создайте приложение консоли .NET 4.6 в Visual Studio.
  3. Если на Raspberry Pi установлена ​​более старая версия Mono, удалите ее с помощью команд: sudo apt-get purge mono-complete sudo apt- get autoremove
  4. Установить Mono версии 4.0.2: sudo apt-key adv --keyserver hkp: //keyserver.ubuntu.com: 80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF echo "deb http: / /plugwash.raspbian.org/mono4 jessie-mono4 main "| sudo tee -a /etc/apt/sources.list sudo apt-get update sudo apt-get install mono-complete
  5. Установить сервер MonoRemoteDebugger: wget https://github.com/techl/ MonoRemoteDebugger / релизы / download / v1.2.0 / MonoRemoteDebugger.Server.zip unzip -d MonoRemoteDebugger.Server MonoRemoteDebugger.Server.zip
  6. Запустить сервер MonoRemoteDebugger: mono MonoRemoteDebugger.Server / MonoRemoteDebugger.Server. exe
  7. Установите точку останова в Visual Studio и выберите пункт меню MonoRemoteDebugger -> Debug with Mono (remote) в Visual Studio.
  8. Установите Remote-IP на IP-адрес малины Pi и нажмите «Подключиться». MonoRemoteDebugger будет компилировать и передавать программу на малиновый пи. Нет необходимости запускать pdb2mdb вручную, файл .mdb будет создан сервером MonoRemoreDebugger.

Честно говоря, отладка возможности весьма ограничены. Простые точки останова и шаг в / из / над кодом, кажется, работают в порядке. Установка контрольной точки в функции и последующее переключение вызова этой функции не останавливаются в точке останова.

Примитивные типы можно наблюдать, но объекты, которые я пытался просмотреть, не могут отображаться. Представление «Столкновения вызовов» довольно ограничено, а вид «Нитки» пуст. Исключения не попадают, но вызывает сообщение «[ОШИБКА] FATAL UNHANDLED EXCEPTION» от MonoRemoteDebuggerServer. Но если вы можете жить с этими ограничениями, настройка проще, чем маршрут Xamarin Studio .

0
ответ дан Community 24 August 2018 в 02:15
поделиться

Решение, которое вам нужно, поступит в этом году с помощью MonoDebugger.NET . Разработчик (и) «обещает», что мы можем установить его на любое устройство Mono и отладить его в Visual Studio (2010-2015).

0
ответ дан dayanruben 24 August 2018 в 02:15
поделиться

Существует плагин для Xamarin Studio / MonoDevelop

https://github.com/logicethos/SSHDebugger

0
ответ дан FlappySocks 24 August 2018 в 02:15
поделиться

Я знаю, что это старый поток, но на всякий случай никто (например, я) еще не нашел решение для этого, но при поиске сегодня я нашел это расширение Visual Studio 2015, которое работает как шарм: MonoRemoteDebugger для Visual Studio 2015

См. MonoRemoteDebugger v1.0.4 , чтобы исправить конфликт с расширением Xamarin VS на VS2015 update2.

Надеюсь, это поможет.

Счастливые отладки и благодарность разработчику! :)

16
ответ дан Max 24 August 2018 в 02:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: