Visual Studio Mac Ios App

Oct 17, 2019  The remote agent handles build requests from Visual Studio and runs the app on an iOS device connected to the Mac, or in the iOS Simulator on the Mac. Note For information on using cloud-hosted Mac services instead of a Mac, see Configure Visual Studio to connect to your cloud hosted Mac. May 26, 2017  In Visual Studio, where Xamarin is installed, we have the Xamarin Mac Agent that allows you to run iOS Simulator. For commercial choice of Apple, the iOS app build and deploy process must pass through a Mac machine, so if you have a Windows machine, you need either a Mac or a Mac. I have developed an IOS App using Xamarin.Form From Visual Studio 2017 on Windows 10 and a mac book is connected in same network. I have also purchase an Apple Developer Program Account. My ios app is running perfectly in IOS Simulator. Now i want to publish ios app to AppStore.

-->

Visual Studio 2019 for Mac. Develop apps and games for iOS, Android and using.NET. Download Visual Studio for Mac. Create and deploy scalable, performant apps using.NET and C# on the Mac. Visual Studio dev tools & services make app development easy for any platform & language. Try our Mac & Windows code editor, IDE, or Azure DevOps for free.

Xamarin for Windows allows iOS applications to be written and tested within Visual Studio, with a networked Mac providing the build and deployment service.

This article covers the steps to install and configure the Xamarin.iOS tools on each computer to build iOS applications using Visual Studio.

Developing for iOS inside Visual Studio provides a number of benefits:

  • Creation of cross-platform solutions for iOS, Android and Windows applications.
  • Using your favorite Visual Studio tools (such as Resharper and Team Foundation Server) for all yourcross-platform projects, including iOS source code.
  • Work with a familiar IDE, while taking advantage of Xamarin.iOS bindings of all Apple’s APIs.

Requirements and Installation

There are a few requirements that must be adhered to when developing for iOS in Visual Studio. As briefly mentioned in the overview, a Mac is required to compile IPA files, and applications cannot be deployed to a device without Apple’s certificates and code-signing tools.

There are a number of configuration options available, so you can decide which works best for your development needs. These are listed below:

  • Use a Mac as your main development machine and run a Windows virtual machine with Visual Studio installed. We recommend usingVM software such as Parallels or VMWare .
  • Use a Mac just as a build host. In this scenario it would be connected to the same network as a Windows machine withthe necessary tools installed.

In either case, you should follow these steps:

Connecting to the Mac

To connect Visual Studio to your Mac build host, follow the instructionsin the Pair to Macguide.

Visual Studio Toolbar Overview

Xamarin iOS for Visual Studio adds items to the Standard toolbar and to the new iOS toolbar.The functions of these toolbars are explained below.

Standard Toolbar

The controls relevant to Xamarin iOS development are circled in red:

  • Start - Starts debugging or running the application on the selected platform. There must be a connected Mac (see the status indicator in the iOS toolbar).
  • Solution Configurations – Allows you to select the configuration to use (e.g., Debug, Release).
  • Solution Platforms - Allows you to select iPhone or iPhoneSimulator for deployment.

iOS Toolbar

The iOS Toolbar in Visual Studio looks similar in each version of Visual Studio. These are all shown below:

Each item is explained below:

  • Mac Agent/Connection Manager – Displays the Xamarin Mac Agent dialog box. This icon will appear orange when connecting, and green when connected.
  • Show iOS Simulator – Brings the iOS Simulator window to the front on the Mac.
  • Show IPA File on Build Server – Opens Finder on the Mac to the location of the application’s IPA output file.

iOS Output Options

Output Window

There are options in the Output pane that you can view to discover build, deployment, and connection messages and errors.

The screenshot below shows the available output windows, which may differ depending on your project type:

  • Xamarin – This contains information relating solely to Xamarin, such as the connection to the Mac and activation status.

  • Xamarin Diagnostics – This shows more detailed information about your Xamarin project, such as the interaction with and for Android.

Other default Visual Studio Output panes like Debug and Build are still available inside the Output view and are used for Debugging Output and MSBuild Output:

  • Debug

  • Build & Build Order

iOS Project Properties

Visual Studio’s Project Properties can be accessed by right-clicking on the Project name and selecting Properties in the context menu. This will let you configure your iOS application, as shown in the screenshot below:

  • iOS Bundle Signing – connects to the Mac to populate the code signing identities and provisioning profiles:

  • iOS IPA Options – the IPA file will be saved on the Mac’s file system:

  • iOS Run Options – Configure additional parameters:

Creating a New Project for iOS Applications

