Visual Studio For Mac Remote Debugging

-->

Browse other questions tagged c# debugging visual-studio-debugging visual-studio-mac or ask your own question. Blog When laziness is efficient: Make the most of your command line. Ben Popper is the worst coder in the world: Something awry with my array. Featured on Meta TLS 1.0 and TLS 1.1 removal for Stack Exchange services. With Visual Studio doing the symbol loading for native remote debugging, both local build and public build symbols load where you expect them to load. It’s a little more interesting for.NET binaries for remote debugging. For your private builds, you’ll copy the binary and matching PDB file to the remote machine where the loading occurs.

This guide describes how to use Pair to Mac to connect Visual Studio 2019to a Mac build host. The same instructions apply to Visual Studio 2017.

Overview

Building native iOS applications requires access to Apple's build tools,which only run on a Mac. Because of this, Visual Studio 2019 must connect toa network-accessible Mac to build Xamarin.iOS applications.

Visual Studio 2019's Pair to Mac feature discovers, connects to,authenticates with, and remembers Mac build hosts so that Windows-basediOS developers can work productively.

Pair to Mac enables the following development workflow:

  • Developers can write Xamarin.iOS code in Visual Studio 2019.

  • Visual Studio 2019 opens a network connection to a Mac build host anduses the build tools on that machine to compile and sign the iOS app.

  • There is no need to run a separate application on the Mac – VisualStudio 2019 invokes Mac builds securely over SSH.

  • Visual Studio 2019 is notified of changes as soon as they happen. Forexample, when an iOS device is plugged in to the Mac or becomes availableon the network, the iOS Toolbar updates instantly.

  • Multiple instances of Visual Studio 2019 can connect to the Macsimultaneously.

  • It's possible to use the Windows command-line to build iOS applications.

Note

Before following the instructions in this guide, complete the following steps:

  • On a Windows machine, install Visual Studio 2019
  • On a Mac, install Xcode and Visual Studio for Mac
    • You must manually open Xcode after installing so that it can add any additional components.

If you would prefer not to install Visual Studio for Mac, Visual Studio 2019can automatically configure the Mac build host with Xamarin.iOS and Mono.You must still install and run Xcode.For more information, see Automatic Mac provisioning.

Enable remote login on the Mac

To set up the Mac build host, first enable remote login:

  1. On the Mac, open System Preferences and go to the Sharing pane.

  2. Check Remote Login in the Service list.

    Make sure that it is configured to allow access for All users, orthat your Mac username or group is included in the list of allowedusers.

  3. If prompted, configure the macOS firewall.

    If you have set the macOS firewall to block incoming connections, youmay need to allow mono-sgen to receive incoming connections. An alertappears to prompt you if this is the case.

  4. If it is on the same network as the Windows machine, the Mac shouldnow be discoverable by Visual Studio 2019. If the Mac is still notdiscoverable, try manually adding a Mac or takea look at the troubleshooting guide.

Connect to the Mac from Visual Studio 2019