Creating a new iOS project from within Visual Studio is done just like any other project type. Selecting File > New Project will open the dialog shown below, illustrating some of the project types available for creating a new iOS project:

Selecting iOS App (Xamarin) will show the following templates for creating a new Xamarin.iOS application:

Storyboard and .xib files can be edited in Visual Studio using the iOS Designer. To create a Storyboard, choose the one of the Storyboard templates. This will generate a Main.storyboard file in the Solution Explorer as illustrated by the screenshot below:

To start creating or editing your Storyboard, double-click on Main.storyboard to open it in the iOS Designer:

To add objects to your view, use the Toolbox pane to drag and drop items onto your Design Surface. The Toolbox can be added by selecting View > Toolbox, if not already added. Object properties can be modified, their layouts adjusted, and events can be created by using the Properties pane, as illustrated below:

For more information on using the iOS designer, refer to the Designer guides.

Running & Debugging iOS Applications

Device Logging

In Visual Studio 2017, the Android and iOS log pads are unified.

The new Device Log tool window for Visual Studio allows to show logs for Android and iOS devices. It can be shown by executing any of the following commands:

  • View > Other Windows > Device Log
  • Tools > iOS > Device Log
  • iOS toolbar > Device Log

Once the tool window is shown, the user can select the physical device from the devices dropdown. When a device is selected, logs will automatically be added to the table. Switching between devices will stop and start the device logging.

In order for the devices to appear in the combobox, an iOS project must be loaded. Additionally for iOS, Visual Studio must be connected to the Mac Server to discover the iOS devices connected to the Mac.

This tool window provides: a table of log entries, a dropdown for device selection, a way to clear log entries, a search box, and play/stop/pause buttons.

Set Debugging Stops

Breakpoints can be set at any point in your application to signal to the debugger to temporarily stop the execution of the program. To set a breakpoint in your Visual Studio, click on the margin area of your editor, next to the line number of the code you wish to break at:

Start debugging, and use the simulator or device to navigate your application to a breakpoint. When a breakpoint is hit, the line will be highlighted and Visual Studio’s normal debugging behavior will be enabled: you can step into, over, or out of the code, examine local variables, or use the Immediate Window.

This screenshot shows the iOS Simulator running next to Visual Studio using Parallels on macOS:

Examine Local Variables

Summary

This article described how to use Xamarin iOS for Visual Studio. It listed the various features available for creating,building, and testing an iOS app from within Visual Studio and walked through building and debugging a simple iOS application.

Related Links

-->

You can use Visual Studio with the cross-platform Mobile development with C++ tools to edit, debug, and deploy iOS code to the iOS Simulator or to an iOS device. But, because of licensing restrictions, the code must be built and run remotely on a Mac. To build and run iOS apps using Visual Studio, you need to set up and configure the remote agent, vcremote, on your Mac. The remote agent handles build requests from Visual Studio and runs the app on an iOS device connected to the Mac, or in the iOS Simulator on the Mac.

Note

For information on using cloud-hosted Mac services instead of a Mac, see Configure Visual Studio to connect to your cloud hosted Mac. The instructions are for building using Visual Studio Tools for Apache Cordova. To use the instructions to build using C++, substitute vcremote for remotebuild.

Once you have installed the tools to build using iOS, refer to this article for ways to quickly configure and update the remote agent for iOS development in Visual Studio and on your Mac.

Prerequisites

To install and use the remote agent to develop code for iOS, you must first have these prerequisites:

  • A Mac computer running macOS Mojave version 10.14 or later

  • An Apple ID

  • An active Apple Developer Program account

    You can get a free account that allows sideloading apps to an iOS device for testing only but not for distribution.

  • Xcode version 10.2.1 or later

    Xcode can be downloaded from the App Store.

  • Xcode command-line tools

    To install the Xcode command-line tools, open the Terminal app on your Mac and enter the following command:

    xcode-select --install

  • An Apple ID account configured in Xcode as a signing identity to sign apps

    To see or set your signing identity in Xcode, open the Xcode menu and choose Preferences. Select Accounts and choose your Apple ID, and then choose the View Details button. See Add your Apple ID account for detailed instructions.

    For detailed information on signing requirements, see What is app signing.

  • If you are using an iOS device for development, a provisioning Profile configured in Xcode for your device

    Xcode provides automatic signing where it creates signing certificates for you as needed. For detailed information about Xcode automatic signing see automatic signing.

    If you want to do manual signing, you need to create a provisioning Profile for your app. For detailed information on creating provisioning Profiles, see Create a development provisioning profile.

  • Node.js version 12.14.1 and npm version 6.13.4

    Install version 12.14.1 of Node.js on your Mac. If you install the Node.js package, it should come with npm version 6.13.4. Other versions of Node.js and npm may not support some modules used in the remote agent vcremote, which can cause vcremote installation to fail. We recommend you install Node.js by using a package manager such as Node Version Manager. Avoid using the command sudo to install Node.js, as some modules can fail to install when using sudo.