Now that remote login is enabled, connect Visual Studio 2019 to the Mac.

  1. In Visual Studio 2019, open an existing iOS project or create a new oneby choosing File > New > Project and then selecting an iOS projecttemplate.

    Western Digital NTFS(New Technology File System) driver allows the Apple macOS to read and write hard drives and solid state storage devices. Apple macOS can read the Windows-formatted NTFS drives, however, they cannot be able to write them out of the box. To Read/Write the Western Digital(WD) NTFS formatted file without reformatting it with exFAT, you must install the Paragon NTFS Driver for Mac. Software & Downloads. Software by Product; Software for Windows; Software for Mac. Western Digital SSD Dashboard. Software for Mac Install WD Discovery for Mac. WD Drive Utilities for Mac. WD Universal Firmware Updater for Mac. Product Firmware Product. If your product is not listed above, please visit the product page. This was not the first time that we had heard of WD My Passport read-only on Mac.Most of time, when our WD hard drive is NTFS formatted, it turns to be read-only on macOS. All the time, macOS can only read from Windows-formatted NTFS drives, but can't write to them out of the box. Western digital ntfs driver for mac download.

  2. Open the Pair to Mac dialog.

    • Use the Pair to Mac button iOS toolbar:

    • Or, select Tools > iOS > Pair to Mac.

    • The Pair to Mac dialog displays a list of all previously-connectedand currently-available Mac build hosts:

  3. Select a Mac in the list. Click Connect.

  4. Enter your username and password.

    • The first time you connect to any particular Mac, you areprompted to enter your username and password for that machine:

      Tip

      When logging in, use your system username rather than full name.

    • Pair to Mac uses these credentials to create a new SSH connectionto the Mac. If it succeeds, a key is added to the authorized_keysfile on the Mac. Subsequent connections to the same Mac will loginautomatically.

  5. Pair to Mac automatically configures the Mac.

    Starting with Visual Studio 2019 version15.6,Visual Studio 2019 installs or updates Mono and Xamarin.iOS on aconnected Mac build host as needed (note that Xcode must still beinstalled manually). See Automatic Macprovisioning for more details.

    Formatear un disco para que sea compatible con los Mac y los PCs con Windows es realmente sencillo. Hoy, en AppleWeblog os guiaremos en el proceso con uno sencillos pasos. Antes de comenzar. Formatear un disco para ordenadores Windows en Utilidad de Discos en el Mac En Utilidad de Discos en el Mac, puedes formatear un disco externo para que pueda utilizarse en un ordenador Windows. ADVERTENCIA: El formateo de un disco o volumen borra todos los archivos que contiene. Formatear un disco para ordenadores Windows en Utilidad de Discos en el Mac. En Utilidad de Discos en el Mac, puedes formatear un disco externo para que pueda utilizarse en un ordenador Windows. ADVERTENCIA: El formateo de un disco o volumen borra todos los archivos que contiene. Guarda todos los archivos que necesites en otro volumen antes de. Formatear disco duro externo toshiba para mac y windows. Con Utilidad de Discos en la Mac puedes formatear un disco externo para una computadora Windows. ADVERTENCIA: formatear un disco o volumen borra todos los archivos que contiene. Guarda todos los archivos que necesites en otro volumen antes de llevar a cabo el formateo. Formatear un disco para que sea compatible con los Mac y los PCs con Windows es realmente sencillo. Hoy, en AppleWeblog os guiaremos en el proceso con uno sencillos pasos. Antes de comenzar.

  6. Look for the connection status icon.

    • When Visual Studio 2019 is connected to a Mac, that Mac's itemin the Pair to Mac dialog displays an icon indicating thatit is currently connected:

      There can be only one connected Mac at a time.

      Tip

      Right-clicking any Mac in the Pair to Mac list brings up a contextmenu that allows you to Connect.., Forget this Mac, orDisconnect:

      If you choose Forget this Mac, your credentials for the selectedMac will be forgotten. To reconnect to that Mac, you will need to re-enteryour username and password.

If you have successfully paired to a Mac build host, you are ready to buildXamarin.iOS apps in Visual Studio 2019. Take a look at theIntroduction to Xamarin.iOS for Visual Studioguide.

If you have not been able to pair a Mac, try manually adding aMac or take a look at the troubleshootingguide.

Manually add a Mac

If you do not see a particular Mac listed in the Pair to Mac dialog,add it manually:

  1. Locate your Mac’s IP address.

    • Open System Preferences > Sharing > Remote Login on your Mac:

    • Alternatively, use the command line. In Terminal, issue this command:

      Depending on your network configuration, you may need to use aninterface name other than en0. For example: en1, en2, etc.

  2. In Visual Studio 2019's Pair to Mac dialog, select Add Mac..:

  3. Enter the Mac's IP address and click Add:

  4. Enter your username and password for the Mac:

    Tip

    When logging in, use your system username rather than full name.

  5. Click Login to connect Visual Studio 2019 to the Mac over SSH and addit to the list of known machines.

Automatic Mac provisioning

Starting with Visual Studio 2019 version 15.6,Pair to Mac automatically provisions a Mac with software necessary forbuilding Xamarin.iOS applications: Mono, Xamarin.iOS (the softwareframework, not the Visual Studio for Mac IDE), and various Xcode-relatedtools (but not Xcode itself).

Important

  • Pair to Mac cannot install Xcode; you must manually install it on theMac build host. It is required for Xamarin.iOS development.
  • Automatic Mac provisioning requires that remote login isenabled on the Mac, and the Mac must be network-accessible to the Windowsmachine. See Enabling remote login on the Macfor more details.
  • Automatic Mac provisioning requires 3GB of free space on the Mac to install Xamarin.iOS.

Pair to Mac performs necessary software installations/updates when VisualStudio 2019 is connecting to theMac.

Mono

Pair to Mac will check to make sure that Mono is installed. If it is notinstalled, Pair to Mac will download and install the latest stable versionof Mono on the Mac.

Progress is indicated by various prompts, as shown by the followingscreenshots (click to zoom):

Install CheckDownloadingInstalling
Mono

Xamarin.iOS

Pair to Mac upgrades Xamarin.iOS on the Mac to match the versioninstalled on the Windows machine.

Important

Pair to Mac will not downgrade Xamarin.iOS on the Mac from alpha/betato stable. If you have Visual Studio for Mac installed, set yourrelease channel asfollows:

  • If you use Visual Studio 2019, select the Stable updates channel inVisual Studio for Mac.
  • If you use Visual Studio 2019 Preview, select the Alpha updateschannel in Visual Studio for Mac.

Progress is indicated by various prompts, as shown by the followingscreenshots (click to zoom):

Install CheckDownloadingInstalling
Xamarin.iOS

Xcode tools and license

Pair to Mac will also check to determine whether Xcode has been installedand its license accepted. While Pair to Mac does not install Xcode, itdoes prompt for license acceptance, as shown in the following screenshots(click to zoom):

Install CheckLicense Acceptance
Xcode

Additionally, Pair to Mac will install or update various packagesdistributed with Xcode. For example:

  • MobileDeviceDevelopment.pkg
  • XcodeExtensionSupport.pkg
  • MobileDevice.pkg
  • XcodeSystemResources.pkg

The installation of these packages happens quickly and without a prompt.

Note

These tools are distinct from the Xcode Command Line Tools, whichas of macOS 10.9 areinstalled with Xcode.

Troubleshooting automatic Mac provisioning

If you encounter any trouble using automatic Mac provisioning, take a lookat the Visual Studio 2019 IDE logs, stored in%LOCALAPPDATA%XamarinLogs16.0. These logs may contain error messagesto help you better diagnose the failure or get support.

Build iOS apps from the Windows command-line

Pair to Mac supports building Xamarin.iOS applications from the commandline. For example:

The parameters passed to msbuild in the above example are:

  • ServerAddress – The IP address of the Mac build host.
  • ServerUser – The username to use when logging in to the Mac build host.Use your system username rather than your full name.
  • ServerPassword – The password to use when logging in to the Mac build host.

Note

Visual Studio 2019 stores msbuild in the following directory:C:Program Files (x86)Microsoft Visual Studio2019<Version>MSBuildCurrentBin

The first time Pair to Mac logs in to a particular Mac build host fromeither Visual Studio 2019 or the command-line, it sets up SSH keys. With thesekeys, future logins will not require a username or password. Newlycreated keys are stored in %LOCALAPPDATA%XamarinMonoTouch.

If the ServerPassword parameter is omitted from a command-line buildinvocation, Pair to Mac attempts to log in to the Mac build hostusing the saved SSH keys.

Summary

This article described how to use Pair to Mac to connect Visual Studio 2019 to aMac build host, enabling Visual Studio 2019 developers to build native iOSapplications with Xamarin.iOS.

Next steps

When you run your .NET app on Mac or Linux using Mono, you will probably notice some differences in the application behavior or get some strange exceptions, which do not reproduce when you run the same app on a Windows machine. Here is when remote debugging may come in handy.

Debug information

When you build your project in the Debug mode, MSBuild generates a PDB file with debug information, which basically links binary code in the compiled assembly with the source code. Depending on the Mono version, you will need different PDBs:

  • Versions 5.x support portable PDB format, so make sure that the project is build with portable PDB.
    To do so, right-click the project and choose Properties, then, in the dialog that opens, select a build configuration and choose Portable in the Debug type selector.

  • Earlier versions require debug information in the .mdb format.
    You can use the pdb2mdb tool to convert .pdb to .mdb.

However, JetBrains Rider enables external-code debugging, so if Enable external source debug on the Build, Execution, Deployment Debugger page of JetBrains Rider settings Ctrl+Alt+S is selected (which it is by default), you will be able to debug the remote Mono app even without debug information.

Visual studio remote windows debugging

Debugging options

When you open the application source code in JetBrains Rider and copy its binary executable or assemblies to the remote machine, you can start debugging the app.

First, create a run/debug configuration of the Mono Remote type. In the configuration options, you need to specify host and port for the connection depending on how you want to connect to the remote app:

  • The remote app acts as a server with the debugging agent (with the server=y flag).
    In this case, you start the app on the remote machine first, and then start this run/debug configuration to connect to it. Here is an example of the command-line parameters on the remote machine:
    mono --debugger-agent=address=X.X.X.X:12345,server=y,transport=dt_socket --debug MyDotNet.exe
    You will need to set Host and Port values of the run/debug configuration as host/port of the remote machine, that is if you start the remote app with the above command line, specify X.X.X.X in the Host field and 1234 in the Port field.

  • The remote app acts as a client and JetBrains Rider functions as a Mono debugger server, so that you could start this run/debug configuration first and wait for the remote Mono application to actively connect to the debugger.
    For example, you can connect to a remote Mono application this way if you want to debug the application's startup. Here is an example of the command-line parameters on the remote machine:
    mono --debugger-agent=address=Y.Y.Y.Y:34567,server=n,transport=dt_socket --debug MyDotNet.exe
    In this case, you will need to set Host and Port values as host/port of the machine where JetBrains Rider is running, that is if you start the remote app with the above command line, specify Y.Y.Y.Y in the Host field and 34567 in the Port field.

By default this run/debug configuration will start a Mono debugger client. To make it work as a server, select the Listen for incoming connections checkbox.