Install the remote agent for iOS

When you install the Mobile development with C++ workload, Visual Studio can communicate with vcremote, a remote agent running on your Mac to transfer files, build and run your iOS app, and send debugging commands.

Before you install the remote agent, make sure you have satisfied the Prerequisites and completed the installation steps in Install cross-platform mobile development with C++.

To download and install the remote agent

  • From the Terminal app on your Mac, verify that the Node.js version currently in use is the required version 12.14.1. To verify the version, run the command:

    node -v

    If it's not the right version, you may need to follow the Node.js installation instructions in the prerequisites. Then, restart Node.js.

  • After verifying the required Node.js is in use, run this command to install vcremote under that Node.js version:

    npm install -g --unsafe-perm vcremote

    The global installation (-g) switch is recommended, but not required. If you don't use the global installation switch, vcremote gets installed under the current active path in the Terminal app.

    During the installation, vcremote is installed and developer mode is activated on your Mac. Homebrew and two npm packages, vcremote-lib and vcremote-utils, are also installed. When installation completes, it's safe to ignore any warnings about skipped optional dependencies.

    Note

    To install Homebrew, you must have sudo (administrator) access. If you need to install vcremote without sudo, you can install Homebrew manually in a usr/local location and add its bin folder to your path. For more information, see the Homebrew documentation. To manually enable developer mode, enter this command in the Terminal app: DevToolsSecurity -enable

If you update to a new version of Visual Studio, you must update to the current version of the remote agent as well. To update the remote agent, repeat the steps to download and install the remote agent.

Start the remote agent

The remote agent must be running for Visual Studio to build and run your iOS code. Visual Studio must be paired with the remote agent before it can communicate. By default, the remote agent runs in secured connection mode, which requires a PIN to pair with Visual Studio.

To start the remote agent

  • From the Terminal app on your Mac, enter:

    vcremote

    This command starts the remote agent with a default build directory of ~/vcremote. For additional configuration options, see Configure the remote agent on the Mac.

The first time you start the agent, and every time you create a new client certificate, you are provided with the required information to configure the agent in Visual Studio, including the host name, the port, and the PIN.

If you intend to configure the remote agent in Visual Studio using the host name, ping the Mac from Windows using the host name to verify that it is reachable. Otherwise, you may need to use the IP address instead.

Visual Studio Mac Ios App

The generated PIN is for one time use, and is only valid for a limited time. If you do not pair Visual Studio with the remote agent before the time expires, you will need to generate a new PIN. For more information, see Generate a new security PIN.

You can use the remote agent in unsecured mode. In unsecured mode, the remote agent can be paired to Visual Studio without a PIN.

To disable secured connection mode

  • To disable secured connection mode in vcremote, enter this command in the Terminal app on your Mac:

    vcremote --secure false

To enable secured connection mode

  • To enable secured connection mode, enter this command:

    vcremote --secure true

Once you have started the remote agent, you can use it from Visual Studio until you stop it.

To stop the remote agent

  • In the Terminal window vcremote is running in, enter Control+C.

Configure the remote agent in Visual Studio

To connect to the remote agent from Visual Studio, you must specify the remote configuration in the Visual Studio options.

To configure the remote agent from Visual Studio

  1. If the agent is not already running on your Mac, follow the steps in Start the remote agent. Your Mac must be running vcremote for Visual Studio to successfully pair, connect, and build your project.

  2. On your Mac, get the host name or IP address of your Mac.

    You can get the IP address by using the ifconfig command in a Terminal window. Use the inet address listed under the active network interface.

  3. On the Visual Studio menu bar, choose Tools, Options.

  4. In the Options dialog box, expand Cross Platform, C++, iOS.

  5. In the Host Name and Port fields, enter the values specified by the remote agent when you started it. The host name can be the DNS name or IP address of your Mac. The default port is 3030.

    Note

    If you cannot ping the Mac using the host name, you may need to use the IP address.

  6. If you use the remote agent in the default secured connection mode, check the Secure checkbox, then enter the PIN value specified by the remote agent in the Pin field. If you use the remote agent in unsecured connection mode, clear the Secure checkbox and leave the Pin field blank.

  7. Choose Pair to enable the pairing.

    The pairing persists until you change the host name or port. If you change the host name or port in the Options dialog box, to undo the change, choose the Revert button to revert to the previous pairing.

    If the pairing does not succeed, verify that the remote agent is running by following the steps in Start the remote agent. If too much time has passed since the remote agent PIN was generated, follow the steps in Generate a new security PIN on the Mac and then try again. If you are using the host name of your Mac, try using the IP address in the Host Name field instead.

  8. Update the folder name in the Remote Root field to specify the folder used by the remote agent in your home (~) directory on the Mac. By default, the remote agent uses /Users/<username>/vcremote as the remote root.

  9. Choose OK to save the remote pairing connection settings.

Visual Studio uses the same information to connect to the remote agent on your Mac each time you use it. You do not need to pair Visual Studio with the remote agent again unless you generate a new security certificate on your Mac, or its hostname or IP address changes.

Generate a new security PIN

When you start the remote agent the first time, the generated PIN is valid for a limited amount of time—by default, 10 minutes. If you don't pair Visual Studio to the remote agent before the time expires, you will need to generate a new PIN.

Ios App In Visual Studio

To generate a new PIN

  1. Stop the agent, or open a second Terminal app window on your Mac and use that to enter the command.

  2. Enter this command in the Terminal app:

    vcremote generateClientCert

    The remote agent generates a new temporary PIN. To pair Visual Studio by using the new PIN, repeat the steps in Configure the remote agent in Visual Studio.

Generate a new server certificate

For security purposes, the server certificates that pair Visual Studio with the remote agent are tied to the IP address or host name of your Mac. If these values change, you must generate a new server certificate, and then reconfigure Visual Studio with the new values.

To generate a new server certificate

  1. Stop the vcremote agent.

  2. Enter this command in the Terminal app:

    vcremote resetServerCert

  3. When prompted for confirmation, enter Y.

  4. Enter this command in the Terminal app:

    vcremote generateClientCert

    This command generates a new temporary PIN.

  5. To pair Visual Studio by using the new PIN, repeat the steps in Configure the remote agent in Visual Studio.

Configure the remote agent on the Mac

You can configure the remote agent using various command-line options. For example, you can specify the port to listen for build requests and specify the maximum number of builds to maintain on the file system. By default, the limit is 10 builds. The remote agent will remove builds that exceed the maximum on shutdown.

To configure the remote agent

  • To see a complete list of remote agent commands, in the Terminal app, enter:

    vcremote --help

  • To disable secure mode and enable simple HTTP-based connections, enter:

    vcremote --secure false

    When you use this option, clear the Secure checkbox and leave the Pin field blank when configuring the agent in Visual Studio.

  • To specify a location for remote agent files, enter:

    vcremote --serverDir directory_path

    where directory_path is the location on your Mac to place log files, builds, and server certificates. By default, this location is /Users/<username>/vcremote. Builds are organized by build number in this location.

  • To use a background process to capture stdout and stderr to a file named server.log, enter:

    vcremote > server.log 2>&1 &

    The server.log file can assist in troubleshooting build issues.

  • To run the agent by using a configuration file instead of command-line parameters, enter:

    vcremote --config config_file_path

    where config_file_path is the path to a configuration file in JSON format. The startup options and their values must not include dashes.

Troubleshoot the remote agent

Debugging on an iOS device

If debugging on an iOS device does not work, there could be issues with the tool ideviceinstaller, which is used to communicate with an iOS device. This tool is typically installed from Homebrew during the installation of vcremote. Follow the steps below as a workaround.

Open the Terminal app and update ideviceinstaller and its dependencies by running the following commands in order:

  1. Ensure Homebrew is updated

    brew update

  2. Uninstall libimobiledevice and usbmuxd

    brew uninstall --ignore-dependencies libimobiledevice

    brew uninstall --ignore-dependencies usbmuxd

  3. Install the latest version of libimobiledevice and usbmuxd

    brew install --HEAD usbmuxd

    brew unlink usbmuxd

    brew link usbmuxd

    brew install --HEAD libimobiledevice

  4. Uninstall and reinstall ideviceinstaller

    brew uninstall ideviceinstaller

    brew install ideviceinstaller

Verify that ideviceinstaller can communicate with the device by trying to list the apps installed on the device:

ideviceinstaller -l

If ideviceinstaller errors that it cannot access the folder /var/db/lockdown, change the privilege on the folder with:

sudo chmod 777 /var/db/lockdown

Visual Studio Mac Ios Application

Then verify again if ideviceinstaller can communicate with the device.

Visual Studio Ios App Without Mac

See also