diff --git a/.openpublishing.redirection.json b/.openpublishing.redirection.json index 2779d7dea01..5462f1682c8 100644 --- a/.openpublishing.redirection.json +++ b/.openpublishing.redirection.json @@ -1815,6 +1815,11 @@ "redirect_url": "/visualstudio/ide/class-designer/working-with-visual-cpp-code", "redirect_document_id": false }, + { + "source_path": "docs/ide/visual-studio-2017-for-dotnet-developers.md", + "redirect_url": "/visualstudio/ide/csharp-developer-productivity", + "redirect_document_id": false + }, { "source_path": "docs/install/index.md", "redirect_url": "/visualstudio/install/install-visual-studio", diff --git a/docs/code-quality/install-fxcop-analyzers.md b/docs/code-quality/install-fxcop-analyzers.md index aa52c90b212..50222b31573 100644 --- a/docs/code-quality/install-fxcop-analyzers.md +++ b/docs/code-quality/install-fxcop-analyzers.md @@ -37,12 +37,13 @@ Use the following guidelines to determine which version of the FxCop analyzers p | Visual Studio version | FxCop analyzer package version | | - | - | -| Visual Studio 2017 version 15.5 and later | 2.6.3, for example https://www.nuget.org/packages/Microsoft.CodeAnalysis.FxCopAnalyzers/2.6.3 | -| Visual Studio 2017 version 15.3 to 15.4 | 2.3.0-beta1, for example https://www.nuget.org/packages/Microsoft.CodeAnalysis.FxCopAnalyzers/2.3.0-beta1 | -| Visual Studio 2017 version 15.0 to 15.2 | 2.0.0-beta2, for example https://www.nuget.org/packages/Microsoft.CodeAnalysis.FxCopAnalyzers/2.0.0-beta2 | -| Visual Studio 2015 update 2 and 3 | Version 1.2.0-beta2, for example https://www.nuget.org/packages/Microsoft.CodeAnalysis.FxCopAnalyzers/1.2.0-beta2 | -| Visual Studio 2015 Update 1 | Version 1.1.0, for example https://www.nuget.org/packages/Microsoft.CodeAnalysis.FxCopAnalyzers/1.1. | -| Visual Studio 2015 RTW | Version 1.0.1, for example https://www.nuget.org/packages/Microsoft.CodeAnalysis.FxCopAnalyzers/1.0.1 | +| Visual Studio 2017 version 15.8 and later | [2.9.0](https://www.nuget.org/packages/Microsoft.CodeAnalysis.FxCopAnalyzers/2.9.0) | +| Visual Studio 2017 version 15.5 to 15.7 | [2.6.3](https://www.nuget.org/packages/Microsoft.CodeAnalysis.FxCopAnalyzers/2.6.3) | +| Visual Studio 2017 version 15.3 to 15.4 | [2.3.0-beta1](https://www.nuget.org/packages/Microsoft.CodeAnalysis.FxCopAnalyzers/2.3.0-beta1) | +| Visual Studio 2017 version 15.0 to 15.2 | [2.0.0-beta2](https://www.nuget.org/packages/Microsoft.CodeAnalysis.FxCopAnalyzers/2.0.0-beta2) | +| Visual Studio 2015 update 2 and 3 | [1.2.0-beta2](https://www.nuget.org/packages/Microsoft.CodeAnalysis.FxCopAnalyzers/1.2.0-beta2) | +| Visual Studio 2015 Update 1 | [1.1.0](https://www.nuget.org/packages/Microsoft.CodeAnalysis.FxCopAnalyzers/1.1.0) | +| Visual Studio 2015 RTW | [1.0.1](https://www.nuget.org/packages/Microsoft.CodeAnalysis.FxCopAnalyzers/1.0.1) | ## To install FxCop analyzers as a VSIX diff --git a/docs/deployment/building-clickonce-applications-from-the-command-line.md b/docs/deployment/building-clickonce-applications-from-the-command-line.md index 85d39873c3a..8b1878bfa37 100644 --- a/docs/deployment/building-clickonce-applications-from-the-command-line.md +++ b/docs/deployment/building-clickonce-applications-from-the-command-line.md @@ -35,21 +35,21 @@ In [!INCLUDE[vs_current_short](../code-quality/includes/vs_current_short_md.md)] #### To create and publish a ClickOnce project -1. Click **New Project** from the **File** menu. The **New Project** dialog box appears. +1. Open Visual Studio and create a new project. -2. Select **Windows Application** and name it `CmdLineDemo`. + Choose the **Windows Desktop Application** project template and name the project `CmdLineDemo`. -3. From the **Build** menu, click the **Publish** command. +1. From the **Build** menu, click the **Publish** command. This step ensures that the project is properly configured to produce a [!INCLUDE[ndptecclick](../deployment/includes/ndptecclick_md.md)] application deployment. The Publish Wizard appears. -4. In the Publish Wizard, click **Finish**. +1. In the Publish Wizard, click **Finish**. Visual Studio generates and displays the default Web page, called *Publish.htm*. -5. Save your project, and make note of the folder location in which it is stored. +1. Save your project, and make note of the folder location in which it is stored. The steps above create a [!INCLUDE[ndptecclick](../deployment/includes/ndptecclick_md.md)] project which has been published for the first time. Now you can reproduce the build outside of the IDE. diff --git a/docs/deployment/how-to-create-a-package-manifest.md b/docs/deployment/how-to-create-a-package-manifest.md index 884a97e34e4..256191f959d 100644 --- a/docs/deployment/how-to-create-a-package-manifest.md +++ b/docs/deployment/how-to-create-a-package-manifest.md @@ -22,7 +22,7 @@ ms.workload: # How to: Create a package manifest To deploy prerequisites for your application, you can use a bootstrapper package. A bootstrapper package contains a single product manifest file but a package manifest for each locale. Shared functionality across different localized versions should go into the product manifest. - For more information about package manifests, see [How to: Create a product manifest](../deployment/how-to-create-a-product-manifest.md). + For more information about product manifests, see [How to: Create a product manifest](../deployment/how-to-create-a-product-manifest.md). ## Create the package manifest diff --git a/docs/deployment/how-to-create-a-product-manifest.md b/docs/deployment/how-to-create-a-product-manifest.md index e2e13664076..ae1efec721e 100644 --- a/docs/deployment/how-to-create-a-product-manifest.md +++ b/docs/deployment/how-to-create-a-product-manifest.md @@ -22,7 +22,7 @@ ms.workload: # How to: Create a product manifest To deploy prerequisites for your application, you can create a bootstrapper package. A bootstrapper package contains a single product manifest file but a package manifest for each locale. The package manifest contains localization-specific aspects of your package. This includes strings, end-user license agreements, and the language packs. - For more information about product manifests, see [How to: Create a package manifest](../deployment/how-to-create-a-package-manifest.md). + For more information about package manifests, see [How to: Create a package manifest](../deployment/how-to-create-a-package-manifest.md). ## Create the product manifest diff --git a/docs/deployment/tutorial-import-publish-settings-azure.md b/docs/deployment/tutorial-import-publish-settings-azure.md index 9ec7e934775..4b343f34b2d 100644 --- a/docs/deployment/tutorial-import-publish-settings-azure.md +++ b/docs/deployment/tutorial-import-publish-settings-azure.md @@ -49,9 +49,9 @@ A publish settings file (*\*.publishsettings*) is different than a publishing pr ## Create a new ASP.NET project in Visual Studio -1. On the computer running Visual Studio, choose **File** > **New Project**. +1. On the computer running Visual Studio, create a new project. -1. Under **Visual C#** or **Visual Basic**, choose **Web**, and then in the middle pane choose either **ASP.NET Web Application (.NET Framework)** or (for C# only) **ASP.NET Core Web Application**, and then click **OK**. + Choose the correct template. In this example, choose either **ASP.NET Web Application (.NET Framework)** or (for C# only) **ASP.NET Core Web Application**, and then click **OK**. If you don't see the specified project templates, click the **Open Visual Studio Installer** link in the left pane of the **New Project** dialog box. The Visual Studio Installer launches. Install the **ASP.NET and web development** workload. diff --git a/docs/deployment/tutorial-import-publish-settings-iis.md b/docs/deployment/tutorial-import-publish-settings-iis.md index d3319c58ce7..b85243c6407 100644 --- a/docs/deployment/tutorial-import-publish-settings-iis.md +++ b/docs/deployment/tutorial-import-publish-settings-iis.md @@ -50,9 +50,9 @@ A publish settings file (*\*.publishsettings*) is different than a publishing pr ## Create a new ASP.NET project in Visual Studio -1. On the computer running Visual Studio, choose **File** > **New Project**. +1. On the computer running Visual Studio, create a new project. -1. Under **Visual C#** or **Visual Basic**, choose **Web**, and then in the middle pane choose either **ASP.NET Web Application (.NET Framework)** or (for C# only) **ASP.NET Core Web Application**, and then click **OK**. + Choose the correct template. In this example, choose either **ASP.NET Web Application (.NET Framework)** or (for C# only) **ASP.NET Core Web Application**, and then click **OK**. If you don't see the specified project templates, click the **Open Visual Studio Installer** link in the left pane of the **New Project** dialog box. The Visual Studio Installer launches. Install the **ASP.NET and web development** workload. diff --git a/docs/ide/csharp-developer-productivity.md b/docs/ide/csharp-developer-productivity.md new file mode 100644 index 00000000000..e170437cb3f --- /dev/null +++ b/docs/ide/csharp-developer-productivity.md @@ -0,0 +1,208 @@ +--- +title: Increase your productivity for .NET development +description: "An overview of navigation, code analysis, unit testing, and other features to help you write better .NET code faster." +author: kuhlenh +ms.author: gewarren +manager: jillfra +ms.date: 03/26/2019 +ms.topic: conceptual +helpviewer_keywords: + - "editor" +ms.workload: + - "dotnet" +--- +# Visual Studio productivity guide for C# developers + +Learn how Visual Studio makes developers more productive than ever. Take advantage of our performance and productivity improvements like navigation to decompiled assemblies, variable name suggestions as you type, a hierarchy-view in the **Test Explorer**, Go To All (**Ctrl**+**T**) to navigate to file/type/member/symbol declarations, an intelligent **Exception Helper**, code style configuration and enforcement, and many refactorings and code fixes. + +## I'm used to keyboard shortcuts from a different editor + +::: moniker range="vs-2017" + +**New in Visual Studio 2017 version 15.8** + +::: moniker-end + +If you're coming from another IDE or coding environment, you can change your keyboard scheme to *Visual Studio Code* or *ReSharper (Visual Studio)*: + +![Keyboard Schemes in Visual Studio](../ide/media/VS2017Guide-Keyboard.png) + +Some extensions also offer keyboard schemes: + +- [HotKeys for Visual Studio (ReSharper/IntelliJ)](https://marketplace.visualstudio.com/items?itemName=JustinClareburtMSFT.HotKeys) +- [Emacs Emulation](https://marketplace.visualstudio.com/items?itemName=JustinClareburtMSFT.EmacsEmulation) +- [VSVim](https://marketplace.visualstudio.com/items?itemName=JaredParMSFT.VsVim) + +The following are popular Visual Studio shortcuts: + +| Shortcut (All Profiles) | Command | Description | +|-|-|-| +| **Ctrl**+**T** | Go To All | Navigate to any file, type, member, or symbol declaration | +| **F12** (also **Ctrl**+**Click**) | Go To Definition | Navigate to where a symbol is defined | +| **Ctrl**+**F12** | Go To Implementation | Navigate from a base type or member to its various implementations | +| **Shift**+**F12** | Find All References | See all symbol or literal references | +| **Ctrl**+**.** (also **Alt**+**Enter** in C# Profile) | Quick Actions and Refactorings | See what code fixes, code generation actions, refactorings, or other quick actions are available at your cursor position or code selection | +| **Ctrl**+**D** | Duplicate line | Duplicates the line of code that the cursor is in (available in **Visual Studio 2017 version 15.6** and later) | +| **Shift**+**Alt**+**+**/**-** | Expand/Contract selection | Expands or contracts the current selection in the editor (available in **Visual Studio 2017 version 15.5** and later) | +| **Shift** + **Alt** + **.** | Insert Next Matching Caret | Adds a selection and caret at the next location that matches the current selection (available in **Visual Studio 2017 version 15.8** and later) | +| **Ctrl**+**Q** | Quick Launch | Search all Visual Studio settings | +| **F5** | Start Debugging | Start debugging your application | +| **Ctrl**+**F5** | Run without Debug | Run your application locally without debugging | +| **Ctrl**+**K**,**D** (Default Profile) or **Ctrl**+**E**,**D** (C# Profile) | [Format Document](code-styles-and-quick-actions.md#format-document-command) | Cleans up formatting violations in your file based on your newline, spacing, and indentation settings | +| **Ctrl**+**\\**,**Ctrl**+**E** (Default Profile) or **Ctrl**+**W**,**E** (C# Profile) | View Error List | See all errors in your document, project, or solution | +| **Alt** + **PgUp/PgDn** | Go to Next/Previous Issue | Jump to the previous/next error, warning, suggestion in your document (available in **Visual Studio 2017 version 15.8** and later) | + +> [!NOTE] +> Some extensions unbind the default Visual Studio keybindings. To use the above commands, restore your keybindings to Visual Studio's defaults by going to **Tools** > **Import and Export Settings** > **Reset all settings** or **Tools** > **Options** > **Keyboard** > **Reset**. + +For more information about keyboard shortcuts and commands, see [keyboard shortcuts](../ide/tips-and-tricks-for-visual-studio.md). + +## Navigate quickly to files or types + +Visual Studio 2017 has a feature called **Go To All** (**Ctrl**+**T**). **Go To All** enables you to quickly jump to any file, type, member, or symbol declaration. + +- Change the location of this search bar or turn off the live navigation preview by using the **gear** icon. +- Filter results using syntax such as `t mytype`. +- Scope your search to just the current document. +- Camelcase matching is supported. + +![Go To All in Visual Studio](../ide/media/VS2017Guide-go-to-all.png) + +## Enforce code style rules on a codebase + +You can use an *.editorconfig* file to codify coding conventions and have them travel with your source. + +::: moniker range="vs-2017" + +- You can install the [EditorConfig language services extension](https://aka.ms/editorconfig), which makes it easy to add and edit an *.editorconfig* file in Visual Studio. + +::: moniker-end + +::: moniker range=">=vs-2019" + +- Automatically create an *.editorconfig* file from your code style settings in **Tools** > **Options** > **Text Editor** > **C#** > **Code Style**. + + ![Generate .editorconfig file from settings in VS 2019](media/vs-2019/generate-editorconfig-file.png) + +::: moniker-end + +- Try out the [IntelliCode extension for Visual Studio](/visualstudio/intellicode/intellicode-visual-studio). This experimental extension infers your code styles from existing code, and then creates a non-empty *.editorconfig* file with your code style preferences already defined. + +- Check out the [.NET coding convention options](editorconfig-code-style-settings-reference.md) documentation. + +- See [this gist](https://gist.github.com/kuhlenh/5471666a7a2c57fea427e81cf0a41da8) for an example *.editorconfig* file. + +![Code style enforcement in Visual Studio](../ide/media/VSGuide_CodeStyle.png) + +## Refactorings and code fixes + +Visual Studio comes with a lot of refactorings, code generation actions, and code fixes. Red squiggles represent errors, green squiggles represent warnings, and three gray dots represent code suggestions. You can access code fixes by clicking the light bulb or screwdriver icon, or by pressing **Ctrl**+**.** or **Alt**+**Enter**. Each fix comes with a preview window that shows a live code diff of how the fix works. + +Popular quick fixes and refactorings include: + +- *Rename* +- *Extract Method* +- *Change Method Signature* +- *Generate Constructor* +- *Generate Method* +- *Move Type to File* +- *Add Null-Check* +- *Add Parameter* +- *Remove Unnecessary Usings* +- *Foreach Loop to LINQ Query or to LINQ method* +- *Pull Members Up* +- For more information, see [code generation features](code-generation-in-visual-studio.md) + +You can [install FxCop analyzers](../code-quality/install-fxcop-analyzers.md) to flag code issues. Or, write your own refactoring or code fix with [Roslyn analyzers](https://github.com/dotnet/roslyn/wiki/Getting-Started-Writing-a-Custom-Analyzer-&-Code-Fix). + +Several community members have written free extensions that add additional code inspections: + +- [Roslynator](https://marketplace.visualstudio.com/items?itemName=josefpihrt.Roslynator2017) +- [SonarLint for Visual Studio](https://marketplace.visualstudio.com/items?itemName=SonarSource.SonarLintforVisualStudio2017) +- [StyleCopAnalyzers](https://www.nuget.org/packages/stylecop.analyzers/) + +![Refactorings in Visual Studio](../ide/media/VSGuide_CodeAnalysis.png) + +## Find Usages, Go To Implementation, and Navigate To Decompiled Assemblies + +Visual Studio has many features to help you search and [navigate your code](../ide/navigating-code.md). + +| Feature | Shortcut | Details/Improvements | +|- | - | -| +| Find All References | **Shift**+**F12**| Results are colorized and can be grouped by project, definition, and reference type, such as read or write. You can also "lock" results. | +| Go To Implementation | **Ctrl**+**F12** | You can use Go To Definition on the `override` keyword to navigate to the overridden member | +| Go To Definition | **F12** or **Ctrl**+**Click**| Press **Ctrl** while clicking to navigate to definition | +| Peek Definition | **Alt**+**F12** | Inline view of a definition | +| Structure Visualizer | Gray, dotted-lines between braces | Hover to see your code structure | +| Navigation to decompiled assemblies | **F12** or **Ctrl**+**Click** | Navigate to external source (decompiled with ILSpy) by enabling the feature: **Tools** > **Options** > **Text Editor** > **C#** > **Advanced** > **Enable navigation to decompiled sources**. | + +![Go To All and Find All References](../ide/media/VSIDE_Productivity_Navigation.png) + +## Improved IntelliSense + +Download the [IntelliCode extension](https://marketplace.visualstudio.com/items?itemName=VisualStudioExptTeam.VSIntelliCode) to get [context-aware code completions](/visualstudio/intellicode/intellicode-visual-studio) instead of just an alphabetical list. You can also train a [custom IntelliSense model](/visualstudio/intellicode/custom-model-faq) based on your own domain-specific libraries. + +## Unit testing + +Starting in Visual Studio 2017, there are numerous improvements to the testing experience. You can test with the MSTest v1, MSTest v2, NUnit, or XUnit test frameworks. + +- **Test Explorer** test discovery is fast. +- Organize your tests in **Test Explorer** with *hierarchical sorting*. +- [Live unit testing](../test/live-unit-testing.md) continuously runs tests impacted by your code changes and updates inline editor icons to let you know the status of your tests. Include or exclude specific tests or test projects from your live test set. + +![Hierarchy view for Text Explorer in Visual Studio](../ide/media/VSGuide_Testing.png) + +## Debugging + +Some of Visual Studio's debugging capabilities include: + +::: moniker range=">=vs-2019" + +- The ability to search for a string within the **Watch**, **Autos**, and **Locals** windows. +- *Run to click*, which lets you hover next to a line of code, hit the green 'play' icon that appears, and run your program until it reaches that line. +- The **Exception Helper**, which puts the most important information at the top-level in the dialog, for example, which variable is `null` in a `NullReferenceException`. +- [Step back debugging](../debugger/view-historical-application-state.md), which lets you go back to previous breakpoints or steps and view the state of the application as it was in the past. +- [Snapshot debugging](/azure/application-insights/app-insights-snapshot-debugger), which lets you investigate the state of a live web application at the moment an exception was thrown (must be on Azure). + +::: moniker-end + +::: moniker range="vs-2017" + +- *Run to click*, which lets you hover next to a line of code, hit the green 'play' icon that appears, and run your program until it reaches that line. +- The **Exception Helper**, which puts the most important information at the top-level in the dialog, for example, which variable is `null` in a `NullReferenceException`. +- [Step back debugging](../debugger/view-historical-application-state.md), which lets you go back to previous breakpoints or steps and view the state of the application as it was in the past. +- [Snapshot debugging](/azure/application-insights/app-insights-snapshot-debugger), which lets you investigate the state of a live web application at the moment an exception was thrown (must be on Azure). + +::: moniker-end + +![Exception Helper in Visual Studio](../ide/media/VSGuide_Debugging.png) + +## Version control + +You can use git or TFVC to store and update your code in Visual Studio. + +::: moniker range=">=vs-2019" + +- Install the [Pull requests for Visual Studio](https://marketplace.visualstudio.com/items?itemName=vsideversioncontrolmsft.pr4vs) to create, review, check out, and run pull requests without leaving Visual Studio. + +::: moniker-end + +- Organize your local changes in [Team Explorer](reference/team-explorer-reference.md) and use the status bar to track pending commits and changes. + +- Set up continuous integration and delivery for your ASP.NET projects inside of Visual Studio with the [Continuous delivery tools for Visual Studio](https://marketplace.visualstudio.com/items?itemName=VSIDEDevOpsMSFT.ContinuousDeliveryToolsforVisualStudio) extension. + +![Source control in Visual Studio](../ide/media/VSIDE_Productivity_SourceControl.png) + +## What other features should I know about? + +Here is a list of editor and productivity features to make writing code more efficient. Some features may need to be enabled because they are off by default (they may index things on your machine, are controversial, or are currently experimental). + +| Feature | Details | How to enable | +|-|-|-| +| Locate File in Solution Explorer | Highlights the active file in **Solution Explorer** | **Tools** > **Options** > **Projects and Solutions** > **Track Active Item in Solution Explorer** | +| Add usings for types in reference assemblies and NuGet packages | Shows an error light bulb with a code fix to install a NuGet package for an unreferenced type | **Tools** > **Options** > **Text Editor** > **C#** > **Advanced** > **Suggest usings for types in reference assemblies** and **Suggest usings for types in NuGet packages** | +| Enable full solution analysis | See all errors in your solution in the **Error List** | **Tools** > **Options** > **Text Editor** > **C#** > **Advanced** > **Enable full solution analysis** | +| Enable navigation to decompiled sources | Allow Go To Definition on types/members from external sources and use the ILSpy decompiler to show method bodies | **Tools** > **Options** > **Text Editor** > **C#** > **Advanced** > **Enable navigation to decompiled sources** | +| Completion/Suggestion Mode | Changes the completion behavior in IntelliSense. Developers with IntelliJ backgrounds tend to use a non-default setting here. | **Menu** > **Edit** > **IntelliSense** > **Toggle Completion Mode** | +| [CodeLens](../ide/find-code-changes-and-other-history-with-codelens.md) | Displays code reference information and change history in the editor | **Tools** > **Options** > **Text Editor** > **All Languages** > **CodeLens** | +| [Code snippets](../ide/visual-csharp-code-snippets.md) | Help stub out common boilerplate code | Type a snippet name and press **Tab** twice. | \ No newline at end of file diff --git a/docs/ide/media/vs-2019/generate-editorconfig-file.png b/docs/ide/media/vs-2019/generate-editorconfig-file.png new file mode 100644 index 00000000000..0324fa4386d Binary files /dev/null and b/docs/ide/media/vs-2019/generate-editorconfig-file.png differ diff --git a/docs/ide/visual-studio-2017-for-dotnet-developers.md b/docs/ide/visual-studio-2017-for-dotnet-developers.md deleted file mode 100644 index dc6b678e2b7..00000000000 --- a/docs/ide/visual-studio-2017-for-dotnet-developers.md +++ /dev/null @@ -1,165 +0,0 @@ ---- -title: Increase your productivity for .NET development -description: "An overview of navigation, code analysis, unit testing, and other features to help you write better .NET code faster." -author: kuhlenh -ms.author: gewarren -manager: jillfra -ms.date: 06/14/2018 -ms.topic: conceptual -helpviewer_keywords: - - "editor" -ms.workload: - - "dotnet" ---- -# Visual Studio 2017 C# productivity guide - -Learn how [Visual Studio 2017](https://visualstudio.microsoft.com/downloads/?utm_medium=microsoft&utm_source=docs.microsoft.com&utm_campaign=inline+link&utm_content=download+vs2017) makes developers more productive than ever. Take advantage of our performance and productivity improvements like navigation to decompiled assemblies, variable name suggestions as you type, a hierarchy-view in the **Test Explorer**, Go To All (**Ctrl**+**T**) to navigate to file/type/member/symbol declarations, an intelligent **Exception Helper**, code style configuration and enforcement, and many refactorings and code fixes. - -## I'm used to my keyboard shortcuts from a different extension/editor/IDE - -**New in Visual Studio 2017 version 15.8** If you're coming from another IDE or coding environment, you can change your keyboard scheme to *Visual Studio Code* or *ReSharper (Visual Studio)*: - -![Keyboard Schemes in Visual Studio](../ide/media/VS2017Guide-Keyboard.png) - -Some extensions also offer keyboard schemes: - -- [HotKeys for Visual Studio (ReSharper/IntelliJ)](https://marketplace.visualstudio.com/items?itemName=JustinClareburtMSFT.HotKeys) -- [Emacs Emulation](https://marketplace.visualstudio.com/items?itemName=JustinClareburtMSFT.EmacsEmulation) -- [VSVim](https://marketplace.visualstudio.com/items?itemName=JaredParMSFT.VsVim) - -The following are popular Visual Studio shortcuts: - -| Shortcut (All Profiles) | Command | Description | -|-|-|-| -| **Ctrl**+**T** | Go To All | Navigate to any file/type/member/symbol declaration | -| **F12** (also **Ctrl**+**Click**) | Go To Definition | Navigate to where a symbol is defined | -| **Ctrl**+**F12** | Go To Implementation | Navigate from a base type or member to its various implementations | -| **Shift**+**F12** | Find All References | See all symbol or literal references | -| **Ctrl**+**.** (also **Alt**+**Enter** in C# Profile) | Quick Actions and Refactorings | See what code fixes, code generation actions, refactorings, or other quick actions are available at your cursor position or code selection | -| **Ctrl**+**D** | Duplicate line | Duplicates the line of code that the cursor is in (available in **Visual Studio 2017 version 15.6** and later) | -| **Shift**+**Alt**+**+**/**-** | Expand/Contract selection | Expands or contracts the current selection in the editor (available in **Visual Studio 2017 version 15.5** and later) | -| **Shift** + **Alt** + **.** | Insert Next Matching Caret | Adds a selection and caret at the next location that matches the current selection (available in **Visual Studio 2017 version 15.8** and later) | -| **Ctrl**+**Q** | Quick Launch | Search all Visual Studio settings | -| **F5** | Start Debugging | Start debugging your application | -| **Ctrl**+**F5** | Run without Debug | Run your application locally without debugging | -| **Ctrl**+**K**,**D** (Default Profile) or **Ctrl**+**E**,**D** (C# Profile) | [Format Document](code-styles-and-quick-actions.md#format-document-command) | Cleans up formatting violations in your file based on your newline, spacing, and indentation settings | -| **Ctrl**+**\\**,**Ctrl**+**E** (Default Profile) or **Ctrl**+**W**,**E** (C# Profile) | View Error List | See all errors in your document, project, or solution | -| **Alt** + **PgUp/PgDn** | Go to Next/Previous Issue | Jump to the previous/next error, warning, suggestion in your document (available in **Visual Studio 2017 version 15.8** and later) | - -> [!NOTE] -> Some extensions unbind the default Visual Studio keybindings. To use the above commands, restore your keybindings to Visual Studio's defaults by going to **Tools** > **Import and Export Settings** > **Reset all settings** or **Tools** > **Options** > **Keyboard** > **Reset**. - -Learn more keyboard shortcuts and commands in Visual Studio in [our documentation](../ide/tips-and-tricks-for-visual-studio.md). - -## I need a way to quickly navigate to files or types - -Visual Studio 2017 has a feature called **Go To All** (**Ctrl**+**T**). **Go To All** enables you to quickly jump to any file, type, member, or symbol declaration. - -- Change the location of this search bar or turn off the 'live navigation preview' with the **gear** icon. -- Filter results using our query syntax (for example, "t mytype"). You can also scope your search to just the current document. -- camelCase matching is supported! - -![Go To All in Visual Studio](../ide/media/VS2017Guide-go-to-all.png) - -## My team enforces code style rules on our codebase - -You can use an *.editorconfig* file to codify coding conventions and have them travel with your source. - -- You can install the [EditorConfig language services extension](https://aka.ms/editorconfig), which makes it easy to add and edit an *.editorconfig* file in Visual Studio. -- Try out the [IntelliCode extension for Visual Studio](/visualstudio/intellicode/intellicode-visual-studio). This experimental extension infers your code styles from existing code, and then creates a non-empty *.editorconfig* file with your code style preferences already defined. -- Check out the [.NET coding convention options](https://aka.ms/editorconfigDocs) documentation. -- See [this gist](https://gist.github.com/kuhlenh/5471666a7a2c57fea427e81cf0a41da8) for an example *.editorconfig* file. - -![Code style enforcement in Visual Studio](../ide/media/VSGuide_CodeStyle.png) - -## I need more refactorings and code fixes - -Visual Studio 2017 comes with a lot of refactorings, code generation actions, and code fixes. Red squiggles represent errors, green squiggles represent warnings, and three gray dots represent code suggestions. You can access code fixes by clicking the light bulb or screwdriver icon, or by pressing **Ctrl**+**.** or **Alt**+**Enter**. Each fix comes with a preview window that shows a live code diff of how the fix works. - -- Popular quick fixes and refactorings include: - - *Rename* - - *Extract Method* - - *Change Method Signature* - - *Generate Constructor* - - *Generate Method* - - *Move Type to File* - - *Add Null-Check* - - *Add Parameter* - - *Remove Unnecessary Usings* - - *Foreach Loop to LINQ Query or to LINQ method* - - *Pull Members Up Refactoring with Dialog Options* - - See more in our [documentation](https://aka.ms/refactorings) -- Write your own refactoring or code fix with [Roslyn analyzers](https://github.com/dotnet/roslyn/wiki/Getting-Started-Writing-a-Custom-Analyzer-&-Code-Fix). -- Several community members have written free extensions which add additional code inspections: - - [FXCop Analyzers](https://www.nuget.org/packages/Microsoft.CodeAnalysis.FxCopAnalyzers/) - - [Roslynator](https://marketplace.visualstudio.com/items?itemName=josefpihrt.Roslynator2017) - - [SonarLint for Visual Studio](https://marketplace.visualstudio.com/items?itemName=SonarSource.SonarLintforVisualStudio2017) - - [StyleCopAnalyzers](https://www.nuget.org/packages/stylecop.analyzers/) - -![Refactorings in Visual Studio](../ide/media/VSGuide_CodeAnalysis.png) - -## I need Find Usages, Go To Implementation, Navigate To Decompiled Assemblies - -Visual Studio 2017 has many features to help you search and navigate your codebase. Read more about [Code navigation features](../ide/navigating-code.md) - -| Feature | Shortcut | Details/Improvements | -|- | - | -| -| Find All References | **Shift**+**F12**| Results are colorized and can be grouped by project, definition, and reference type such as read or write. You can also 'lock' results. | -| Go To Implementation | **Ctrl**+**F12** | You can use Go To Definition on the `override` keyword to navigate to the overridden member | -| Go To Definition | **F12** or **Ctrl**+**Click**| You can hold **Ctrl** while clicking to navgiate to definition | -| Peek Definition | **Alt**+**F12** | Inline view of a definition | -| Structure Visualizer | Gray, dotted-lines between braces | Hover to see your code structure | -| Navigation to decompiled assemblies | **F12** or **Ctrl**+**Click** | Navigate to external source (decompiled with ILSpy) by enabling the feature: **Tools** > **Options** > **Text Editor** > **C#** > **Advanced** > **Enable navigation to decompiled sources**. | - -![Go To All and Find All References](../ide/media/VSIDE_Productivity_Navigation.png) - -## I want to run and see my unit tests - -We made a lot of improvements to the testing experience in Visual Studio 2017. Use either of our unit testing experiences with the MSTest v1, MSTest v2, NUnit, or XUnit test frameworks. - -- **Test Explorer** test discovery is fast in version 15.6 (for best results, upgrade to the latest version of your test adapter). -- Organize your tests in Test Explorer with our new *hierarchical sorting* in version 15.6. -- [Live unit testing](../test/live-unit-testing.md) continuously runs tests impacted by your code changes and updates inline editor icons to let you know the status of your tests. Include or exclude specific tests or test projects from your *Live Test Set*. - -![Hierarchy view for Text Explorer in Visual Studio](../ide/media/VSGuide_Testing.png) - -## I want to debug my code - -We've added a ton of new debugging capabilities in Visual Studio 2017: - -- *Run to click* allows you to hover next to a line of code, hit the green 'play' icon that appears, and run your program until it reaches that line. -- The new **Exception Helper** puts the most important information, like which variable is 'null' in a NullReferenceException, at the top-level in the dialog. -- [Step Back](../debugger/view-historical-application-state.md) debugging enables you to go back to previous breakpoints or steps and view the state of the application as it was in the past. -- [Snapshot debugging](/azure/application-insights/app-insights-snapshot-debugger) lets you investigate the state of a live web application at the moment an exception was thrown (must be on Azure). - -![New Exception Helper in Visual Studio 2017](../ide/media/VSGuide_Debugging.png) - -## I want to use version control with my projects - -You can use git or TFVC to store and update your code in Visual Studio. - -- Organize your local changes with **Team Explorer** and use the status bar to track pending commits and changes. -- Set up continuous integration and delivery for your projects inside of Visual Studio with our [Continuous delivery tools for Visual Studio](https://marketplace.visualstudio.com/items?itemName=VSIDEDevOpsMSFT.ContinuousDeliveryToolsforVisualStudio) extension and adopt the agile developer workflow. - -![Source control in Visual Studio](../ide/media/VSIDE_Productivity_SourceControl.png) - -## What other features do I need to know about? - -Here is a list of editor and productivity features to make writing code more efficient. Some features may need to be enabled because they are off-by-default (they may index things on your machine, are controversial, or are currently experimental). - -| Feature | Details | How to enable | -|-|-|-| -| Locate File in Solution Explorer | Highlights the active file in **Solution Explorer** | **Tools** > **Options** > **Projects and Solutions** > **Track Active Item in Solution Explorer** | -| Add usings for types in reference assemblies and NuGet packages | Shows an error light bulb with a code fix to install a NuGet package for an unreferenced type | **Tools** > **Options** > **Text Editor** > **C#** > **Advanced** > **Suggest usings for types in reference assemblies** and **Suggest usings for types in NuGet packages** | -| Enable full solution analysis | See all errors in your solution in the **Error List** | **Tools** > **Options** > **Text Editor** > **C#** > **Advanced** > **Enable full solution analysis** | -| Enable navigation to decompiled sources | Allow Go To Definition on types/members from external sources and use the ILSpy decompiler to show method bodies | **Tools** > **Options** > **Text Editor** > **C#** > **Advanced** > **Enable navigation to decompiled sources** | -| Completion/Suggestion Mode | Changes the completion behavior in IntelliSense--developers with IntelliJ backgrounds tend to change the setting here from the default | **Menu** > **Edit** > **IntelliSense** > **Toggle Completion Mode** | -| [CodeLens](../ide/find-code-changes-and-other-history-with-codelens.md) | Displays code reference information and change history in the editor | **Tools** > **Options** > **Text Editor** > **All Languages** > **CodeLens** | -| [Code snippets](../ide/visual-csharp-code-snippets.md) | Help stub out common boilerplate | Type a snippet name and press **Tab** twice. | - -## Missing a feature that makes you productive or experiencing poor performance? - -There are several ways to leave us feedback: - -- .NET feature requests can be filed on our [GitHub repo](https://github.com/dotnet/roslyn/issues). -- Visual Studio feature requests, bugs, and performance issues can be filed by using the **Send Feedback** icon at the top-right of your Visual Studio window. diff --git a/docs/ide/whats-new-visual-studio-2019.md b/docs/ide/whats-new-visual-studio-2019.md index c84b1d5486c..90ad30e01bd 100644 --- a/docs/ide/whats-new-visual-studio-2019.md +++ b/docs/ide/whats-new-visual-studio-2019.md @@ -10,11 +10,11 @@ ms.assetid: 00bec66b-bcee-46f5-91d9-f73a2b469744 author: TerryGLee ms.author: tglee manager: jillfra -ms.prod: visual-studio-dev16 +ms.prod: visual-studio-windows +ms.technology: vs-ide-general ms.topic: conceptual ms.workload: - "multiple" -monikerRange: vs-2019 --- # What's new in Visual Studio 2019 @@ -113,7 +113,7 @@ For more information, see the following pages: If you use monitors that are configured with different display scale factors, or connect remotely to a machine with display scale factors that are different from your main device, you might notice that Visual Studio looks blurry or renders at the wrong scale. -With the release of Visual Studio 2019, we are taking the first steps towards making Visual Studio a per-monitor aware (PMA) application. We're laying the foundational work that will allow Visual Studio to render correctly regardless of what display scale factors you use. +With the release of Visual Studio 2019, we are taking the first steps towards making Visual Studio a per-monitor aware (PMA) application. We're laying the foundational work that will allow Visual Studio to render correctly regardless of the display scale factors you use. ![Per-monitor aware (PMA) rendering in Visual Studio 2019](media/per-monitor-aware-dpi-scaling.png) @@ -121,7 +121,7 @@ For more information, see the [Better multi-monitor experience with Visual Studi ### Visual Studio IntelliCode -[Visual Studio IntelliCode](/visualstudio/intellicode/) is an extension that enhances your software development efforts by using artifical intelligence (AI). IntelliCode trains across 2,000 open-source projects on GitHub—each with over 100 stars—to generate its recommendations. +[Visual Studio IntelliCode](/visualstudio/intellicode/) is an extension that enhances your software development efforts by using artificial intelligence (AI). IntelliCode trains across 2,000 open-source projects on GitHub—each with over 100 stars—to generate its recommendations. Here are a few ways that Visual Studio IntelliCode can help enhance your productivity: diff --git a/docs/javascript/create-application-with-vuejs.md b/docs/javascript/create-application-with-vuejs.md index d03aa0f9f2d..5734457508e 100644 --- a/docs/javascript/create-application-with-vuejs.md +++ b/docs/javascript/create-application-with-vuejs.md @@ -33,7 +33,7 @@ The following new features support Vue.js application development in Visual Stud If you haven't already installed Visual Studio, go to the [Visual Studio downloads](https://www.visualstudio.com/downloads/?utm_medium=microsoft&utm_source=docs.microsoft.com&utm_campaign=button+cta&utm_content=download+vs2017) page to install it for free. - If you need to install the workload but already have Visual Studio, click the **Open Visual Studio Installer** link in the left pane of the **New Project** dialog box (select **File** > **New** > **Project**). The Visual Studio Installer launches. Choose the **Node.js development** workload, then choose **Modify**. + If you need to install the workload but already have Visual Studio, go to **Tools** > **Get Tools and Features...**, which opens the Visual Studio Installer. Choose the **Node.js development** workload, then choose **Modify**. * To create the ASP.NET Core project, you must have the ASP.NET and web development and .NET Core cross-platform development workloads installed. @@ -58,9 +58,14 @@ For this example, you use an empty ASP.NET Core Application (C#). However, you c #### Create an Empty project -1. Open Visual Studio and choose **File** > **New** > **Project** from the main menu. +1. Open Visual Studio and create a new project. -1. Under **Visual C#** > **Web**, choose **ASP.NET Core Web Application**, and then click **OK**. + ::: moniker range=">=vs-2019" + Type **Ctrl + Q** to open the search box, type **asp.net**, then choose **Create a new ASP.NET Core Web Application**. In the dialog box that appears, choose **Create**. + ::: moniker-end + ::: moniker range="vs-2017" + From the top menu bar, choose **File** > **New** > **Project**. In the left pane of the **New Project** dialog box, expand **Visual C#**, then choose **Web**. In the middle pane, choose **ASP.NET Core Web Application**, then choose **OK**. + ::: moniker-end If you don't see the **ASP.NET Core Web Application** project template, you must install the **ASP.NET and web development** workload and the .**NET Core** development workload first. To install the workload(s), click the **Open Visual Studio Installer** link in the left pane of the **New Project** dialog box (select **File** > **New** > **Project**). The Visual Studio Installer launches. Select the required workloads. diff --git a/docs/msbuild/project-element-msbuild.md b/docs/msbuild/project-element-msbuild.md index 3d6dd258732..797574fee6f 100644 --- a/docs/msbuild/project-element-msbuild.md +++ b/docs/msbuild/project-element-msbuild.md @@ -55,7 +55,7 @@ Required root element of an [!INCLUDE[vstecmsbuild](../extensibility/internals/i | `Sdk` | Optional attribute.

The SDK name and optional version to use to create implicit Import statements that are added to the .proj file. If no version is specified, MSBuild will attempt to resolve a default version. For example, `` or ``. | | `ToolsVersion` | Optional attribute.

The version of the Toolset MSBuild uses to determine the values for $(MSBuildBinPath) and $(MSBuildToolsPath). | | `TreatAsLocalProperty` | Optional attribute.

Property names that won't be considered to be global. This attribute prevents specific command-line properties from overriding property values that are set in a project or targets file and all subsequent imports. Multiple properties are semi-colon (;) delimited.

Normally, global properties override property values that are set in the project or targets file. If the property is listed in the `TreatAsLocalProperty` value, the global property value doesn't override property values that are set in that file and any subsequent imports. For more information, see [How to: Build the same source files with different options](../msbuild/how-to-build-the-same-source-files-with-different-options.md). **Note:** You set global properties at a command prompt by using the **-property** (or **-p**) switch. You can also set or modify global properties for child projects in a multi-project build by using the `Properties` attribute of the MSBuild task. For more information, see [MSBuild task](../msbuild/msbuild-task.md). | -| `Xmlns` | Optional attribute.

When specified, the `xmlns` attribute must have the value of `http://schemas.microsoft.com/developer/msbuild/2003`. | +| `xmlns` | Optional attribute.

When specified, the `xmlns` attribute must have the value of `http://schemas.microsoft.com/developer/msbuild/2003`. | ### Child elements diff --git a/docs/msbuild/walkthrough-using-msbuild.md b/docs/msbuild/walkthrough-using-msbuild.md index 249d5bfc2af..eab19c15a59 100644 --- a/docs/msbuild/walkthrough-using-msbuild.md +++ b/docs/msbuild/walkthrough-using-msbuild.md @@ -1,6 +1,6 @@ --- title: "Walkthrough: Using MSBuild | Microsoft Docs" -ms.date: "12/18/2018" +ms.date: "03/20/2019" ms.topic: "conceptual" helpviewer_keywords: - "MSBuild, tutorial" @@ -12,33 +12,42 @@ ms.workload: - "multiple" --- # Walkthrough: Use MSBuild + MSBuild is the build platform for Microsoft and Visual Studio. This walkthrough introduces you to the building blocks of MSBuild and shows you how to write, manipulate, and debug MSBuild projects. You will learn about: -- Creating and manipulating a project file. +- Creating and manipulating a project file. -- How to use build properties +- How to use build properties -- How to use build items. +- How to use build items. You can run MSBuild from Visual Studio, or from the **Command Window**. In this walkthrough, you create an MSBuild project file using Visual Studio. You edit the project file in Visual Studio, and use the **Command Window** to build the project and examine the results. ## Create an MSBuild project + The Visual Studio project system is based on MSBuild. This makes it easy to create a new project file using Visual Studio. In this section, you create a Visual C# project file. You can choose to create a Visual Basic project file instead. In the context of this walkthrough, the difference between the two project files is minor. -#### To create a project file +**To create a project file** + +1. Open Visual Studio and create a project. -1. Open Visual Studio. + ::: moniker range=">=vs-2019" + Type **Ctrl + Q** to open the search box, type **winforms**, then choose **Create a new Windows Forms App (.NET Framework)**. In the dialog box that appears, choose **Create**. -2. On the **File** menu, point to **New**, and then click **Project**. + In the **Name** box, type `BuildApp`. Enter a **Location** for the solution, for example, *D:\\*. Accept the defaults for **Solution**, **Solution Name** (**BuildApp**), and **Framework**. + ::: moniker-end + ::: moniker range="vs-2017" + From the top menu bar, choose **File** > **New** > **Project**. In the left pane of the **New Project** dialog box, expand **Visual C#** > **Windows Desktop**, then choose **Windows Forms App (.NET Framework)**. Then choose **OK**. -3. In the **New Project** dialog box, select the **Visual C#** project type, and then select the **Windows Forms Application** template. In the **Name** box, type `BuildApp`. Enter a **Location** for the solution, for example, *D:\\*. Accept the defaults for **Create directory for solution** (selected), **Add to Source Control** (not selected), and **Solution Name** (**BuildApp**). + In the **Name** box, type `BuildApp`. Enter a **Location** for the solution, for example, *D:\\*. Accept the defaults for **Create directory for solution** (selected), **Add to Source Control** (not selected), and **Solution Name** (**BuildApp**). + ::: moniker-end -4. Click **OK** to create the project file. +1. Click **OK** or **Create** to create the project file. ## Examine the project file In the previous section, you used Visual Studio to create a Visual C# project file. The project file is represented in **Solution Explorer** by the project node named BuildApp. You can use the Visual Studio code editor to examine the project file. -#### To examine the project file +**To examine the project file** 1. In **Solution Explorer**, click the project node **BuildApp**. @@ -51,6 +60,7 @@ You can run MSBuild from Visual Studio, or from the **Command Window**. In this The project file appears in the code editor. ## Targets and tasks + Project files are XML-formatted files with the root node [Project](../msbuild/project-element-msbuild.md). ```xml @@ -62,9 +72,9 @@ You must specify the xmlns namespace in the Project element. If `ToolsVersion` i The work of building an application is done with [Target](../msbuild/target-element-msbuild.md) and [Task](../msbuild/task-element-msbuild.md) elements. -- A task is the smallest unit of work, in other words, the "atom" of a build. Tasks are independent executable components which may have inputs and outputs. There are no tasks currently referenced or defined in the project file. You add tasks to the project file in the sections below. For more information, see the [Tasks](../msbuild/msbuild-tasks.md) topic. +- A task is the smallest unit of work, in other words, the "atom" of a build. Tasks are independent executable components which may have inputs and outputs. There are no tasks currently referenced or defined in the project file. You add tasks to the project file in the sections below. For more information, see the [Tasks](../msbuild/msbuild-tasks.md) topic. -- A target is a named sequence of tasks. For more information, see the [Targets](../msbuild/msbuild-targets.md) topic. +- A target is a named sequence of tasks. For more information, see the [Targets](../msbuild/msbuild-targets.md) topic. The default target is not defined in the project file. Instead, it is specified in imported projects. The [Import](../msbuild/import-element-msbuild.md) element specifies imported projects. For example, in a C# project, the default target is imported from the file *Microsoft.CSharp.targets*. @@ -80,11 +90,12 @@ Imported files are effectively inserted into the project file wherever they are MSBuild keeps track of the targets of a build, and guarantees that each target is built no more than once. ## Add a target and a task + Add a target to the project file. Add a task to the target that prints out a message. -#### To add a target and a task +**To add a target and a task** -1. Add these lines to the project file, just after the Import statement: +1. Add these lines to the project file, just after the Import statement: ```xml @@ -93,7 +104,7 @@ MSBuild keeps track of the targets of a build, and guarantees that each target i This creates a target named HelloWorld. Notice that you have IntelliSense support while editing the project file. -2. Add lines to the HelloWorld target, so that the resulting section looks like this: +2. Add lines to the HelloWorld target, so that the resulting section looks like this: ```xml @@ -101,19 +112,20 @@ MSBuild keeps track of the targets of a build, and guarantees that each target i ``` -3. Save the project file. +3. Save the project file. The Message task is one of the many tasks that ships with MSBuild. For a complete list of available tasks and usage information, see [Task reference](../msbuild/msbuild-task-reference.md). The Message task takes the string value of the Text attribute as input and displays it on the output device. The HelloWorld target executes the Message task twice: first to display "Hello", and then to display "World". ## Build the target + Run MSBuild from the **Developer Command Prompt** for Visual Studio to build the HelloWorld target defined above. Use the -target or -t command line switch to select the target. > [!NOTE] > We will refer to the **Developer Command Prompt** as the **Command Window** in the sections below. -#### To build the target +**To build the target** 1. Open the **Command Window**. @@ -142,6 +154,7 @@ The Message task takes the string value of the Text attribute as input and displ By alternating between the code editor and the command window, you can change the project file and quickly see the results. ## Build properties + Build properties are name-value pairs that guide the build. Several build properties are already defined at the top of the project file: ```xml @@ -180,9 +193,9 @@ $(PropertyName) Use this syntax to examine some of the properties in the project file. -#### To examine a property value +**To examine a property value** -1. From the code editor, replace the HelloWorld target with this code: +1. From the code editor, replace the HelloWorld target with this code: ```xml @@ -191,15 +204,15 @@ $(PropertyName) ``` -2. Save the project file. +2. Save the project file. -3. From the **Command Window**, enter and execute this line: +3. From the **Command Window**, enter and execute this line: ```cmd msbuild buildapp.csproj -t:HelloWorld ``` -4. Examine the output. You should see these two lines (your .NET Framework version may differ): +4. Examine the output. You should see these two lines (your .NET Framework version may differ): ``` Configuration is Debug @@ -210,6 +223,7 @@ $(PropertyName) > If you don't see these lines then you probably forgot to save the project file in the code editor. Save the file and try again. ### Conditional properties + Many properties like Configuration are defined conditionally, that is, the Condition attribute appears in the property element. Conditional properties are defined or redefined only if the condition evaluates to "true". Note that undefined properties are given the default value of an empty string. For example, ```xml @@ -221,15 +235,18 @@ $(PropertyName) Almost all MSBuild elements can have a Condition attribute. For more discussion about using the Condition attribute, see [Conditions](../msbuild/msbuild-conditions.md). ### Reserved properties + MSBuild reserves some property names to store information about the project file and the MSBuild binaries. MSBuildToolsPath is an example of a reserved property. Reserved properties are referenced with the $ notation like any other property. For more information, see [How to: Reference the name or location of the project file](../msbuild/how-to-reference-the-name-or-location-of-the-project-file.md) and [MSBuild reserved and well-known properties](../msbuild/msbuild-reserved-and-well-known-properties.md). ### Environment variables + You can reference environment variables in project files the same way as build properties. For example, to use the PATH environment variable in your project file, use $(Path). If the project contains a property definition that has the same name as an environment variable, the property in the project overrides the value of the environment variable. For more information, see [How to: Use environment variables in a build](../msbuild/how-to-use-environment-variables-in-a-build.md). ## Set properties from the command line + Properties may be defined on the command line using the -property or -p command line switch. Property values received from the command line override property values set in the project file and environment variables. -#### To set a property value from the command line +**To set a property value from the command line** 1. From the **Command Window**, enter and execute this line: @@ -246,27 +263,28 @@ $(PropertyName) MSBuild creates the Configuration property and gives it the value "Release". ## Special characters + Certain characters have special meaning in MSBuild project files. Examples of these characters include semicolons (;) and asterisks (*). In order to use these special characters as literals in a project file, they must be specified by using the syntax %\, where \ represents the ASCII hexadecimal value of the character. Change the Message task to show the value of the Configuration property with special characters to make it more readable. -#### To use special characters in the Message task +**To use special characters in the Message task** -1. From the code editor, replace both Message tasks with this line: +1. From the code editor, replace both Message tasks with this line: ```xml ``` -2. Save the project file. +2. Save the project file. -3. From the **Command Window**, enter and execute this line: +3. From the **Command Window**, enter and execute this line: ```cmd msbuild buildapp.csproj -t:HelloWorld ``` -4. Examine the output. You should see this line: +4. Examine the output. You should see this line: ``` $(Configuration) is "Debug" @@ -275,6 +293,7 @@ MSBuild creates the Configuration property and gives it the value "Release". For more information, see [MSBuild special characters](../msbuild/msbuild-special-characters.md). ## Build items + An item is a piece of information, typically a file name, that is used as an input to the build system. For example, a collection of items representing source files might be passed to a task named Compile to compile them into an assembly. All items are child elements of ItemGroup elements. The item name is the name of the child element, and the item value is the value of the Include attribute of the child element. The values of items with the same name are collected into item types of that name. For example, @@ -302,6 +321,7 @@ For more information, see [Items](../msbuild/msbuild-items.md). > File paths are relative to the folder containing the MSBuild project file. ## Examine item type values + To get the values of an item type, use the following syntax, where ItemType is the name of the item type: ```xml @@ -310,9 +330,9 @@ For more information, see [Items](../msbuild/msbuild-items.md). Use this syntax to examine the Compile item type in the project file. -#### To examine item type values +**To examine item type values** -1. From the code editor, replace the HelloWorld target task with this code: +1. From the code editor, replace the HelloWorld target task with this code: ```xml @@ -320,15 +340,15 @@ For more information, see [Items](../msbuild/msbuild-items.md). ``` -2. Save the project file. +2. Save the project file. -3. From the **Command Window**, enter and execute this line: +3. From the **Command Window**, enter and execute this line: ```cmd msbuild buildapp.csproj -t:HelloWorld ``` -4. Examine the output. You should see this long line: +4. Examine the output. You should see this long line: ``` Compile item type contains Form1.cs;Form1.Designer.cs;Program.cs;Properties\AssemblyInfo.cs;Properties\Resources.Designer.cs;Properties\Settings.Designer.cs @@ -344,7 +364,7 @@ To change the separator of an item type, use the following syntax, where ItemTyp Change the Message task to use carriage returns and line feeds (%0A%0D) to display Compile items one per line. -#### To display item type values one per line +**To display item type values one per line** 1. From the code editor, replace the Message task with this line: @@ -416,15 +436,15 @@ The Exclude attribute only affects the items added by the Include attribute in t would not exclude the file *Form1.cs*, which was added in the preceding item element. -##### To include and exclude items +**To include and exclude items** -1. From the code editor, replace the Message task with this line: +1. From the code editor, replace the Message task with this line: ```xml ``` -2. Add this item group just after the Import element: +2. Add this item group just after the Import element: ```xml @@ -432,15 +452,15 @@ would not exclude the file *Form1.cs*, which was added in the preceding item ele ``` -3. Save the project file. +3. Save the project file. -4. From the **Command Window**, enter and execute this line: +4. From the **Command Window**, enter and execute this line: ```cmd msbuild buildapp.csproj -t:HelloWorld ``` -5. Examine the output. You should see this line: +5. Examine the output. You should see this line: ``` XFiles item type contains Form1.cs;Program.cs;Properties/Resources.resx @@ -465,23 +485,23 @@ would not exclude the file *Form1.cs*, which was added in the preceding item ele %(ItemType.MetaDataName) ``` -#### To examine item metadata +**To examine item metadata** -1. From the code editor, replace the Message task with this line: +1. From the code editor, replace the Message task with this line: ```xml ``` -2. Save the project file. +2. Save the project file. -3. From the **Command Window**, enter and execute this line: +3. From the **Command Window**, enter and execute this line: ```cmd msbuild buildapp.csproj -t:HelloWorld ``` -4. Examine the output. You should see these lines: +4. Examine the output. You should see these lines: ``` Compile.DependentUpon: @@ -493,25 +513,26 @@ would not exclude the file *Form1.cs*, which was added in the preceding item ele Notice how the phrase "Compile.DependentUpon" appears several times. The use of metadata with this syntax within a target causes "batching". Batching means that the tasks within the target are executed once for each unique metadata value. This is the MSBuild script equivalent of the common "for loop" programming construct. For more information, see [Batching](../msbuild/msbuild-batching.md). ### Well-known metadata + Whenever an item is added to an item list, that item is assigned some well-known metadata. For example, %(Filename) returns the file name of any item. For a complete list of well-known metadata, see [Well-known item metadata](../msbuild/msbuild-well-known-item-metadata.md). -##### To examine well-known metadata +**To examine well-known metadata** -1. From the code editor, replace the Message task with this line: +1. From the code editor, replace the Message task with this line: ```xml ``` -2. Save the project file. +2. Save the project file. -3. From the **Command Window**, enter and execute this line: +3. From the **Command Window**, enter and execute this line: ```cmd msbuild buildapp.csproj -t:HelloWorld ``` -4. Examine the output. You should see these lines: +4. Examine the output. You should see these lines: ``` Compile Filename: Form1 @@ -525,6 +546,7 @@ Notice how the phrase "Compile.DependentUpon" appears several times. The use of By comparing the two examples above, you can see that while not every item in the Compile item type has DependentUpon metadata, all items have the well-known Filename metadata. ### Metadata transformations + Item lists can be transformed into new item lists. To transform an item list, use the following syntax, where \ is the name of the item type and \ is the name of the metadata: ```xml @@ -533,23 +555,23 @@ By comparing the two examples above, you can see that while not every item in th For example, an item list of source files can be transformed into a collection of object files using an expression like `@(SourceFiles -> '%(Filename).obj')`. For more information, see [Transforms](../msbuild/msbuild-transforms.md). -##### To transform items using metadata +**To transform items using metadata** -1. From the code editor, replace the Message task with this line: +1. From the code editor, replace the Message task with this line: ```xml ``` -2. Save the project file. +2. Save the project file. -3. From the **Command Window**, enter and execute this line: +3. From the **Command Window**, enter and execute this line: ```cmd msbuild buildapp.csproj -t:HelloWorld ``` -4. Examine the output. You should see this line: +4. Examine the output. You should see this line: ``` Backup files: Form1.bak;Form1.Designer.bak;Program.bak;AssemblyInfo.bak;Resources.Designer.bak;Settings.Designer.bak @@ -558,6 +580,7 @@ For example, an item list of source files can be transformed into a collection o Notice that metadata expressed in this syntax does not cause batching. ## What's next? + To learn how to create a simple project file one step at a time, try out the [Walkthrough: Creating an MSBuild project file from scratch](../msbuild/walkthrough-creating-an-msbuild-project-file-from-scratch.md). ## See also diff --git a/docs/test/unit-test-basics.md b/docs/test/unit-test-basics.md index e0b091580f0..4bb27a03737 100644 --- a/docs/test/unit-test-basics.md +++ b/docs/test/unit-test-basics.md @@ -72,7 +72,7 @@ Now that we have some code, it's time for testing. ## Create unit test projects and test methods -It is often quicker to generate the unit test project and unit test stubs from your code. Or you can choose to create the unit test project and tests manually depending on your requirements. +It is often quicker to generate the unit test project and unit test stubs from your code. Or you can choose to create the unit test project and tests manually depending on your requirements. If you want to create unit tests with a 3rd party framework you will need one of these extensions installed: [NUnit](https://marketplace.visualstudio.com/items?itemName=NUnitDevelopers.TestGeneratorNUnitextension-18371) or [xUnit](https://marketplace.visualstudio.com/items?itemName=YowkoTsai.xUnitnetTestGenerator). ### Generate unit test project and unit test stubs diff --git a/docs/toc.yml b/docs/toc.yml index d326624603d..4f240e4706f 100644 --- a/docs/toc.yml +++ b/docs/toc.yml @@ -399,9 +399,9 @@ href: ide/default-keyboard-shortcuts-for-frequently-used-commands-in-visual-studio.md - name: All keyboard shortcuts href: ide/default-keyboard-shortcuts-in-visual-studio.md - - name: Tips for .NET developers + - name: Tips for C# developers displayName: ReSharper - href: ide/visual-studio-2017-for-dotnet-developers.md + href: ide/csharp-developer-productivity.md - name: Use IntelliSense href: ide/using-intellisense.md items: diff --git a/mac/2017/accessibility.md b/mac/2017/accessibility.md new file mode 100644 index 00000000000..eea3a220ae3 --- /dev/null +++ b/mac/2017/accessibility.md @@ -0,0 +1,77 @@ +--- +title: "Accessibility" +description: "This article introduces the accessibility features in Visual Studio for Mac and how they can be enabled." +author: conceptdev +ms.author: crdun +ms.date: 08/15/2017 +ms.assetid: 2C4AAC2E-3B4A-4496-8BE0-1F5A7F81D1CA +--- + +# Accessibility + +In addition to features and utilities in macOS, Visual Studio for Mac has the following features, making it more accessible for people with disabilities: + +- Text Enlargement in the Solution and Editor Pads +- Text size options in the editors +- Color customization in the editors +- Keyboard shortcut customization +- Code-completion for methods and parameters + +For more information on accessibility features in macOS, see [Apple's website](https://www.apple.com/accessibility/mac/). + +## Using Accessibility features in Visual Studio for Mac + +The Accessibility features in Visual Studio for Mac are turned off by default. To enable them, do the following steps: + +1. Go to **Visual Studio > Preferences > Other > Accessibility**. + +2. Select the **Enable Accessibility** checkbox, as illustrated in the following diagram: + + ![Enable accessibility checkbox](media/accessibility-image1.png) + +3. Press the **Restart Visual Studio** button to allow the accessibility features to take effect. + +Alternatively, you can use the command line to enable accessibility features. To do this, enter the following command in terminal: + +```bash +defaults write com.microsoft.visual-studio com.monodevelop.AccessibilityEnabled 1 +``` + +After turning on accessibility, you need to restart Visual Studio. + +## How to: Use Keyboard Navigation + +Keyboard navigation can be enabled by setting the Full Keyboard Access option in **System Preferences > Keyboard > Shortcuts** to **All Controls**: + +![Systems preferences panel in macos](media/accessibility-image2.png) + +Setting full keyboard access turns on the focus rectangle. You can then select controls using: + +- Tab to go forward through controls +- Shift-Tab to go backwards through controls +- Arrow keys to move between controls in the direction of the arrows. + +Pressing the Space bar activates the focused control. + +## How to: Enable and use Voice Over + +Turn VoiceOver on or off press **Cmd + F5** + +To navigate through the UI VoiceOver commands, use the following commands: + +- Move VoiceOver cursor between Controls: **Ctrl + Alt + Left arrow key / Right arrow key** + + VoiceOver reads out the name of the controls, some details about it, and what you can do with it. + +- Enter Groups and controls (such as the Solution Pad, Toolbox, and other Pads): **Ctrl + Alt + Shift + Down Arrow** + + Once inside a control, you can use **Ctrl + Alt + Arrows** to move around inside it. + +For general information on using VoiceOver in macOS, refer to the following guides: + +- [Getting Started with VoiceOver](https://help.apple.com/voiceover/info/guide/10.12/) +- [VoiceOver commands in macOS](http://lab.dotjay.com/notes/voiceover-commands/) + +## See also + +- [Accessibility features of Visual Studio (on Windows)](/visualstudio/ide/reference/accessibility-features-of-visual-studio) \ No newline at end of file diff --git a/mac/2017/add-and-remove-project-items.md b/mac/2017/add-and-remove-project-items.md new file mode 100644 index 00000000000..22551badcc3 --- /dev/null +++ b/mac/2017/add-and-remove-project-items.md @@ -0,0 +1,38 @@ +--- +title: "Adding and Removing Project Items" +description: This document describes how to add and remove project items in Visual Studio for Mac +author: conceptdev +ms.author: crdun +ms.date: 05/06/2018 +ms.assetid: 4071689D-1C21-42D7-8963-550E7BCB4B67 +--- +# Adding and Removing Project Items + +You can add new project items to your project by right-clicking on the Project node in the **Solution Pad** and browsing to **Add > New File**: + +![Add New Project Item](media/add-and-remove-project-items-image1.png) + +This displays the New File Dialog, which provides file templates based on the type of application that you are creating in addition to the default templates, such as Empty Classes or Empty Enumerations. For example, if you are writing an iOS application, you can select **Storyboard** to create a new empty Storyboard file: + +![Add new empty storyboard in iOS](media/add-and-remove-project-items-image2.png) + +## Adding existing files + +You can add existing files to your project by right-clicking on the Project node and selecting **Add > Add Files...**. Alternatively, to add an entire folder, select **Add > Add Existing Folder...**. This displays the file browser, which lets you search your system for the required item to add. + +## Removing items + +To remove an item from your current project, right-click the item and select **Remove** + +![Remove Item](media/add-and-remove-project-items-image3.png) + +This displays the delete item dialog. Select one of the options to remove it from the project: + +![Delete item dialog](media/add-and-remove-project-items-image4.png) + +* **Delete** - Removes item from project and from disk. +* **Remove from Project** - Removes item from project, but will not remove it from disk + +## See also + +* [Solutions and projects in Visual Studio (on Windows)](/visualstudio/ide/solutions-and-projects-in-visual-studio) \ No newline at end of file diff --git a/mac/2017/asp-net-core.md b/mac/2017/asp-net-core.md new file mode 100644 index 00000000000..a8e0a5f456a --- /dev/null +++ b/mac/2017/asp-net-core.md @@ -0,0 +1,238 @@ +--- +title: "Getting Started with ASP.NET Core" +description: "This article describes how to get started with ASP.NET in Visual Studio for Mac, including installation and creating a new project." +author: conceptdev +ms.author: crdun +ms.date: 07/13/2017 +ms.assetid: 6E8B0C90-33D6-4546-8207-CE0787584565 +ms.custom: video +--- + +# Getting Started with ASP.NET Core + + Visual Studio for Mac makes it easy to develop your app’s service with its support for the latest ASP.NET Core Web development platform. ASP.NET Core runs on .NET Core, the latest evolution of the .NET Framework and runtime. It’s been tuned for fast performance, factored for small install sizes, and re-imagined to run on Linux and macOS, as well as Windows. + +## Installing .NET Core + +.NET Core 1.1 is automatically installed when you install Visual Studio for Mac. + +## Creating an ASP.NET Core app in Visual Studio for Mac + +Open Visual Studio for Mac. On the welcome page select **New Project...** + +![New Project Dialog](media/asp-net-core-image1.png) + +This will display the New Project dialog, allowing you to select a template to create your application. + +There are a number of projects that will provide you with a pre-built template to start building your ASP.NET Core Application. These are: + +- **.NET Core > ASP.NET Core Empty Web Application** +- **.NET Core > ASP.NET Core Web App** +- **.NET Core > ASP.NET Core Web API** +- **Multi-platform > App > Connected App** + +![ASP.NET Project Options](media/asp-net-core-image11.png) + +Select the **ASP.NET Core Empty Web Application** and press **Next**. Give the Project a Name and press **Create**. This creates a new ASP.NET Core app, that should look similar to the image below: + +![New ASP.NET Core Empty Project view](media/asp-net-core-image4.png) + +The ASP.NET Core Empty Web Application creates a web application with two default files: **Program.cs** and **Startup.cs**, which are explained below. It also creates a Dependencies folder, which contains your project’s NuGet package dependencies such as ASP.NET Core, the .NET Core framework, and the MSBuild targets that build the project: + +![Solution Pad displaying dependencies](media/asp-net-core-image12.png) + +### Program.cs + +Open and inspect the **Program.cs** file in your project. Notice that two things are happening in the `Main` method – the entry into your app: + +```csharp +public static void Main(string[] args) +{ + var host = new WebHostBuilder() + .UseKestrel() + .UseContentRoot(Directory.GetCurrentDirectory()) + .UseIISIntegration() + .UseStartup() + .Build(); + + host.Run(); +} +``` +An ASP.NET Core app creates a web server in its main method by configuring and launching a host via an instance of [`WebHostBuilder`](/aspnet/core/fundamentals/hosting). This builder provides methods to allow the host to be configured. In the template app the following configurations are used: + +* `UseKestrel`: Specifies the Kestrel server will be used by the app +* `UseContentRoot(Directory.GetCurrentDirectory())`: Uses the web project's root folder as the app's content root when the app is started from this folder +* `.UseIISIntegration()`: Specifies that the app should work with IIS. To use IIS with ASP.NET Core both `UseKestrel` and `UseIISIntegration` need to be specified. +* `.UseStartup()`: Specifies the Startup class. + + The Build and Run methods build the IWebHost that will host the app and start it listening for incoming HTTP requests. + +### Startup.cs + +The Startup class for your app is specified in the `UseStartup()` method on the `WebHostBuilder`. It is in this class that you will specify the request handling pipeline, and where you configure any services. + +Open and inspect the **Startup.cs** file in your project: + +```csharp +public class Startup +{ + public void ConfigureServices(IServiceCollection services) + { + } + + public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) + { + loggerFactory.AddConsole(); + + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + + app.Run(async (context) => + { + await context.Response.WriteAsync("Hello World!"); + }); + } +} +``` + +This Startup class must always adhere to the following rules: + + - It must always be public + - It must contain the two public methods: `ConfigureServices` and `Configure` + +The `ConfigureServices` method defines the services that will be used by your app. + +The `Configure` allows you to compose your request pipeline using [Middleware](/aspnet/core/fundamentals/middleware). These are components used within an ASP.NET application pipeline to handle requests and responses. The HTTP pipeline consists of a number of request delegates, called in sequence. Each delegate can choose to either handle the request itself, or pass it to the next delegate. + +You can configure delegates by using the `Run`,`Map`, and `Use` methods on `IApplicationBuilder`, but the `Run` method will never call a next delegate and should always be used at the end of your pipeline. + +The `Configure` method of the pre-built template is built to do a few things. First, it configures an exception handling page for use during development. Then, it sends a response to the requesting web page with a simple "Hello World". + +This simple Hello, World project can run now without any additional code being added. To run the app, and view it in your browser, press the Play (Triangular) button in the toolbar: + +![Run App](media/asp-net-core-image5.png) + +Visual Studio for Mac uses a random port to launch your web project. To find out what port this is, open the Application Output, which is listed under **View > Pads**. You should find output similar to that shown below: + +![Application Output displaying listening port](media/asp-net-core-image6.png) + +Open your browser of choice, and enter `http://localhost:5000/`, replacing the `5000` with the port that Visual Studio output in the Application Output. You should see the text `Hello World!`: + +![browser showing text](media/asp-net-core-image7.png) + +## Adding a Controller + +ASP.NET Core Apps use the Model-View-Controller (MVC) design pattern to provide a logical separation of responsibilities for each part of the app. MVC consists of the following: + +- **Model**: A class that represents the data of the app. +- **View**: Displays the app's user interface (which is often the model data). +- **Controller**: A class which handles browser requests, responds to user input and interaction. + +For more information on using MVC refer to [Overview of ASP.NET Core MVC](/aspnet/core/mvc/overview) guide. + +To add a controller, do the following: + +1. Right-click on the Project name and select **Add > New Files**. Select **General > Empty Class**, and enter a controller name: + + ![New File dialog](media/asp-net-core-image8.png) + +2. Add the following code to the new controller: + + ```csharp + using System; + using Microsoft.AspNetCore.Mvc; + using System.Text.Encodings.Web; + + namespace Hello_ASP + { + public class HelloWorldController : Controller + { + // + // GET: /HelloWorld/ + + public string Index() + { + return "This is my default action..."; + } + + } + } + ``` + +3. Add the `Microsoft.AspNetCore.Mvc` dependency to the project by right-clicking the **Dependency** folder, and selecting **Add Package...**. + +4. Use the Search box to browse the NuGet library for `Microsoft.AspNetCore.Mvc`, and select **Add Package**. This may take a few minutes to install and you may be prompted to accept various licenses for the required dependencies: + + ![Add Nuget](media/asp-net-core-image9.png) + +5. In the Startup class, remove the `app.Run` lambda and set the URL routing logic used by MVC to determine which code it should invoke to the following: + + ```csharp + app.UseMvc(routes => + { + routes.MapRoute( + name: "default", + template: "{controller=HelloWorld}/{action=Index}/{id?}"); + }); + ``` + + Make sure to remove the `app.Run` lambda, as this will override the routing logic. + + MVC uses the following format, to determine which code to run: + + `/[Controller]/[ActionName]/[Parameters]` + + When you add the code snippet above, you are telling the app to default to the `HelloWorld` Controller, and the `Index` action method. + +6. Add the `services.AddMvc();` call to the `ConfigureServices` method, as illustrated below: + + ```csharp + public void ConfigureServices(IServiceCollection services) + { + services.AddMvc(); + } + ``` + + You can also pass parameter information from the URL to the controller. + +7. Add another method to your HelloWorldController, as illustrated below: + + ```csharp + public string Xamarin(string name) + { + return HtmlEncoder.Default.Encode($"Hello {name}, welcome to Visual Studio for Mac"); + } + ``` + +8. If you run the app now, it should automatically open your browser: + + ![Running app in browser](media/asp-net-core-image13.png) + +9. Try to browse to `http://localhost:xxxx/HelloWorld/Xamarin?name=Amy` (replacing `xxxx` with the correct port), you should see the following: + + ![Running app in browser with arguments](media/asp-net-core-image10.png) + + +## Troubleshooting + +If you need to install .NET Core manually on Mac OS 10.11 (El Capitan) and higher, do the following: + +1. Before you start installing .NET Core, ensure that you have updated all OS updates to the latest stable version. You can check this by going to the App Store application, and selecting the Updates tab. + +2. Follow the steps listed on the [.NET Core site](https://www.microsoft.com/net/core#macos). + +Make sure to complete all four steps successfully to ensure that .NET Core is installed successfully. + +## Summary + +This guide gave an introduction to ASP.NET Core. It describes what it is, when to use it, and provided information on using it in Visual Studio for Mac. +For more information on the next steps from here, refer to the following guides: +- [ASP.NET Core](/aspnet/core/?view=aspnetcore-2.1#build-web-ui-and-web-apis-using-aspnet-core-mvc) docs. +- [Creating Backend Services for Native Mobile Applications](/aspnet/core/mobile/native-mobile-backend), which shows how to build a REST service using ASP.NET Core for a Xamarin.Forms app. +- [ASP.NET Core hands-on lab](https://github.com/Microsoft/vs4mac-labs/tree/master/Web/Getting-Started). + +## Related Video + +> [!Video https://channel9.msdn.com/Shows/Visual-Studio-Toolbox/Visual-Studio-for-Mac-Build-Your-First-App/player] \ No newline at end of file diff --git a/mac/2017/azure-functions-lab.md b/mac/2017/azure-functions-lab.md new file mode 100644 index 00000000000..59f7e8028c3 --- /dev/null +++ b/mac/2017/azure-functions-lab.md @@ -0,0 +1,409 @@ +--- +title: "Tutorial: Azure Functions" +description: "Using Azure functions in Visual Studio for Mac." +author: conceptdev +ms.author: crdun +ms.date: 05/06/2018 +ms.topic: article +ms.technology: vs-ide-install +ms.assetid: 38FD2070-5151-482E-B0A9-993715128736 +--- + +# Tutorial: Getting started with Azure Functions + +In this lab, you'll learn how to get started building Azure Functions using Visual Studio for Mac. You'll also integrate with Azure storage tables, which represent one of the many kinds of bindings and triggers available to Azure Functions developers. + +## Objectives + +> [!div class="checklist"] +> * Create and debug local Azure Functions +> * Integrate with web and Azure storage resources +> * Orchestrate a workflow involving multiple Azure Functions + +## Requirements + +- Visual Studio for Mac 7.5 or higher. +- An Azure subscription (available free from [https://azure.com/free](https://azure.com/free)). + +## Exercise 1: Creating an Azure Functions project + +1. Launch **Visual Studio for Mac**. + +2. Select **File > New Solution**. + +3. From the **Cloud > General** category, select the **Azure Functions** template. You will use C# to create a .NET class library that hosts Azure Functions. Click **Next**. + + ![azure functions template selection](media/azure-functions-lab-image1.png) + +4. Set the **Project Name** to **"AzureFunctionsLab"** and click **Create**. + + ![naming and creating your azure function project](media/azure-functions-lab-image2.png) + +5. Expand the nodes in **Solution Pad**. The default project template includes NuGet references to a variety of Azure WebJobs packages, as well as the Newtonsoft.Json package. + + There are also three files: + - **host.json** for describing the global configuration options for the host + - **local.settings.json** for configuring service settings. + - The project template also creates a default HttpTrigger. For the sake of this lab, you should delete the **HttpTrigger.cs** file from the project. + + Open **local.settings.json**. It defaults to having two empty connection string settings. + + ![solution pad displaying local.settings.json file](media/azure-functions-lab-image3.png) + +## Exercise 2: Creating an Azure storage account + +1. Log on to your Azure account at [https://portal.azure.com](https://portal.azure.com). + +1. Under the **Favorites** section, located on the left of the screen, select **Storage Accounts**: + + ![favorites section of Azure portal showing storage accounts item](media/azure-functions-lab-image4.png) + +1. Select **Add** to create a new storage account: + + ![Button to add new storage account](media/azure-functions-lab-image5.png) + +1. Enter a globally unique name for the **Name** and reuse it for the **Resource group**. You can keep all the other items as their default. + + ![new storage account details](media/azure-functions-lab-image6.png) + +1. Click **Create**. It might take a few minutes to create the storage account. You'll get a notification once it has been successfully created. + + ![deployment successful notification](media/azure-functions-lab-image7.png) + +1. Select the **Go to resource** button from the notification. + +1. Select the **Access keys** tab. + + ![access key setting](media/azure-functions-lab-image8.png) + +1. Copy the first **Connection String**. This string is used to integrate Azure storage with your Azure Functions later on. + + ![information for key 1](media/azure-functions-lab-image9.png) + +1. Return to **Visual Studio for Mac** and paste the full connection string in as the **AzureWebJobsStorage** setting in **local.settings.json**. Now you can reference the name of the setting in attributes for functions that need access to its resources. + + ![local settings file with connection key entered](media/azure-functions-lab-image10.png) + +## Example 3: Creating and debugging an Azure Function + +1. You're now ready to start adding some code. When working with a .NET class library, Azure Functions are added as static methods. From **Solution Pad**, right-click the **AzureFunctions** project node and select **Add > Add Function**: + + ![Add function option](media/azure-functions-lab-image11.png) + +1. In the New Azure Functions dialog, select the Generic webhook template. Set the **Name** to **Add** and click **Ok** to create your function: + + ![New azure functions dialog](media/azure-functions-lab-image12.png) + +1. At the top of the new file, add the **using** directives below: + + ```csharp + using Microsoft.Azure.WebJobs.Extensions.Http; + using System.Web; + using Microsoft.WindowsAzure.Storage.Table; + ``` +1. Remove the existing `Run` method and add the method below to the class as your Azure Function: + + ```csharp + [FunctionName("Add")] + public static int Run( + [HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] + HttpRequestMessage req, + TraceWriter log) + { + int x = 1; + int y = 2; + + return x + y; + } + ``` +1. Let's walk through the method definition piece by piece. + + The first thing you'll see is the **FunctionName** attribute that marks this method as an Azure Function. The attribute designates the public name of the function. The attribute name doesn't need to match the actual method name. + + ![New run method with FunctionName attribute highlighted](media/azure-functions-lab-image13.png) + +1. Next, the method is marked as a **public static** method, which is required. You'll also notice that the return value is an **int**. Unless otherwise specified using method attributes, any non-void return value of an Azure Function is returned to the client as text. By default it's returned as **XML**, but can be changed to **JSON**, which you'll do later on in the lab. + + ![New run method with method initialization highlighted](media/azure-functions-lab-image14.png) + +1. The first parameter is marked with the **HttpTrigger** attribute, which indicates that this method is invoked by an HTTP request. The attribute also specifies the authorization level of the method, as well as the verbs it supports (only **"GET"** in this case). You may also optionally define a **Route** that overrides the path to the method and offers a way to automatically extract variables from the path. Since the **Route** is null here, the path to this method will default to **/api/Add**. + + ![New run method with parameter highlighted](media/azure-functions-lab-image15.png) + +1. The final parameter to the method is a **TraceWriter** that can be used to log messages for diagnostics and errors. + + ![New run method with TraceWriter highlighted](media/azure-functions-lab-image16.png) + +1. Set a breakpoint on the **return** line of the method by clicking in the margin of the line: + + ![Breakpoint set at return line](media/azure-functions-lab-image17.png) + +1. Build and run the project in a debug session by pressing **F5** or selecting **Run > Start Debugging**. You could alternatively click the **Run** button. These options all perform the same task. The rest of this lab references **F5**, but you can use the method you find most comfortable. + + ![Build and Run project](media/azure-functions-lab-image18.png) + +1. Running the project will automatically open the Terminal application. + +1. The project goes through a process of detecting Azure Functions based on method attributes and a file convention that is covered later in this article. In this case, it detects a single Azure Function and "generates" 1 job function. + + ![Output of Azure Function in Terminal](media/azure-functions-lab-image19.png) + +1. At the bottom of the startup messages, the Azure Functions host prints the URLs of any HTTP trigger APIs. There should only be one. Copy that URL and paste it in a new browser tab. + + ![Azure Function API URL](media/azure-functions-lab-image20.png) + +1. The breakpoint should trigger immediately. The web request has been routed to the function and can now be debugged. Mouse over the **x** variable to see its value. + + ![Breakpoint triggered](media/azure-functions-lab-image21.png) + +1. Remove the breakpoint using the same method used to add it earlier (click on the margin or select the line and press **F9**). + +1. Press **F5** to continue running. + +1. In the browser, the XML result of the method will be rendered. As expected, the hardcoded addition operation produces a plausible sum. Note, if you only see "3" in Safari, go to **Safari > Preferences > Advanced** and tick the "**Show Develop menu in menu bar**" checkbox and reload the page. + +1. In **Visual Studio for Mac**, click the **Stop** button to end the debug session. To ensure that new changes are picked up, don't forget to restart (stop and then run) the debugging session. + + ![Stop debugging option](media/azure-functions-lab-image22.png) + +1. In the **Run** method, replace the **x** and **y** definitions with the code below. This code extracts values from the URL's query string so that the addition operation can be performed dynamically based on the provided parameters. + + ```csharp + var query = HttpUtility.ParseQueryString(req.RequestUri.Query); + + int x = int.Parse(query["x"]); + + int y = int.Parse(query["y"]); + + return x + y; + ``` +1. Run the application. + +1. Return to the browser window and append the string `/?x=2&y=3` to the URL. The whole URL should now be `http://localhost:7071/api/Add?x=2&y=3`. Navigate to the new URL. + +1. This time the result should reflect the new parameters. Feel free to run the project with different values. Note that there isn't any error checking, so invalid or missing parameters will throw an error. + +1. Stop the debugging session. + + +## Exercise 4: Working with function.json + +1. In an earlier exercise, it was mentioned that Visual Studio for Mac "generated" a job function for the Azure Function defined in the library. This is because Azure Functions doesn't actually use the method attributes at runtime, but rather uses a compile-time file system convention to configure where and how Azure Functions are made available. From **Solution Pad**, right-click on your project node and select **Reveal in Finder**. + + ![Reveal in Finder menu option](media/azure-functions-lab-image23.png) + +1. Navigate down the file system until you reach **bin/Debug/netstandard2.0**. There should be a folder named **Add**. This folder was created to correspond with the function name attribute in the C# code. Expand the Add folder to reveal a single **function.json** file. This file is used by the runtime to host and manage the Azure Function. For other language models without compile-time support (such as C# script or JavaScript), these folders must be manually created and maintained. For C# developers, they are automatically generated from attribute metadata upon build. Right-click on **function.json** and select to open it in Visual Studio. + + ![function.json in the file directory](media/azure-functions-lab-image24.png) + +1. Given the previous steps of this tutorial, you should have a basic understanding of C# attributes. Taking that into account, this JSON should look familiar. However, there are a few items that were not covered in earlier exercises. For example, each **binding** must have its **direction** set. As you might infer, **"in"** means that the parameter is input, whereas **"out"** indicates that the parameter is either a return value (via **$return**) or an **out** parameter to the method. You also need to specify the **scriptFile** (relative to this final location) and the **entryPoint** method (public and static) within the assembly. In the next few steps you'll add a custom function path using this model, so copy the contents of this file to the clipboard. + + ![function.json file open in visual studio for mac](media/azure-functions-lab-image25.png) + +1. In **Solution Pad**, right-click the **AzureFunctionsLab** project node and select **Add > New Folder**. Name the new folder **Adder**. By default convention, the name of this folder will define the path to the API, such as **api/Adder**. + + ![New folder option](media/azure-functions-lab-image26.png) + +1. Right-click the **Adder** folder and select **Add > New File**. + + ![New file option](media/azure-functions-lab-image27.png) + +1. Select the **Web** category and the **Empty JSON File** template. Set the **Name** to **function** and click **New**. + + ![Empty json file option](media/azure-functions-lab-image28.png) + +1. Paste the contents of the other **function.json** (from step 3) in to replace the default contents of the newly created file. + +1. Remove the following lines from the top of the json file: + + ```json + "configurationSource":"attributes", + "generatedBy":"Microsoft.NET.Sdk.Functions-1.0.13", + ``` + +1. At the end of the first binding (after the **"name": "req"** line), add the properties below. Don't forget to include a comma on the previous line. This property overrides the default root such that it will now extract **int** parameters from the path and place them into method parameters that are named **x** and **y**. + + ```json + "direction": "in", + "route": "Adder/{x:int?}/{y:int?}" + ``` + +1. Add another binding underneath the first. This binding handles the return value of the function. Don't forget to include a comma on the previous line: + + ```json + { + "name": "$return", + "type": "http", + "direction": "out" + } + ``` + +1. Also update the **entryPoint** property at the bottom of the file to use a method called **"Add2"**, such as shown below. This is to illustrate that the path **api/Adder...** could map to an appropriate method with any name (**Add2** here). + + ```json + "entryPoint": "..Add2" + ``` + +1. Your final **function.json** file should look like the following json: + + ```json + { + "bindings": [ + { + "type": "httpTrigger", + "methods": [ + "get" + ], + "authLevel": "function", + "direction": "in", + "name": "req", + "route": "Adder/{x:int?}/{y:int?}" + }, + { + "name": "$return", + "type": "http", + "direction": "out" + } + ], + "disabled": false, + "scriptFile": "../bin/AzureFunctionsProject.dll", + "entryPoint": "AzureFunctionsProject.Add.Add2" + } + ``` + +1. The one final step required to make this all work is to instruct Visual Studio for Mac to copy this file to the same relative path in the output directory every time it changes. With the file selected, choose the properties tab from the right-hand bar, and for **Copy to output directory** select **Copy if newer**: + + ![Properties options for json file](media/azure-functions-lab-image30.png) + +1. In **Add.cs**, replace the `Run` method (including the attribute) with the following method to fulfill the expected function. It's very similar to `Run`, except that it uses no attributes and has explicit parameters for **x** and **y**. + + ```csharp + public static int Add2( + HttpRequestMessage req, + int x, + int y, + TraceWriter log) + { + return x + y; + } + ``` +1. Press **F5** to build and run the project. + +1. As the build completes and platform spins up, it will now indicate that there is a second route available for requests that maps to the newly added method: + + ![URL for Http functions](media/azure-functions-lab-image31.png) + +1. Return the browser window and navigate to **http://localhost:7071/api/Adder/3/5**. + +1. This time the method works once again, pulling parameters from the path and producing a sum. + +1. Return to **Visual Studio for Mac** and end the debugging session. + +## Exercise 5: Working with Azure storage tables + +Often, the service you build might be much more complex than what we have built so far and require a significant amount of time and/or infrastructure to execute. In that case, you might find it effective to accept requests that are queued for processing when the resources become available, which Azure Functions provides support for. In other cases, you’ll want to store data centrally. Azure Storage tables let you do that quickly. + +1. Add the class below to **Add.cs**. It should go inside the namespace, but outside the existing class. + + ```csharp + public class TableRow : TableEntity + { + public int X { get; set; } + public int Y { get; set; } + public int Sum { get; set; } + } + ``` +1. Within the **Add** class, add the code below to introduce another function. Note that this one is unique so far in that it doesn't involve an HTTP response. The final line returns a new **TableRow** populated with some key information that will make it easy to retrieve later on (**PartitionKey** and **RowKey**), as well as its parameters and sum. The code within the method also uses the **TraceWriter** to make it easier to know when the function runs. + + ```csharp + [FunctionName("Process")] + [return: Table("Results")] + public static TableRow Process( + [HttpTrigger(AuthorizationLevel.Function, "get", + Route = "Process/{x:int}/{y:int}")] + HttpRequestMessage req, + int x, + int y, + TraceWriter log) + { + log.Info($"Processing {x} + {y}"); + + return new TableRow() + { + PartitionKey = "sums", + RowKey = $"{x}_{y}", + X = x, + Y = y, + Sum = x + y + }; + } + ``` +1. Press **F5** to build and run the project. + +1. In the browser tab, navigate to **http://localhost:7071/api/Process/4/6**. This will put another message into the queue, which should eventually result in another row being added to the table. + +1. Return to **Terminal** and watch for the incoming request for **4 + 6**. + + ![Terminal output showing addition request](media/azure-functions-lab-image32.png) + +1. Return to the browser to refresh the request to the same URL. This time you'll see an error after the **Process** method. This is because the code is attempting to add a row to the Azure Table Storage table using a partition and row key combination that already exists. + + ``` + System.Private.CoreLib: Exception while executing function: Process. Microsoft.Azure.WebJobs.Host: Error while handling parameter $return after function returned:. Microsoft.Azure.WebJobs.Host: The specified entity already exists. + ``` + +1. End the debugging session. + +1. To mitigate the error, add the following parameter to the method definition immediately before the **TraceWriter** parameter. This parameter instructs the Azure Functions platform to attempt to retrieve a **TableRow** from the **Results** table on the **PartitionKey** we've been using to store results. However, some of the real magic comes into play when you notice that the **RowKey** is being dynamically generated based on the other **x** and **y** parameters for the very same method. If that row already exists, then **tableRow** will have it when the method begins with no extra work required by the developer. If the row doesn't exist, then it'll just be null. This sort of efficiency enables developers to focus on the important business logic and not the infrastructure. + + ```csharp + [Table("Results", "sums", "{x}_{y}")] + TableRow tableRow, + ``` +1. Add the code below to the beginning of the method. If **tableRow** isn't null, then we already have the results for the operation being requested and can return it immediately. Otherwise, the function continues as before. While this may not be the most robust way to return the data, it illustrates the point that you can orchestrate incredibly sophisticated operations across multiple scalable tiers with very little code. + + ```csharp + if (tableRow != null) + { + log.Info($"{x} + {y} already exists"); + return null; + } + ``` +1. Press **F5** to build and run the project. + +1. In the browser tab, refresh the URL at **http://localhost:7071/api/Process/4/6**. Since the table row for this record exists, it should return immediately and without error. Since there is no HTTP output, you can see the output in Terminal. + + ![Terminal output showing table row already exists](media/azure-functions-lab-image33.png) + +1. Update the URL to reflect a combination not yet tested, such as **http://localhost:7071/api/Process/5/7**. Note the message in Terminal, which indicates that the table row was not found (as expected). + + ![Terminal output showing new process](media/azure-functions-lab-image34.png) + +1. Return to **Visual Studio for Mac** and end the debugging session. + + + +## Summary + +In this lab, you've learned how to get started building Azure Functions with Visual Studio for Mac. + diff --git a/mac/2017/azure-functions.md b/mac/2017/azure-functions.md new file mode 100644 index 00000000000..5f6ea33721f --- /dev/null +++ b/mac/2017/azure-functions.md @@ -0,0 +1,163 @@ +--- +title: "Introduction to Azure Functions" +description: "Using Azure functions in Visual Studio for Mac." +author: conceptdev +ms.author: crdun +ms.date: 05/06/2018 +ms.topic: article +ms.technology: vs-ide-install +ms.assetid: 25CD47A4-5B32-4734-8EF3-E24A02AABF29 +--- + +# Introduction to Azure Functions + +Azure functions is a way to create and run event-driven snippets of code –– functions –– in the cloud, without having to explicitly provision or manage infrastructure. For more information about Azure Functions, see the [Azure Functions documentation](/azure/azure-functions/). + +## Requirements + +Azure Function tools are included in **Visual Studio for Mac 7.5**. + +To create and deploy functions you also need an Azure subscription, which is available for free from [https://azure.com/free](https://azure.com/free). + +## Creating your first Azure Functions project + +1. In Visual Studio for Mac, select **File > New Solution**. +2. From the New Project dialog, select the Azure Functions template under **Cloud > General** and click **Next**: + + ![New Project dialog showing Azure functions option](media/azure-functions-image1.png) + +3. Select the initial Azure Functions template that you wish to use, enter your function name and click **Next**. + + ![New Project dialog showing Azure functions templates](media/azure-functions-image2.png) + + Depending on the type of function you select, the next page will prompt you to enter details, such as access rights, as illustrated in the following image: + + ![New Project dialog showing additional option](media/azure-functions-image3.png) + + For more information on the different types of Azure Functions templates and the binding properties required to configure each template, see the [Available function templates](#available-function-templates) section. For this example, we're using a Http trigger with access rights set to anonymous. + +4. Once you've set the parameters, choose the location for the project and click **Create**. + +Visual Studio for Mac creates a .NET Standard project with a default function included. It also includes NuGet references to a variety of **AzureWebJobs** packages, as well as the **Newtonsoft.Json** package. + +![Visual Studio for Mac editor displaying a brand new azure function from template](media/azure-functions-newproj.png) + +The new project contains the following files: + +* **your-function-name.cs** – This class contains boilerplate code for the function that you selected. It contains a **FunctionName** attribute with the function name, and a trigger attribute that specifies what triggers the function (eg. a HTTP request). For more information on the function method, refer to the [Azure Functions C# developer reference](/azure/azure-functions/functions-dotnet-class-library) article. +* **host.json** – This file describes the global configuration options for Functions host. For an example file and information on the available settings for this file, see the [host.json reference for Azure Functions](/azure/azure-functions/functions-host-json). +* **local.settings.json** – This file contains all the settings for running functions locally. These settings are used by the Azure Functions Core Tools. For more information, see [Local settings file](/azure/azure-functions/functions-run-local#local-settings-file) in the Azure Functions Core Tools article. + +Now that you've created a new Azure Functions project in Visual Studio for Mac, you can test out the default HTTP-triggered function from your local machine. + +## Testing the function locally + +With Azure Functions support in Visual Studio for Mac you can test and debug your function on your local development computer. + +1. To test your function locally, press the **Run** button in Visual Studio for Mac: + + ![Start debugging button in visual studio for mac](media/azure-functions-run.png) + +1. Running the project starts local debugging on the Azure Function and opens a new Terminal window, as illustrated in the following image: + + ![terminal window showing function output](media/azure-functions-terminal.png) + + Copy the URL from the output. + +3. Paste the URL for the HTTP request into your browser's address bar. Add the query string `?name=` to the end of the URL and execute the request. The following image shows the response in the browser to the local GET request returned by the function: + + ![http request in browser](media/azure-functions-httpreq.png) + +## Adding another function to your project + +Function Templates enable you to quickly create new functions using the most common triggers and templates. To create another type of function, do the following: + +1. To add a new function, right-click on the project name and select **Add > Add Function...**: + + ![context action for adding new function](media/azure-functions-addnew.png) + +2. From the **New Azure Function** dialog, select the function you require: + + ![new azure function dialog](media/azure-functions-image4.png) + + A list of the Azure Function templates are provided in the [Available function templates](#available-function-templates) section. + +You can use the above procedure to add more functions to your function app project. Each function in the project can have a different trigger, but a function must have exactly one trigger. For more information, see [Azure Functions triggers and bindings concepts](/azure/azure-functions/functions-triggers-bindings). + +## Publish to Azure + +1. Right-click on the project name and select **Publish > Publish to Azure**: + ![Publish to azure menu option](media/azure-functions-image5.png) +2. If you've already connected your Azure account to Visual Studio for Mac a list of available app services are displayed. If you haven't logged in, you'll be prompted to do so. +3. From the **Publish to Azure App Service** dialog, you can either select an existing app service or create a new one by clicking **New**. +4. In the **Create new App Service** dialog, enter your settings: + ![Publish to azure menu option](media/azure-functions-image7.png) + + |Setting |Description | + |---------|---------| + |**App Service Name**|A globally unique name that identifies your new function app.| + |**Subscription**|The Azure subscription to use.| + |**[Resource Group](/azure/azure-resource-manager/resource-group-overview)**|Name of the resource group in which to create your function app. Choose **+** to create a new resource group.| + |**[Service Plan](/azure/azure-functions/functions-scale)**|Choose an existing plan or create a custom plan. Choose a Location in a region near you or near other services your functions access.| + + > [!CAUTION] + > There is a bug in the 7.6 version of Visual Studio for Mac that will cause publishing to fail with a provisioning error if you attempt to create a custom service plan with the **Pricing** set to **Consumption**. This will be fixed in the next service release. + +5. Click **Next** to create a storage account. An Azure storage account is required by the Functions runtime. Click **Custom** to create a general purpose storage account, or use an existing one: + + ![Publish to azure menu option](media/azure-functions-image8.png) + +6. Click **Create** to create a function app and related resources in Azure with these settings and deploy your function project code. + +7. You may be prompted with a dialog during publishing informing you to "Update Functions Version on Azure". Click **Yes**: + + ![Publish to azure menu option](media/azure-functions-image12.png) + +> [!CAUTION] +> There is a bug in the 7.6 version of Visual Studio for Mac where the `FUNCTIONS_EXTENSION_VERSION` is not correctly set to "beta", meaning that your function may not run. To fix this, go to your [Function app settings](#function-app-settings) and set `FUNCTIONS_EXTENSION_VERSION` from "-1" to "beta". + +## Function app settings + +Any settings you added in the local.settings.json must be also added to the function app in Azure. These settings are not uploaded automatically when you publish the project. + +To access your app settings, go to the azure portal at [https://ms.portal.azure.com/](https://ms.portal.azure.com/). Under **Functions Apps**, select **Function Apps** and highlight your function name: + +![azure functions menu](media/azure-functions-image9.png) + +From the **Overview** tab select **Application settings** under **Configured features**: + +![Over tab of azure function](media/azure-functions-image10.png) + +From here you can set Application Settings for the function app, where you can add new application settings or modify existing ones: + +![application settings area of azure portal](media/azure-functions-image11.png) + +One important setting you may need to set is `FUNCTIONS_EXTENSION_VERSION`. When publishing from Visual Studio for Mac, this value should be set to **beta**. + +## Available function templates + +- **GitHub Trigger** – Respond to events that occur in your GitHub repositories. For more information, see the [Azure Functions article on GitHub](/azure/azure-functions/functions-create-github-webhook-triggered-function) + - GitHub commenter – This function will be run when it receives a GitHub webhook for an issue or pull request and adds a comment. + - GitHub WebHook – This function will be run when it receives a GitHub webhook. + +- **HTTP** – Trigger the execution of your code by using an HTTP request. There are explicit templates for the following HTTP triggers: + - Http Trigger + - Http GET CRUD + - Http POST CRUD + - Http Trigger with parameters + + +- **Timer** – Execute cleanup or other batch tasks on a predefined schedule. This template takes two fields: a Name and a schedule, which is a six field CRON expression. For more information, see the [Azure functions article on Time](/azure/azure-functions/functions-create-scheduled-function) + + +- **Queue Trigger** – This is a function that will respond to messages as they arrive in the Azure Storage queue. In addition to the function name, this template takes a **Path** (the name of the queue from which the message will be read) and storage account **Connection** (the name of the app setting containing your storage account connection string). For more information, see the [Azure functions article on Queue Storage](/azure/azure-functions/functions-create-storage-queue-triggered-function). + +- **Blob Trigger** – Process Azure Storage blobs when they are added to a container. In addition to the function name, this template also takes a path and connection property. The path property is the path within your storage account that the trigger will monitor. The connection account is the name of the app setting containing your storage account connection string. For more information, see the [Azure functions Blob Storage article](/azure/azure-functions/functions-create-storage-blob-triggered-function). + +- **Generic WebHook** – This is a simple function that will run whenever it receives a request from any service that supports webhooks. For more information, see the [Azure functions article on generic webhooks](/azure/azure-functions/functions-create-generic-webhook-triggered-function). + +- **Durable functions orchestration** – Durable Functions let you write stateful functions in a serverless environment. The extension manages state, checkpoints, and restarts for you. For more information, see the Azure functions guides on [Durable functions](/azure/azure-functions/durable-functions-overview). + +- **Image Resizer** – This function creates resized images whenever a blob is added to a container. The template takes path and connection string for the trigger, a small image output, and a medium image output. + +- **SAS token** – This function generates a SAS token for a given Azure Storage container and blob name. In addition to the function name, this template also takes a path and connection property. The path property is the path within your storage account that the trigger will monitor. The connection account is the name of the app setting containing your storage account connection string. The **Access rights** also need to be set. Authorization level controls whether the function requires an API key and which key to use; Function uses a function key; Admin uses your master key. For more information, see the [C# Azure Function for generating SAS tokens](https://azure.microsoft.com/resources/samples/functions-dotnet-sas-token/) sample. \ No newline at end of file diff --git a/mac/2017/azure-workload.md b/mac/2017/azure-workload.md new file mode 100644 index 00000000000..c315f10dd9a --- /dev/null +++ b/mac/2017/azure-workload.md @@ -0,0 +1,16 @@ +--- +title: "Azure" +description: "Add Azure data storage, authentication, and push notifications to mobile apps from within Visual Studio for Mac" +ms.assetid: 3E5ADF4A-6655-42AD-BFC1-CE5E437C457B +author: conceptdev +ms.author: crdun +ms.date: 05/06/2018 +--- + +# Azure + +Visual Studio for Mac allows you to connect to Azure in a variety of ways: + +- [Azure Functions](azure-functions.md) +- [Publishing to Azure](publish-app-svc.md) +- [Mobile App Services](connected-services.md) \ No newline at end of file diff --git a/mac/2017/block-selection.md b/mac/2017/block-selection.md new file mode 100644 index 00000000000..3adace71ba1 --- /dev/null +++ b/mac/2017/block-selection.md @@ -0,0 +1,19 @@ +--- +title: "Block Selection" +description: "This article explains how to use the block selection feature in Visual Studio for Mac" +author: conceptdev +ms.author: crdun +ms.date: 11/06/2018 +ms.assetid: E8E0831E-E076-44B1-A82A-A325382916A6 +--- +# Block selection + +Visual Studio for Mac makes it straightforward to select, cut, copy, and paste sections of your code. Rectangular blocks of code can be highlighted and selected by using the **Option + Drag** command on the code block. The formatting within this block selection is retained when pasting the block. + +Block selections can also be edited to modify text on multiple lines at once. A zero-width block selection can be used to place the caret in front of many lines at once, and allows typing identical text on multiple lines: + +![Block Selection and adding text](media/source-editor-image16.png) + +## See also + +- [Multi-caret select for Visual Studio (on Windows)](/visualstudio/ide/finding-and-replacing-text#multi-caret-selection) diff --git a/mac/2017/build-actions.md b/mac/2017/build-actions.md new file mode 100644 index 00000000000..36643c30853 --- /dev/null +++ b/mac/2017/build-actions.md @@ -0,0 +1,28 @@ +--- +title: "Build Actions" +description: "This article describes the various build actions that can be used for C# projects" +author: conceptdev +ms.author: crdun +ms.date: 05/06/2018 +ms.assetid: 5399BCB1-E317-4C7B-87B1-C531E985DE6E +--- +# Build actions + +All files in a Visual Studio for Mac project have a build action. It controls what happens to the file during a build. This behavior can be set by right-clicking on any file and browsing to **Build Action**, as illustrated below: + +![Selecting Compile build action from solution explorer](media/projects-and-solutions-image1.png) + +Some of the common build actions for C# projects are: + +* **None** - The file isn't part of the build in any way - it's included in the project for easy access from the IDE. +* **Compile** - The file will be passed to the C# compiler as a source file. +* **EmbeddedResource** - The file will be passed to the C# compiler as a resource to be embedded in the assembly. [Assembly.GetManifestResourceStream](https://docs.microsoft.com/dotnet/api/system.reflection.assembly.getmanifestresourcestream), from the `System.Reflection` namespace, can then be used to read the file from the assembly. +* **Content** - For ASP.NET projects, these files will be included as part of the site when it's deployed. For Xamarin.iOS and Xamarin.Mac projects, they'll be included in the app bundle. + +It's possible to select more than one file in the solution explorer, allowing you to set the build action to many files at once. + +Also, there are build actions for specific projects. Xamarin.iOS projects have the **BundleResource** build action, which will add the file as part of the app bundle. Information on Xamarin.Android specific build actions can be found in the [build process](/xamarin/android/deploy-test/building-apps/build-process#Build_Actions) guide. + +## See also + +- [Build actions (Visual Studio on Windows)](/visualstudio/ide/build-actions) \ No newline at end of file diff --git a/mac/2017/building-and-cleaning-projects-and-solutions.md b/mac/2017/building-and-cleaning-projects-and-solutions.md new file mode 100644 index 00000000000..cb7c8e45d5d --- /dev/null +++ b/mac/2017/building-and-cleaning-projects-and-solutions.md @@ -0,0 +1,44 @@ +--- +title: "Building and Cleaning Projects and Solutions in Visual Studio for Mac" +description: "This article describes how to build a project in Visual Studio for Mac" +author: conceptdev +ms.author: crdun +ms.date: 05/06/2018 +ms.assetid: E4B6CB42-9FE2-43B9-93B7-BD4BD50518B1 +--- + +# Building and cleaning projects and solutions + +Follow the steps in this article to learn how to build, rebuild, and clean your solution and project. + +## To build, rebuild, or clean an entire solution + +To build, rebuild, or clean an entire solution: + +1. Select the Solution node in the Solution Pad: + + ![Selecting the solution node](media/compiling-and-building-image1.png) + +2. Select Build Menu in the Menu bar and select one of the following options: + + ![selecting the build all menu item](media/compiling-and-building-image2.png) + + * **Build All** - Attempts to build all files within project that have changed within the project since the most recent build. + * **Rebuild All** - Cleans the solution and then builds it. + * **Clean All** - Removes all build products from your solution. + +## To build or rebuild a single project + +1. In the Solution Pad, select the project. + +2. On the menu bar, choose Build, and then choose either Build[ProjectName], Rebuild[ProjectName], or Clean[ProjectName]. + +## To stop a build + +To stop a build, press the red square in the status area: + +![Press red square to stop build](media/compiling-and-building-image3.png) + +## See also + +- [Build and clean projects and solutions (Visual Studio on Windows)](/visualstudio/ide/building-and-cleaning-projects-and-solutions-in-visual-studio) \ No newline at end of file diff --git a/mac/2017/comments.md b/mac/2017/comments.md new file mode 100644 index 00000000000..b219fd3fee4 --- /dev/null +++ b/mac/2017/comments.md @@ -0,0 +1,47 @@ +--- +title: Comment out code +description: "This article describes using comments in the source editor of Visual Studio for Mac" +author: conceptdev +ms.author: crdun +ms.date: 05/06/2018 +ms.assetid: 0FE5E929-1846-4F48-B5E3-70990FAF9504 +--- +# Comments + +When debugging or experimenting with code, it can be useful to comment blocks of code either temporarily or long term. + +To comment out an entire block of code: + +* Select the code and select **Toggle Line Comment(s)** from the context menu + +OR + +* Use the `cmd + /` keybinding on the selected code. + +These methods can be used to comment and uncomment sections of code. In C# files, additional levels of line comments can be added, which allows regions of codes to be commented and uncommented, while still preserving actual comments: + +![multi-level comments](media/source-editor-image8.png) + +Comments are also useful for documenting code for future developers that may interact with it. These are usually done in the form of multi-line comments, which are added in the following way in each language: + +**C#** + +```csharp +/* + This is a multi-line + comment in C# +*/ +``` + +**F#** + +```fsharp +(* + This is a multi-line + comment in F# +*) +``` + +## See also + +- [Comment out code (Visual Studio on Windows)](/visualstudio/ide/quickstart-editor#comment-out-code) \ No newline at end of file diff --git a/mac/2017/compiling-and-building.md b/mac/2017/compiling-and-building.md new file mode 100644 index 00000000000..25bccb55619 --- /dev/null +++ b/mac/2017/compiling-and-building.md @@ -0,0 +1,49 @@ +--- +title: "Compiling and Building" +description: "This article describes how to compile and build projects and solutions in Visual Studio for Mac" +author: conceptdev +ms.author: crdun +ms.date: 05/06/2018 +ms.assetid: FB253757-DB00-4889-A6BF-E44722E25BD1 +--- + +# Compiling and building in Visual Studio for Mac + +Visual Studio for Mac can be used to build applications and create assemblies during the development of your project. It's important to compile and build your code early and often so that you can identify type mismatches and other compile-time errors. + +## Building from the IDE + +Using Visual Studio for Mac lets you create and run builds instantly, while still giving you control over build functionality. Visual Studio for Mac uses MSBuild as the underlying build system. + +All Projects and Solutions created in the IDE will have a default build configuration, which define the context for builds. These configurations can be edited or you can create your own. Creating or modifying these configurations will automatically update the project file, which is then used by MSBuild to build your project. + +For more information regarding how to build projects and solutions in the IDE, see the [Building and cleaning Projects and Solutions](building-and-cleaning-projects-and-solutions.md) guide. + +Visual Studio for Mac can also be used to do the following: + +* Change the output path. This is edited in your Project's options: + + ![Change output path](media/compiling-and-building-image4.png) + +* Change the verbosity of the build output: + + ![Change build verbosity](media/compiling-and-building-image5.png) + +* Add Custom Commands before, during, or after Building or Cleaning: + + ![add custom commands](media/compiling-and-building-image6.png) + +## Building from command line + +You can use MSBuild Build Engine to build applications via the command line. + +See the [MSBuild](/visualstudio/msbuild/msbuild) content for more information on using MSBuild. + +## Building from Azure Pipelines + +* [Build your Xamarin App](/vsts/pipelines/apps/mobile/xamarin?view=vsts&tabs=vsts) +* [Continuous Integration with Xamarin](https://developer.xamarin.com/guides/cross-platform/ci/) + +## See also + +- [Compile and build (Visual Studio on Windows)](/visualstudio/ide/compiling-and-building-in-visual-studio) \ No newline at end of file diff --git a/mac/2017/configurations.md b/mac/2017/configurations.md new file mode 100644 index 00000000000..53e867d2e87 --- /dev/null +++ b/mac/2017/configurations.md @@ -0,0 +1,67 @@ +--- +title: "Understanding Build Configurations" +description: "This article describes the various build configurations in Visual Studio for Mac" +author: conceptdev +ms.author: crdun +ms.date: 04/14/2017 +ms.assetid: 78107CFA-9308-4293-A92A-9B552A259E15 +--- + +# Understanding build configurations + +## Project build configurations + +Projects tend to have multiple configurations and switching between them allows for different outputs at build time. For example, a Debug configuration will output debugging symbols, allowing the debugger to resolve function names, parameters, or variables from a crashed application's stack trace. While this additional information is useful during development, it leads to an inflated file size and isn't ideal for distribution. + +Each platform has specific configurations for its build. + +## Solution configurations + +Akin to project configurations, solution configurations are used to create custom configurations for an entire project. By using the **Configuration Mappings** tab under the **Build > Configurations** item, you can assign a target configuration for each solution item, as illustrated in the following image: + +![Configuration Mapping Options](media/projects-and-solutions-image3.png) + +For more information about configurations, see the [Configuration Manager](https://www.youtube.com/watch?v=tjSdkqYh5Vg) video by James Montemagno. + +## Run configuration + +In previous versions of Xamarin Studio, you could select the option to set a project as a **Startup Project**, which is the project that is run/debugged when using the global run/debug command. This was indicated by a bold typeface for the project's name in the project pad. + +In Visual Studio for Mac, instead of setting a startup project, you can set a _run configuration_. The run configurations are presented in a drop-down list in the toolbar, next to the build configuration selector as illustrated below: + +![Run Configuration drop-down](media/projects-and-solutions-image8.png) + +A run configuration is a set of execution options with a name and several configurations that are defined in a project for different purposes. Run configurations are defined at the project level, and a default will be created automatically for each executable project, although it is possible to add as many as needed. Certain project types automatically generate additional run configurations. For example, watchOS projects may generate  _Glance and Notification configurations._ + +Configurations can be shared with other developers (in which case the configurations will be stored in the .csproj file) or kept locally (in which case they will be stored in a .user file). + +### Android run configurations + +Run configurations for Android projects allow you to specify which activity, service, or broadcast receiver to launch when running or debugging the project. You can pass intent extra data and set intent flags to be able to test your components under different launch conditions. + +Activities other than the `MainLauncher` will need to have `Exported=true` added to the Activity attribute for debugging on a physical device, or have Intent filters defined. + +## Examples of data that might be included in run configurations + +The following list provides some examples of data that could be included in run configurations: + +* Regular .NET project + * Alternative startup app + * Start arguments + * Working directory + * Environment variables + * Mono runtime options (to be used only when running on Mono) +* Android project + * Entry point (activity, service, receiver) + * Intent arguments and data +* iOS project + * Mode (Normal, Background Fetch) +* iOS extension project + * Startup app: default or custom +* WatchKit project + * Mode (Glance, Notification) + * Notification payload + +## See also + +- [Understand build configurations (Visual Studio on Windows)](/visualstudio/ide/understanding-build-configurations) \ No newline at end of file diff --git a/mac/2017/connected-services.md b/mac/2017/connected-services.md new file mode 100644 index 00000000000..1e03d65f51e --- /dev/null +++ b/mac/2017/connected-services.md @@ -0,0 +1,73 @@ +--- +title: "Connected Services" +description: "Add Azure data storage, authentication, and push notifications to mobile apps from within Visual Studio for Mac" +ms.assetid: 41CB62FF-0F39-4CE8-8917-6A77F058719F +author: conceptdev +ms.author: crdun +ms.date: 11/06/2018 +--- + +# Connected Services walkthrough + +The Connected Services workflow brings the Azure portal workflow into Visual Studio for Mac, so you don’t have to leave your project to add services. + +This walkthrough shows how to add an Azure backend service, which brings cloud data storage, authentication, and push notifications to a cross-platform Xamarin.Forms Portable Class Library (PCL) application. + +1. Start by double-clicking on the **Connected Services** node in the solution, which brings up the **Services Gallery**. + This is a list of all the available services for the application type. Select a service (such as **Mobile backend with Azure App Service**) by clicking on it. + + [![Connected Services node in Visual Studio for Mac](media/connected-services-image001-sml.png "Connected Services node in Visual Studio for Mac")](media/connected-services-image001.png#lightbox) + +2. The Service Details Page has a description of the service and the dependencies to be installed. + Click the **Add** button to add the dependencies to the app: + + [![Mobile backend with Azure](media/connected-services-image002-sml.png "Mobile backend with Azure")](media/connected-services-image002.png#lightbox) + +3. The dependencies need to be added to both the PCL and the platform-specific projects to work. + Select the checkboxes to add the service to every project that will reference it (either directly or indirectly): + + [![Check all projects that should reference the service](media/connected-services-image003-sml.png "Check all projects that should reference the service")](media/connected-services-image003.png#lightbox) + +4. Choose **Accept** on the **License Acceptance** dialogs for the NuGet packages. + There may be two dialogs to accept, one for the MobileClient and dependencies, and another for SQLiteStore, which is required for offline data sync: + + [![Accept License Agreements](media/connected-services-image004-sml.png "Accept License Agreements")](media/connected-services-image004.png#lightbox) + + ![License Acceptance window](media/connected-services-image005.png "License Acceptance window") + +5. Once the dependencies are added, you'll be asked to log in with the account you want to use to communicate with Azure. + If you’re already logged in with a Microsoft ID, Visual Studio for Mac will attempt to fetch your Azure subscriptions + and any app services associated with them. If you do not have any subscriptions, you can add one by signing up for a free trial or purchasing a subscription plan in the Azure portal. + +6. Select an app service from the list. This will fill the template code for the `MobileServiceClient` object with the corresponding URL of the app service on Azure: + + [![Select app service from list](media/connected-services-image006-sml.png "Select app service from list")](media/connected-services-image006.png#lightbox) + + If there are no services listed, click the **New** button (see Step 9.) + +7. Copy the template code for the `MobileServiceClient` into the PCL. The file location is not important, so long as there is only one instance of it. + The recommended approach is to create an `AzureService` class that handles all Azure interactions and uses the `MobileServiceClient`: + + ![Copy config code into the ap](media/connected-services-image007.png "Copy config code into the app") + +8. Follow the documentation in **Next Steps** to add data, offline sync, authentication, and push notifications to your app: + + [![Review the next steps instructions](media/connected-services-image008-sml.png "Review the next steps instructions")](media/connected-services-image008.png#lightbox) + +9. If you don’t have any existing app services, you can create new services from within Visual Studio for Mac. + Click the **New** button in the bottom left of the services list to open the **New App Service** dialog: + + [![Create a new app service in Visual Studio for Mac](media/connected-services-image009-sml.png "Create a new app service in Visual Studio for Mac")](media/connected-services-image009.png#lightbox) + +A new service requires the following parameters: + +- **App service name** – unique name/id for the plan +- **Subscription** – the subscription you’d like to use to pay for the service +- **Resource Group** – a way or organizing all your Azure resources for a project. Option to use existing or create a new one. If this is your first Azure service, create a new one. +- **Service Plan** – Determines the location and cost of any resources that use it. Option to use existing or create a new one. If this is your first Azure service, use the default one or create a new one in the free tier (F1). + +Visit the [Mobile apps documentation](/azure/app-service-mobile/) for more information. + +## See also + +- [Connected Services (Visual Studio on Windows)](/visualstudio/azure/vs-azure-tools-connected-services-storage) \ No newline at end of file diff --git a/mac/2017/create-and-edit-configurations.md b/mac/2017/create-and-edit-configurations.md new file mode 100644 index 00000000000..dd4b6423c45 --- /dev/null +++ b/mac/2017/create-and-edit-configurations.md @@ -0,0 +1,65 @@ +--- +title: "Creating and Editing Build Configurations" +description: "This article describes creating build configurations in Visual Studio for Mac" +author: conceptdev +ms.author: crdun +ms.date: 05/06/2018 +ms.assetid: CC1B72D6-12FF-4CCC-A9D4-00F2DC14589F +ms.custom: video +--- + +# Creating and editing build configurations + +Build configurations can be created for individual projects or on a solution-wide basis. These configurations give you precise control over a build. + +The options menu for both projects and solutions provide you with an area to create and edit new and existing configurations. + +## Creating a project build configurations + +To create a project build configuration, take the following steps: + +1. Right-click on the project node and select **Options**. + +2. In the Project Options dialog, select **Build > Configurations**: + + ![Configurations manager in project options](media/create-and-edit-configurations-image2.png) + +3. To create a new configuration, select **Add**. Alternatively, you can copy one of the existing configurations. + +Once the configuration has been created, you can use the **Build** section in the Project Options to adapt properties appropriate to your configuration: + +![Configure build options](media/create-and-edit-configurations-image3.png) + +## Creating a solution build configuration + +To create a solution build configuration, take the following steps: + +1. Right-click on the Solution node and select **Options**. + +2. In the Solution Options dialog, select **Build > Configurations**: + + ![Configurations manager in solution options](media/create-and-edit-configurations-image1.png) + +3. To create a new configuration, select **Add**. Alternatively, you can copy one of the existing configurations. + +Once the configuration has been created, you can use the **Build** section in each project's options to adapt properties appropriate to your configuration: + +![Configure build options](media/create-and-edit-configurations-image3.png) + +## Editing a build configuration + +To rename a configuration, select it from the Configuration list in the Project or Solution Options: + +![configuration list](media/create-and-edit-configurations-image4.png) + +Select the **Rename** button. + +![rename dialog](media/create-and-edit-configurations-image5.png) + +## Related Video + +> [!Video https://channel9.msdn.com/Shows/Visual-Studio-Toolbox/Visual-Studio-for-Mac-Launch-Multiple-Projects/player] + +## See also + +- [Create and edit build configurations (Visual Studio on Windows)](/visualstudio/ide/how-to-create-and-edit-configurations) \ No newline at end of file diff --git a/mac/2017/create-new-projects.md b/mac/2017/create-new-projects.md new file mode 100644 index 00000000000..fac82b4290e --- /dev/null +++ b/mac/2017/create-new-projects.md @@ -0,0 +1,37 @@ +--- +title: "Creating new Projects and Solutions" +description: "This article describes how to create projects and solutions in Visual Studio for Mac" +author: conceptdev +ms.author: crdun +ms.date: 05/06/2018 +ms.assetid: 5880BB10-0A12-47E2-8A82-7A2D59C4D579 +--- +# Creating new Projects and Solutions + +## Creating new Projects and Solutions from a template + +Solutions can be created at any time by using a predefined template. To create a solution this way, browse to **File > New Solution**, select the required platform(s), and then the required template: + +![Create new Solutions](media/projects-and-solutions-image0.png) + +This will create a solution, which can contain one or many projects, depending on the type of template chosen. + +The solution explorer can be navigated by using the context actions or the menu bar. + +To add a new Project to the solution, right-click on the Solution name and select **Add > Add New Project** to display the New Project dialog: + +![Add a new Project](media/projects-and-solutions-image4.png) + +This method of adding new projects can be used to take advantage of Xamarin code-sharing capabilities. Adding a Shared Project or a Portable Library template to an existing Solution provides a way to contain any cross-platform logic that can be used within all other projects in a solution. For more information on building cross-platform applications, refer to the [relevant guide](https://developer.xamarin.com/guides/cross-platform/application_fundamentals/code-sharing/). + +## Opening Recent Solutions. + +The landing page of Visual Studio displays a list of recent projects that you have been working on: + +![Recent solutions section on welcome page](media/create-new-projects-recent.png) + +You can filter this list using the Filter box or remove individual items from the list. + +## See also + +- [Create solutions and projects (Visual Studio on Windows)](/visualstudio/ide/creating-solutions-and-projects) \ No newline at end of file diff --git a/mac/2017/create-offline-installer.md b/mac/2017/create-offline-installer.md new file mode 100644 index 00000000000..0bfa07be55a --- /dev/null +++ b/mac/2017/create-offline-installer.md @@ -0,0 +1,17 @@ +--- +title: "Create an Offline Installer for Visual Studio for Mac" +description: +author: conceptdev +ms.author: crdun +ms.date: 11/06/2018 +ms.technology: vs-ide-install +ms.assetid: 5CA4B8C1-2D01-46EA-A6B2-8573B324509B +--- +# Create an Offline Installer for Visual Studio for Mac + +> [!IMPORTANT] +> An offline installer feature is planned for future versions of Visual Studio for Mac. + +## See also + +- [Create an offline installation of Visual Studio (on Windows)](/visualstudio/install/create-an-offline-installation-of-visual-studio) diff --git a/mac/2017/customizing-build-system.md b/mac/2017/customizing-build-system.md new file mode 100644 index 00000000000..e3dd02ff652 --- /dev/null +++ b/mac/2017/customizing-build-system.md @@ -0,0 +1,102 @@ +--- +title: "Customizing the Build System" +description: "This article is a brief introduction to the MSBuild build system used by Visual Studio for Mac" +author: conceptdev +ms.author: crdun +ms.date: 04/14/2017 +ms.assetid: 6958B102-8527-4B40-BC65-3505DB63F9D3 +--- + +# Customizing the build system + +MSBuild is a build engine, developed by Microsoft, that allows for the building of primarily .NET applications. The Mono framework also has its own implementation of Microsoft's Build Engine, called **xbuild**. However, xbuild has been phased out in favor of using MSBuild on all operating systems. + +**MSBuild** is primarily used for as the build system for projects in Visual Studio for Mac. + +MSBuild works by taking a set of inputs, such as source files, and transforms them to outputs, such as executables. It achieves this output by invoking tools such as the compiler. + +## MSBuild file + +MSBuild uses an XML file, called a project file, that defines the *Items* that are part of your project (such as image resources), and the *Properties* required to build your project. This project file will always have a file extension ending in `proj`, such as `.csproj` for C# projects. + +### Viewing the MSBuild file + +Locate the MSBuild file by right-clicking on your project name and selecting **Reveal in Finder**. The finder window displays all the files and folders related to your project, including the `.csproj` file, as illustrated in the following image: + +![csproj location in Finder](media/customizing-build-system-image1.png) + +To display the `.csproj` in a new tab in Visual Studio for Mac, right-click on your project name and browse to **Tools > Edit File**: + +![opening the csproj in the source editor](media/customizing-build-system-image2.png) + +### Composition of the MSBuild file + +All MSBuild files contain a mandatory root `Project` element, like so: + +```xml + + + +``` + +Typically, the project will also import a `.targets` file. This file contains many of the rules that describe how to process and build the various files. The import usually appear towards the bottom of your `proj` file, and for C# projects look something like this: + +```xml + +``` + +The targets file is another MSBuild file. This file contains MSBuild code that is reusable by multiple projects. For example, the `Microsoft.CSharp.targets` file, which is found in a directory represented by the `MSBuildBinPath` property (or variable), contains the logic for building C# assemblies from C# source files. + +### Items and properties + +There are two fundamental data types in MSBuild: *items* and *properties*, which are explained in more detail in the following sections. + +#### Properties + +Properties are key/value pairs, which are used to store settings that affect compilation, such as compiler options. + +They are set using a PropertyGroup and can contain any number of PropertiesGroups, which can contain any number of properties. + +For example, the PropertyGroup for a simple console application might look like the following XML: + +```xml + + Debug + x86 + {E248730E-1393-43CC-9183-FFA42F63BE81} + Exe + refactoring + refactoring + v4.5 + +``` + +Properties can be referred to from expressions using the `$()` syntax. For example, `$(Foo)` will be evaluated as the value of the `Foo` property. If the property has not been set, it will evaluate as an empty string, without any error. + +#### Items + +Items provide a way of dealing with inputs into the build system as lists or sets, and typically represent files. Each item has an item *type*, an item *spec*, and optional arbitrary *metadata*. Note that MSBuild doesn't operate on individual items, it takes on all the items of a given type-called an item *set* + +Items are created by declaring an `ItemGroup`. There can be any number of ItemGroups, which can contain any number of items. + +For example, the following code snippet creates the iOS Launch Screens. The Launch Screens have the build type `BundleResource`, with the spec as the path to the image: + +```xml + + + + + + + + + ``` + + Item sets can be referred to from expressions using the `@()` syntax. For example, `@(BundleResource)` will be evaluated as the BundleResource item set, which means all of the BundleResource items. If there are no items of this type, it will be empty, without any error. + +## Resources for learning MSBuild + +The following resources can be used to learn about MSBuild in more detail: + +* [MSBuild Overview](/visualstudio/msbuild/msbuild) +* [MSBuild Concepts](/visualstudio/msbuild/msbuild-concepts) diff --git a/mac/2017/customizing-the-ide.md b/mac/2017/customizing-the-ide.md new file mode 100644 index 00000000000..b6e02ac0065 --- /dev/null +++ b/mac/2017/customizing-the-ide.md @@ -0,0 +1,131 @@ +--- +title: Customizing the IDE +description: Visual Studio for Mac can be customized in a variety of ways, allowing users to develop apps in an environment that meets both their efficiency and aesthetic needs. This topic explores the variety of ways Visual Studio for Mac can be adapted to suit your needs. +author: conceptdev +ms.author: crdun +ms.date: 05/06/2018 +ms.assetid: F7C2A28C-0759-4E0D-A28E-B72D5AB73DB6 +ms.custom: video +--- +# Customizing the IDE + +Visual Studio for Mac can be customized in a variety of ways, allowing users to develop apps in an environment that meets their needs for both efficiency and aesthetics. This article explores the variety of ways that Visual Studio for Mac can be adapted to suit your needs. + +## Dark theme + +![Dark Theme View](media/customizing-the-ide-image7a.png) + +You can switch themes in Visual Studio for Mac by browsing to **Visual Studio > Preferences > Environment > Visual Style** and selecting your desired theme from the **User Interface Theme** drop-down, as illustrated in the following image: + +![Dark Theme Selection](media/customizing-the-ide-image7b.png) + +## Localization + +Visual Studio for Mac is localized in the following 14 languages, enabling it to be accessible to more developers: + +* Chinese - China +* Chinese - Taiwan +* Czech +* French +* German +* English +* Italian +* Japanese +* Korean +* Polish +* Portuguese - Brazil +* Russian +* Spanish +* Turkish + +To change the language displayed by Visual Studio for Mac, browse to **Visual Studio > Preferences > Environment > Visual Style** and select your desired language from the **User Interface Language** drop-down, as illustrated in the following image: + +![Language Selection](media/customizing-the-ide-image11a.png) + +## Author information + +The author information panel allows you to add relevant information about yourself such as your name, email address, the copyright owner for your work, your company, and trademark: + +![Edit Author Information section](media/customizing-the-ide-image9a.png) + +This information is used to populate standard file headers, such as a license, that you might add to new files: + +![Standard Header options](media/customizing-the-ide-image8a.png) + +Populated **Name** and **Email** fields will be used in any commit that is made through Version Control in Visual Studio for Mac. If you have not populated these fields, Visual Studio for Mac will prompt you to do so when you try to use Version Control. + +## Key bindings + +Key bindings allow you to adapt your development environment so that you can move more efficiently throughout Visual Studio for Mac. It provides familiar key bindings for many popular IDEs, such as Visual Studio (on Windows), ReSharper, Visual Studio Code, and Xcode. + +Key bindings can be set by browsing to **Visual Studio > Preferences > Environment > Key Bindings**, as illustrated by the following image: + +![Set Key bindings](media/customizing-the-ide-image10a.png) + +From here you can search for key binding combinations, view conflicting bindings, add new bindings, and edit the existing bindings. + +## Workspace layout + +Visual Studio for Mac's workspace consists of a main document area (normally the editor, designer surface, or options file), surrounded by complimentary *pads* that contain useful information for accessing and managing application files, testing, and debugging. + + ![Workspace layout](media/customizing-the-ide-image1a.png) + +### Viewing and arranging pads + +When you open any new solution or file in Visual Studio for Mac, you should notice some *pads* in the workspace, including the Solution Pad, Document Outline, and Errors: + +![Solution Pads](media/customizing-the-ide-image2a.png) + +Visual Studio for Mac provides pads containing additional information, tools, and navigation aids, all of which can be accessed by browsing to the **View > Pads** menu item and selecting a pad to add it: + +![Select new Pad](media/customizing-the-ide-image3a.png) + +Pads may also be opened automatically by various commands, such as the **Find in Files** (Shift + Cmd + F) command, which opens a detached pad of search results. + +Pads can be moved and arranged throughout your workflow in whatever way is most useful to you. For example, they can be docked on any side of the document editor, adjacent to another pad, above or below another pad, or as a set of tabbed pads enabling you to quickly switch between them. + +For frequently used pads, you can also completely detach a pad from the Visual Studio for Mac window, and create a separate window for that pad. + +Pads can be hidden and closed by the toggles in the top-right corner of each pad: + +![Hiding and Closing Pads](media/customizing-the-ide-image5a.png) + +Autohidden pads are docked to the sides of the workspace making them easily accessible when they are required. Hovering over the pad displays it again, and it will be hidden when the mouse and keyboard focus leaves it. + +### Organizing layouts + +The pads that are displayed at any time are dependent on the current context. For example, when using the visual designer, the toolbox and property grid pads are most important; when debugging, it is useful to have the debugger pads for viewing the stack and locals. + +The state of the open pads is represented by a *layout*. The layouts can be switched manually through the View menu, as illustrated in the following image, or it is switched automatically when you carry out an action, such as debugging, or opening a Storyboard: + +![Selecting new Layouts](media/customizing-the-ide-image6b.png) + +There is always one active layout and any change you make in a layout, such as adding or repositioning a pad, will only change the active layout. Once you close Visual Studio for Mac, the changes you have made will not be saved. + +However, it is possible to create a new layout by using the **View > Save Current Layout** menu item. This will add your current layout to the menu so that you can select it at any time: + +![Save Current Layout](media/customizing-the-ide-image6a.png) + +### Side-by-side editing support + +Visual Studio for Mac allows you to open text editors side by side, or to have an editor as a detached floating window. + +2-column mode can be enabled through the View menu item by selecting **View > Editor Columns > 2 columns**, or by dragging an editor tab to one of the edges of the editor area: + +![Two column side-by-side mode](media/customizing-the-ide-sbs.png) + +Editor tabs can be dragged out of the document area to create a floating editor window. This floating window also supports side-by-side editors, and can contain several editor tabs: + +![Create new window](media/customizing-the-ide-sbs1.png) + +![Two columns side by side with additional tabs](media/customizing-the-ide-sbs2.png) + +To revert to a single open editor, select **View > Editor Columns > 1 column**. + +## Related Video + +> [!Video https://channel9.msdn.com/Shows/Visual-Studio-Toolbox/Visual-Studio-for-Mac-Customize-the-Look-and-Feel/player] + +## See also + +- [Personalize the Visual Studio IDE (on Windows)](/visualstudio/ide/personalizing-the-visual-studio-ide) \ No newline at end of file diff --git a/mac/2017/data-visualizations.md b/mac/2017/data-visualizations.md new file mode 100644 index 00000000000..32bcf3798df --- /dev/null +++ b/mac/2017/data-visualizations.md @@ -0,0 +1,102 @@ +--- +title: Debugging - Data Visualizations +description: Debugging is a common, and necessary, part of programming. Visual Studio for Mac contains a whole suite of features to make debugging easy. This article looks at the different data visualizations that can be viewed when inspecting objects in the debugger. +author: conceptdev +ms.author: crdun +ms.date: 05/06/2018 +ms.technology: vs-ide-debug +ms.assetid: 527E6BEC-EF15-4002-ACB5-62AE1C16F6B7 +--- + +# Data visualizations + +Visual Studio for Mac includes UI support for the debugger, allowing visualizations of the values of a variable, field, or property while debugging. These data visualizers show an extended version of the data and allow developers to inspect known structures, for example showing the color of a color struct. + +Visualizers in the debug **Local** pad can be displayed by clicking on the preview icon that appears to the right of the value, when the user hovers over the row: + +![Local Pad](media/data-visualizations-image9.png) + +The list below looks at many of the new visualizations available when debugging in Visual Studio for Mac. + +## Point +A Point/PointF, or CGPoint in iOS and Mac, will render as a tuple showing the X and Y values in the debug pad: + +![Point Visualization](media/data-visualizations-image10.png) + +## Size +A Size/SizeF, or CGSize in iOS and Mac, will render as a rectangle. It is drawn to scale until a dimension grows past 250 px, at which point it will scale the rectangle with the largest dimension as 250 px: + +[Size Visualization](media/data-visualizations-image11.png) + +## Rectangle +A Rectangle/RectangleF, or CGRect in iOS and Mac, will display the dimensions and origin. Similar to Size, it is drawn to scale, until a dimension grows past 250 px: + +![Rectangle Visualization](media/data-visualizations-image12.png) + +## Coordinate +Coordinates are plotted on a map, with the location pinned to the center: + +[Coordinate Visualization](media/data-visualizations-image13.png) + +## Color +This will display UIColor, CGColor, and Color properties, depicting the color preview, RGBA components, Hue-Saturation-Lightness values, and the hex value of the color: + +![Color Visualization](media/data-visualizations-image14.png) + +## Images + +Media will be rendered to scale, up to a maximum dimension of 250 px, and will be scaled to fit when the image exceeds 250 px: + +![Image Visualization](media/data-visualizations-image15.png) + +## Bezier Curves + +The visualizer will display an `NSBezierPath`: + +![Bezier Curve Visualization](media/data-visualizations-image16.png) + +## String + +A string of fewer than 100 characters is displayed in full, without a preview. Longer strings are displayed in full in the preview. Strings are editable, and the visualizer is accompanied by an edit button, allowing the string value to be edited either in the preview or in the String Value Editor, shown below: + +![String Visualization](media/data-visualizations-image17.png) + +### Small Strings: +![Small String Visualization](media/data-visualizations-image18.png)] + +### Medium-length Strings: +![Medium String Visualization](media/data-visualizations-image19.png) + +### Editor: + +![Editor Visualization](media/data-visualizations-image21.png) + +## IEnumerable + +IEnumerable enumerates all values; the values of each can be viewed by clicking the **Show** Values button. The IEnumerable option will not display values for objects such as `Array`, `ArrayList`, `List<>`, `Dictionary<,>` as these have their own debugger visualizers. + +![IEnumerable Visualization](media/data-visualizations-image22.png) + +## Other Visualizers + +Some other types that also have their own inline visualizers are listed below: + +![Other Visualization](media/data-visualizations-image23.png) + +* **Primitives** + * This will show the raw value of the primitive type. +* **Enum** + * This will display the field value without the enum Type qualifier. +* **Tuple** + * Displayed in the format (,) +* **Null** + * Shows "null" value. +* **URL** + * This will display a clickable hyperlink. +* **IntPtr** + * This will display a hexadecimal representation of the IntPtr. + +## See also + +- [Inspect variables in the Autos and Locals windows (Visual Studio on Windows)](/visualstudio/debugger/autos-and-locals-windows) +- [View strings in a visualizer (Visual Studio on Windows)](/visualstudio/debugger/string-visualizer-dialog-box) \ No newline at end of file diff --git a/mac/2017/debugging.md b/mac/2017/debugging.md new file mode 100644 index 00000000000..2deb2301b2d --- /dev/null +++ b/mac/2017/debugging.md @@ -0,0 +1,93 @@ +--- +title: Debugging with Xamarin +description: Debugging is a common, and necessary, part of programming. As a mature IDE, Visual Studio for Mac contains a whole suite of features to make debugging easy. From safe debugging, to data visualization, this article will explain how to use the full potential of debugging in Visual Studio for Mac. +author: conceptdev +ms.author: crdun +ms.date: 05/06/2018 +ms.technology: vs-ide-debug +ms.assetid: BB7A084D-9AC2-48B5-8076-6C8518796BBA +--- +# Debugging with Xamarin + +Visual Studio for Mac has a native debugger allowing debugging support for Xamarin.iOS, Xamarin.Mac, and Xamarin.Android applications. + +Visual Studio for Mac uses the [*Mono Soft Debugger*](http://www.mono-project.com/docs/advanced/runtime/docs/soft-debugger/), which is implemented into the Mono runtime, allowing Visual Studio for Mac to debug managed code across all platforms. + +## The Debugger + +Visual Studio for Mac uses the Mono Soft Debugger to debug managed (C# or F#) code in all Xamarin applications. The Mono Soft debugger is different from regular debuggers in that it is a co-operative debugger that is built into the Mono runtime; the generated code and Mono runtime co-operate with the IDE to provide a debugging experience. The Mono runtime exposes the debugging functionality through a wire protocol, which you can read more about [in the Mono documentation](http://www.mono-project.com/docs/advanced/runtime/docs/soft-debugger-wire-format/). + +Hard debuggers, such as [LLDB]( http://lldb.llvm.org/index.html) or [GDB]( https://www.gnu.org/software/gdb/), control a program without the knowledge or cooperation from the debugged program, but can still be useful when debugging Xamarin applications in the event that you need to debug native iOS or Android code. + +## Using the debugger + +To start debugging any application, always ensure that the configuration is set to **Debug**. The debug configuration provides a helpful set of tools to support debugging, such as breakpoints, using data visualizers, and viewing the call stack: + +![Debug configuration](media/debugging-image_0.png) + +## Setting a breakpoint + +To set a breakpoint in your IDE, click on the margin area of your editor, next to the line number of the code where you wish to break: + +![Setting breakpoint in margin](media/debugging-image0.png) + +You can view all the breakpoints that have been set in your code by going to the **Breakpoints pad**: + +![List of breakpoints](media/debugging-image0a.png) + +## Start debugging + +To start debugging, select the target device or similar/emulator in your IDE: + +![Select target device](media/debugging-image1.png) + +Then deploy your application by pressing the **Play** button, or **Cmd + return**. When you hit a breakpoint, the code will be highlighted yellow: + +![Highlight showing breakpoint has been hit](media/debugging-image2.png) + +Debugging tools, such as the one used to inspect the values of objects, can be used at this point to get more information about what is happening in your code: + +![Debug visualizations](media/debugging-image3.png) + +## Conditional breakpoints + +You can also set rules dictating the circumstances under which a breakpoint should occur, this is known as adding a *conditional breakpoint*. To set a conditional breakpoint, access the **Breakpoint Properties window**, which can be done in two ways: + +* To add a new conditional breakpoint, right-click on the editor margin, to the left of the line number for the code you wish to set a breakpoint on, and select New Breakpoint: + + ![Breakpoint context menu](media/debugging-image4.png) + +* To add a condition to an existing breakpoint, right-click on the breakpoint and select **Breakpoint Properties**, or, in the **Breakpoints Pad**, select the Edit Breakpoint button illustrated below: + + ![Edit existing Breakpoint in Breakpoints Pad](media/debugging-image5.png) + +You can then enter the condition under which you want the breakpoint to occur: + + ![Edit Breakpoint conditions](media/debugging-image6.png) + +## Stepping through code + +When a breakpoint has been reached, the Debug tools enable you to get control over the program's execution. Visual Studio for Mac will display four buttons, allowing you to run and step through the code. In Visual Studio for Mac, they will look like the following: + + ![Buttons to step through code](media/debugging-image7.png) + +Here are the four buttons: + +* **Play** - This will begin executing the code, until the next breakpoint. +* **Step Over** - This will execute the next line of code. If the next line is a function call, Step Over will execute the function, and will stop at the next line of code *after* the function. +* **Step Into** - This will also execute the next line of code. If the next line is a function call, Step Into will stop at the first line of the function, allowing you to continue line-by-line debugging of the function. If the next line is not a function, it will behave the same as Step Over. +* **Step Out** - This will return to the line where the current function was called. + +## Debugging Mono's class libraries + +Xamarin products ship with the source code for Mono's class libraries, and you can use this to single step from the debugger to inspect how things are working under the hood. + +Since this feature consumes more memory during debugging, it is turned off by default. + +To enable this feature, browse to **Visual Studio for Mac > Preferences > Debugger** and ensure that the "**Debug project code only; do not step into framework code.**" option is **unselected**, as illustrated below: + +![Do not step into framework code option](media/debugging-image8.png) + +## See also + +- [Debugging in Visual Studio (on Windows)](/visualstudio/debugger/) \ No newline at end of file diff --git a/mac/2017/editor-behavior.md b/mac/2017/editor-behavior.md new file mode 100644 index 00000000000..cc337e6a1de --- /dev/null +++ b/mac/2017/editor-behavior.md @@ -0,0 +1,29 @@ +--- +title: Code formatting +description: "This articles describes the various options that can be used to modify the text editor behavior in Visual Studio for Mac" +author: conceptdev +ms.author: crdun +ms.date: 05/06/2018 +ms.assetid: 81EE4460-26EB-4BB0-9297-932E1F88E4B8 +--- + +# Editor Behavior + +Editor behaviors can be set to allow code to be formatted as it is written. These actions are set under **Visual Studio > Preferences > Text Editor > Behavior**, and some of the more commonly used functions are described below: + +![Editor Behavior options](media/source-editor-image9.png) + +* Matching closing braces can be added automatically to code when creating new classes, methods, or properties. When this option is selected, typing `{` will automatically add `}`. +* On-the-fly code formatting is triggered by character presses, such as semi-colon or braces, which will emulate the formatting preferences that are set. +* You can also choose to format the file when saving it, which allows the writing of code as desired and leaves the IDE responsible for formatting code as set by existing preferences. +* Indentation can be set to None, Auto, or Smart. These do the following: + * None - sets the caret to the start of the next line + * Auto - sets the caret to the same column on the next line + * Smart - indents on the following line based on the code +* Word-breaking behavior differs between OSes, and for navigation purposes, the text editor needs to know where words begin or end. The formatting can be set to Unix or Windows. + +You can also set formatting rules for XML, CSS, HTML, and JSON. + +## See also + +- [Code style preferences (Visual Studio on Windows)](/visualstudio/ide/code-styles-and-quick-actions) \ No newline at end of file diff --git a/mac/2017/editor-themes.md b/mac/2017/editor-themes.md new file mode 100644 index 00000000000..45ca127c6c7 --- /dev/null +++ b/mac/2017/editor-themes.md @@ -0,0 +1,31 @@ +--- +title: "Editor Themes" +description: "This article describes how to edit the theme of the editor or add your own in Visual Studio for Mac" +author: conceptdev +ms.author: crdun +ms.date: 11/06/2018 +ms.assetid: 4C1B7952-CD45-4132-AD6B-01CF993D83F8 +--- + +# Editor themes + +Editor themes can be changed to any of the 10 color schemes provided by default in Visual Studio for Mac via the **Visual Studio > Preferences > Text Editor > Color Themes** menu options: + +![Color Theme Selection](media/source-editor-image17.png) + +## Adding new themes + +New color themes can be added, provided they are in one of the supported formats: + +* Visual Studio (`.vssettings`) +* Xamarin Studio (`.json`) +* TextMate (`.tmTheme`) + +Once you have found or created a new theme and downloaded it to your local machine, add it by doing the following steps: + +1. Select the **Add** button on the Color Themes Option dialog: + ![Color Theme Add](media/source-editor-image20.png) +2. Browse for the theme on your local machine and press **Open**. +3. The theme is added to the bottom of the pre-installed list of themes. To preview the theme, select it: + ![Color Theme Preview](media/source-editor-image21.png) +4. To apply the theme, press the **Okay** button. diff --git a/mac/2017/editorconfig.md b/mac/2017/editorconfig.md new file mode 100644 index 00000000000..8f1c0a60a95 --- /dev/null +++ b/mac/2017/editorconfig.md @@ -0,0 +1,148 @@ +--- +title: "EditorConfig" +description: "Using an editorconfig file to enable consistent project coding styles in Visual Studio for Mac." +author: conceptdev +ms.author: crdun +ms.date: 05/06/2018 +ms.topic: article +ms.technology: vs-ide-install +ms.assetid: 26A0DE31-2FBF-4E1B-99FB-083111AA1680 +--- + +# Creating and editing a custom EditorConfig file + +In Visual Studio for Mac, you can add an [EditorConfig](http://editorconfig.org/) file to your project or solution to enforce consistent coding styles for everyone that works in the codebase. The settings declared in the EditorConfig file take precedence over global Visual Studio for Mac text editor settings. Using an EditorConfig file within your project or codebase allows you to set your coding style, preferences, and warnings for your project. Because the file is part of your codebase, it makes it easier for all users to adhere to the coding practices of a project, regardless of the IDE or code editor that they use. + +[EditorConfig](http://editorconfig.org/) files are supported on many IDEs and code editors, including Visual Studio 2017. + +## Supported settings + +The editor in Visual Studio for Mac supports the core set of [EditorConfig properties](http://editorconfig.org/#supported-properties): + +- `indent_style` +- `indent_size` +- `tab_width` +- `end_of_line` +- `charset` +- `trim_trailing_whitespace` +- `insert_final_newline` +- `root` + +EditorConfig also supports [Coding conventions](/visualstudio/ide/editorconfig-code-style-settings-reference) in C#. + +## Add an EditorConfig file to a project + +### Adding a new EditorConfig file + +1. Open your project in Visual Studio for Mac. Select either the solution or project node that you wish to add the EditorConfig file to. Adding the file to the solution directory applies the .editorconfig settings to all projects in the solution. + +2. Right-click on the node and select **Add > New File** to open the **New File** dialog: + + ![Content menu items](media/editorconfig-image0.png) + +3. Choose **Misc > Empty Text File** and give it the **Name** `.editorconfig`. Press **New** to create the file and open it in the editor: + + ![New file dialog](media/editorconfig-image1.png) + + Adding the item at the solution level automatically creates and nests it in a **Solution Items** folder: + + ![Solution item displayed in solution pad](media/editorconfig-image1a.png) + +4. Edit the file. For example: + + ```EditorConfig + # This file is the top-most EditorConfig file + root = true + + # All Files + [*] + indent_style = space + indent_size = 8 + insert_final_newline = false + trim_trailing_whitespace = false + + [*.cs] + csharp_new_line_before_open_brace = none + ``` + +4. The settings from the `.editorconfig` file will apply to any new code that you write, but existing code may need to be reformatted to be consistent with the new settings. To apply the settings from the `.editorconfig` file to an existing source file, open the file and choose **Edit > Format > Format Document** from the menu bar:: + + ![Format Document menu item](media/editorconfig-image2.png) + +### Adding an existing EditorConfig file + +If you're working with a project or solution that already contains an `.editorconfig` file, there is nothing that you need to do to apply the settings. Any new lines of code are formatted according to the EditorConfig settings. + +You may want to reuse an existing `.editorconfig` file in your project. To add an existing file, do the following: + +1. Right-click on the folder you wish to add it to and select **Add > Add Files**. + +2. Browse to the directory of the required file. + +3. Files beginning with `.` (such as `.editorconfig`) are hidden files in macOS, so press **Command + Shift + .** to make the `.editorconfig` file visible. + +4. Select the `.editorconfig` file and click **Open**: + + ![adding a new file window](media/editorconfig-image3b.png) + +5. When you're presented with the following dialog, select the **Copy the file to the directory** option and select **OK**: + + ![Add file to folder dialog options](media/editorconfig-image3.png) + +### Reflecting .editorconfig settings + +Once you add an EditorConfig file to your codebase, any new code added is automatically formatted according to the specified settings. Existing code doesn't automatically reflect the settings unless you format the codebase. + +To reflect the settings from the `.editorconfig` file, select the solution node and choose **Edit > Format > Format Document** from the menu bar: + +![Format document from the menu bar](media/editorconfig-image3a.png) + +## Editing an EditorConfig file + +EditorConfig files use a straightforward file layout to specify settings, which is explained below using a previous example: + +```EditorConfig +# This file is the top-most EditorConfig file +root = true + +# All Files +[*] +indent_style = space +indent_size = 4 +insert_final_newline = false +trim_trailing_whitespace = false + +[*.cs] +csharp_new_line_before_open_brace = none +``` + +Setting `root` to `true` flags this file as the top-most file of the codebase and any higher `.editorconfig` files in the project are ignored, as explained in the [Override EditorConfig Settings](#override-editorconfig-settings) section. + +Each section is denoted by square (**[ ]**) braces and specifies information on the types of files the following properties should pertain to. + +In the example above, some settings are applied to all files in the project and others are added only to C# files. The screenshots below show before and after the `.editorconfig` settings have been applied: + +**Before**: + +![Before editorconfig settings have been applied](media/editorconfig-image4.png) + +**After**: + +![after editorconfig settings have been applied](media/editorconfig-image5.png) + +For more information on available EditorConfig settings, see the [.NET coding convention settings for EditorConfig](/visualstudio/ide/editorconfig-code-style-settings-reference) article and the [Supported Properties](http://editorconfig.org/#supported-properties) section on the official documentation. + +## Override EditorConfig Settings + +It's possible to have more than one `.editorconfig` file in each solution. Visual Studio for Mac reads `.editorconfig` files from top to bottom in the solution, adding and overriding settings as it goes.This means that the settings in the `.editorconfig` _closest_ to the file you're editing will take precedence. Settings are taken from the `.editorconfig` file the same folder (if it exists), then the `.editorconfig` in parent folder (if that exists), etc. until it finds `root=true`. + +If you want to ensure that _no_ settings from any higher-level `.editorconfig` files are applied to this part of the codebase, add the `root=true` property to the top of the lower-level `.editorconfig` file: + +```EditorConfig +# top-most EditorConfig file +root = true +``` + +## See also + +- [Create custom editor settings with EditorConfig (Visual Studio on Windows)](/visualstudio/ide/create-portable-custom-editor-options) \ No newline at end of file diff --git a/mac/2017/enable-subscription.md b/mac/2017/enable-subscription.md new file mode 100644 index 00000000000..18deac5f8e7 --- /dev/null +++ b/mac/2017/enable-subscription.md @@ -0,0 +1,44 @@ +--- +title: "Enable Subscription for Visual Studio for Mac" +description: This article describes how to use your Microsoft account to enable your subscription and unlock features in Visual Studio for Mac +author: conceptdev +ms.author: crdun +ms.date: 05/06/2018 +ms.assetid: 898DFEB8-5757-4CCE-8AD2-8BC7706F5855 +--- + +# Enable Subscription + +Visual Studio for Mac provides you with three different subscription levels to choose from, all accessible from one download: + +* Visual Studio Enterprise for Mac +* Visual Studio Professional for Mac +* Visual Studio Community for Mac + +To start using a subscription, log in to Visual Studio for Mac by following the steps in the [Signing in to Visual Studio for Mac](signing-in.md) guide. Signing in activates your subscription, which is displayed in the accounts dialog: + +![Show user license dialog](media/user-accounts-login.png) + +## Update expired licenses + +If your subscription has expired, you have two options: + +1. Renew your subscription. You can renew your subscription by browsing to [https://visualstudio.microsoft.com/vs/pricing/](https://visualstudio.microsoft.com/vs/pricing/). + +2. If you have another account with an active subscription, you can add it to Visual Studio for Mac as detailed in the [Adding multiple user accounts](signing-in.md) article. Visual Studio for Mac will detect the best available license from all accounts that you have added. + +## Product key usage + +Currently, there is no way to utilize a product key to enable Professional or Enterprise entitlements for Visual Studio for Mac. To use Visual Studio Enterprise for Mac or Visual Studio Professional for Mac, you must have a relevant [subscription](https://visualstudio.microsoft.com/subscriptions/) and be [signed in](signing-in.md) to the IDE. + +## Offline activation + +> [!NOTE] +> Offline activation is not available for Visual Studio for Mac. +> To activate your Visual Studio 2017 for Mac Professional or Enterprise subscription, you must be connected to the internet when signing in. + +If you have purchased Visual Studio Enterprise 2017 for Mac for machines without an internet connection, you may continue to use Visual Studio for Mac without activation, but Xamarin Inspector, Xamarin Profiler, and embedded assemblies features will not be available. + +## See also + +- [Sign in to Visual Studio (on Windows)](/visualstudio/ide/signing-in-to-visual-studio) \ No newline at end of file diff --git a/mac/2017/extending-visual-studio-mac-walkthrough.md b/mac/2017/extending-visual-studio-mac-walkthrough.md new file mode 100644 index 00000000000..770a5119349 --- /dev/null +++ b/mac/2017/extending-visual-studio-mac-walkthrough.md @@ -0,0 +1,136 @@ +--- +title: "Extending Visual Studio for Mac Walkthrough" +author: conceptdev +ms.author: crdun +ms.date: 04/14/2017 +ms.technology: vs-ide-sdk +ms.assetid: 7D00512B-9688-4D8D-87A7-F04F207E3D02 +--- + +# Extending Visual Studio for Mac Walkthrough + +This topic guides you through building [a simple extension package](https://github.com/mjh4/AddIns/tree/master/DateInserter). The extension package will create a new Command in Visual Studio for Mac's Edit menu that allows the user to insert the current date and time into an open text document. + +This example uses the Add-in Maker. The Add-In Maker creates a new Project template and populates it with the required files for our custom extension package. + +1. Begin by launching Visual Studio for Mac if it's not already open: + + ![Visual Studio for Mac Screenshot](media/extending-visual-studio-mac-addin3.png) + +2. Install the _Add-in Maker extension package_ using the Extension Manager. From the Visual Studio menu, choose **Extensions...**: + + ![Addin Manager Tab](media/extending-visual-studio-mac-addin4.png) + +3. Navigate to the Gallery tab and type `Addin Maker` into the top-right search bar. Select Addin Maker from the Add-in Development category and click Install. If nothing shows up, hit Refresh and search again: + + ![Addin Manager](media/extending-visual-studio-mac-addin5.png) + +4. Now that the Addin Maker is installed, you can start building an extension package. Start by creating a new solution. + +5. From the **New Solution dialog**, choose **Other > Miscellaneous > General > Xamarin Studio Addin > C#** template and on the following screen name the new Solution `DateInserter`: + + ![Creating a New Solution](media/extending-visual-studio-mac-addin7New.png) + +6. Visual Studio for Mac will populate a new Solution: + + ![Populated Solution](media/extending-visual-studio-mac-addin8.png) + +7. Remove the template code in `Manifest.addin.xml` and replace it with the following: + + ```xml + + + + + + + + + + + ``` + +8. Now you need to set up the files that will eventually handle inserting the date and time into the text editor. Right-Click on the project node and add a new file. Select **General > Empty Class** and name the new file *InsertDateHandler*: + + ![Insert Date Handler](media/extending-visual-studio-mac-addin9.png) + +9. Let's remove the template code from `InsertDateHandler.cs` and replace it with the following code: + + ```cs + using MonoDevelop.Components.Commands; + using MonoDevelop.Ide; + using MonoDevelop.Ide.Gui; + using System; + + namespace DateInserter + { + class InsertDateHandler : CommandHandler + { + protected override void Run() + { + + } + + protected override void Update(CommandInfo info) + { + + } + } + } + ``` + + We'll expand these two placeholder methods later. + +10. Right-click on the **DateInserter** Project and select **Add > New File**. Select **General > Empty Enumeration**, and then name the new file *DateInserterCommands*: + + ![DateInserterCommands](media/extending-visual-studio-mac-addin10.png) + +11. Add the `InsertDate` Command as a new enumeration in the `DateInserterCommands.cs` file: + + ``` cs + using System; + + namespace DateInserter + { + public enum DateInserterCommands + { + InsertDate, + } + } + ``` + +12. At this point, you should have a working extension package. You can test it out by saving your work and running the application. The IDE will launch a new instance of Visual Studio for Mac with the new extension package installed. If you navigate to the **Edit menu**, you'll see that Visual Studio for Mac has a new option called **Insert Date**, as illustrated by the screenshot below: + + ![Insert Date Command](media/extending-visual-studio-mac-addin11.png) + + Note that selecting Insert Date from the menu has no effect as the current implementation only has placeholder methods. + +13. The framework is in place for the extension package, and it's time to write the code that powers inserting the date. First, make sure that the **Insert Date Command** is only enabled when the user has a text file open by replacing the `Update` method in `InsertDateHandler.cs` with the following code: + + ```cs + protected override void Update(CommandInfo info) + { + info.Enabled = IdeApp.Workbench.ActiveDocument?.Editor != null; + } + ``` + +14. Update the Command's `Run` method to insert the date and time with the following code: + + ``` cs + protected override void Run () { + var editor = IdeApp.Workbench.ActiveDocument.Editor; + var date = DateTime.Now.ToString (); + editor.InsertAtCaret (date); + + } + ``` + +15. Finally, let's run our extension package to test it. In the new instance of Visual Studio for Mac, select **Edit > Insert Date**. The current date and time is inserted at our caret, as illustrated by the screenshot below: + + ![Insert Date Screenshot](media/extending-visual-studio-mac-addin12.png) + +## See also + +- [Create your first extension (Visual Studio on Windows)](/visualstudio/extensibility/extensibility-hello-world) \ No newline at end of file diff --git a/mac/2017/extending-visual-studio-mac.md b/mac/2017/extending-visual-studio-mac.md new file mode 100644 index 00000000000..02b404f1a14 --- /dev/null +++ b/mac/2017/extending-visual-studio-mac.md @@ -0,0 +1,164 @@ +--- +title: "Extending Visual Studio for Mac" +description: "Visual Studio for Mac's features and functionality can be extended with modules called extension packages. The first part of this guide creates a simple Visual Studio for Mac extension package to insert the date and time into a document. The second part of this guide introduces the fundamentals of the extension package system and some of the core APIs that form the foundation of Visual Studio for Mac." +author: conceptdev +ms.author: crdun +ms.date: 04/14/2017 +ms.technology: vs-ide-sdk +ms.assetid: D5245AB0-8404-426B-B538-F49125E672B2 +--- + +# Extending Visual Studio for Mac + +Visual Studio for Mac consists of a set of modules called *Extension Packages*. You can use Extension Packages to introduce new functionality to Visual Studio for Mac, such as support for an additional language or a new Project template. + +Extension packages build from the *extension* points of other extension packages. Extension points are placeholders for areas that can be expanded upon, such as a menu or the list of IDE Commands. An extension package can build from an extension point by registering a node of structured data called an extension, such as a new menu item or a new Command. Each extension point accepts certain types of extensions, such as a *Command*, *Pad*, or *FileTemplate*. A module that contains extension points is called an *add-in host*, as it can be extended by other extension packages. + +To customize Visual Studio for Mac, you can create an extension package that builds from extension points contained in add-in hosts within pre-existing libraries in Visual Studio for Mac, as illustrated by the following diagram: + +![Add-in Architecture](media/extending-visual-studio-mac-addin1.png) + +In order for an extension package to build from Visual Studio for Mac, it must have extensions that build from pre-existing extension points within the Visual Studio for Mac IDE. When an extension package relies on an extension point defined in an add-in host, it is said to have a _dependency_ on that extension package. + +The benefit of this modular design is that Visual Studio for Mac is extensible -- there are many extension points that can be built upon with custom extension packages. Examples of current extension packages include support for C# and F#, debugger tools, and Project templates. + +> [!NOTE] +> **Note**: If you have an Add-in Maker project that was created before Add-in Maker 1.2, you need to migrate your project as outlined in the steps [here](https://mhut.ch/addinmaker/1.2). + + + +This section looks at the different files generated by the Add-in Maker and the data a command extension requires. + +## Attribute files + +Extension packages store metadata about their name, version, dependencies, and other information in C# attributes. The Add-in Maker creates two files, `AddinInfo.cs` and `AssemblyInfo.cs` to store and organize this information. Extension packages must have a unique id and namespace specified in their *Addin attribute*: + +```csharp +[assembly:Addin ( + "DateInserter", + Namespace = "DateInserter", + Version = "1.0" +)] +``` + +Extension packages must also declare dependencies on the extension packages that own the extension points they plug into. These are automatically referenced at build time. + +Furthermore, additional references can be added via the Add-in reference node in the solution pad for the project, as depicted by the following image: + +![Insert Date Screenshot](media/extending-visual-studio-mac-addin13.png) + +They also have their corresponding `assembly:AddinDependency` attributes added at build time. Once the metadata and dependency declarations are in place, you can focus on the essential building blocks of the extension package. + +## Extensions and extension points + +An extension point is a placeholder that defines a data structure (a type), while an extension defines data that conforms to a structure specified by a specific extension point. Extension points specify what type of extension they can accept in their declaration. Extensions are declared using type names or extension paths. See the [Extension Point reference](https://github.com/mono/mono-addins/wiki/Extension-Points) for a more in-depth explanation on how to create the extension point that you need. + +The extension/extension point architecture keeps the development of Visual Studio for Mac fast and modular. + + + +### Command Extensions + + + +Command Extensions are extensions that point to methods that are called every time it is executed. + +Command Extensions are defined by adding entries to the `/MonoDevelop/Ide/Commands` extension point. We defined our extension in `Manifest.addin.xml` with the following code: + + ```xml + + + +``` + +The extension node contains a path attribute that specifies the extension point that it is plugging into, in this case `/MonoDevelop/Ide/Commands/Edit`. Additionally, it acts as a parent node to the Command. The Command node has the following attributes: + +* **id** - Specifies the identifier for this Command. Command Identifiers must be declared as enumeration members, and are used to connect Commands to CommandItems. +* **_label** - The text to be shown in menus. +* **_description** - The text to be shown as a tooltip for toolbar buttons. +* **defaultHandler** - Specifies the `CommandHandler` class that powers the Command + + + +A CommandItem extension that plugs into the `/MonoDevelop/Ide/MainMenu/Edit` extension point is demonstrated in the following code snippet: + +```xml + + + +``` + +A CommandItem places a Command specified in its id attribute into a menu. This CommandItem is extending the `/MonoDevelop/Ide/MainMenu/Edit` extension point, which makes the Command's label appear in the **Edit Menu**. Note that the **id** in the CommandItem corresponds to the id of the Command node, `InsertDate`. If you were to remove the CommandItem, the **Insert Date** option would disappear from the Edit Menu. + +### Command Handlers + +The `InsertDateHandler` is an extension of the `CommandHandler` class. It overrides two methods, `Update` and `Run`. The `Update` method is queried whenever a Command is shown in a menu or executed via key bindings. By changing the info object, you can disable the Command or make it invisible, populate array commands, and more. This `Update` method disables the command if it can't find an active *Document* with a *TextEditor* to insert text into: + +```csharp +protected override void Update (CommandInfo info) +{ + info.Enabled = IdeApp.Workbench.ActiveDocument?.Editor != null; +} +``` + +You only need to override the `Update` method when you have special logic for enabling or hiding the Command. The `Run` method executes whenever a user executes a Command, which in this case occurs when a user selects the Command from the Edit Menu. This method inserts the date and time at the caret in the text editor: + +```csharp +protected override void Run () +{ + var editor = IdeApp.Workbench.ActiveDocument.Editor; + var date = DateTime.Now.ToString (); + editor.InsertAtCaret (date); +} +``` + +Declare the Command type as an enumeration member within `DateInserterCommands`: + +```csharp +public enum DateInserterCommands +{ + InsertDate, +} +``` + +This ties together the Command and CommandItem - the CommandItem calls the Command when the CommandItem is selected from the **Edit Menu**. + +## IDE APIs + + + +For information on the scope of areas that are available for development, see the [Extension Tree Reference](http://monodevelop.com/Developers/Articles/Extension_Tree_Reference) and the [API Overview](http://monodevelop.com/Developers/Articles/API_Overview). When building advanced extension packages, also refer to [Developer Articles](http://monodevelop.com/Developers/Articles). Below is a partial list of areas for customization: + +* Pads +* Key Binding Schemes +* Policies +* Code formatters +* Project file formats +* Preferences panels +* Options Panels +* Debugger Protocols +* Debugger visualizers +* Workspace layouts +* Solution pad tree nodes +* Source editor margins +* Unit test engines +* Code generators +* Code snippets +* Target frameworks +* Target runtime +* VCS back-ends +* Refactoring +* Execution handlers +* Syntax highlighting + +## Additional Information + +> [!NOTE] +> We are currently working on improving the extensibility scenarios for Visual Studio for Mac. If you are creating extensions and need additional help or information, or would like to provide feedback, please fill in the [Visual Studio for Mac Extension Authoring](https://aka.ms/vsmac-extensions-survey) form. + +## See also + +- [Develop Visual Studio extensions (on Windows)](/visualstudio/extensibility/starting-to-develop-visual-studio-extensions) \ No newline at end of file diff --git a/mac/2017/index.yml b/mac/2017/index.yml new file mode 100644 index 00000000000..aa9d7abe1b1 --- /dev/null +++ b/mac/2017/index.yml @@ -0,0 +1,115 @@ +### YamlMime:YamlDocument +documentType: LandingData +title: Visual Studio for Mac documentation +metadata: + description: This article introduces the features of Visual Studio 2017 for Mac. + author: conceptdev + ms.author: crdun + ms.date: 02/06/2019 + ms.topic: landing-page + ms.prod: visual-studio-mac + ms.technology: vs-ide-general +sections: +- title: Get started with Visual Studio for Mac + items: + - type: paragraph + text: Install and learn about the Visual Studio for Mac Integrated Development Environment (IDE)​. + - type: list + style: cards + className: cardsM + columns: 3 + items: + - href: ~/installation.md + html:

+ image: + src: https://docs.microsoft.com/media/common/i_setup.svg + title: Install Visual Studio for Mac + - href: ~/ide-tour.md + html:

+ image: + src: https://docs.microsoft.com/media/logos/logo_vs-mac.svg + title: Tour Visual Studio for Mac + - href: ~/installation.md?view=vsmac-2019 + html:

+ image: + src: media/index-2019-preview.png + title: Try 2019 Preview! +- title: What apps can I build? + items: + - type: paragraph + text: With Visual Studio for Mac you can build websites with ASP.NET Core and apps using .NET Core, games with Unity, and mobile apps for Android and iOS using Xamarin. Azure can be incorporated into all your apps. + - type: list + style: icon48 + items: + - image: + src: https://docs.microsoft.com/media/logos/logo_NETcore.svg + text: ASP.NET Core + href: ~/asp-net-core.md + - image: + src: https://docs.microsoft.com/media/logos/logo_azure.svg + text: Azure + href: ~/azure-workload.md + - image: + src: https://docs.microsoft.com/media/logos/logo_unity.svg + text: Unity + href: ~/unity-tools.md + - image: + src: https://docs.microsoft.com/media/logos/logo_xamarin.svg + text: Xamarin + href: /xamarin/ +- title: What languages can I use? + items: + - type: paragraph + text: With Visual Studio for Mac you can write in C#, F#, Razor, HTML5, CSS, Javascript and Typescript, XAML, and XML. + - type: list + style: icon48 + items: + - image: + src: https://docs.microsoft.com/media/logos/logo_Csharp.svg + text: C# + href: /dotnet/csharp/ + - image: + src: https://docs.microsoft.com/media/logos/logo_Fsharp.svg + text: F# + href: /dotnet/fsharp/ + - image: + src: https://docs.microsoft.com/media/logos/logo_js.svg + text: JavaScript + href: ~/javascript.md + - image: + src: https://docs.microsoft.com/media/logos/logo_TS.svg + text: TypeScript + href: ~/javascript.md + - image: + src: https://docs.microsoft.com/media/logos/logo_html5.svg + text: HTML/Razor + href: ~/razor.md +- title: Write code with Visual Studio for Mac + items: + - type: paragraph + text: Learn more about using Visual Studio to write, compile, debug, and store your code. + - type: list + style: cards + className: cardsM + columns: 3 + items: + - href: ~/source-editor.md + html:

Intellisense, refactoring, and syntax highlighting for your favorite language.

+ image: + src: https://docs.microsoft.com/media/common/i_code-edit.svg + title: Write code + - href: ~/compiling-and-building.md + html:

Configure your compiler and build your app.

+ image: + src: https://docs.microsoft.com/media/common/i_build.svg + title: Compile and build + - href: ~/debugging.md + html:

Run your app under the debugger to investigate problems.

+ image: + src: https://docs.microsoft.com/media/common/i_debug.svg + title: Debug + - href: ~/version-control.md + html:

Access Azure DevOps, Git, or Subversion source repositories.

+ image: + src: https://docs.microsoft.com/media/common/i_pull-request.svg + title: Version Control \ No newline at end of file diff --git a/mac/2017/install-behind-a-firewall-or-proxy-server.md b/mac/2017/install-behind-a-firewall-or-proxy-server.md new file mode 100644 index 00000000000..91b238ef4d6 --- /dev/null +++ b/mac/2017/install-behind-a-firewall-or-proxy-server.md @@ -0,0 +1,88 @@ +--- +title: "Install and use Visual Studio for Mac behind a firewall or proxy server" +description: "This document provides a list of hosts that must be whitelisted in your firewall to allow Visual Studio for Mac (and its workloads, including Xamarin) to work in a corporate environment." +ms.topic: troubleshooting +ms.assetid: 79C0F1A3-0C13-4E55-A820-1138A4082B77 +author: asb3993 +ms.author: amburns +ms.date: 10/23/2018 +--- + +# Install and use Visual Studio for Mac behind a firewall or proxy server + +If you or your organization uses security measures such as a firewall or a proxy server, then there are domain URLs that you might want to "whitelist" and ports and protocols that you might want to open so that you have the best experience when you install and use Visual Studio for Mac and Azure Services. + +- [**Install Visual Studio for Mac**](#install-visual-studio-for-mac): These tables include the URLs to whitelist so that you have access to all features and workloads of Visual Studio for Mac. + +- [**Use Visual Studio for Mac**](#use-visual-studio-for-mac): These tables include URLs to whitelist so that you have access to all of the services and features that you want. + +## Install Visual Studio for Mac + +Because the Visual Studio for Mac Installer downloads from a various domains and download servers, here are the domains and URLs that you may want to add as trusted in your configurations. + +### Microsoft domains + +| Domain| Purpose | +| ----------------------------------- |---------------------------| +| *.live.com| Credential Management | +| app.vssps.visualstudio.com| Installer Metadata| +| vortex.data.microsoft.com | Crash and Error Reporting | +| az667904.vo.msecnd.net| Crash and Error Reporting | +| xamarin.com | Installer Metadata| +| xampubdl.blob.core.windows.net| Installer Packages| +| download.visualstudio.microsoft.com | Installer Packages| +| xamarin.azureedge.net | Installer Packages| +| developer.xamarin.com | Installer Packages| +| dc.services.visualstudio.com| Crash Reporting | + +### Third party domains + +| Domain| Purpose | +| --------------------------|-------------------------| +| dl.google.com | Android SDK | +| download.oracle.com | Java SDK| +| api.apple-cloudkit.com| Apple Security Services | + +## Use Visual Studio for Mac + +To make sure that you have access to every feature that you need in Visual Studio for Mac while behind a proxy or firewall, we recommend whitelisting the following domains and ports. + +### General + +| Domain | Port(s)|Purpose| +| ----------------------|------------------|------------------| +| go.microsoft.com | 80/443|Microsoft URL Resolution | +| vsstartpage.blob.core.windows.net| 80/443| Start Page Data| +| software.xamarin.com | 80/443|Updater Service| +| addins.monodevelop.com | 80/443| Extension Services | +| visualstudio-devdiv-c2s.msedge.net | 80/443| Experimental Feature and Notifications | +| targetednotifications.azurewebsites.net| 80/443| Used to filter a global list of notifications to a list that is applicable only to specific types of machines/usage scenarios| + +### Identity + +| Domain | Port(s)|Purpose| +| ----------------------|------------------|------------------| +| login.microsoftonline.com | 80/443| Identity Provider| +| secure.aadcdn.microsoftonline-p.com | 80/443|Identity Provider| +| dc.services.visualstudio.com| 80/443|Crash Reporting| +| management.azure.com|80/443| Azure Services API | + +### NuGet + +| Domain | Port(s)|Purpose| +| ----------------------|------------------|------------------| +| api.nuget.org | 80/443|NuGet API| +| secure.aadcdn.microsoftonline-p.com |80/443| Identity Provider| + +### Android projects + +| Domain| Purpose| +| ------------------------------------|------------------------------------| +| time.android.com| Time Server for Android Emulator | +| connectivitycheck.gstatic.com | Connectivity for Android Emulator| +| cloudconfig.googleapis.com| APIs for Android Emulator| + +## See also + +- [Install and use Visual Studio 2017 and Azure Services behind a firewall or proxy server](/visualstudio/install/install-and-use-visual-studio-behind-a-firewall-or-proxy-server) +- [Troubleshoot similar issues on Windows](/visualstudio/install/troubleshooting-network-related-errors-in-visual-studio) diff --git a/mac/2017/install-preview.md b/mac/2017/install-preview.md new file mode 100644 index 00000000000..7e8fccfe68e --- /dev/null +++ b/mac/2017/install-preview.md @@ -0,0 +1,31 @@ +--- +title: "Install a preview release" +description: "Instructions for updating Visual Studio for Mac and accessing preview releases, including the Visual Studio 2019 for Mac previews." +author: conceptdev +ms.author: crdun +ms.date: 11/03/2018 +ms.topic: article +ms.technology: vs-ide-install +ms.assetid: 0E1EF257-9DE4-4653-9DF4-805CE007A1A1 +--- +# Install a preview release + +> [!NOTE] +> Visual Studio 2019 for Mac preview is [now available for installation](/visualstudio/mac/installation/?view=vsmac-2019) and testing. + +## Install an update for Visual Studio for Mac + +Before a new version of Visual Studio for Mac is officially released, it's available as a preview. The preview release gives you a chance to try out new features and get the latest bug fixes before they are fully incorporated into the product. + +Preview releases to Visual Studio for Mac are distributed as an update, rather than through a separate download. Visual Studio for Mac has three updater channels, as described in the [update](update.md) article: Stable, Beta, and Alpha. + +Most preview releases will be available through both the **Beta** and **Alpha** channels, but always check the [Preview Release Notes](/visualstudio/releasenotes/vs2017-mac-preview-relnotes) for the most accurate information. + +To install the preview of Visual Studio for Mac, use the following steps: + +1. Go to **Visual Studio > Check for Updates**. +2. In the Update channel combo box, select **Beta**. +3. Select the **Switch channel** button to switch to the selected channel and start downloading any new updates. +4. Select the **Restart and Install Updates** button to start installing the updates. + +For more information on updating in Visual Studio for Mac, see the [update](update.md) article. diff --git a/mac/2017/javascript.md b/mac/2017/javascript.md new file mode 100644 index 00000000000..d489c9e3ee1 --- /dev/null +++ b/mac/2017/javascript.md @@ -0,0 +1,44 @@ +--- +title: "JavaScript and TypeScript" +description: "Information on the support for JavaScript in Visual Studio for Mac" +author: conceptdev +ms.author: crdun +ms.date: 05/03/2018 +ms.topic: article +ms.technology: vs-ide-general +ms.assetid: 61432695-5B12-4257-B250-48D37EED106D +--- + +# JavaScript and TypeScript support + +Visual Studio for Mac provides support for JavaScript and TypeScript through syntax highlighting, code formatting, and IntelliSense. + +![typescript editor support](https://msdnshared.blob.core.windows.net/media/2018/03/TypeScript-editor.gif) + +For more information on writing JavaScript, see to the [Writing JavaScript Code](/scripting/javascript/writing-javascript-code) guides. + +## Adding a JavaScript file + +JavaScript files are most often added to ASP.NET Core projects through the **New File** dialog. To add a javascript file, right-click on your project and go to **Add > New File**: + +![adding new files to the project](media/javascript-image1.png) + +From the **New File** dialog, select **Web > Empty JS file** or **Web > TypeScript file**. Give it a name and then choose **New**: + +![creating a new typescript file from the template](media/javascript-image2.png) + +## IntelliSense + +Visual Studio for Mac uses the [JavaScript Language Service](/visualstudio/ide/javascript-intellisense) to provide IntelliSense, allowing you to have intelligent code completion, parameter info, and member lists when writing code. + +JavaScript intellisense in Visual Studio for Mac can be based on type inference, JSDoc, or TypeScript declaration. + +- **Type inference** – The type of an object is figured out by the surrounding code context. For more information, see Visual Studio's section on [IntelliSense based on type inference](/visualstudio/ide/javascript-intellisense#intellisense-based-on-type-inference). +- **JSDoc** – There are times when type inference doesn't provide the correct type information. In these cases, the type information can be provided explicitly by [JSDoc](http://usejsdoc.org/about-getting-started.html) annotations. For more information, see Visual Studio's section on [IntelliSense based on JSDoc](/visualstudio/ide/javascript-intellisense#intellisense-based-on-jsdoc) +- **TypeScript declaration files** – `.d.ts` files are used to provide values for JavaScript IntelliSense. Types declared in that file can be used as types on JSDoc comments. For more information, see Visual Studio's section on [IntelliSense based on TypeScript declaration files](/visualstudio/ide/javascript-intellisense#intellisense-based-on-typescript-declaration-files) + + ![adding a typescript definition file](media/javascript-image3.png) + +## See also + +- [JavaScript IntelliSense (Visual Studio on Windows)](/visualstudio/ide/javascript-intellisense) diff --git a/mac/2017/keyboard-shortcuts.md b/mac/2017/keyboard-shortcuts.md new file mode 100644 index 00000000000..1b89619fc94 --- /dev/null +++ b/mac/2017/keyboard-shortcuts.md @@ -0,0 +1,269 @@ +--- +title: "Default Keyboard Shortcuts in Visual Studio for Mac" +description: "This article lists the default keyboard shortcuts in Visual Studio for Mac" +ms.date: 03/14/2019 +author: bytesguy +ms.author: adhartle +ms.assetid: 48E06A61-7294-4EC8-A09D-1763C32AD910 +--- +# Default keyboard shortcuts in Visual Studio for Mac + +For information about keyboard accessibility, see [How to: Use Keyboard Navigation](accessibility.md#how-to-use-keyboard-navigation). + +You can access a variety of commands in Visual Studio for Mac by using the appropriate keyboard shortcut. This document lists the default shortcuts for the **Visual Studio** key binding scheme. For more information about how to change the key binding scheme, see [Customizing the IDE](customizing-the-ide.md#key-bindings). You can also customize shortcuts for a command using the **Visual Studio for Mac** > **Preferences** menu item and choosing **Environment** > **Key Bindings** in the **Preferences** window. + +> [!TIP] +> The keyboard shortcuts displayed in this document, and the key binding preferences in Visual Studio for Mac, are presented using the symbols commonly used in macOS. If you are unsure of a symbol, review the [macOS key symbols loopkup table](#macos-key-symbols-lookup). + +## Code Navigation + +|Commands|Keyboard shortcuts| +|-|-| +|Find References|**⇧⌘R**, **F12**| +|Go to Declaration|**⌘D**, **F12**| +|Next Error|**⌥⇧⇟**, **⇧⌘F12**| +|Next Issue in File|**⌥⇟**| +|Previous Error|**⌥⇧⇞**| +|Previous Issue in File|**⌥⇞**| + +## Debug + +|Commands|Keyboard shortcuts| +|-|-| +|Enable or Disable Breakpoint|**⌥⌘/**, **⌘F9**| +|Pause|**⌥⌘P**, **⌥⌘L5**| +|Remove All Breakpoints|**⇧⌘F9**| +|Run To Cursor|**⌘F10**| +|Set Next Statement|**⇧⌘F10**| +|Show Next Statement|**⌥\***| +|Step Into|**⇧⌘I**, **⌘F11**| +|Step Out|**⇧⌘U**, **⇧⌘F11**| +|Step Over|**⇧⌘O**, **F10**| +|Toggle Breakpoint|**⌘\\**, **F9**| +|View Breakpoints|**⌥⌘B**| + +## Designer + +|Commands|Keyboard shortcuts| +|-|-| +|Switch between related files|**⌃⌘↑**| + +## Edit + +|Commands|Keyboard shortcuts| +|-|-| +|Constraint Editing Mode|**⌘E**| +|Copy|**⌘C**| +|Cut|**⌘X**| +|Delete|**⌘⌫**| +|Format Document|**⌃I**| +|Indent Selection|**⌘]**| +|Paste|**⌘V**| +|Preferences|**⌘,**| +|Redo|**⇧⌘Z**| +|Rename|**⌘R**, **F2**| +|Select All|**⌘A**| +|Show Code Generation|**⌘I**| +|Toggle All Folds|**⌥⇧⌘↑**| +|Toggle Definitions|**⌥⇧⌘↓**| +|Toggle Fold|**⌥⇧⌘←**| +|Toggle Line Comment(s)|**⌘/**| +|Undo|**⌘Z**| +|Unindent Selection|**⌘[**| +|Update Frame from Constraints|**⇧⌘R**| + +## F# Integration + +|Commands|Keyboard shortcuts| +|-|-| +|Clear F# Interactive|**⌃⌥C**| +|F# Interactive|**⌃⌥F**| +|Restart F# Interactive|**⌃⌥R**| +|Send line to F# Interactive|**⌃⌥L**| +|Send references to F# Interactive|**⌃⌥P**| +|Send selection to F# Interactive|**⌃⏎**| + +## File + +|Commands|Keyboard shortcuts| +|-|-| +|Close All|**⇧⌘W**| +|Close File|**⌘W**| +|Close Workspace|**⌥⌘W**| +|New File|**⌘N**| +|New Solution|**⇧⌘N**| +|Open|**⌘O**| +|Print|**⌘P**| +|Quit|**⌘Q**| +|Revert|**⌘U**| +|Save|**⌘S**| +|Save All|**⇧⌘S**| + +## Help + +|Commands|Keyboard shortcuts| +|-|-| +|API Documentation|**⌥⌘?**| +|Unity API Reference|**⌘'**| + +## Other + +|Commands|Keyboard shortcuts| +|-|-| +|Implement Unity Messages|**⇧⌘M**| +|Inspect|**⌥⌘I**| + +## Project + +|Commands|Keyboard shortcuts| +|-|-| +|Add Files|**⌥⌘A**| +|Build|**⌘K**, **⇧F6**| +|Build All|**⌘B**, **F6**| +|Clean|**⇧⌘K**| +|Rebuild|**⌃⌘K**| +|Rebuild All|**⌃⌘B**| +|Start Debugging|**⌘⏎**, **F5**| +|Start Without Debugging|**⌥⌘⏎**, **⌃F5**| +|Stop|**⇧⌘⏎**, **⇧F5**| + +## Refactoring + +|Commands|Keyboard shortcuts| +|-|-| +|Import Symbol|**⌃⌥␣**| +|Quick Fix|**⌥⏎**| + +## Search + +|Commands|Keyboard shortcuts| +|-|-| +|Command|**⇧⌘P**| +|Find in Files|**⇧⌘F**| +|Find Next|**⌘G**, **F3**| +|Find Next Like Selection|**⌘E**, **⌘F3**| +|Find Previous|**⇧⌘G**, **⇧F3**| +|Find Previous Like Selection|**⇧⌘F3**| +|Find|**⌘F**| +|Go to File|**⇧⌘D**| +|Go to Line|**⌘L**| +|Go to Type|**⇧⌘T**| +|Navigate To|**⌘.**| +|Replace in Files|**⌥⇧⌘F**| +|Replace|**⌥⌘F**| + +## Text Editor + +|Commands|Keyboard shortcuts| +|-|-| +|Complete Word|**⌃␣**| +|Delete left character|**⌃H**| +|Delete next subword|**⌃⌦**| +|Delete next word|**⌥⌦**| +|Delete previous subword|**⌃⌫**| +|Delete previous word|**⌥⌫**| +|Delete right character|**⌃D**| +|Delete to end of line|**⌃K**| +|Dynamic abbrev|**⌃/**| +|Expand selection|**⌥⇧↓**| +|Expand selection|**⌥⇧↑**| +|Expand selection to document end|**⇧⌘↓**, **⇧⌘↘**| +|Expand selection to document start|**⇧⌘↑**, **⇧⌘↖**| +|Expand selection to line end|**⇧↘**, **⇧⌘→**| +|Expand selection to line start|**⇧↖**, **⇧⌘←**| +|Expand selection to next line|**⇧↓**| +|Expand selection to next word|**⌥⇧→**| +|Expand selection to page down|**⇧⇟**| +|Expand selection to page up|**⇧⇞**| +|Expand selection to previous line|**⇧↑**| +|Expand selection to previous word|**⌥⇧←**| +|Expand selection to the left|**⇧←**| +|Expand selection to the right|**⇧→**| +|Find caret|**⌘\|**| +|Go left one character|**⌃B**| +|Go right one character|**⌃F**| +|Go to beginning of document|**⌘↑**| +|Go to beginning of line|**⌘←**, **⌃A**| +|Go to end of document|**⌘↓**| +|Go to end of line|**⌘→**, **⌃E**| +|Go to Matching Brace|**⇧⌘\\**| +|Go to next line|**⌃N**| +|Go to next word|**⌥→**| +|Go to previous line|**⌃P**| +|Go to previous word|**⌥←**| +|Insert line break after the caret|**⌃O**| +|Move caret to EOL and insert new line|**⇧⏎**| +|Move the line or highlighted selection down|**⌥↓**| +|Move the line or highlighted selection up|**⌥↑**| +|Move to next usage|**⌃⌥⌘↓**| +|Move to prev usage|**⌃⌥⌘↑**| +|Show Parameter List|**⌃⇧␣**| +|Show quick info|**⌘F1**| +|Show Scopes|**⌥⇧⌘P**| +|Transpose characters|**⌃T**| +|Wrap with <div>|**⌥⇧W**| + +## View + +|Commands|Keyboard shortcuts| +|-|-| +|Center and Focus Document|**⌃L**| +|Focus Document|**F7**| +|Full Screen|**⌃⌘F**| +|Move to Next Notebook|**⌥⌘→**| +|Move to Previous Notebook|**⌥⌘←**| +|Navigate Back|**⌃⌘←**| +|Navigate Forward|**⌃⌘→**| +|Normal Size|**⌘0**| +|One Editor Column|**⌥⌘1**| +|Show Next|**⌥⌘↓**, **F8**| +|Show Previous|**⌥⌘↑**, **⇧F8**| +|Two Editor Columns|**⌥⌘2**| +|Zoom In|**⌘+**, **⌘=**| +|Zoom Out|**⌘-**, **⌘_**| + +## Window + +|Commands|Keyboard shortcuts| +|-|-| +|Activate 1|**⌘1**| +|Activate 2|**⌘2**| +|Activate 3|**⌘3**| +|Activate 4|**⌘4**| +|Activate 5|**⌘5**| +|Activate 6|**⌘6**| +|Activate 7|**⌘7**| +|Activate 8|**⌘8**| +|Activate 9|**⌘9**| +|Hide Others|**⌥⌘H**| +|Hide Visual Studio|**⌘H**| +|Minimize|**⌘M**| +|Next Document|**⌘}**, **⌘F6**| +|Previous Document|**⌘{**, **⇧⌘F6**| +|Switch to next document|**⌃⇥**| +|Switch to next pad|**⌃⌥⇥**| +|Switch to previous document|**⌃⇧⇥**| +|Switch to previous pad|**⌃⌥⇧⇥**| + +## macOS key symbols lookup + +|Symbol|Key| +|-|-| +|⌘|**Command** (**cmd**)| +|⌥|**Option** (**alt**)| +|⇧|**Shift**| +|⌃|**Control** (**ctrl**) +|⇞|**Page Up** (**Pg Up**)| +|⇟|**Page Down** (**Pg Dn**)| +|⌫|**Delete** (**Backspace**)| +|⌦|**Forward Delete**| +|⏎|**Return**| +|←→↑↓|**Arrow Keys**| +|↖|**Home**| +|↘|**End**| +|␣|**Space Bar**| +|⇥|**Tab**| + +## See also + +- [Keyboard shortcuts in Visual Studio (on Windows)](/visualstudio/ide/tips-and-tricks-for-visual-studio) diff --git a/mac/2017/managing-app-resources.md b/mac/2017/managing-app-resources.md new file mode 100644 index 00000000000..0eaf29117a1 --- /dev/null +++ b/mac/2017/managing-app-resources.md @@ -0,0 +1,37 @@ +--- +title: "Managing app Resources" +description: "This article links to various guides that describe how to manage app resources for a variety of platforms in Visual Studio for Mac" +author: conceptdev +ms.author: crdun +ms.date: 05/06/2018 +ms.assetid: 61EAAB8F-3C32-4574-924F-CFC616604089 +--- + +# Managing app resources + +App resource files, such as images, text files, and audio files, are necessary to your application but aren't compiled with the application. Each platform supported by Visual Studio for Mac handles these resources in different ways, as explained in the following guides: + +## Xamarin.Forms + +Xamarin.Forms code runs on multiple platforms - each of which has its own filesystem and each file system dictates how to read and write to files. In Xamarin.Forms you can manage app resources by using the native file APIs on each platform, or by adding files as embedded resources. + +* [Working with Images](https://developer.xamarin.com/guides/xamarin-forms/user-interface/images/) +* [Working with Files]( https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/files/) + +## Xamarin.iOS + +* [Working with Resources](https://developer.xamarin.com/guides/ios/application_fundamentals/working_with_resources/) +* [Working with Images](https://developer.xamarin.com/guides/ios/application_fundamentals/working_with_images/) +* [Working with the File System](https://developer.xamarin.com/guides/ios/application_fundamentals/working_with_the_file_system/) + +## Xamarin.Android + +* [Android Resources](https://developer.xamarin.com/guides/android/application_fundamentals/resources_in_android/) + +## Xamarin.Mac + +* [Working with Images](https://developer.xamarin.com/guides/mac/application_fundamentals/working-with-images/) + +## See also + +- [Manage application resources (Visual Studio on Windows)](/visualstudio/ide/managing-application-resources-dotnet) \ No newline at end of file diff --git a/mac/2017/managing-references-in-a-project.md b/mac/2017/managing-references-in-a-project.md new file mode 100644 index 00000000000..997571ec19e --- /dev/null +++ b/mac/2017/managing-references-in-a-project.md @@ -0,0 +1,44 @@ +--- +title: "Managing References in a Project" +description: "This article describes how to manage references in a project in Visual Studio for Mac" +author: conceptdev +ms.author: crdun +ms.date: 05/06/2018 +ms.assetid: 4AD51385-B0A8-4BA7-B2D4-BF2BD167A142 +--- + +# Managing References in a Project + +Visual Studio for Mac provides two means of adding additional references to your project: + +![Project References](media/projects-and-solutions-image10.png) + +These are: + +* References +* NuGets (Added via the Packages folder) + +In addition, Web References and native references can also be added to any project. + +## Assembly references + +Each framework within Xamarin ships with over a dozen assemblies. Not all of these assembly packages are referenced in your project by default. + +To edit packages that are referenced in your project, use the **Edit References** dialog, which can be displayed by double-clicking on the References folder, or by selecting **Edit References** on its context menu actions: + +![Assembly References dialog](media/projects-and-solutions-image11.png) + +For information on the assemblies available for each Xamarin framework, refer to the [Available Assemblies](https://developer.xamarin.com/guides/cross-platform/advanced/available-assemblies/) guide. + +## NuGet + +NuGet is the most popular package manager for .NET development. Visual Studio for Mac's NuGet support allows you to search for packages to add to your project. + +To do this, right-click on the **Package** folder in the Solution Pad, and select Add Packages. + +More information on using a NuGet Package is provided in the [Including a NuGet package in your Project](nuget-walkthrough.md) walkthrough. + +## See also + +- [Manage references (Visual Studio on Windows)](/visualstudio/ide/managing-references-in-a-project) +- [Adding references using NuGet versus an extension SDK (Visual Studio on Windows)](/visualstudio/ide/adding-references-using-nuget-versus-an-extension-sdk) \ No newline at end of file diff --git a/mac/2017/managing-solutions-and-project-properties.md b/mac/2017/managing-solutions-and-project-properties.md new file mode 100644 index 00000000000..7270b3b19af --- /dev/null +++ b/mac/2017/managing-solutions-and-project-properties.md @@ -0,0 +1,45 @@ +--- +title: "Managing Project and Solution Properties" +description: "This articles describes how to manage the properties of projects and solutions in Visual Studio for Mac" +author: conceptdev +ms.author: crdun +ms.date: 05/06/2018 +ms.assetid: 75247EB8-323A-4AFD-A451-6703A03D5D1F +--- +# Managing Project and Solution Properties + +## Project options + +Project options are specific to each project and affect how the project is written, built, and run. This contrasts with Visual Studio for Mac Preferences (which sets user-specific options) and Solution options (which set options for the entire solution). Project options are stored in the project (.csproj) file, so that other developers can build and run the project correctly. Having specific project options allows many developers to work on the same document without compromising the formatting of the file. + +To open Project options in Visual Studio for Mac, double-click the project name, or right-click to open the context menu, and then select **Options**: + +![Option in Context Menu](media/projects-and-solutions-image2.png) + +Editable options include options to build, run, and set source code and version control. + +Project options are organized into five different categories: + +* **General** - Project information such as Name, Description, and Default Namespace are set here, along with the Location of the project. +* **Build** - This allows developers to set or change PCL profiles for Portable Class Libraries. It also allows for custom commands, configurations, compiler options to be set. The output path and assembly name can also be set here. +* **Run** - This allows you to create custom run configurations on a per-project basis. +* **Source Code** - This allows you to control the formatting of many different file types and naming conventions. You can also set the naming policies and default header styles here. +* **Version Control** - This allows you to edit the style of the commit message when using Version Control with your project. + +Each project can contain specific project options, depending on the platform. For example, a Xamarin.Android project, like the one illustrated in the following image, has options relating to the Android build (such as linker options) and the Application (such as permissions): + +![Android Project Options](media/projects-and-solutions-image5.png) + +Xamarin.iOS has options related to bundle signing - such as the required provisioning profile to use: + +![iOS Project Options](media/projects-and-solutions-image6.png) + +## Solution Options + +Solution options are like Project options, but cover the scope of the entire Solutions. They provide a way to set author information, build settings, code formatting styles, and version control, and they allow for a way to assign the startup project in the Solution. The Solution Options dialog can be accessed from the **Project > Solution Options** menu item, from the **Options** context menu item on the Solution in the Solution pad, or by double-clicking on the Solution in the Solution Pad: + +![Solution Options](media/projects-and-solutions-image7.png) + +## See also + +* [Manage project and solution properties (Visual Studio on Windows)](/visualstudio/ide/managing-project-and-solution-properties) \ No newline at end of file diff --git a/mac/2017/media/accessibility-image1.png b/mac/2017/media/accessibility-image1.png new file mode 100644 index 00000000000..c58bc03cae4 Binary files /dev/null and b/mac/2017/media/accessibility-image1.png differ diff --git a/mac/2017/media/accessibility-image2.png b/mac/2017/media/accessibility-image2.png new file mode 100644 index 00000000000..5ebede2f894 Binary files /dev/null and b/mac/2017/media/accessibility-image2.png differ diff --git a/mac/2017/media/add-and-remove-project-items-image1.png b/mac/2017/media/add-and-remove-project-items-image1.png new file mode 100644 index 00000000000..629b3fca548 Binary files /dev/null and b/mac/2017/media/add-and-remove-project-items-image1.png differ diff --git a/mac/2017/media/add-and-remove-project-items-image2.png b/mac/2017/media/add-and-remove-project-items-image2.png new file mode 100644 index 00000000000..999e1bb5ceb Binary files /dev/null and b/mac/2017/media/add-and-remove-project-items-image2.png differ diff --git a/mac/2017/media/add-and-remove-project-items-image3.png b/mac/2017/media/add-and-remove-project-items-image3.png new file mode 100644 index 00000000000..b3ecc260150 Binary files /dev/null and b/mac/2017/media/add-and-remove-project-items-image3.png differ diff --git a/mac/2017/media/add-and-remove-project-items-image4.png b/mac/2017/media/add-and-remove-project-items-image4.png new file mode 100644 index 00000000000..d3732c46707 Binary files /dev/null and b/mac/2017/media/add-and-remove-project-items-image4.png differ diff --git a/mac/2017/media/asp-net-core-image1.png b/mac/2017/media/asp-net-core-image1.png new file mode 100644 index 00000000000..655da7956cd Binary files /dev/null and b/mac/2017/media/asp-net-core-image1.png differ diff --git a/mac/2017/media/asp-net-core-image10.png b/mac/2017/media/asp-net-core-image10.png new file mode 100644 index 00000000000..5ada1b89bf9 Binary files /dev/null and b/mac/2017/media/asp-net-core-image10.png differ diff --git a/mac/2017/media/asp-net-core-image11.png b/mac/2017/media/asp-net-core-image11.png new file mode 100644 index 00000000000..4a2c4c460a8 Binary files /dev/null and b/mac/2017/media/asp-net-core-image11.png differ diff --git a/mac/2017/media/asp-net-core-image12.png b/mac/2017/media/asp-net-core-image12.png new file mode 100644 index 00000000000..0f643cc40eb Binary files /dev/null and b/mac/2017/media/asp-net-core-image12.png differ diff --git a/mac/2017/media/asp-net-core-image13.png b/mac/2017/media/asp-net-core-image13.png new file mode 100644 index 00000000000..607f5e599ee Binary files /dev/null and b/mac/2017/media/asp-net-core-image13.png differ diff --git a/mac/2017/media/asp-net-core-image2.png b/mac/2017/media/asp-net-core-image2.png new file mode 100644 index 00000000000..2781b53869f Binary files /dev/null and b/mac/2017/media/asp-net-core-image2.png differ diff --git a/mac/2017/media/asp-net-core-image3.png b/mac/2017/media/asp-net-core-image3.png new file mode 100644 index 00000000000..6acc5ecbe38 Binary files /dev/null and b/mac/2017/media/asp-net-core-image3.png differ diff --git a/mac/2017/media/asp-net-core-image4.png b/mac/2017/media/asp-net-core-image4.png new file mode 100644 index 00000000000..2ff630062f0 Binary files /dev/null and b/mac/2017/media/asp-net-core-image4.png differ diff --git a/mac/2017/media/asp-net-core-image5.png b/mac/2017/media/asp-net-core-image5.png new file mode 100644 index 00000000000..6505025a208 Binary files /dev/null and b/mac/2017/media/asp-net-core-image5.png differ diff --git a/mac/2017/media/asp-net-core-image6.png b/mac/2017/media/asp-net-core-image6.png new file mode 100644 index 00000000000..612c9354d8f Binary files /dev/null and b/mac/2017/media/asp-net-core-image6.png differ diff --git a/mac/2017/media/asp-net-core-image7.png b/mac/2017/media/asp-net-core-image7.png new file mode 100644 index 00000000000..532e1ef8f96 Binary files /dev/null and b/mac/2017/media/asp-net-core-image7.png differ diff --git a/mac/2017/media/asp-net-core-image8.png b/mac/2017/media/asp-net-core-image8.png new file mode 100644 index 00000000000..ddb11bb0503 Binary files /dev/null and b/mac/2017/media/asp-net-core-image8.png differ diff --git a/mac/2017/media/asp-net-core-image9.png b/mac/2017/media/asp-net-core-image9.png new file mode 100644 index 00000000000..33a2c8a73f7 Binary files /dev/null and b/mac/2017/media/asp-net-core-image9.png differ diff --git a/mac/2017/media/azure-functions-addnew.png b/mac/2017/media/azure-functions-addnew.png new file mode 100644 index 00000000000..5afaa3b68a8 Binary files /dev/null and b/mac/2017/media/azure-functions-addnew.png differ diff --git a/mac/2017/media/azure-functions-httpreq.png b/mac/2017/media/azure-functions-httpreq.png new file mode 100644 index 00000000000..e7026fd6988 Binary files /dev/null and b/mac/2017/media/azure-functions-httpreq.png differ diff --git a/mac/2017/media/azure-functions-image1.png b/mac/2017/media/azure-functions-image1.png new file mode 100644 index 00000000000..9db97df2df6 Binary files /dev/null and b/mac/2017/media/azure-functions-image1.png differ diff --git a/mac/2017/media/azure-functions-image10.png b/mac/2017/media/azure-functions-image10.png new file mode 100644 index 00000000000..a5f118d12cb Binary files /dev/null and b/mac/2017/media/azure-functions-image10.png differ diff --git a/mac/2017/media/azure-functions-image11.png b/mac/2017/media/azure-functions-image11.png new file mode 100644 index 00000000000..1722a20165a Binary files /dev/null and b/mac/2017/media/azure-functions-image11.png differ diff --git a/mac/2017/media/azure-functions-image12.png b/mac/2017/media/azure-functions-image12.png new file mode 100644 index 00000000000..9bcee52139c Binary files /dev/null and b/mac/2017/media/azure-functions-image12.png differ diff --git a/mac/2017/media/azure-functions-image2.png b/mac/2017/media/azure-functions-image2.png new file mode 100644 index 00000000000..117720b15fb Binary files /dev/null and b/mac/2017/media/azure-functions-image2.png differ diff --git a/mac/2017/media/azure-functions-image3.png b/mac/2017/media/azure-functions-image3.png new file mode 100644 index 00000000000..0762275d92b Binary files /dev/null and b/mac/2017/media/azure-functions-image3.png differ diff --git a/mac/2017/media/azure-functions-image4.png b/mac/2017/media/azure-functions-image4.png new file mode 100644 index 00000000000..c0dd82bee01 Binary files /dev/null and b/mac/2017/media/azure-functions-image4.png differ diff --git a/mac/2017/media/azure-functions-image5.png b/mac/2017/media/azure-functions-image5.png new file mode 100644 index 00000000000..582ad1255c9 Binary files /dev/null and b/mac/2017/media/azure-functions-image5.png differ diff --git a/mac/2017/media/azure-functions-image7.png b/mac/2017/media/azure-functions-image7.png new file mode 100644 index 00000000000..b58ea8a4ab2 Binary files /dev/null and b/mac/2017/media/azure-functions-image7.png differ diff --git a/mac/2017/media/azure-functions-image8.png b/mac/2017/media/azure-functions-image8.png new file mode 100644 index 00000000000..3ea775f66d5 Binary files /dev/null and b/mac/2017/media/azure-functions-image8.png differ diff --git a/mac/2017/media/azure-functions-image9.png b/mac/2017/media/azure-functions-image9.png new file mode 100644 index 00000000000..f476182941d Binary files /dev/null and b/mac/2017/media/azure-functions-image9.png differ diff --git a/mac/2017/media/azure-functions-lab-image1.png b/mac/2017/media/azure-functions-lab-image1.png new file mode 100644 index 00000000000..bed167dce8a Binary files /dev/null and b/mac/2017/media/azure-functions-lab-image1.png differ diff --git a/mac/2017/media/azure-functions-lab-image10.png b/mac/2017/media/azure-functions-lab-image10.png new file mode 100644 index 00000000000..eb572cf0ffb Binary files /dev/null and b/mac/2017/media/azure-functions-lab-image10.png differ diff --git a/mac/2017/media/azure-functions-lab-image11.png b/mac/2017/media/azure-functions-lab-image11.png new file mode 100644 index 00000000000..693f30b4c73 Binary files /dev/null and b/mac/2017/media/azure-functions-lab-image11.png differ diff --git a/mac/2017/media/azure-functions-lab-image12.png b/mac/2017/media/azure-functions-lab-image12.png new file mode 100644 index 00000000000..f2c07ac9186 Binary files /dev/null and b/mac/2017/media/azure-functions-lab-image12.png differ diff --git a/mac/2017/media/azure-functions-lab-image13.png b/mac/2017/media/azure-functions-lab-image13.png new file mode 100644 index 00000000000..ce66eaa1b04 Binary files /dev/null and b/mac/2017/media/azure-functions-lab-image13.png differ diff --git a/mac/2017/media/azure-functions-lab-image14.png b/mac/2017/media/azure-functions-lab-image14.png new file mode 100644 index 00000000000..0affce35eb7 Binary files /dev/null and b/mac/2017/media/azure-functions-lab-image14.png differ diff --git a/mac/2017/media/azure-functions-lab-image15.png b/mac/2017/media/azure-functions-lab-image15.png new file mode 100644 index 00000000000..6b54b3854d8 Binary files /dev/null and b/mac/2017/media/azure-functions-lab-image15.png differ diff --git a/mac/2017/media/azure-functions-lab-image16.png b/mac/2017/media/azure-functions-lab-image16.png new file mode 100644 index 00000000000..54b2c4d2816 Binary files /dev/null and b/mac/2017/media/azure-functions-lab-image16.png differ diff --git a/mac/2017/media/azure-functions-lab-image17.png b/mac/2017/media/azure-functions-lab-image17.png new file mode 100644 index 00000000000..f5227f98593 Binary files /dev/null and b/mac/2017/media/azure-functions-lab-image17.png differ diff --git a/mac/2017/media/azure-functions-lab-image18.png b/mac/2017/media/azure-functions-lab-image18.png new file mode 100644 index 00000000000..cf3e5fe2581 Binary files /dev/null and b/mac/2017/media/azure-functions-lab-image18.png differ diff --git a/mac/2017/media/azure-functions-lab-image19.png b/mac/2017/media/azure-functions-lab-image19.png new file mode 100644 index 00000000000..e8fb93e5046 Binary files /dev/null and b/mac/2017/media/azure-functions-lab-image19.png differ diff --git a/mac/2017/media/azure-functions-lab-image2.png b/mac/2017/media/azure-functions-lab-image2.png new file mode 100644 index 00000000000..c2dfa19dd5e Binary files /dev/null and b/mac/2017/media/azure-functions-lab-image2.png differ diff --git a/mac/2017/media/azure-functions-lab-image20.png b/mac/2017/media/azure-functions-lab-image20.png new file mode 100644 index 00000000000..61c2bad527c Binary files /dev/null and b/mac/2017/media/azure-functions-lab-image20.png differ diff --git a/mac/2017/media/azure-functions-lab-image21.png b/mac/2017/media/azure-functions-lab-image21.png new file mode 100644 index 00000000000..8a438cb35b0 Binary files /dev/null and b/mac/2017/media/azure-functions-lab-image21.png differ diff --git a/mac/2017/media/azure-functions-lab-image22.png b/mac/2017/media/azure-functions-lab-image22.png new file mode 100644 index 00000000000..44b8ee8778f Binary files /dev/null and b/mac/2017/media/azure-functions-lab-image22.png differ diff --git a/mac/2017/media/azure-functions-lab-image23.png b/mac/2017/media/azure-functions-lab-image23.png new file mode 100644 index 00000000000..bd5ad1dec24 Binary files /dev/null and b/mac/2017/media/azure-functions-lab-image23.png differ diff --git a/mac/2017/media/azure-functions-lab-image24.png b/mac/2017/media/azure-functions-lab-image24.png new file mode 100644 index 00000000000..605b9c9a840 Binary files /dev/null and b/mac/2017/media/azure-functions-lab-image24.png differ diff --git a/mac/2017/media/azure-functions-lab-image25.png b/mac/2017/media/azure-functions-lab-image25.png new file mode 100644 index 00000000000..94e645569bf Binary files /dev/null and b/mac/2017/media/azure-functions-lab-image25.png differ diff --git a/mac/2017/media/azure-functions-lab-image26.png b/mac/2017/media/azure-functions-lab-image26.png new file mode 100644 index 00000000000..76fb8e1da42 Binary files /dev/null and b/mac/2017/media/azure-functions-lab-image26.png differ diff --git a/mac/2017/media/azure-functions-lab-image27.png b/mac/2017/media/azure-functions-lab-image27.png new file mode 100644 index 00000000000..0b4cfb71749 Binary files /dev/null and b/mac/2017/media/azure-functions-lab-image27.png differ diff --git a/mac/2017/media/azure-functions-lab-image28.png b/mac/2017/media/azure-functions-lab-image28.png new file mode 100644 index 00000000000..5122194c62e Binary files /dev/null and b/mac/2017/media/azure-functions-lab-image28.png differ diff --git a/mac/2017/media/azure-functions-lab-image29.png b/mac/2017/media/azure-functions-lab-image29.png new file mode 100644 index 00000000000..4bc2e51628a Binary files /dev/null and b/mac/2017/media/azure-functions-lab-image29.png differ diff --git a/mac/2017/media/azure-functions-lab-image3.png b/mac/2017/media/azure-functions-lab-image3.png new file mode 100644 index 00000000000..bbb34f505ab Binary files /dev/null and b/mac/2017/media/azure-functions-lab-image3.png differ diff --git a/mac/2017/media/azure-functions-lab-image30.png b/mac/2017/media/azure-functions-lab-image30.png new file mode 100644 index 00000000000..ee04e54efd1 Binary files /dev/null and b/mac/2017/media/azure-functions-lab-image30.png differ diff --git a/mac/2017/media/azure-functions-lab-image31.png b/mac/2017/media/azure-functions-lab-image31.png new file mode 100644 index 00000000000..7a501ead57e Binary files /dev/null and b/mac/2017/media/azure-functions-lab-image31.png differ diff --git a/mac/2017/media/azure-functions-lab-image32.png b/mac/2017/media/azure-functions-lab-image32.png new file mode 100644 index 00000000000..926059f404b Binary files /dev/null and b/mac/2017/media/azure-functions-lab-image32.png differ diff --git a/mac/2017/media/azure-functions-lab-image33.png b/mac/2017/media/azure-functions-lab-image33.png new file mode 100644 index 00000000000..56bae0a1995 Binary files /dev/null and b/mac/2017/media/azure-functions-lab-image33.png differ diff --git a/mac/2017/media/azure-functions-lab-image34.png b/mac/2017/media/azure-functions-lab-image34.png new file mode 100644 index 00000000000..1ce37054057 Binary files /dev/null and b/mac/2017/media/azure-functions-lab-image34.png differ diff --git a/mac/2017/media/azure-functions-lab-image4.png b/mac/2017/media/azure-functions-lab-image4.png new file mode 100644 index 00000000000..dcbbffe96d7 Binary files /dev/null and b/mac/2017/media/azure-functions-lab-image4.png differ diff --git a/mac/2017/media/azure-functions-lab-image5.png b/mac/2017/media/azure-functions-lab-image5.png new file mode 100644 index 00000000000..168ee248349 Binary files /dev/null and b/mac/2017/media/azure-functions-lab-image5.png differ diff --git a/mac/2017/media/azure-functions-lab-image6.png b/mac/2017/media/azure-functions-lab-image6.png new file mode 100644 index 00000000000..57fa44c0b7d Binary files /dev/null and b/mac/2017/media/azure-functions-lab-image6.png differ diff --git a/mac/2017/media/azure-functions-lab-image7.png b/mac/2017/media/azure-functions-lab-image7.png new file mode 100644 index 00000000000..79027c2a23c Binary files /dev/null and b/mac/2017/media/azure-functions-lab-image7.png differ diff --git a/mac/2017/media/azure-functions-lab-image8.png b/mac/2017/media/azure-functions-lab-image8.png new file mode 100644 index 00000000000..d5e3e056740 Binary files /dev/null and b/mac/2017/media/azure-functions-lab-image8.png differ diff --git a/mac/2017/media/azure-functions-lab-image9.png b/mac/2017/media/azure-functions-lab-image9.png new file mode 100644 index 00000000000..845a5a20f45 Binary files /dev/null and b/mac/2017/media/azure-functions-lab-image9.png differ diff --git a/mac/2017/media/azure-functions-newfunction.png b/mac/2017/media/azure-functions-newfunction.png new file mode 100644 index 00000000000..49ea2188189 Binary files /dev/null and b/mac/2017/media/azure-functions-newfunction.png differ diff --git a/mac/2017/media/azure-functions-newproj.png b/mac/2017/media/azure-functions-newproj.png new file mode 100644 index 00000000000..0f038c5a2ad Binary files /dev/null and b/mac/2017/media/azure-functions-newproj.png differ diff --git a/mac/2017/media/azure-functions-remove.png b/mac/2017/media/azure-functions-remove.png new file mode 100644 index 00000000000..879218f79ab Binary files /dev/null and b/mac/2017/media/azure-functions-remove.png differ diff --git a/mac/2017/media/azure-functions-run.png b/mac/2017/media/azure-functions-run.png new file mode 100644 index 00000000000..1d5c5d231f2 Binary files /dev/null and b/mac/2017/media/azure-functions-run.png differ diff --git a/mac/2017/media/azure-functions-terminal.png b/mac/2017/media/azure-functions-terminal.png new file mode 100644 index 00000000000..a69e2ecb364 Binary files /dev/null and b/mac/2017/media/azure-functions-terminal.png differ diff --git a/mac/2017/media/compiling-and-building-image1.png b/mac/2017/media/compiling-and-building-image1.png new file mode 100644 index 00000000000..20e6ebaf4fc Binary files /dev/null and b/mac/2017/media/compiling-and-building-image1.png differ diff --git a/mac/2017/media/compiling-and-building-image2.png b/mac/2017/media/compiling-and-building-image2.png new file mode 100644 index 00000000000..0a4414c71c0 Binary files /dev/null and b/mac/2017/media/compiling-and-building-image2.png differ diff --git a/mac/2017/media/compiling-and-building-image3.png b/mac/2017/media/compiling-and-building-image3.png new file mode 100644 index 00000000000..e3142674837 Binary files /dev/null and b/mac/2017/media/compiling-and-building-image3.png differ diff --git a/mac/2017/media/compiling-and-building-image4.png b/mac/2017/media/compiling-and-building-image4.png new file mode 100644 index 00000000000..16cce09b90e Binary files /dev/null and b/mac/2017/media/compiling-and-building-image4.png differ diff --git a/mac/2017/media/compiling-and-building-image5.png b/mac/2017/media/compiling-and-building-image5.png new file mode 100644 index 00000000000..1b61631dae3 Binary files /dev/null and b/mac/2017/media/compiling-and-building-image5.png differ diff --git a/mac/2017/media/compiling-and-building-image6.png b/mac/2017/media/compiling-and-building-image6.png new file mode 100644 index 00000000000..b8d2dc1fd30 Binary files /dev/null and b/mac/2017/media/compiling-and-building-image6.png differ diff --git a/mac/2017/media/connected-services-image001-sml.png b/mac/2017/media/connected-services-image001-sml.png new file mode 100644 index 00000000000..e36bee132de Binary files /dev/null and b/mac/2017/media/connected-services-image001-sml.png differ diff --git a/mac/2017/media/connected-services-image001.png b/mac/2017/media/connected-services-image001.png new file mode 100644 index 00000000000..067230808bc Binary files /dev/null and b/mac/2017/media/connected-services-image001.png differ diff --git a/mac/2017/media/connected-services-image002-sml.png b/mac/2017/media/connected-services-image002-sml.png new file mode 100644 index 00000000000..2bfa07b1db0 Binary files /dev/null and b/mac/2017/media/connected-services-image002-sml.png differ diff --git a/mac/2017/media/connected-services-image002.png b/mac/2017/media/connected-services-image002.png new file mode 100644 index 00000000000..e6ced437bb1 Binary files /dev/null and b/mac/2017/media/connected-services-image002.png differ diff --git a/mac/2017/media/connected-services-image003-sml.png b/mac/2017/media/connected-services-image003-sml.png new file mode 100644 index 00000000000..91012691cd2 Binary files /dev/null and b/mac/2017/media/connected-services-image003-sml.png differ diff --git a/mac/2017/media/connected-services-image003.png b/mac/2017/media/connected-services-image003.png new file mode 100644 index 00000000000..573283fbe23 Binary files /dev/null and b/mac/2017/media/connected-services-image003.png differ diff --git a/mac/2017/media/connected-services-image004-sml.png b/mac/2017/media/connected-services-image004-sml.png new file mode 100644 index 00000000000..7d4cc0f9b09 Binary files /dev/null and b/mac/2017/media/connected-services-image004-sml.png differ diff --git a/mac/2017/media/connected-services-image004.png b/mac/2017/media/connected-services-image004.png new file mode 100644 index 00000000000..a7256cb9855 Binary files /dev/null and b/mac/2017/media/connected-services-image004.png differ diff --git a/mac/2017/media/connected-services-image005.png b/mac/2017/media/connected-services-image005.png new file mode 100644 index 00000000000..0041a54e1ce Binary files /dev/null and b/mac/2017/media/connected-services-image005.png differ diff --git a/mac/2017/media/connected-services-image006-sml.png b/mac/2017/media/connected-services-image006-sml.png new file mode 100644 index 00000000000..36a17e2d498 Binary files /dev/null and b/mac/2017/media/connected-services-image006-sml.png differ diff --git a/mac/2017/media/connected-services-image006.png b/mac/2017/media/connected-services-image006.png new file mode 100644 index 00000000000..e71e2e6879c Binary files /dev/null and b/mac/2017/media/connected-services-image006.png differ diff --git a/mac/2017/media/connected-services-image007.png b/mac/2017/media/connected-services-image007.png new file mode 100644 index 00000000000..003f1c75594 Binary files /dev/null and b/mac/2017/media/connected-services-image007.png differ diff --git a/mac/2017/media/connected-services-image008-sml.png b/mac/2017/media/connected-services-image008-sml.png new file mode 100644 index 00000000000..47822a34d15 Binary files /dev/null and b/mac/2017/media/connected-services-image008-sml.png differ diff --git a/mac/2017/media/connected-services-image008.png b/mac/2017/media/connected-services-image008.png new file mode 100644 index 00000000000..5fb722ceca1 Binary files /dev/null and b/mac/2017/media/connected-services-image008.png differ diff --git a/mac/2017/media/connected-services-image009-sml.png b/mac/2017/media/connected-services-image009-sml.png new file mode 100644 index 00000000000..1592b774571 Binary files /dev/null and b/mac/2017/media/connected-services-image009-sml.png differ diff --git a/mac/2017/media/connected-services-image009.png b/mac/2017/media/connected-services-image009.png new file mode 100644 index 00000000000..fd4ebf8a6a3 Binary files /dev/null and b/mac/2017/media/connected-services-image009.png differ diff --git a/mac/2017/media/create-and-edit-configurations-image1.png b/mac/2017/media/create-and-edit-configurations-image1.png new file mode 100644 index 00000000000..9aa03c1b1f1 Binary files /dev/null and b/mac/2017/media/create-and-edit-configurations-image1.png differ diff --git a/mac/2017/media/create-and-edit-configurations-image2.png b/mac/2017/media/create-and-edit-configurations-image2.png new file mode 100644 index 00000000000..2dc8c8584a7 Binary files /dev/null and b/mac/2017/media/create-and-edit-configurations-image2.png differ diff --git a/mac/2017/media/create-and-edit-configurations-image3.png b/mac/2017/media/create-and-edit-configurations-image3.png new file mode 100644 index 00000000000..f4cc9c18498 Binary files /dev/null and b/mac/2017/media/create-and-edit-configurations-image3.png differ diff --git a/mac/2017/media/create-and-edit-configurations-image4.png b/mac/2017/media/create-and-edit-configurations-image4.png new file mode 100644 index 00000000000..388198985d4 Binary files /dev/null and b/mac/2017/media/create-and-edit-configurations-image4.png differ diff --git a/mac/2017/media/create-and-edit-configurations-image5.png b/mac/2017/media/create-and-edit-configurations-image5.png new file mode 100644 index 00000000000..6fe9ff57c63 Binary files /dev/null and b/mac/2017/media/create-and-edit-configurations-image5.png differ diff --git a/mac/2017/media/create-new-projects-recent.png b/mac/2017/media/create-new-projects-recent.png new file mode 100644 index 00000000000..8edd18d00c6 Binary files /dev/null and b/mac/2017/media/create-new-projects-recent.png differ diff --git a/mac/2017/media/create-offline-installer-image1.png b/mac/2017/media/create-offline-installer-image1.png new file mode 100644 index 00000000000..1311cd44ebe Binary files /dev/null and b/mac/2017/media/create-offline-installer-image1.png differ diff --git a/mac/2017/media/create-offline-installer-image2.png b/mac/2017/media/create-offline-installer-image2.png new file mode 100644 index 00000000000..1e1a36cef03 Binary files /dev/null and b/mac/2017/media/create-offline-installer-image2.png differ diff --git a/mac/2017/media/create-offline-installer-image3.png b/mac/2017/media/create-offline-installer-image3.png new file mode 100644 index 00000000000..989e1cd2f87 Binary files /dev/null and b/mac/2017/media/create-offline-installer-image3.png differ diff --git a/mac/2017/media/create-offline-installer-image4.png b/mac/2017/media/create-offline-installer-image4.png new file mode 100644 index 00000000000..80508c54c4f Binary files /dev/null and b/mac/2017/media/create-offline-installer-image4.png differ diff --git a/mac/2017/media/create-offline-installer-image5.png b/mac/2017/media/create-offline-installer-image5.png new file mode 100644 index 00000000000..21c673e8a7c Binary files /dev/null and b/mac/2017/media/create-offline-installer-image5.png differ diff --git a/mac/2017/media/create-offline-installer-image6.png b/mac/2017/media/create-offline-installer-image6.png new file mode 100644 index 00000000000..d18230a1b64 Binary files /dev/null and b/mac/2017/media/create-offline-installer-image6.png differ diff --git a/mac/2017/media/create-sln-run-config.png b/mac/2017/media/create-sln-run-config.png new file mode 100644 index 00000000000..46ff64411e2 Binary files /dev/null and b/mac/2017/media/create-sln-run-config.png differ diff --git a/mac/2017/media/customizing-build-system-image1.png b/mac/2017/media/customizing-build-system-image1.png new file mode 100644 index 00000000000..44aaf8ec6e4 Binary files /dev/null and b/mac/2017/media/customizing-build-system-image1.png differ diff --git a/mac/2017/media/customizing-build-system-image2.png b/mac/2017/media/customizing-build-system-image2.png new file mode 100644 index 00000000000..696a3ef014c Binary files /dev/null and b/mac/2017/media/customizing-build-system-image2.png differ diff --git a/mac/2017/media/customizing-the-ide-image10a.png b/mac/2017/media/customizing-the-ide-image10a.png new file mode 100644 index 00000000000..441dfb7cffa Binary files /dev/null and b/mac/2017/media/customizing-the-ide-image10a.png differ diff --git a/mac/2017/media/customizing-the-ide-image11a.png b/mac/2017/media/customizing-the-ide-image11a.png new file mode 100644 index 00000000000..f8e78bd2060 Binary files /dev/null and b/mac/2017/media/customizing-the-ide-image11a.png differ diff --git a/mac/2017/media/customizing-the-ide-image1a.png b/mac/2017/media/customizing-the-ide-image1a.png new file mode 100644 index 00000000000..f905e711756 Binary files /dev/null and b/mac/2017/media/customizing-the-ide-image1a.png differ diff --git a/mac/2017/media/customizing-the-ide-image2a.png b/mac/2017/media/customizing-the-ide-image2a.png new file mode 100644 index 00000000000..29a16d6e29f Binary files /dev/null and b/mac/2017/media/customizing-the-ide-image2a.png differ diff --git a/mac/2017/media/customizing-the-ide-image3a.png b/mac/2017/media/customizing-the-ide-image3a.png new file mode 100644 index 00000000000..12f1398e1bc Binary files /dev/null and b/mac/2017/media/customizing-the-ide-image3a.png differ diff --git a/mac/2017/media/customizing-the-ide-image5a.png b/mac/2017/media/customizing-the-ide-image5a.png new file mode 100644 index 00000000000..e70540d92d2 Binary files /dev/null and b/mac/2017/media/customizing-the-ide-image5a.png differ diff --git a/mac/2017/media/customizing-the-ide-image6a.png b/mac/2017/media/customizing-the-ide-image6a.png new file mode 100644 index 00000000000..67c4685fdf6 Binary files /dev/null and b/mac/2017/media/customizing-the-ide-image6a.png differ diff --git a/mac/2017/media/customizing-the-ide-image6b.png b/mac/2017/media/customizing-the-ide-image6b.png new file mode 100644 index 00000000000..387fbc03bd7 Binary files /dev/null and b/mac/2017/media/customizing-the-ide-image6b.png differ diff --git a/mac/2017/media/customizing-the-ide-image7a.png b/mac/2017/media/customizing-the-ide-image7a.png new file mode 100644 index 00000000000..e2524540154 Binary files /dev/null and b/mac/2017/media/customizing-the-ide-image7a.png differ diff --git a/mac/2017/media/customizing-the-ide-image7b.png b/mac/2017/media/customizing-the-ide-image7b.png new file mode 100644 index 00000000000..027a5179182 Binary files /dev/null and b/mac/2017/media/customizing-the-ide-image7b.png differ diff --git a/mac/2017/media/customizing-the-ide-image8a.png b/mac/2017/media/customizing-the-ide-image8a.png new file mode 100644 index 00000000000..aac02ca4a56 Binary files /dev/null and b/mac/2017/media/customizing-the-ide-image8a.png differ diff --git a/mac/2017/media/customizing-the-ide-image9a.png b/mac/2017/media/customizing-the-ide-image9a.png new file mode 100644 index 00000000000..99a095de218 Binary files /dev/null and b/mac/2017/media/customizing-the-ide-image9a.png differ diff --git a/mac/2017/media/customizing-the-ide-sbs.png b/mac/2017/media/customizing-the-ide-sbs.png new file mode 100644 index 00000000000..bdd850a1263 Binary files /dev/null and b/mac/2017/media/customizing-the-ide-sbs.png differ diff --git a/mac/2017/media/customizing-the-ide-sbs1.png b/mac/2017/media/customizing-the-ide-sbs1.png new file mode 100644 index 00000000000..15dbb485648 Binary files /dev/null and b/mac/2017/media/customizing-the-ide-sbs1.png differ diff --git a/mac/2017/media/customizing-the-ide-sbs2.png b/mac/2017/media/customizing-the-ide-sbs2.png new file mode 100644 index 00000000000..70f206c0534 Binary files /dev/null and b/mac/2017/media/customizing-the-ide-sbs2.png differ diff --git a/mac/2017/media/data-visualizations-image10.png b/mac/2017/media/data-visualizations-image10.png new file mode 100644 index 00000000000..57326910f8f Binary files /dev/null and b/mac/2017/media/data-visualizations-image10.png differ diff --git a/mac/2017/media/data-visualizations-image11.png b/mac/2017/media/data-visualizations-image11.png new file mode 100644 index 00000000000..a53f871886f Binary files /dev/null and b/mac/2017/media/data-visualizations-image11.png differ diff --git a/mac/2017/media/data-visualizations-image12.png b/mac/2017/media/data-visualizations-image12.png new file mode 100644 index 00000000000..06ac285ad82 Binary files /dev/null and b/mac/2017/media/data-visualizations-image12.png differ diff --git a/mac/2017/media/data-visualizations-image13.png b/mac/2017/media/data-visualizations-image13.png new file mode 100644 index 00000000000..6436ea33d41 Binary files /dev/null and b/mac/2017/media/data-visualizations-image13.png differ diff --git a/mac/2017/media/data-visualizations-image14.png b/mac/2017/media/data-visualizations-image14.png new file mode 100644 index 00000000000..27103464c8f Binary files /dev/null and b/mac/2017/media/data-visualizations-image14.png differ diff --git a/mac/2017/media/data-visualizations-image15.png b/mac/2017/media/data-visualizations-image15.png new file mode 100644 index 00000000000..9cd6b591636 Binary files /dev/null and b/mac/2017/media/data-visualizations-image15.png differ diff --git a/mac/2017/media/data-visualizations-image16.png b/mac/2017/media/data-visualizations-image16.png new file mode 100644 index 00000000000..d3646bde2c9 Binary files /dev/null and b/mac/2017/media/data-visualizations-image16.png differ diff --git a/mac/2017/media/data-visualizations-image17.png b/mac/2017/media/data-visualizations-image17.png new file mode 100644 index 00000000000..770526a3d08 Binary files /dev/null and b/mac/2017/media/data-visualizations-image17.png differ diff --git a/mac/2017/media/data-visualizations-image18.png b/mac/2017/media/data-visualizations-image18.png new file mode 100644 index 00000000000..11d1b9534c4 Binary files /dev/null and b/mac/2017/media/data-visualizations-image18.png differ diff --git a/mac/2017/media/data-visualizations-image19.png b/mac/2017/media/data-visualizations-image19.png new file mode 100644 index 00000000000..8641642833f Binary files /dev/null and b/mac/2017/media/data-visualizations-image19.png differ diff --git a/mac/2017/media/data-visualizations-image20.png b/mac/2017/media/data-visualizations-image20.png new file mode 100644 index 00000000000..e9e9ea52ee8 Binary files /dev/null and b/mac/2017/media/data-visualizations-image20.png differ diff --git a/mac/2017/media/data-visualizations-image21.png b/mac/2017/media/data-visualizations-image21.png new file mode 100644 index 00000000000..6698c479618 Binary files /dev/null and b/mac/2017/media/data-visualizations-image21.png differ diff --git a/mac/2017/media/data-visualizations-image22.png b/mac/2017/media/data-visualizations-image22.png new file mode 100644 index 00000000000..6cc9bc19f53 Binary files /dev/null and b/mac/2017/media/data-visualizations-image22.png differ diff --git a/mac/2017/media/data-visualizations-image23.png b/mac/2017/media/data-visualizations-image23.png new file mode 100644 index 00000000000..05a8fcf96bd Binary files /dev/null and b/mac/2017/media/data-visualizations-image23.png differ diff --git a/mac/2017/media/data-visualizations-image9.png b/mac/2017/media/data-visualizations-image9.png new file mode 100644 index 00000000000..69243237797 Binary files /dev/null and b/mac/2017/media/data-visualizations-image9.png differ diff --git a/mac/2017/media/debugging-image0.png b/mac/2017/media/debugging-image0.png new file mode 100644 index 00000000000..a4338263d89 Binary files /dev/null and b/mac/2017/media/debugging-image0.png differ diff --git a/mac/2017/media/debugging-image0a.png b/mac/2017/media/debugging-image0a.png new file mode 100644 index 00000000000..cdcaa543fe6 Binary files /dev/null and b/mac/2017/media/debugging-image0a.png differ diff --git a/mac/2017/media/debugging-image1.png b/mac/2017/media/debugging-image1.png new file mode 100644 index 00000000000..6af4debdbf0 Binary files /dev/null and b/mac/2017/media/debugging-image1.png differ diff --git a/mac/2017/media/debugging-image2.png b/mac/2017/media/debugging-image2.png new file mode 100644 index 00000000000..49acc7898c0 Binary files /dev/null and b/mac/2017/media/debugging-image2.png differ diff --git a/mac/2017/media/debugging-image3.png b/mac/2017/media/debugging-image3.png new file mode 100644 index 00000000000..d2136b36704 Binary files /dev/null and b/mac/2017/media/debugging-image3.png differ diff --git a/mac/2017/media/debugging-image4.png b/mac/2017/media/debugging-image4.png new file mode 100644 index 00000000000..6a66bb57a76 Binary files /dev/null and b/mac/2017/media/debugging-image4.png differ diff --git a/mac/2017/media/debugging-image5.png b/mac/2017/media/debugging-image5.png new file mode 100644 index 00000000000..2ce1947b4ac Binary files /dev/null and b/mac/2017/media/debugging-image5.png differ diff --git a/mac/2017/media/debugging-image6.png b/mac/2017/media/debugging-image6.png new file mode 100644 index 00000000000..03e194e03ef Binary files /dev/null and b/mac/2017/media/debugging-image6.png differ diff --git a/mac/2017/media/debugging-image7.png b/mac/2017/media/debugging-image7.png new file mode 100644 index 00000000000..f521a0d2f04 Binary files /dev/null and b/mac/2017/media/debugging-image7.png differ diff --git a/mac/2017/media/debugging-image8.png b/mac/2017/media/debugging-image8.png new file mode 100644 index 00000000000..6c06061fa69 Binary files /dev/null and b/mac/2017/media/debugging-image8.png differ diff --git a/mac/2017/media/debugging-image_0.png b/mac/2017/media/debugging-image_0.png new file mode 100644 index 00000000000..c6593ff814c Binary files /dev/null and b/mac/2017/media/debugging-image_0.png differ diff --git a/mac/2017/media/editorconfig-image0.png b/mac/2017/media/editorconfig-image0.png new file mode 100644 index 00000000000..566c55791f1 Binary files /dev/null and b/mac/2017/media/editorconfig-image0.png differ diff --git a/mac/2017/media/editorconfig-image1.png b/mac/2017/media/editorconfig-image1.png new file mode 100644 index 00000000000..5f9488d1e03 Binary files /dev/null and b/mac/2017/media/editorconfig-image1.png differ diff --git a/mac/2017/media/editorconfig-image1a.png b/mac/2017/media/editorconfig-image1a.png new file mode 100644 index 00000000000..fda6d9531e5 Binary files /dev/null and b/mac/2017/media/editorconfig-image1a.png differ diff --git a/mac/2017/media/editorconfig-image2.png b/mac/2017/media/editorconfig-image2.png new file mode 100644 index 00000000000..36a178efdd9 Binary files /dev/null and b/mac/2017/media/editorconfig-image2.png differ diff --git a/mac/2017/media/editorconfig-image3.png b/mac/2017/media/editorconfig-image3.png new file mode 100644 index 00000000000..2c1d4a72988 Binary files /dev/null and b/mac/2017/media/editorconfig-image3.png differ diff --git a/mac/2017/media/editorconfig-image3a.png b/mac/2017/media/editorconfig-image3a.png new file mode 100644 index 00000000000..3b0cc4e604f Binary files /dev/null and b/mac/2017/media/editorconfig-image3a.png differ diff --git a/mac/2017/media/editorconfig-image3b.png b/mac/2017/media/editorconfig-image3b.png new file mode 100644 index 00000000000..6f4b7aea223 Binary files /dev/null and b/mac/2017/media/editorconfig-image3b.png differ diff --git a/mac/2017/media/editorconfig-image4.png b/mac/2017/media/editorconfig-image4.png new file mode 100644 index 00000000000..02e644df822 Binary files /dev/null and b/mac/2017/media/editorconfig-image4.png differ diff --git a/mac/2017/media/editorconfig-image5.png b/mac/2017/media/editorconfig-image5.png new file mode 100644 index 00000000000..e7dd877ea1f Binary files /dev/null and b/mac/2017/media/editorconfig-image5.png differ diff --git a/mac/2017/media/extending-visual-studio-mac-addin1.png b/mac/2017/media/extending-visual-studio-mac-addin1.png new file mode 100644 index 00000000000..3538b5ec79f Binary files /dev/null and b/mac/2017/media/extending-visual-studio-mac-addin1.png differ diff --git a/mac/2017/media/extending-visual-studio-mac-addin10.png b/mac/2017/media/extending-visual-studio-mac-addin10.png new file mode 100644 index 00000000000..443d85ac819 Binary files /dev/null and b/mac/2017/media/extending-visual-studio-mac-addin10.png differ diff --git a/mac/2017/media/extending-visual-studio-mac-addin11.png b/mac/2017/media/extending-visual-studio-mac-addin11.png new file mode 100644 index 00000000000..ff6896dd993 Binary files /dev/null and b/mac/2017/media/extending-visual-studio-mac-addin11.png differ diff --git a/mac/2017/media/extending-visual-studio-mac-addin12.png b/mac/2017/media/extending-visual-studio-mac-addin12.png new file mode 100644 index 00000000000..c8f68bc5d65 Binary files /dev/null and b/mac/2017/media/extending-visual-studio-mac-addin12.png differ diff --git a/mac/2017/media/extending-visual-studio-mac-addin13.png b/mac/2017/media/extending-visual-studio-mac-addin13.png new file mode 100644 index 00000000000..4bbbc81a072 Binary files /dev/null and b/mac/2017/media/extending-visual-studio-mac-addin13.png differ diff --git a/mac/2017/media/extending-visual-studio-mac-addin3.png b/mac/2017/media/extending-visual-studio-mac-addin3.png new file mode 100644 index 00000000000..9d96343646c Binary files /dev/null and b/mac/2017/media/extending-visual-studio-mac-addin3.png differ diff --git a/mac/2017/media/extending-visual-studio-mac-addin4.png b/mac/2017/media/extending-visual-studio-mac-addin4.png new file mode 100644 index 00000000000..06a33e9d500 Binary files /dev/null and b/mac/2017/media/extending-visual-studio-mac-addin4.png differ diff --git a/mac/2017/media/extending-visual-studio-mac-addin5.png b/mac/2017/media/extending-visual-studio-mac-addin5.png new file mode 100644 index 00000000000..8b1c042f941 Binary files /dev/null and b/mac/2017/media/extending-visual-studio-mac-addin5.png differ diff --git a/mac/2017/media/extending-visual-studio-mac-addin7New.png b/mac/2017/media/extending-visual-studio-mac-addin7New.png new file mode 100644 index 00000000000..5265552aa77 Binary files /dev/null and b/mac/2017/media/extending-visual-studio-mac-addin7New.png differ diff --git a/mac/2017/media/extending-visual-studio-mac-addin8.png b/mac/2017/media/extending-visual-studio-mac-addin8.png new file mode 100644 index 00000000000..f370e14295a Binary files /dev/null and b/mac/2017/media/extending-visual-studio-mac-addin8.png differ diff --git a/mac/2017/media/extending-visual-studio-mac-addin9.png b/mac/2017/media/extending-visual-studio-mac-addin9.png new file mode 100644 index 00000000000..299be327481 Binary files /dev/null and b/mac/2017/media/extending-visual-studio-mac-addin9.png differ diff --git a/mac/2017/media/image16.png b/mac/2017/media/image16.png new file mode 100644 index 00000000000..9b28a0ffc49 Binary files /dev/null and b/mac/2017/media/image16.png differ diff --git a/mac/2017/media/image17.png b/mac/2017/media/image17.png new file mode 100644 index 00000000000..137dd3a29f1 Binary files /dev/null and b/mac/2017/media/image17.png differ diff --git a/mac/2017/media/image18.png b/mac/2017/media/image18.png new file mode 100644 index 00000000000..8680bb7de3d Binary files /dev/null and b/mac/2017/media/image18.png differ diff --git a/mac/2017/media/image19.png b/mac/2017/media/image19.png new file mode 100644 index 00000000000..c0ed53c0081 Binary files /dev/null and b/mac/2017/media/image19.png differ diff --git a/mac/2019/media/ide-tour-image20.png b/mac/2017/media/image20.png similarity index 100% rename from mac/2019/media/ide-tour-image20.png rename to mac/2017/media/image20.png diff --git a/mac/2017/media/image21.png b/mac/2017/media/image21.png new file mode 100644 index 00000000000..1ba060edea9 Binary files /dev/null and b/mac/2017/media/image21.png differ diff --git a/mac/2017/media/image22.png b/mac/2017/media/image22.png new file mode 100644 index 00000000000..5837a5f966e Binary files /dev/null and b/mac/2017/media/image22.png differ diff --git a/mac/2017/media/image23.png b/mac/2017/media/image23.png new file mode 100644 index 00000000000..8ce2c5ed429 Binary files /dev/null and b/mac/2017/media/image23.png differ diff --git a/mac/2017/media/index-2019-preview.png b/mac/2017/media/index-2019-preview.png new file mode 100755 index 00000000000..f4ccb5a0a86 Binary files /dev/null and b/mac/2017/media/index-2019-preview.png differ diff --git a/mac/2017/media/intro-image30.png b/mac/2017/media/intro-image30.png new file mode 100644 index 00000000000..5f622df83ff Binary files /dev/null and b/mac/2017/media/intro-image30.png differ diff --git a/mac/2017/media/intro-image31.png b/mac/2017/media/intro-image31.png new file mode 100644 index 00000000000..071600f22e2 Binary files /dev/null and b/mac/2017/media/intro-image31.png differ diff --git a/mac/2017/media/intro-inspector.png b/mac/2017/media/intro-inspector.png new file mode 100644 index 00000000000..2e66d2a6382 Binary files /dev/null and b/mac/2017/media/intro-inspector.png differ diff --git a/mac/2017/media/intro-testcloud.png b/mac/2017/media/intro-testcloud.png new file mode 100644 index 00000000000..b25b7f89b48 Binary files /dev/null and b/mac/2017/media/intro-testcloud.png differ diff --git a/mac/2017/media/javascript-image1.png b/mac/2017/media/javascript-image1.png new file mode 100644 index 00000000000..3149b32585a Binary files /dev/null and b/mac/2017/media/javascript-image1.png differ diff --git a/mac/2017/media/javascript-image2.png b/mac/2017/media/javascript-image2.png new file mode 100644 index 00000000000..6d1493a0781 Binary files /dev/null and b/mac/2017/media/javascript-image2.png differ diff --git a/mac/2017/media/javascript-image3.png b/mac/2017/media/javascript-image3.png new file mode 100644 index 00000000000..fb862368a38 Binary files /dev/null and b/mac/2017/media/javascript-image3.png differ diff --git a/mac/2017/media/nuget-walkthrough-AddPackages1.png b/mac/2017/media/nuget-walkthrough-AddPackages1.png new file mode 100644 index 00000000000..cac9bb49163 Binary files /dev/null and b/mac/2017/media/nuget-walkthrough-AddPackages1.png differ diff --git a/mac/2017/media/nuget-walkthrough-AddPackages2.png b/mac/2017/media/nuget-walkthrough-AddPackages2.png new file mode 100644 index 00000000000..7327176e4c0 Binary files /dev/null and b/mac/2017/media/nuget-walkthrough-AddPackages2.png differ diff --git a/mac/2017/media/nuget-walkthrough-AutoRestore.png b/mac/2017/media/nuget-walkthrough-AutoRestore.png new file mode 100644 index 00000000000..e03ff736b78 Binary files /dev/null and b/mac/2017/media/nuget-walkthrough-AutoRestore.png differ diff --git a/mac/2017/media/nuget-walkthrough-NewProject.png b/mac/2017/media/nuget-walkthrough-NewProject.png new file mode 100644 index 00000000000..1b20c5c7f77 Binary files /dev/null and b/mac/2017/media/nuget-walkthrough-NewProject.png differ diff --git a/mac/2017/media/nuget-walkthrough-PackageMenu.png b/mac/2017/media/nuget-walkthrough-PackageMenu.png new file mode 100644 index 00000000000..f80746e15a6 Binary files /dev/null and b/mac/2017/media/nuget-walkthrough-PackageMenu.png differ diff --git a/mac/2017/media/nuget-walkthrough-PackageSource.png b/mac/2017/media/nuget-walkthrough-PackageSource.png new file mode 100644 index 00000000000..b62f7f2b0e2 Binary files /dev/null and b/mac/2017/media/nuget-walkthrough-PackageSource.png differ diff --git a/mac/2017/media/nuget-walkthrough-PackageSource2.png b/mac/2017/media/nuget-walkthrough-PackageSource2.png new file mode 100644 index 00000000000..8bad5f95c94 Binary files /dev/null and b/mac/2017/media/nuget-walkthrough-PackageSource2.png differ diff --git a/mac/2017/media/nuget-walkthrough-PackageSource3.png b/mac/2017/media/nuget-walkthrough-PackageSource3.png new file mode 100644 index 00000000000..fc64388903a Binary files /dev/null and b/mac/2017/media/nuget-walkthrough-PackageSource3.png differ diff --git a/mac/2017/media/nuget-walkthrough-PackagesMenu.png b/mac/2017/media/nuget-walkthrough-PackagesMenu.png new file mode 100644 index 00000000000..3b6c45b01c3 Binary files /dev/null and b/mac/2017/media/nuget-walkthrough-PackagesMenu.png differ diff --git a/mac/2017/media/nuget-walkthrough-Source.png b/mac/2017/media/nuget-walkthrough-Source.png new file mode 100644 index 00000000000..b133d655491 Binary files /dev/null and b/mac/2017/media/nuget-walkthrough-Source.png differ diff --git a/mac/2017/media/nuget-walkthrough-project-page.png b/mac/2017/media/nuget-walkthrough-project-page.png new file mode 100644 index 00000000000..3f3ba80046b Binary files /dev/null and b/mac/2017/media/nuget-walkthrough-project-page.png differ diff --git a/mac/2017/media/open-multiple-solutions-image1.png b/mac/2017/media/open-multiple-solutions-image1.png new file mode 100644 index 00000000000..175f674f7db Binary files /dev/null and b/mac/2017/media/open-multiple-solutions-image1.png differ diff --git a/mac/2017/media/open-multiple-solutions-image2.png b/mac/2017/media/open-multiple-solutions-image2.png new file mode 100644 index 00000000000..8e636baaf8f Binary files /dev/null and b/mac/2017/media/open-multiple-solutions-image2.png differ diff --git a/mac/2017/media/open-multiple-solutions-image3.png b/mac/2017/media/open-multiple-solutions-image3.png new file mode 100644 index 00000000000..12211d1d5dc Binary files /dev/null and b/mac/2017/media/open-multiple-solutions-image3.png differ diff --git a/mac/2017/media/projects-and-solutions-image0.png b/mac/2017/media/projects-and-solutions-image0.png new file mode 100644 index 00000000000..047ec74df0c Binary files /dev/null and b/mac/2017/media/projects-and-solutions-image0.png differ diff --git a/mac/2017/media/projects-and-solutions-image1.png b/mac/2017/media/projects-and-solutions-image1.png new file mode 100644 index 00000000000..212c627c825 Binary files /dev/null and b/mac/2017/media/projects-and-solutions-image1.png differ diff --git a/mac/2017/media/projects-and-solutions-image10.png b/mac/2017/media/projects-and-solutions-image10.png new file mode 100644 index 00000000000..1cfe69ee13d Binary files /dev/null and b/mac/2017/media/projects-and-solutions-image10.png differ diff --git a/mac/2017/media/projects-and-solutions-image11.png b/mac/2017/media/projects-and-solutions-image11.png new file mode 100644 index 00000000000..34089031e74 Binary files /dev/null and b/mac/2017/media/projects-and-solutions-image11.png differ diff --git a/mac/2017/media/projects-and-solutions-image2.png b/mac/2017/media/projects-and-solutions-image2.png new file mode 100644 index 00000000000..2b37464e403 Binary files /dev/null and b/mac/2017/media/projects-and-solutions-image2.png differ diff --git a/mac/2017/media/projects-and-solutions-image3.png b/mac/2017/media/projects-and-solutions-image3.png new file mode 100644 index 00000000000..4c56f8daa50 Binary files /dev/null and b/mac/2017/media/projects-and-solutions-image3.png differ diff --git a/mac/2017/media/projects-and-solutions-image4.png b/mac/2017/media/projects-and-solutions-image4.png new file mode 100644 index 00000000000..13e6b754825 Binary files /dev/null and b/mac/2017/media/projects-and-solutions-image4.png differ diff --git a/mac/2017/media/projects-and-solutions-image5.png b/mac/2017/media/projects-and-solutions-image5.png new file mode 100644 index 00000000000..f01e8e2dc8e Binary files /dev/null and b/mac/2017/media/projects-and-solutions-image5.png differ diff --git a/mac/2017/media/projects-and-solutions-image6.png b/mac/2017/media/projects-and-solutions-image6.png new file mode 100644 index 00000000000..aa8e442d966 Binary files /dev/null and b/mac/2017/media/projects-and-solutions-image6.png differ diff --git a/mac/2017/media/projects-and-solutions-image7.png b/mac/2017/media/projects-and-solutions-image7.png new file mode 100644 index 00000000000..8a71532af5b Binary files /dev/null and b/mac/2017/media/projects-and-solutions-image7.png differ diff --git a/mac/2017/media/projects-and-solutions-image8.png b/mac/2017/media/projects-and-solutions-image8.png new file mode 100644 index 00000000000..f4dc0451fff Binary files /dev/null and b/mac/2017/media/projects-and-solutions-image8.png differ diff --git a/mac/2017/media/projects-and-solutions-image9.png b/mac/2017/media/projects-and-solutions-image9.png new file mode 100644 index 00000000000..22f38aa8338 Binary files /dev/null and b/mac/2017/media/projects-and-solutions-image9.png differ diff --git a/mac/2017/media/publish-context-menu-with-folder-profile.png b/mac/2017/media/publish-context-menu-with-folder-profile.png new file mode 100644 index 00000000000..a7b2a81451a Binary files /dev/null and b/mac/2017/media/publish-context-menu-with-folder-profile.png differ diff --git a/mac/2017/media/publish-context-menu.png b/mac/2017/media/publish-context-menu.png new file mode 100644 index 00000000000..6aca21e38cb Binary files /dev/null and b/mac/2017/media/publish-context-menu.png differ diff --git a/mac/2017/media/publish-create-app-service-message.png b/mac/2017/media/publish-create-app-service-message.png new file mode 100644 index 00000000000..7df4545b4bf Binary files /dev/null and b/mac/2017/media/publish-create-app-service-message.png differ diff --git a/mac/2017/media/publish-new-app-service.png b/mac/2017/media/publish-new-app-service.png new file mode 100644 index 00000000000..a4612d87560 Binary files /dev/null and b/mac/2017/media/publish-new-app-service.png differ diff --git a/mac/2017/media/publish-to-app-service-dialog-new-selected.png b/mac/2017/media/publish-to-app-service-dialog-new-selected.png new file mode 100644 index 00000000000..0967d35f477 Binary files /dev/null and b/mac/2017/media/publish-to-app-service-dialog-new-selected.png differ diff --git a/mac/2017/media/publish-to-app-service-dialog.png b/mac/2017/media/publish-to-app-service-dialog.png new file mode 100644 index 00000000000..93c57f131a0 Binary files /dev/null and b/mac/2017/media/publish-to-app-service-dialog.png differ diff --git a/mac/2017/media/publish-to-azure-context-menu.png b/mac/2017/media/publish-to-azure-context-menu.png new file mode 100644 index 00000000000..3a39f1cfbfa Binary files /dev/null and b/mac/2017/media/publish-to-azure-context-menu.png differ diff --git a/mac/2017/media/publish-to-folder-context-menu.png b/mac/2017/media/publish-to-folder-context-menu.png new file mode 100644 index 00000000000..e647d904028 Binary files /dev/null and b/mac/2017/media/publish-to-folder-context-menu.png differ diff --git a/mac/2017/media/publish-to-folder-dialog.png b/mac/2017/media/publish-to-folder-dialog.png new file mode 100644 index 00000000000..bc30b2af347 Binary files /dev/null and b/mac/2017/media/publish-to-folder-dialog.png differ diff --git a/mac/2017/media/publish-to-folder-status-bar.png b/mac/2017/media/publish-to-folder-status-bar.png new file mode 100644 index 00000000000..82c9657c230 Binary files /dev/null and b/mac/2017/media/publish-to-folder-status-bar.png differ diff --git a/mac/2017/media/razor-image1.png b/mac/2017/media/razor-image1.png new file mode 100644 index 00000000000..d33a6d64959 Binary files /dev/null and b/mac/2017/media/razor-image1.png differ diff --git a/mac/2017/media/refactoring-context-action.png b/mac/2017/media/refactoring-context-action.png new file mode 100644 index 00000000000..195980c3e58 Binary files /dev/null and b/mac/2017/media/refactoring-context-action.png differ diff --git a/mac/2017/media/refactoring-image2a.png b/mac/2017/media/refactoring-image2a.png new file mode 100644 index 00000000000..2752e81acd8 Binary files /dev/null and b/mac/2017/media/refactoring-image2a.png differ diff --git a/mac/2017/media/refactoring-image3a.png b/mac/2017/media/refactoring-image3a.png new file mode 100644 index 00000000000..88ce6dc0444 Binary files /dev/null and b/mac/2017/media/refactoring-image3a.png differ diff --git a/mac/2017/media/refactoring-image4a.png b/mac/2017/media/refactoring-image4a.png new file mode 100644 index 00000000000..bc210e5640b Binary files /dev/null and b/mac/2017/media/refactoring-image4a.png differ diff --git a/mac/2017/media/refactoring-image5.png b/mac/2017/media/refactoring-image5.png new file mode 100644 index 00000000000..f550a6ffe2c Binary files /dev/null and b/mac/2017/media/refactoring-image5.png differ diff --git a/mac/2017/media/refactoring-options.png b/mac/2017/media/refactoring-options.png new file mode 100644 index 00000000000..4abc30bf9dc Binary files /dev/null and b/mac/2017/media/refactoring-options.png differ diff --git a/mac/2017/media/refactoring-renaming1.png b/mac/2017/media/refactoring-renaming1.png new file mode 100644 index 00000000000..fae6c80cc9b Binary files /dev/null and b/mac/2017/media/refactoring-renaming1.png differ diff --git a/mac/2017/media/refactoring-renaming2.png b/mac/2017/media/refactoring-renaming2.png new file mode 100644 index 00000000000..251e5ef1fb9 Binary files /dev/null and b/mac/2017/media/refactoring-renaming2.png differ diff --git a/mac/2017/media/report-problem-attach-file.png b/mac/2017/media/report-problem-attach-file.png new file mode 100644 index 00000000000..4ee6273e42c Binary files /dev/null and b/mac/2017/media/report-problem-attach-file.png differ diff --git a/mac/2017/media/report-problem-attach-logs.png b/mac/2017/media/report-problem-attach-logs.png new file mode 100644 index 00000000000..cb8a0cf8923 Binary files /dev/null and b/mac/2017/media/report-problem-attach-logs.png differ diff --git a/mac/2017/media/report-problem-image1.png b/mac/2017/media/report-problem-image1.png new file mode 100644 index 00000000000..e21e51add9b Binary files /dev/null and b/mac/2017/media/report-problem-image1.png differ diff --git a/mac/2017/media/report-problem-image2.png b/mac/2017/media/report-problem-image2.png new file mode 100644 index 00000000000..8712481174c Binary files /dev/null and b/mac/2017/media/report-problem-image2.png differ diff --git a/mac/2017/media/report-problem-image3.png b/mac/2017/media/report-problem-image3.png new file mode 100644 index 00000000000..ebbafea34b2 Binary files /dev/null and b/mac/2017/media/report-problem-image3.png differ diff --git a/mac/2017/media/report-problem-image4.png b/mac/2017/media/report-problem-image4.png new file mode 100644 index 00000000000..4d8044cb5b4 Binary files /dev/null and b/mac/2017/media/report-problem-image4.png differ diff --git a/mac/2017/media/report-problem-image5.png b/mac/2017/media/report-problem-image5.png new file mode 100644 index 00000000000..35382b72d9f Binary files /dev/null and b/mac/2017/media/report-problem-image5.png differ diff --git a/mac/2017/media/report-problem-image6.png b/mac/2017/media/report-problem-image6.png new file mode 100644 index 00000000000..bd008059c74 Binary files /dev/null and b/mac/2017/media/report-problem-image6.png differ diff --git a/mac/2017/media/setup-vsmac-tools-unity-image1.png b/mac/2017/media/setup-vsmac-tools-unity-image1.png new file mode 100644 index 00000000000..0cca58348c2 Binary files /dev/null and b/mac/2017/media/setup-vsmac-tools-unity-image1.png differ diff --git a/mac/2017/media/setup-vsmac-tools-unity-image2.png b/mac/2017/media/setup-vsmac-tools-unity-image2.png new file mode 100644 index 00000000000..4cf9209b1b5 Binary files /dev/null and b/mac/2017/media/setup-vsmac-tools-unity-image2.png differ diff --git a/mac/2017/media/setup-vsmac-tools-unity-image3.png b/mac/2017/media/setup-vsmac-tools-unity-image3.png new file mode 100644 index 00000000000..8249b0b2576 Binary files /dev/null and b/mac/2017/media/setup-vsmac-tools-unity-image3.png differ diff --git a/mac/2017/media/setup-vsmac-tools-unity-image4.png b/mac/2017/media/setup-vsmac-tools-unity-image4.png new file mode 100644 index 00000000000..a680ebaec69 Binary files /dev/null and b/mac/2017/media/setup-vsmac-tools-unity-image4.png differ diff --git a/mac/2017/media/setup-vsmac-tools-unity-image5.png b/mac/2017/media/setup-vsmac-tools-unity-image5.png new file mode 100644 index 00000000000..6043535b990 Binary files /dev/null and b/mac/2017/media/setup-vsmac-tools-unity-image5.png differ diff --git a/mac/2017/media/setup-vsmac-tools-unity-image6.png b/mac/2017/media/setup-vsmac-tools-unity-image6.png new file mode 100644 index 00000000000..45c5c2adb88 Binary files /dev/null and b/mac/2017/media/setup-vsmac-tools-unity-image6.png differ diff --git a/mac/2017/media/setup-vsmac-tools-unity-image7.png b/mac/2017/media/setup-vsmac-tools-unity-image7.png new file mode 100644 index 00000000000..ef5abe18187 Binary files /dev/null and b/mac/2017/media/setup-vsmac-tools-unity-image7.png differ diff --git a/mac/2017/media/setup-vsmac-tools-unity-image8.png b/mac/2017/media/setup-vsmac-tools-unity-image8.png new file mode 100644 index 00000000000..7cfe28a22ec Binary files /dev/null and b/mac/2017/media/setup-vsmac-tools-unity-image8.png differ diff --git a/mac/2017/media/signing-in-image12.png b/mac/2017/media/signing-in-image12.png new file mode 100644 index 00000000000..58f3fc1339c Binary files /dev/null and b/mac/2017/media/signing-in-image12.png differ diff --git a/mac/2017/media/signing-in-image13.png b/mac/2017/media/signing-in-image13.png new file mode 100644 index 00000000000..448b9ce2d18 Binary files /dev/null and b/mac/2017/media/signing-in-image13.png differ diff --git a/mac/2017/media/signing-in-image14.png b/mac/2017/media/signing-in-image14.png new file mode 100644 index 00000000000..1b9196f53d5 Binary files /dev/null and b/mac/2017/media/signing-in-image14.png differ diff --git a/mac/2017/media/sln-options-run-config-multi-projects-configured.png b/mac/2017/media/sln-options-run-config-multi-projects-configured.png new file mode 100644 index 00000000000..71104038080 Binary files /dev/null and b/mac/2017/media/sln-options-run-config-multi-projects-configured.png differ diff --git a/mac/2017/media/sln-options-run-config-multi-projects.png b/mac/2017/media/sln-options-run-config-multi-projects.png new file mode 100644 index 00000000000..fab9c4a1bcc Binary files /dev/null and b/mac/2017/media/sln-options-run-config-multi-projects.png differ diff --git a/mac/2017/media/source-editor-image1.png b/mac/2017/media/source-editor-image1.png new file mode 100644 index 00000000000..91f0ce7579a Binary files /dev/null and b/mac/2017/media/source-editor-image1.png differ diff --git a/mac/2017/media/source-editor-image10.png b/mac/2017/media/source-editor-image10.png new file mode 100644 index 00000000000..11c39eacad9 Binary files /dev/null and b/mac/2017/media/source-editor-image10.png differ diff --git a/mac/2017/media/source-editor-image11.png b/mac/2017/media/source-editor-image11.png new file mode 100644 index 00000000000..791be510e88 Binary files /dev/null and b/mac/2017/media/source-editor-image11.png differ diff --git a/mac/2017/media/source-editor-image12.png b/mac/2017/media/source-editor-image12.png new file mode 100644 index 00000000000..1e6ede09d7b Binary files /dev/null and b/mac/2017/media/source-editor-image12.png differ diff --git a/mac/2017/media/source-editor-image12a.png b/mac/2017/media/source-editor-image12a.png new file mode 100644 index 00000000000..0af1c789cdf Binary files /dev/null and b/mac/2017/media/source-editor-image12a.png differ diff --git a/mac/2017/media/source-editor-image12b.png b/mac/2017/media/source-editor-image12b.png new file mode 100644 index 00000000000..5b1c977740f Binary files /dev/null and b/mac/2017/media/source-editor-image12b.png differ diff --git a/mac/2017/media/source-editor-image12c.png b/mac/2017/media/source-editor-image12c.png new file mode 100644 index 00000000000..bac3f035ffd Binary files /dev/null and b/mac/2017/media/source-editor-image12c.png differ diff --git a/mac/2017/media/source-editor-image12z.png b/mac/2017/media/source-editor-image12z.png new file mode 100644 index 00000000000..34a9e3e5d1d Binary files /dev/null and b/mac/2017/media/source-editor-image12z.png differ diff --git a/mac/2017/media/source-editor-image13.png b/mac/2017/media/source-editor-image13.png new file mode 100644 index 00000000000..e07d4e01b56 Binary files /dev/null and b/mac/2017/media/source-editor-image13.png differ diff --git a/mac/2017/media/source-editor-image14-sml.png b/mac/2017/media/source-editor-image14-sml.png new file mode 100644 index 00000000000..cf204f50ada Binary files /dev/null and b/mac/2017/media/source-editor-image14-sml.png differ diff --git a/mac/2017/media/source-editor-image14.png b/mac/2017/media/source-editor-image14.png new file mode 100644 index 00000000000..bf0aacfa64b Binary files /dev/null and b/mac/2017/media/source-editor-image14.png differ diff --git a/mac/2017/media/source-editor-image15.png b/mac/2017/media/source-editor-image15.png new file mode 100644 index 00000000000..90afd72653a Binary files /dev/null and b/mac/2017/media/source-editor-image15.png differ diff --git a/mac/2017/media/source-editor-image16.png b/mac/2017/media/source-editor-image16.png new file mode 100644 index 00000000000..34285fb9068 Binary files /dev/null and b/mac/2017/media/source-editor-image16.png differ diff --git a/mac/2017/media/source-editor-image17.png b/mac/2017/media/source-editor-image17.png new file mode 100644 index 00000000000..b95b1da6aaf Binary files /dev/null and b/mac/2017/media/source-editor-image17.png differ diff --git a/mac/2017/media/source-editor-image18.png b/mac/2017/media/source-editor-image18.png new file mode 100644 index 00000000000..b1c92cf4c06 Binary files /dev/null and b/mac/2017/media/source-editor-image18.png differ diff --git a/mac/2017/media/source-editor-image19.png b/mac/2017/media/source-editor-image19.png new file mode 100644 index 00000000000..c2c16e0aaf0 Binary files /dev/null and b/mac/2017/media/source-editor-image19.png differ diff --git a/mac/2017/media/source-editor-image2.png b/mac/2017/media/source-editor-image2.png new file mode 100644 index 00000000000..e621a631e35 Binary files /dev/null and b/mac/2017/media/source-editor-image2.png differ diff --git a/mac/2017/media/source-editor-image20.png b/mac/2017/media/source-editor-image20.png new file mode 100644 index 00000000000..becc86991ab Binary files /dev/null and b/mac/2017/media/source-editor-image20.png differ diff --git a/mac/2017/media/source-editor-image21.png b/mac/2017/media/source-editor-image21.png new file mode 100644 index 00000000000..31b836cf7d5 Binary files /dev/null and b/mac/2017/media/source-editor-image21.png differ diff --git a/mac/2017/media/source-editor-image22.png b/mac/2017/media/source-editor-image22.png new file mode 100644 index 00000000000..11847127ca6 Binary files /dev/null and b/mac/2017/media/source-editor-image22.png differ diff --git a/mac/2017/media/source-editor-image3.png b/mac/2017/media/source-editor-image3.png new file mode 100644 index 00000000000..9973f211459 Binary files /dev/null and b/mac/2017/media/source-editor-image3.png differ diff --git a/mac/2017/media/source-editor-image4.png b/mac/2017/media/source-editor-image4.png new file mode 100644 index 00000000000..44a85a2692c Binary files /dev/null and b/mac/2017/media/source-editor-image4.png differ diff --git a/mac/2017/media/source-editor-image5.png b/mac/2017/media/source-editor-image5.png new file mode 100644 index 00000000000..a60afbc52a6 Binary files /dev/null and b/mac/2017/media/source-editor-image5.png differ diff --git a/mac/2017/media/source-editor-image6.png b/mac/2017/media/source-editor-image6.png new file mode 100644 index 00000000000..807edd30afa Binary files /dev/null and b/mac/2017/media/source-editor-image6.png differ diff --git a/mac/2017/media/source-editor-image7.png b/mac/2017/media/source-editor-image7.png new file mode 100644 index 00000000000..e7906734737 Binary files /dev/null and b/mac/2017/media/source-editor-image7.png differ diff --git a/mac/2017/media/source-editor-image8.png b/mac/2017/media/source-editor-image8.png new file mode 100644 index 00000000000..be743060d26 Binary files /dev/null and b/mac/2017/media/source-editor-image8.png differ diff --git a/mac/2017/media/source-editor-image9.png b/mac/2017/media/source-editor-image9.png new file mode 100644 index 00000000000..e88f9deae86 Binary files /dev/null and b/mac/2017/media/source-editor-image9.png differ diff --git a/mac/2017/media/startup-proj-ctx-menu.png b/mac/2017/media/startup-proj-ctx-menu.png new file mode 100644 index 00000000000..9a73e65b4a2 Binary files /dev/null and b/mac/2017/media/startup-proj-ctx-menu.png differ diff --git a/mac/2017/media/startup-project-configured.png b/mac/2017/media/startup-project-configured.png new file mode 100644 index 00000000000..b8133e55164 Binary files /dev/null and b/mac/2017/media/startup-project-configured.png differ diff --git a/mac/2017/media/tfvc-add-new-creds-devops.png b/mac/2017/media/tfvc-add-new-creds-devops.png new file mode 100644 index 00000000000..d9ec73c6a84 Binary files /dev/null and b/mac/2017/media/tfvc-add-new-creds-devops.png differ diff --git a/mac/2017/media/tfvc-add-new-server.png b/mac/2017/media/tfvc-add-new-server.png new file mode 100644 index 00000000000..30fb293c50a Binary files /dev/null and b/mac/2017/media/tfvc-add-new-server.png differ diff --git a/mac/2017/media/tfvc-add-remove-server.png b/mac/2017/media/tfvc-add-remove-server.png new file mode 100644 index 00000000000..e75ed60e561 Binary files /dev/null and b/mac/2017/media/tfvc-add-remove-server.png differ diff --git a/mac/2017/media/tfvc-auth.png b/mac/2017/media/tfvc-auth.png new file mode 100644 index 00000000000..28dac4f1b72 Binary files /dev/null and b/mac/2017/media/tfvc-auth.png differ diff --git a/mac/2017/media/tfvc-auth2.png b/mac/2017/media/tfvc-auth2.png new file mode 100644 index 00000000000..11e9502227d Binary files /dev/null and b/mac/2017/media/tfvc-auth2.png differ diff --git a/mac/2017/media/tfvc-choose-projects.png b/mac/2017/media/tfvc-choose-projects.png new file mode 100644 index 00000000000..3e0ad6f5ccb Binary files /dev/null and b/mac/2017/media/tfvc-choose-projects.png differ diff --git a/mac/2017/media/tfvc-choose-server-type-devops.png b/mac/2017/media/tfvc-choose-server-type-devops.png new file mode 100644 index 00000000000..14af1829159 Binary files /dev/null and b/mac/2017/media/tfvc-choose-server-type-devops.png differ diff --git a/mac/2017/media/tfvc-create-new-workspace.png b/mac/2017/media/tfvc-create-new-workspace.png new file mode 100644 index 00000000000..c2a53eb6de0 Binary files /dev/null and b/mac/2017/media/tfvc-create-new-workspace.png differ diff --git a/mac/2017/media/tfvc-create-workspace.png b/mac/2017/media/tfvc-create-workspace.png new file mode 100644 index 00000000000..70da0857751 Binary files /dev/null and b/mac/2017/media/tfvc-create-workspace.png differ diff --git a/mac/2017/media/tfvc-install.png b/mac/2017/media/tfvc-install.png new file mode 100644 index 00000000000..882d615fb26 Binary files /dev/null and b/mac/2017/media/tfvc-install.png differ diff --git a/mac/2017/media/tfvc-local-workspace.png b/mac/2017/media/tfvc-local-workspace.png new file mode 100644 index 00000000000..a3b10af66de Binary files /dev/null and b/mac/2017/media/tfvc-local-workspace.png differ diff --git a/mac/2017/media/tfvc-login.png b/mac/2017/media/tfvc-login.png new file mode 100644 index 00000000000..b9e436ed54e Binary files /dev/null and b/mac/2017/media/tfvc-login.png differ diff --git a/mac/2017/media/tfvc-manage-workspaces.png b/mac/2017/media/tfvc-manage-workspaces.png new file mode 100644 index 00000000000..9444365704d Binary files /dev/null and b/mac/2017/media/tfvc-manage-workspaces.png differ diff --git a/mac/2017/media/tfvc-setup-empty-sce.png b/mac/2017/media/tfvc-setup-empty-sce.png new file mode 100644 index 00000000000..49354c4bc5c Binary files /dev/null and b/mac/2017/media/tfvc-setup-empty-sce.png differ diff --git a/mac/2017/media/tfvc-source-control-explorer-devops.png b/mac/2017/media/tfvc-source-control-explorer-devops.png new file mode 100644 index 00000000000..acef328d696 Binary files /dev/null and b/mac/2017/media/tfvc-source-control-explorer-devops.png differ diff --git a/mac/2017/media/tfvc-source-explorer.png b/mac/2017/media/tfvc-source-explorer.png new file mode 100644 index 00000000000..a9715fa413e Binary files /dev/null and b/mac/2017/media/tfvc-source-explorer.png differ diff --git a/mac/2017/media/tfvc-sourcecode-actions.png b/mac/2017/media/tfvc-sourcecode-actions.png new file mode 100644 index 00000000000..379ee9f1cde Binary files /dev/null and b/mac/2017/media/tfvc-sourcecode-actions.png differ diff --git a/mac/2017/media/tfvc-update.png b/mac/2017/media/tfvc-update.png new file mode 100644 index 00000000000..7f6794bff4f Binary files /dev/null and b/mac/2017/media/tfvc-update.png differ diff --git a/mac/2017/media/tfvc-vsts-login.png b/mac/2017/media/tfvc-vsts-login.png new file mode 100644 index 00000000000..01293465991 Binary files /dev/null and b/mac/2017/media/tfvc-vsts-login.png differ diff --git a/mac/2017/media/tfvc-vsts-projects.png b/mac/2017/media/tfvc-vsts-projects.png new file mode 100644 index 00000000000..4e48a35ac5c Binary files /dev/null and b/mac/2017/media/tfvc-vsts-projects.png differ diff --git a/mac/2017/media/tfvc-workspace1.png b/mac/2017/media/tfvc-workspace1.png new file mode 100644 index 00000000000..47bf883666d Binary files /dev/null and b/mac/2017/media/tfvc-workspace1.png differ diff --git a/mac/2017/media/tfvc-workspace2.png b/mac/2017/media/tfvc-workspace2.png new file mode 100644 index 00000000000..aa0291d3984 Binary files /dev/null and b/mac/2017/media/tfvc-workspace2.png differ diff --git a/mac/2017/media/tfvc-workspace3.png b/mac/2017/media/tfvc-workspace3.png new file mode 100644 index 00000000000..4d4a59896e6 Binary files /dev/null and b/mac/2017/media/tfvc-workspace3.png differ diff --git a/mac/2017/media/tfvc-workspace4.png b/mac/2017/media/tfvc-workspace4.png new file mode 100644 index 00000000000..bf232a55130 Binary files /dev/null and b/mac/2017/media/tfvc-workspace4.png differ diff --git a/mac/2017/media/troubleshooting-image1.png b/mac/2017/media/troubleshooting-image1.png new file mode 100644 index 00000000000..c83ceebd8ce Binary files /dev/null and b/mac/2017/media/troubleshooting-image1.png differ diff --git a/mac/2017/media/troubleshooting-image2.png b/mac/2017/media/troubleshooting-image2.png new file mode 100644 index 00000000000..f26a74f04b6 Binary files /dev/null and b/mac/2017/media/troubleshooting-image2.png differ diff --git a/mac/2017/media/troubleshooting-image3.png b/mac/2017/media/troubleshooting-image3.png new file mode 100644 index 00000000000..82ec9807d4a Binary files /dev/null and b/mac/2017/media/troubleshooting-image3.png differ diff --git a/mac/2017/media/uninstall-image1.png b/mac/2017/media/uninstall-image1.png new file mode 100644 index 00000000000..c3535044b4d Binary files /dev/null and b/mac/2017/media/uninstall-image1.png differ diff --git a/mac/2017/media/update-image1.png b/mac/2017/media/update-image1.png new file mode 100644 index 00000000000..2cf94cc0110 Binary files /dev/null and b/mac/2017/media/update-image1.png differ diff --git a/mac/2017/media/update-image2.png b/mac/2017/media/update-image2.png new file mode 100644 index 00000000000..b5d4fff490e Binary files /dev/null and b/mac/2017/media/update-image2.png differ diff --git a/mac/2017/media/update-image3.png b/mac/2017/media/update-image3.png new file mode 100644 index 00000000000..00d4d86aa6b Binary files /dev/null and b/mac/2017/media/update-image3.png differ diff --git a/mac/2017/media/update-image4.png b/mac/2017/media/update-image4.png new file mode 100644 index 00000000000..03c535eab8a Binary files /dev/null and b/mac/2017/media/update-image4.png differ diff --git a/mac/2017/media/user-accounts-login.png b/mac/2017/media/user-accounts-login.png new file mode 100644 index 00000000000..9971749b772 Binary files /dev/null and b/mac/2017/media/user-accounts-login.png differ diff --git a/mac/2017/media/using-vsmac-tools-unity-image1.png b/mac/2017/media/using-vsmac-tools-unity-image1.png new file mode 100644 index 00000000000..82bbac2c8a4 Binary files /dev/null and b/mac/2017/media/using-vsmac-tools-unity-image1.png differ diff --git a/mac/2017/media/using-vsmac-tools-unity-image2.png b/mac/2017/media/using-vsmac-tools-unity-image2.png new file mode 100644 index 00000000000..b244349a57f Binary files /dev/null and b/mac/2017/media/using-vsmac-tools-unity-image2.png differ diff --git a/mac/2017/media/using-vsmac-tools-unity-image3.png b/mac/2017/media/using-vsmac-tools-unity-image3.png new file mode 100644 index 00000000000..e6a63d451db Binary files /dev/null and b/mac/2017/media/using-vsmac-tools-unity-image3.png differ diff --git a/mac/2017/media/using-vsmac-tools-unity-image4.png b/mac/2017/media/using-vsmac-tools-unity-image4.png new file mode 100644 index 00000000000..bc536f5d927 Binary files /dev/null and b/mac/2017/media/using-vsmac-tools-unity-image4.png differ diff --git a/mac/2017/media/using-vsmac-tools-unity-image5.png b/mac/2017/media/using-vsmac-tools-unity-image5.png new file mode 100644 index 00000000000..32275d9dcdf Binary files /dev/null and b/mac/2017/media/using-vsmac-tools-unity-image5.png differ diff --git a/mac/2017/media/using-vsmac-tools-unity-image6.png b/mac/2017/media/using-vsmac-tools-unity-image6.png new file mode 100644 index 00000000000..ee33f2abee1 Binary files /dev/null and b/mac/2017/media/using-vsmac-tools-unity-image6.png differ diff --git a/mac/2017/media/using-vsmac-tools-unity-image7.png b/mac/2017/media/using-vsmac-tools-unity-image7.png new file mode 100644 index 00000000000..7bea169f388 Binary files /dev/null and b/mac/2017/media/using-vsmac-tools-unity-image7.png differ diff --git a/mac/2017/media/version-control-commitPush.png b/mac/2017/media/version-control-commitPush.png new file mode 100644 index 00000000000..3862cc1e2d3 Binary files /dev/null and b/mac/2017/media/version-control-commitPush.png differ diff --git a/mac/2017/media/version-control-git-publish-new1.png b/mac/2017/media/version-control-git-publish-new1.png new file mode 100644 index 00000000000..4ec9f03fc56 Binary files /dev/null and b/mac/2017/media/version-control-git-publish-new1.png differ diff --git a/mac/2017/media/version-control-git-publish-new2.png b/mac/2017/media/version-control-git-publish-new2.png new file mode 100644 index 00000000000..e3dc8d57038 Binary files /dev/null and b/mac/2017/media/version-control-git-publish-new2.png differ diff --git a/mac/2017/media/version-control-git-publish-new3.png b/mac/2017/media/version-control-git-publish-new3.png new file mode 100644 index 00000000000..95cf60cabe6 Binary files /dev/null and b/mac/2017/media/version-control-git-publish-new3.png differ diff --git a/mac/2017/media/version-control-git-publish-new4.png b/mac/2017/media/version-control-git-publish-new4.png new file mode 100644 index 00000000000..d42022cb4bd Binary files /dev/null and b/mac/2017/media/version-control-git-publish-new4.png differ diff --git a/mac/2017/media/version-control-git1-sml.png b/mac/2017/media/version-control-git1-sml.png new file mode 100644 index 00000000000..2663192b7a6 Binary files /dev/null and b/mac/2017/media/version-control-git1-sml.png differ diff --git a/mac/2017/media/version-control-git1.png b/mac/2017/media/version-control-git1.png new file mode 100644 index 00000000000..a412ba0df28 Binary files /dev/null and b/mac/2017/media/version-control-git1.png differ diff --git a/mac/2017/media/version-control-git10.png b/mac/2017/media/version-control-git10.png new file mode 100644 index 00000000000..2edafade2db Binary files /dev/null and b/mac/2017/media/version-control-git10.png differ diff --git a/mac/2017/media/version-control-git11.png b/mac/2017/media/version-control-git11.png new file mode 100644 index 00000000000..7daff0a4f33 Binary files /dev/null and b/mac/2017/media/version-control-git11.png differ diff --git a/mac/2017/media/version-control-git12.png b/mac/2017/media/version-control-git12.png new file mode 100644 index 00000000000..39ed32ea1ac Binary files /dev/null and b/mac/2017/media/version-control-git12.png differ diff --git a/mac/2017/media/version-control-git13.png b/mac/2017/media/version-control-git13.png new file mode 100644 index 00000000000..cf21a8dd9ac Binary files /dev/null and b/mac/2017/media/version-control-git13.png differ diff --git a/mac/2017/media/version-control-git14.png b/mac/2017/media/version-control-git14.png new file mode 100644 index 00000000000..de021218af1 Binary files /dev/null and b/mac/2017/media/version-control-git14.png differ diff --git a/mac/2017/media/version-control-git15.png b/mac/2017/media/version-control-git15.png new file mode 100644 index 00000000000..3a4a07a2b9d Binary files /dev/null and b/mac/2017/media/version-control-git15.png differ diff --git a/mac/2017/media/version-control-git2.png b/mac/2017/media/version-control-git2.png new file mode 100644 index 00000000000..986bcd9b036 Binary files /dev/null and b/mac/2017/media/version-control-git2.png differ diff --git a/mac/2017/media/version-control-git3.png b/mac/2017/media/version-control-git3.png new file mode 100644 index 00000000000..c2e019575b0 Binary files /dev/null and b/mac/2017/media/version-control-git3.png differ diff --git a/mac/2017/media/version-control-git4-sml.png b/mac/2017/media/version-control-git4-sml.png new file mode 100644 index 00000000000..6eeae8abe39 Binary files /dev/null and b/mac/2017/media/version-control-git4-sml.png differ diff --git a/mac/2017/media/version-control-git4.png b/mac/2017/media/version-control-git4.png new file mode 100644 index 00000000000..ed7c4f07df0 Binary files /dev/null and b/mac/2017/media/version-control-git4.png differ diff --git a/mac/2017/media/version-control-git5.png b/mac/2017/media/version-control-git5.png new file mode 100644 index 00000000000..afc0532563e Binary files /dev/null and b/mac/2017/media/version-control-git5.png differ diff --git a/mac/2017/media/version-control-git6.png b/mac/2017/media/version-control-git6.png new file mode 100644 index 00000000000..9e97756a291 Binary files /dev/null and b/mac/2017/media/version-control-git6.png differ diff --git a/mac/2017/media/version-control-git7.png b/mac/2017/media/version-control-git7.png new file mode 100644 index 00000000000..74bb2c88c16 Binary files /dev/null and b/mac/2017/media/version-control-git7.png differ diff --git a/mac/2017/media/version-control-git9-sml.png b/mac/2017/media/version-control-git9-sml.png new file mode 100644 index 00000000000..b97f5928da4 Binary files /dev/null and b/mac/2017/media/version-control-git9-sml.png differ diff --git a/mac/2017/media/version-control-git9.png b/mac/2017/media/version-control-git9.png new file mode 100644 index 00000000000..1beb579f235 Binary files /dev/null and b/mac/2017/media/version-control-git9.png differ diff --git a/mac/2017/media/version-control-gitBranch.png b/mac/2017/media/version-control-gitBranch.png new file mode 100644 index 00000000000..ae9fb33b7a8 Binary files /dev/null and b/mac/2017/media/version-control-gitBranch.png differ diff --git a/mac/2017/media/version-control-gitBranch2.png b/mac/2017/media/version-control-gitBranch2.png new file mode 100644 index 00000000000..0a1945005b9 Binary files /dev/null and b/mac/2017/media/version-control-gitBranch2.png differ diff --git a/mac/2017/media/version-control-gitBranchName.png b/mac/2017/media/version-control-gitBranchName.png new file mode 100644 index 00000000000..bf80a704c56 Binary files /dev/null and b/mac/2017/media/version-control-gitBranchName.png differ diff --git a/mac/2017/media/version-control-gitChange.png b/mac/2017/media/version-control-gitChange.png new file mode 100644 index 00000000000..6267bbe96aa Binary files /dev/null and b/mac/2017/media/version-control-gitChange.png differ diff --git a/mac/2017/media/version-control-gitCommit.png b/mac/2017/media/version-control-gitCommit.png new file mode 100644 index 00000000000..bed37213dce Binary files /dev/null and b/mac/2017/media/version-control-gitCommit.png differ diff --git a/mac/2017/media/version-control-gitLog.png b/mac/2017/media/version-control-gitLog.png new file mode 100644 index 00000000000..1ec1b98a0b4 Binary files /dev/null and b/mac/2017/media/version-control-gitLog.png differ diff --git a/mac/2017/media/version-control-gitPush.png b/mac/2017/media/version-control-gitPush.png new file mode 100644 index 00000000000..bb31cc5288c Binary files /dev/null and b/mac/2017/media/version-control-gitPush.png differ diff --git a/mac/2017/media/version-control-gitReviewCommit.png b/mac/2017/media/version-control-gitReviewCommit.png new file mode 100644 index 00000000000..294055618d6 Binary files /dev/null and b/mac/2017/media/version-control-gitReviewCommit.png differ diff --git a/mac/2017/media/version-control-gitTabs.png b/mac/2017/media/version-control-gitTabs.png new file mode 100644 index 00000000000..8a45c6765e9 Binary files /dev/null and b/mac/2017/media/version-control-gitTabs.png differ diff --git a/mac/2017/media/version-control-gitVersionControlMenu.png b/mac/2017/media/version-control-gitVersionControlMenu.png new file mode 100644 index 00000000000..1d853be7d94 Binary files /dev/null and b/mac/2017/media/version-control-gitVersionControlMenu.png differ diff --git a/mac/2017/media/version-control-subversion1-sml.png b/mac/2017/media/version-control-subversion1-sml.png new file mode 100644 index 00000000000..9fb159019a9 Binary files /dev/null and b/mac/2017/media/version-control-subversion1-sml.png differ diff --git a/mac/2017/media/version-control-subversion1.png b/mac/2017/media/version-control-subversion1.png new file mode 100644 index 00000000000..420b42592db Binary files /dev/null and b/mac/2017/media/version-control-subversion1.png differ diff --git a/mac/2017/media/version-control-subversion2.png b/mac/2017/media/version-control-subversion2.png new file mode 100644 index 00000000000..df4f422623a Binary files /dev/null and b/mac/2017/media/version-control-subversion2.png differ diff --git a/mac/2017/media/version-control-subversion3.png b/mac/2017/media/version-control-subversion3.png new file mode 100644 index 00000000000..55a4709e505 Binary files /dev/null and b/mac/2017/media/version-control-subversion3.png differ diff --git a/mac/2017/media/version-control-subversion5.png b/mac/2017/media/version-control-subversion5.png new file mode 100644 index 00000000000..79397402ed9 Binary files /dev/null and b/mac/2017/media/version-control-subversion5.png differ diff --git a/mac/2017/media/version-control-svnCommit.png b/mac/2017/media/version-control-svnCommit.png new file mode 100644 index 00000000000..7690bb3e132 Binary files /dev/null and b/mac/2017/media/version-control-svnCommit.png differ diff --git a/mac/2017/media/version-control-svnVersionControlMenu.png b/mac/2017/media/version-control-svnVersionControlMenu.png new file mode 100644 index 00000000000..a4cde9cabc7 Binary files /dev/null and b/mac/2017/media/version-control-svnVersionControlMenu.png differ diff --git a/mac/2017/media/version-control-vcStatus.png b/mac/2017/media/version-control-vcStatus.png new file mode 100644 index 00000000000..b0213f1523f Binary files /dev/null and b/mac/2017/media/version-control-vcStatus.png differ diff --git a/mac/2017/media/version-control-vcTabs.png b/mac/2017/media/version-control-vcTabs.png new file mode 100644 index 00000000000..c4c007990fb Binary files /dev/null and b/mac/2017/media/version-control-vcTabs.png differ diff --git a/mac/2017/media/visual-studio-experience-improvement-program-image1.png b/mac/2017/media/visual-studio-experience-improvement-program-image1.png new file mode 100644 index 00000000000..4f790db53a9 Binary files /dev/null and b/mac/2017/media/visual-studio-experience-improvement-program-image1.png differ diff --git a/mac/2017/media/vsmac-tools-unity-image1.png b/mac/2017/media/vsmac-tools-unity-image1.png new file mode 100644 index 00000000000..fb5244b4eea Binary files /dev/null and b/mac/2017/media/vsmac-tools-unity-image1.png differ diff --git a/mac/2017/nuget-walkthrough.md b/mac/2017/nuget-walkthrough.md new file mode 100644 index 00000000000..f712a6f376c --- /dev/null +++ b/mac/2017/nuget-walkthrough.md @@ -0,0 +1,119 @@ +--- +title: "Including a NuGet package in your project" +description: This document covers how to include a NuGet package in a Xamarin project. It walks through finding and downloading a package, as well as introducing the IDE integration features. +author: conceptdev +ms.author: crdun +ms.date: 04/14/2017 +ms.assetid: 5C800815-0B13-4B27-B017-95FCEF1A0EA2 +ms.custom: video +--- + +# Include a NuGet package in your project + +NuGet is the most popular package manager for .NET development and is built in to Visual Studio for Mac and Visual Studio on Windows. You can search for and add packages to your Xamarin.iOS and Xamarin.Android projects using either IDE. + +This article describes how to include a NuGet package in a project and demonstrates the tool chain that makes the process seamless. + +## NuGet in Visual Studio for Mac + +To demonstrate the NuGet package functionality, we'll first walk through creating a new application and adding a package to it. Then we'll discuss the IDE features that help manage packages. + +## Create a new project + +First, create a project named `HelloNuget` as illustrated below. This example shows the iOS Single View Application template, but any supported project type would work: + +![Create new iOS Project](media/nuget-walkthrough-NewProject.png) + +## Adding a Package + +With the project open in Visual Studio for Mac, right-click on the **Packages** folder in the **Solution Pad** and select **Add Packages**: + +![Add new NuGet package context action](media/nuget-walkthrough-PackagesMenu.png) + +This launches the **Add Packages** window. Ensure that the Source drop-down, is set to `nuget.org`: + +![Source list drop-down](media/nuget-walkthrough-Source.png) + +When the window opens it loads a list of packages from the default package source: nuget.org. The initial results look like this: + +![List NuGet Packages](media/nuget-walkthrough-AddPackages1.png) + +Use the search box in the top-right corner to find a specific package, for example `azure`. When you've found a package that you wish to use, select it and click the **Add Package** button to begin installation. + +[Add Azure NuGet Package](media/nuget-walkthrough-AddPackages2.png) + +Once the package has been downloaded, it will be added to your project. The solution will change as follows: + +* The **References** node will contain a list of all the assemblies that are part of a NuGet package. +* The **Packages** node displays each NuGet package that you have downloaded. You can update or remove a package from this list. +* A **packages.config** file will be added to the project. This XML file is used by the IDE to track which package versions are referenced in this project. This file should not be hand-edited, but you should keep it in version control. Note that a project.json file can be used instead of a packages.config file. The project.json file is a new package file format introduced with NuGet 3, which supports transitive restore. More detailed information on project.json can be found in the [NuGet documentation](http://docs.microsoft.com/NuGet/Schema/Project-Json). The project.json file needs to be added manually and the project closed and re-opened before the project.json file is used in Visual Studio for Mac. + +## Using NuGet Packages + +Once the NuGet package has been added and the project references updated, you can program against the APIs as you would with any project reference. + +Ensure that you add any required `using` directives to the top of your file: + +```csharp +using Newtonsoft.Json; +``` + +Most NuGet provide additional information, such as a README or Project page link to the Nuget source. You can normally find a link to this in the package blurb on the Add Packages page: + +[View Project Page link](media/nuget-walkthrough-project-page.png) + + + +## Package Updates + +Package updates can be done either all at once, by right-clicking on the **Packages** node, or individually on each component. + +Right-click on **Packages** to access the context menu: + +![Packages menu](media/nuget-walkthrough-PackagesMenu.png) + +* **Add Packages** - Opens the window to add more packages to the project. +* **Update** - Checks the source server for each package and downloads any newer versions. +* **Restore** - Downloads any missing packages (without updating existing packages to newer versions). + +Update and Restore options are also available at the Solution level, and affect all the projects in the solution. + +You can also right-click on individual packages to access a context menu: + +![Packages menu](media/nuget-walkthrough-PackageMenu.png) + +* **Version Number** - The version number is a disabled menu item - it is provided for informational purposes only. +* **Update** - Checks the source server and downloads a newer version (if it exists). +* **Remove** - Removes the package from this project and removes the relevant assemblies from the project's References. + +## Adding Package Sources + +Packages available for installation are initially retrieved from nuget.org. However, you can add other package locations to Visual Studio for Mac. This can be useful for testing your own NuGet packages under development, or to use a private NuGet server inside your company or organization. + +In Visual Studio for Mac, navigate to **Visual Studio > Preferences > NuGet > Sources** to view and edit the list of package sources. Note that sources can be a remote server (specified by a URL) or a local directory. + +![Package Sources](media/nuget-walkthrough-PackageSource.png) + +Click **Add** to set-up a new source. Enter a friendly name and the URL (or file path) to the package source. If the source is a secure web server, enter the username and password as well, otherwise leave these entries blank: + +![Add Package Sources](media/nuget-walkthrough-PackageSource2.png) + +Different sources can then be selected when searching for packages: + +![Add Package Sources](media/nuget-walkthrough-PackageSource3.png) + +## Version Control + +The NuGet documentation discusses [using NuGet without committing packages to source control](/nuget/consume-packages/packages-and-source-control). If you prefer not to store binaries and unused information in source control, you can configure Visual Studio for Mac to automatically restore packages from the server. This means that when a developer retrieves the project from source control for the first time, Visual Studio for Mac will automatically download and install the required packages. + +![Automatically restore packages](media/nuget-walkthrough-AutoRestore.png) + +Refer to your particular source control documentation for details on how to exclude the `packages` directory from being tracked. + +## Related Video + +> [!Video https://channel9.msdn.com/Shows/Visual-Studio-Toolbox/Visual-Studio-for-Mac-Using-NuGet/player] + +## See also + +* [Install and use a package in Visual Studio (on Windows)](/nuget/quickstart/install-and-use-a-package-in-visual-studio) diff --git a/mac/2017/open-multiple-solutions.md b/mac/2017/open-multiple-solutions.md new file mode 100644 index 00000000000..9ee5c0832b1 --- /dev/null +++ b/mac/2017/open-multiple-solutions.md @@ -0,0 +1,51 @@ +--- +title: "How to: Open multiple solutions in Visual Studio for Mac" +description: Learn how to open more than one solution in Visual Studio for Mac, and how to open more than one instance of the application. +author: conceptdev +ms.author: crdun +ms.date: 07/19/2018 +ms.assetid: 592BA4E3-8DEF-4FCD-8BA0-519A4CEEE03E +ms.custom: video +--- + +# Open multiple solutions or instances of Visual Studio for Mac + +By default, all applications on a Mac, including Visual Studio for Mac, are _single-instance_ apps. This means that if the application you want to use is already open (illustrated by a dot under the icon in the dock), selecting the icon again opens the running instance, rather than a new one. If you require additional instances of the application, you can prompt the system to open it for you, as described in the [next section](#open-a-second-instance-of-visual-studio-for-mac). + +In addition, when you open a solution, the default behavior is to open the solution in a new workspace and close the current workspace (if necessary). You can override this default behavior by keeping the current workspace open, as described in the [Open a second solution](#open-a-second-solution-inside-a-single-instance) section. + +## Open a second instance of Visual Studio for Mac + +To open a second instance of the integrated development environment (IDE), open the **Terminal** application and enter the following line: + +```bash +open -n "/Applications/Visual Studio.app" +``` + +## Open a second solution inside a single instance + +To open a second solution alongside your first solution, use the following steps: + +1. With your first solution already open, select **File** > **Open**. +2. Browse the file system to find the existing solution. +3. Select the **.sln** file, and select **Options**: + + ![Screenshot of Visual Studio for Mac, with the .sln file and Options highlighted](media/open-multiple-solutions-image3.png) + +4. Clear the **Close current workspace** box: + + ![Screenshot of Options dialog box, with Close current workspace box cleared](media/open-multiple-solutions-image1.png) + +5. Select **Open** to open the second solution in the Solution Pad. + +Alternatively, if you've recently opened the solution, you can use the following steps: + +1. Go to **File** > **Recent Solutions**. + + ![Screenshot of Recent Solutions menu](media/open-multiple-solutions-image2.png) + +1. Hold down the **Ctrl** key and select the solution. This combination opens the second solution in the Solution Pad. + +## Related Video + +> [!Video https://channel9.msdn.com/Shows/Visual-Studio-Toolbox/Visual-Studio-for-Mac-Work-With-Multiple-Solutions/player] diff --git a/mac/2017/projects-and-solutions.md b/mac/2017/projects-and-solutions.md new file mode 100644 index 00000000000..5598ca1addb --- /dev/null +++ b/mac/2017/projects-and-solutions.md @@ -0,0 +1,23 @@ +--- +title: "Projects and Solutions" +description: This document provides an overview of Projects and Solutions in Visual Studio for Mac. +author: conceptdev +ms.author: crdun +ms.date: 05/06/2018 +ms.assetid: 8254505D-D96E-48BD-8A5E-CF6A917897EA +--- +# Projects and Solutions + +Visual Studio for Mac provides a _Solution Pad_ to display a tree view of the entire open solution. The **Solution** pad allows easy access to source code, resources, user interfaces, and assembly references contained in individual projects. Solution Pad, by default, opens one solution at a time. Each solution can include many projects, and each project can contain many items. + +## Using Projects and Solutions + +To create a new Project or Solution, refer to the [Creating new Projects and Solutions](create-new-projects.md) article. + +## Project and Solution Options + +You can manage the properties of both projects and solutions by either double-clicking on the project or solution name, or by right-clicking and browsing to **Options**. More information on these options is provided in the [Managing Solutions and Project Properties](managing-solutions-and-project-properties.md) article. + +## See also + +- [Solutions and projects in Visual Studio (on Windows)](/visualstudio/ide/solutions-and-projects-in-visual-studio) \ No newline at end of file diff --git a/mac/2017/publish-app-svc.md b/mac/2017/publish-app-svc.md new file mode 100644 index 00000000000..8400d1e6154 --- /dev/null +++ b/mac/2017/publish-app-svc.md @@ -0,0 +1,68 @@ +--- +title: Publish to Azure App Service +ms.date: 01/17/2019 +ms.topic: "quickstart" +helpviewer_keywords: + - "deployment, website" +ms.assetid: 8524a4c5-97a9-41ac-a2a0-034efb9bfc57 +author: sayedihashimi +ms.author: sayedha +manager: unniravindranathan +ms.prod: visual-studio-mac +ms.custom: video +ms.workload: + - "azure" +--- +# Publish a Web app to Azure App Service using Visual Studio for Mac + +You can use the Publish tool to publish ASP.NET Core apps to Azure App Service. + +## Prerequisites + + - [Visual Studio 2017 for Mac](https://visualstudio.microsoft.com/downloads/?utm_medium=microsoft&utm_source=docs.microsoft.com&utm_campaign=inline+link&utm_content=download+vs4mac2017) installed with ASP.NET Core enabled. + - An Azure Subscription. If you do not already have a subscription, [sign up for free](https://azure.microsoft.com/free/dotnet/), which includes $200 in credit for 30 days and 12 months of popular free services. + - An ASP.NET Core project. If you don’t already have a project, you can [create a new one](https://docs.microsoft.com/visualstudio/mac/create-new-projects?view=vsmac-2017). + +## Publish to Azure App Service + + 1. In the Solution Pad, right-click the project and choose **Publish**. + + ![Publish context menu](media/publish-context-menu.png) + + 2. If you have previously published this project to Azure App Service, you'll see the publish profile in the menu. Select that publish profile to start the publish process. + + 3. To publish this project to App Service for the first time, select **Publish to Azure** + + ![Publish to App Service context menu](media/publish-to-azure-context-menu.png) + + 4. The **Publish to Azure App Service** dialog appears, and any existing App Services are shown. To publish to an existing App Service, select the App Service in the list and then click **Publish**. + + ![Publish to Azure App Service dialog](media/publish-to-app-service-dialog.png) + + 5. To create a new App Service, click the **New** button. + + ![Publish to App Service Dialog](media/publish-to-app-service-dialog-new-selected.png) + + 6. The **New App Service** dialog appears. In this dialog you can configure the settings for your new App Service. + + ![New App Service dialog](media/publish-new-app-service.png) + + There are a few options to consider customizing here. The name of the App Service will default to the project name. If the name is not available a warning sign will appear on the right hand side of the input field. The name of the App Service will be used in the URL of your website, so the name must be valid to be used in a URL. + + You can change the subscription that the App Service will be associated with using the **Subscription** dropdown. + + You can select an existing **Resource Group** using the dropdown or you can create a new one with the **+** button. + + For the App Service plan, select an existing one, or create a new one by selecting the **Custom** radio button. + + To create your new App Service, and publish your project to it, click **Create**. + + After clicking **Create** the **New App Service** dialog will be dismissed, and you should see the following message indicating that creating the App Service has started. + + ![Create App Service Message](media/publish-create-app-service-message.png) + + After clicking **OK** the message is dismissed, and you can continue working on your project. You can watch the status of the publish process with the status bar at the top of the IDE. Once your web app is successfully published, the site is opened with your default browser. + +## Related Video + +> [!Video https://channel9.msdn.com/Shows/Visual-Studio-Toolbox/Visual-Studio-for-Mac-Publish-to-Azure/player] diff --git a/mac/2017/publish-folder.md b/mac/2017/publish-folder.md new file mode 100644 index 00000000000..067097979e3 --- /dev/null +++ b/mac/2017/publish-folder.md @@ -0,0 +1,54 @@ +--- +title: Publish to a folder +ms.date: 01/22/2019 +ms.topic: "quickstart" +helpviewer_keywords: + - "deployment, website" +ms.assetid: e963fb4b-6d32-4d45-86bb-ef7e4d3028b0 +author: sayedihashimi +ms.author: sayedha +manager: unniravindranathan +ms.prod: visual-studio-mac +--- +# Publish a Web app to a folder using Visual Studio for Mac + +You can use the Publish tool to publish ASP.NET Core apps to a folder. + +## Prerequisites + + - [Visual Studio 2017 for Mac](https://visualstudio.microsoft.com/downloads/?utm_medium=microsoft&utm_source=docs.microsoft.com&utm_campaign=inline+link&utm_content=download+vs4mac2017) installed with ASP.NET Core enabled. + - An ASP.NET Core project. If you don’t already have a project, you can [create a new one](https://docs.microsoft.com/visualstudio/mac/create-new-projects?view=vsmac-2017). + +## Publish to Folder + +Using Visual Studio for Mac you can publish your ASP.NET Core projects to a folder using the Publish tool. After publishing to a folder you can transfer the files to your web server to get it into a different environment. To publish to a folder follow these steps. + + 1. In the Solution Pad, right-click the project and choose **Publish**. + + ![Publish context menu](media/publish-context-menu.png) + + 2. If you have previously published this project, you'll see the publish profile in the menu. Select that publish profile to start the publish process. + + 3. To publish this project to a folder for the first time, select **Publish to Folder** + + ![Publish to folder context menu](media/publish-to-folder-context-menu.png) + + 4. The **Publish to Folder** dialog appears. On this dialog you can customize the folder where the project will be published. You can use the **Browse** button to do this, or paste in a path. + + 5. After clicking **Publish** a few things happen. First a publish profile is created. A publish profile is an MSBuild file that is imported into the project during the publish process. It contains the properties that are used during the publish process. These files are stored in the `Properties/PublishProfiles` and have the extension `.pubxml`. Next, the publish process is started. You can monitor the progress by watching the status bar in Visual Studio for Mac. + + ![IDE status bar with Publish status](media/publish-to-folder-status-bar.png) + + 6. Once publish completes successfully a Finder window will open to the publish folder. Now that a publish profile has been created, it will be displayed in the Publish context menu. + + ![Publish context menu with folder profile](media/publish-context-menu-with-folder-profile.png) + + 7. To publish the project again with the same settings you can click on the profile in the publish context menu. + +## Customize Publish Options + +To change the name of the publish profile (which is displayed in the publish context menu), rename the publish profile file. Make sure to not change the extension of the file (`.puxbml`). + +To change the publish folder path, open the publish profile and edit the `publishUrl` value. + +To change the build configuration that is used, change the `LastUsedBuildConfiguration` property in the publish profile. \ No newline at end of file diff --git a/mac/2017/razor.md b/mac/2017/razor.md new file mode 100644 index 00000000000..21b84b6a2f6 --- /dev/null +++ b/mac/2017/razor.md @@ -0,0 +1,27 @@ +--- +title: "Razor" +description: "Information on the razor support in asp.net core apps in Visual Studio for Mac" +author: conceptdev +ms.author: crdun +ms.date: 05/03/2018 +ms.topic: article +ms.technology: vs-ide-general +ms.assetid: F898CB6E-05ED-44CD-8DB6-427B2592CCC6 +--- + +# Razor support + +Visual Studio for Mac supports Razor editing, including IntelliSense and syntax highlighting in *.cshtml* files. + +![razor editing in visual studio for mac](media/razor-image1.png) + +## Getting Started with Razor in Visual Studio for Mac + +There are two options to consider when getting started with Razor in Visual Studio for Mac: Razor Pages in ASP.NET Core and ASP.NET Core MVC. For tutorials and more information on both options, visit one of the guides below: + +- [Get started with Razor Pages in ASP.NET Core on macOS with Visual Studio for Mac](/aspnet/core/tutorials/razor-pages-mac/razor-pages-start?view=aspnetcore-2.1) +- [Get started with ASP.NET Core MVC and Visual Studio for Mac](/aspnet/core/tutorials/first-mvc-app-mac/start-mvc?view=aspnetcore-2.1) + +## See also + +- [Get started with C# and ASP.NET Core in Visual Studio (on Windows)](/visualstudio/ide/tutorial-csharp-aspnet-core) \ No newline at end of file diff --git a/mac/2017/refactoring.md b/mac/2017/refactoring.md new file mode 100644 index 00000000000..78cf83e03b3 --- /dev/null +++ b/mac/2017/refactoring.md @@ -0,0 +1,111 @@ +--- +title: Refactoring code +description: Re-organizing code in Visual Studio for Mac is made simple through the use of Source Analysis. +author: conceptdev +ms.author: crdun +ms.date: 05/06/2018 +ms.assetid: C7782BF3-016F-4B41-8A81-85FC540A1A8F +ms.custom: video +--- +# Refactoring + +Refactoring code is a way to rearrange, restructure, and clarify existing code while ensuring that the overall behavior of the code doesn't change. + +Refactoring produces a healthier code base, making it more useable, readable, and maintainable for you or any other developer or user that might refer to the code. + +Visual Studio for Mac's integration with Roslyn, Microsoft's open-source .NET compiler platform, allows for more refactoring operations. + +## Renaming + +The *Rename* refactoring command can be used on any code identifier (for example, a class name, property name etc.) to find all occurrences of that identifier and change them. To rename a symbol, right-click on it and choose **Refactor > Rename**, or the **Cmd + R** key binding: + +![Rename menu item](media/refactoring-renaming1.png) + +This highlights the symbol and any references to it. When you start typing a new name it automatically changes all references in your code, and you can signal your completion of the rename by pressing **Enter**: + +![Renaming and identifier](media/refactoring-renaming2.png) + +## Context actions + +Context actions allow you to inspect any C# code, and see all possible refactoring options. + +The **Resolve** and **Refactor** context items are combined into a single *Quick Fix...* item that will provide you with all the available Context actions: + +![Display Context Items](media/refactoring-context-action.png) + +Hovering over any of the context actions provides you with a preview of what will be added or removed from your code. + +Alternatively, you can press **Option + Enter** anywhere in your code: + +![Option Enter Context items](media/refactoring-image2a.png) + +To enable these options, you must select *Enable source analysis of open files* in the options **Visual Studio for Mac > Preferences > Text Editor > Source Analysis**: + +![Enabling Source analysis](media/refactoring-options.png) + +There are over 100 possible actions that can be suggested, which are enabled or disabled by browsing to **Visual Studio for Mac > Preferences > Source Analysis > C# > Code Actions** and selecting or unselecting the box next to the action: + +![C# Source Analysis actions](media/refactoring-image3a.png) + +### Common context actions + +Some of the mostly commonly used context actions are explained below. + +#### Extract method + +The extract method refactoring operation allows you to create a new method by extracting a selection of code in an existing member. This action will do two things: + +* Creates a new method containing the selected code +* Calls the new method in the place where the selected code was. + +##### Example + +1. Add the following code: + +```csharp + class MainClass + { + + double CalculatePyramidVolume(double baseArea, double height) + { + + double volume = (baseArea * height) / 3; + + return volume; + } + } +``` + +2. Highlight the line `double volume = (baseArea * height) / 3;`, right click on it, and select **Refactor > Extract Method**. + +3. Use the arrow keys to select where the new method should be placed in your code. + +#### Encapsulate field + +The Encapsulate Field operation allows you to create a property from an existing field, and updates your code to reference the newly created property. By creating a property that encapsulates your field, you are disallowing direct access to your public field, meaning that other objects can't modify it. + +This action will do the following: + +* Changes the access modifier to private. +* Generates a getter and setter for the field (unless the field is read-only, in which case it will only create a getter). + +## Source analysis + +Source analysis analyzes your code on the fly by underlining potential errors and style violations, and providing auto fixes as context actions. + +You can view all results of the source analysis for any file, at any time, by viewing the scroll bar on the right side of the text editor: + +![Source Analysis sidebar](media/refactoring-image4a.png) + +If you click on the circle at the top, you can iterate through each suggestion, with the highest severity issues showing first. Hovering over an individual result or line displays the issue, which can be fixed through context actions: + +![Source Analysis Item](media/refactoring-image5.png) + +## Related Video + +> [!Video https://channel9.msdn.com/Shows/Visual-Studio-Toolbox/Visual-Studio-for-Mac-Refactoring-Code/player] + +## See also + +- [Quick Actions (Visual Studio on Windows)](/visualstudio/ide/quick-actions) +- [Refactor code (Visual Studio on Windows)](/visualstudio/ide/refactoring-in-visual-studio) \ No newline at end of file diff --git a/mac/2017/report-a-problem.md b/mac/2017/report-a-problem.md new file mode 100644 index 00000000000..5c543ec2227 --- /dev/null +++ b/mac/2017/report-a-problem.md @@ -0,0 +1,65 @@ +--- +title: "Report a Problem with Visual Studio for Mac" +description: "How to make suggestions or report issues experienced while using Visual Studio for Mac." +ms.topic: troubleshooting +author: jmatthiesen +ms.author: jomatthi +ms.date: 11/16/2018 +ms.assetid: 1C7AC52E-754E-473F-A5B5-00C3A40DAACD +--- +# How to report a problem in Visual Studio for Mac + +If you experience a problem with Visual Studio for Mac, we want to know about it. Here's how to report the problem to [Developer Community](https://developercommunity.visualstudio.com/spaces/41/index.html) so that we can diagnose and fix it. + +## How to report a problem + +To report a problem for Visual Studio for Mac, the best option is to initiate the report from Visual Studio for Mac. Reporting through Visual Studio for Mac allows for diagnostic information to be automatically included in the report. If you can't use Visual Studio for Mac (due to a crash, for example), you can report the issue directly on the [Developer Community](https://developercommunity.visualstudio.com/content/problem/post.html?space=41) site. + +To report a problem with Visual Studio for Mac, select **Help > Report a Problem** from the menu bar: + +![report a problem link](media/report-problem-image1.png) + +1. If you are not signed in, select **Sign In**; it's on the right-hand side of the tool, as shown in the following screenshot. Follow the instructions on-screen to sign in. + + ![dialog with "sign in" button](media/report-problem-image2.png) + + When you sign in, you can report a problem that you're experiencing. You can also vote or comment on any other problem that you see posted. + +1. Once signed in, you will be able to see your reported problems and solutions in the **Followed problems and solutions** screen + + ![list of reported problems](media/report-problem-image3.png) + +1. Visual Studio for Mac provides an interface to search for your problem and see if others have reported it. If someone has reported it, you can click on the title and "up-vote" it to let us know. + > [!NOTE] + > To search, enter your search terms into the search box and either click Enter or press the Search icon. + + ![Search and vote for similar problems](media/report-problem-image4.png) + +1. If you don’t find the problem you encountered, choose **Report a New Problem** at the side of the screen. + + > [!NOTE] + > The **Report a New Problem** button only appears in the Visual Studio for Mac interface for Developer Community. You can't report a problem directly on the [Developer Community](https://developercommunity.visualstudio.com/) website. + +1. Create a descriptive title for the problem that helps us route it to the correct Visual Studio for Mac team. + +1. Give us any additional details, and if possible, provide us with the steps to reproduce the problem. + + ![Report a new problem](media/report-problem-image5.png) + +1. Select **Next** to move to the **Include Attachments** tab. Here, you can capture your current screen to send it to Microsoft. To attach log files, click on the ![Attach Logs](media/report-problem-attach-logs.png) icon, or to attach additional screenshots and other files, click on the ![Attach File](media/report-problem-attach-file.png) icon. + + ![Attach a screenshot to a Visual Studio for Mac problem report](media/report-problem-image6.png) + +1. Select **Submit** to send your report, along with any images and log files. + + For information about what data is collected, see [Data we collect](/visualstudio/ide/developer-community-privacy.md#data-we-collect). + +## Search for solutions or provide feedback + +If you don't want to, or can't, use Visual Studio for Mac to report a problem, there's a chance that the problem has already been reported and a solution posted on the [Visual Studio Developer Community](https://developercommunity.visualstudio.com/) page. + +If you don't have a problem to report but want to suggest a feature, there's a place for that, too. For more information, see the [Suggest a feature](https://developercommunity.visualstudio.com/content/idea/post.html?space=41) page. + +## See also + +- [Report a problem with Visual Studio (on Windows)](/visualstudio/ide/how-to-report-a-problem-with-visual-studio-2017) diff --git a/mac/2017/set-startup-projects.md b/mac/2017/set-startup-projects.md new file mode 100644 index 00000000000..65e0726aeb1 --- /dev/null +++ b/mac/2017/set-startup-projects.md @@ -0,0 +1,43 @@ +--- +title: "Set multiple startup projects in Visual Studio for Mac" +description: "This article describes how to set multiple projects to start on run or debug." +author: sayedihashimi +ms.author: sayedha +ms.date: 02/21/2019 +ms.topic: conceptual +ms.prod: visual-studio-mac +ms.assetid: fd354fff-ce6b-4505-a815-84a2311e39ba +--- +# How to: Set multiple startup projects + +Visual Studio for Mac allows you to specify how more than one project is started when you debug, or run, your solution. + +## To set multiple startup projects + +1. In **Solution Pad**, select the solution (the top node). + +2. Choose the solution node's context (right-click) menu and then choose **Set Startup Projects...**. + + ![Set startup projects context menu](media/startup-proj-ctx-menu.png) + +3. The **Create Solution Run Configuration** dialog appears. This dialog will create a new named Solution Run Configuration for your solution. You can give any name you like, the default name is `Multiple Projects`. + + ![Create Solution Run Configuration dialog](media/create-sln-run-config.png) + +4. Click **Create Run Configuration**. The **Solution Options** dialog opens with the new Solution Run Configuration selected. + + ![Solution Options dialog](media/sln-options-run-config-multi-projects.png) + +5. Select the projects that you want to start when you debug, or run, your application from Visual Studio for Mac. + + ![Solution options dialog with configured run configuration](media/sln-options-run-config-multi-projects-configured.png) + +6. Click **OK**. The dialog will be dismissed, and the new Solution Run Configuration is set as the active run configuration. + + ![Solution with multiple projects configured to start on debug or run](media/startup-project-configured.png) + You can see that two projects are configured to start because both projects are in **bold** in the **Solution Pad**. In the toolbar, the new run configuration is configured as the current Solution Run Configuration. + +## Next steps + +- [Compiling and building in Visual Studio for Mac](compiling-and-building.md) +- [Understanding build configurations](configurations.md) \ No newline at end of file diff --git a/mac/2017/set-up-git-repository.md b/mac/2017/set-up-git-repository.md new file mode 100644 index 00000000000..29b5fcd969a --- /dev/null +++ b/mac/2017/set-up-git-repository.md @@ -0,0 +1,161 @@ +--- +title: Setting up a Git Repository +description: Using Git and Subversion in Visual Studio for Mac. +author: conceptdev +ms.author: crdun +ms.date: 02/15/2018 +ms.assetid: E992FA1D-B2AD-4A28-ADC6-47E4FC471060 +--- +# Set up a Git repository + +Git is a distributed version control system that allows teams to work on the same documents simultaneously. This means there is a single server that contains all the files, but whenever a repository is checked out from this central source, the entire repository is cloned locally to your machine. + +There are many remote hosts that allow you to work with Git for version control, however the most common host is GitHub. The following example uses a GitHub host, but you can use any Git host for version control in Visual Studio for Mac. + +If you wish to use GitHub, make sure that you have an account created and configured before following the steps in this article. + +## Creating a remote repo on GitHub + +The following example uses a GitHub host, but you can use any Git host for version control in Visual Studio for Mac. + +To set up a Git repository, execute the following steps: + +1. Create a new Git repo at github.com: + + ![Create new git repo](media/version-control-git1-sml.png) + +2. Set Repo Name, description, and privacy. Do **not** initialize Repo. Set .gitignore and license to None: + + ![Set details of git repo](media/version-control-git2.png) + +3. The next page gives you an option to display and copy either the HTTPS or SSH address to the repo you have created: + + ![view and copy address](media/version-control-git3.png) + + You'll need the HTTPS address to point Visual Studio for Mac to this repo. + +## Publishing an existing project + +If you have an existing project that _is not_ already in version control, use the following steps to set it up in Git: + +1. Select the Solution name from the Solution Pad in Visual Studio for Mac. + +2. In the Menu bar, select **Version Control > Publish in Version Control** to display the **Select Repository** dialog: + + ![Start checkout in Visual Studio for Mac](media/version-control-git4-sml.png) + + If this menu item appears greyed out in the menu, make sure you have selected the Solution name. + +3. Choose the **Registered Repositories** tab and press the **Add** button: + + ![](media/version-control-git5.png) + +4. Enter the name of the repository as you would like it to display locally, and paste in the URL from step #3. Your Repository Configuration dialog should look similar to the following. Press OK: + + ![Enter git details dialog](media/version-control-git6.png) + + It is also possible to use SSH to connect to Git. + +5. To attempt to publish the app to Git, select the repository, and ensure that both **Module Name** and **Message** text fields are completed: + + ![Attempt to publish project to git](media/version-control-git7.png) + +6. Click **Okay**, and then **Publish** from the alert dialog. + +7. In the **Git Credentials** window, enter your GitHub username and password. + +> [!NOTE] +> If your account has two-factor authentication (2FA) enabled, you will need to create an Access Token, which is used in place of a password. If you have not created an access token, follow the steps in the Git [Access Token](https://help.github.com/articles/creating-an-access-token-for-command-line-use/) documentation. + +8. Enter the username and Personal Access Token, and press **Okay**: + + ![Enter username and password for git](media/version-control-git9-sml.png) + +9. After a few seconds, the Solution should be published with its initial commit. Confirm it has been published by browsing the Version Control menu item, which should now be populated with many options: + + ![Version Control Menu](media/version-control-git10.png) + +10. Once you start to make additional changes, select **Push Changes** to push the changes to the **remote** repository. This will allow all appropriate users to view it on github.com: + + ![Push Changes to remote repository](media/version-control-git11.png) + +## Publishing a new project + +The new project dialog can be used to create a new project with a local git repository. To enable it, select the **Use git for version control** checkbox, as illustrated in the following screenshot. This will initialize your repo and add an optional .gitignore file: + +![Create new project with git support](media/version-control-git-publish-new1.png) + +Follow the steps below to push your new local repository to a new GitHub repository: + +> [!NOTE] +> If you have not already created a GitHub repository, refer to the [Creating a remote repo on GitHub](#creating-a-remote-repo-on-github) section. + +1. Create your first commit by going to **Version Control > Review Solution and Commit** in the Menu Bar. + +2. In the Status tab, choose **Commit** in the top left. + +3. Write a commit message, for example "First Commit", then click on **Commit**: + + ![Commit initial changes to the git repository](media/version-control-git-publish-new2.png) + +4. Next, in the Menu Bar go to **Version Control > Manage Branches and Remotes**. + +5. Go to the **Remote Sources** tab, then click **Add**. + +6. In the **Remote Source** window, add the details of your previously created GitHub repository and click **OK**: + + ![Configure remote sources for git repository](media/version-control-git-publish-new3.png) + +7. Close the **Git Repository Configuration** window, then in the Menu Bar go to **Version Control > Push Changes**. + +8. In the **Push to Repository** window click on the **Push Changes** button: + + ![Push the changes to the remote repository](media/version-control-git-publish-new4.png) + +9. When prompted, enter your GitHub username and password. + +> [!NOTE] +> If your account has two-factor authentication (2FA) enabled, you will need to create an Access Token, which is used in place of a password. If you have not created an access token, follow the steps in the Git [Access Token](https://help.github.com/articles/creating-an-access-token-for-command-line-use/) documentation. + +Visual Studio for Mac will now push the changes to your remote GitHub repository: + +![Push operation successfully completed confirmation](media/version-control-git11.png) + +## Check out an existing repository + +It's likely that you'll have to work with a GitHub repo that exists only on the remote, not on your local machine. Visual Studio for Mac allows you to check this repo out quickly. Follow the steps below to clone it to your machine: + +1. In the Menu bar, select **Version Control > Checkout**: + +2. This displays the **Connect to Repository** tab: + + ![Connect to Repository tab with details entered](media/version-control-git13.png) + +3. On the GitHub page of the remote repository, press the **Clone or Download** button and copy the URL provided: + + ![github url displayed](media/version-control-git14.png) + +4. Replace all the text in the **URL** entry field in the **Connect to Repository** tab. This will populate most other fields in this tab for you, as illustrated in the image in step #2. + +5. Enter the directory that you want to clone the repo into and press **Checkout**. + +> [!NOTE] +> You may experience issues if the repo is over 4 GB in size. + +## Troubleshooting + +If you have issues with initializing your project with an empty remote repository, you can try the following steps: + +1. Go to your solution folder. +1. Press **Command + Shift + .** to show the hidden files and folders. +1. If there's a **.git** folder, delete it. +1. If there's a **gitignore** file, delete it. +1. Press **Command + Shift + .** to hide the files and folders. +1. Open your solution in VS for Mac. +1. On the solution Pad, select your solution node. +1. Browse to the Version Control menu and choose **Publish in Version Control**. +1. Follow the steps of the above tutorial starting from the step 6. + +## See also + +- [Version control in Visual Studio (on Windows)](/visualstudio/version-control/) diff --git a/mac/2017/set-up-subversion-repository.md b/mac/2017/set-up-subversion-repository.md new file mode 100644 index 00000000000..160a8613dff --- /dev/null +++ b/mac/2017/set-up-subversion-repository.md @@ -0,0 +1,55 @@ +--- +title: Setting Up a Subversion Repository +description: Using Subversion in Visual Studio for Mac. +author: conceptdev +ms.author: crdun +ms.date: 05/06/2018 +ms.assetid: 0D58FB37-530E-495B-BED6-FD499477A9B6 +--- +# Set up a Subversion repository + +Subversion is a centralized _version control system_, meaning that there's a single server that contains all files and revisions, from which users can check out any version of any file. When files are checked out from a remote Subversion repository, the user gets a snapshot of the repository at that point in time. + +To use Subversion for your version control, it must be installed on your machine. To check if Subversion is installed your machine, use the following command in Terminal: + +```bash +svn --version +``` + +This command returns the version number. + +If Subversion isn't already installed, the easiest way to get it is by installing the _Xcode Command Line Tools_. Use the command below to install Xcode Command Line Tools and Subversion. + +```bash +xcode-select --install +``` + +Once Subversion is installed on your machine, use the following steps to publish your project in SVN. + +1. Create a free SVN repository online. For this example, [Assembla](https://app.assembla.com/) was used. Once created, a URL will be provided, which will be used to connect to the repository: + + ![copy the SVN URL](media/version-control-subversion1-sml.png) + +2. Open or create a Visual Studio for Mac Project. + +3. Right click on the Project and select **Version Control > Publish in Version Control...**: + + ![Start Publishing Project](media/version-control-subversion2.png) + +4. In the **Connect to Repository** tab, select **Subversion** from the top drop-down. + +5. Enter the URL from step 1. Once the URL is entered, the other fields are populated by default: + + ![Select Repository and Enter details Dialog](media/version-control-subversion3.png) + +7. Click **OK** and then confirm by pressing **Publish**. + +7. If prompted, enter your credentials for the site on which you create the repository, as illustrated below: + + ![Entering credentials for subversion repo](media/version-control-subversion5.png) + +8. All the version control commands available should now be visible in the version control menu. + +## See also + +- [Working with Subversion](working-with-subversion.md) \ No newline at end of file diff --git a/mac/2017/setup-vsmac-tools-unity.md b/mac/2017/setup-vsmac-tools-unity.md new file mode 100644 index 00000000000..ef5814ee5bb --- /dev/null +++ b/mac/2017/setup-vsmac-tools-unity.md @@ -0,0 +1,78 @@ +--- +title: "Setup Visual Studio for Mac Tools for Unity" +description: "Setting up and installing Unity tools for use in Visual Studio for Mac" +author: therealjohn +ms.author: johmil +ms.date: 05/25/2018 +ms.assetid: 83FDD7A3-5D16-4B4B-9080-078E3FB5C623 +--- +# Set up Visual Studio for Mac Tools for Unity + +This section explains how to get started using Visual Studio for Mac Tools for Unity. + +## Install Visual Studio for Mac + +### Unity Bundled Installation + +Starting with Unity 2018.1, Visual Studio for Mac is the default C# integrated development environment (IDE) for Unity, and is included in the Unity Download Assistant as well as the Unity Hub installation tool. Download Unity from [store.unity.com](https://store.unity.com/). + +During installation, ensure that Visual Studio for Mac is checked in the list of components to install with Unity: + +#### Unity Hub + +![unity hub installation](media/setup-vsmac-tools-unity-image7.png) + +#### Unity Download Assistant + +![unity download assistant installation](media/setup-vsmac-tools-unity-image8.png) + +#### Check for Updates to Visual Studio for Mac + +The version of Visual Studio for Mac included with the Unity installation may not be the latest. It is recommended to check for updates to ensure you have access to the latest tools and features. + +* [Updating Visual Studio for Mac](update.md) + +### Manual installation + +If you already have Unity 5.6.1 or above, but don't have Visual Studio for Mac, you can install Visual Studio for Mac manually. All editions of Visual Studio for Mac are bundled with Visual Studio for Mac Tools for Unity, including the free Community edition: + +* Download Visual Studio for Mac from [visualstudio.microsoft.com](https://visualstudio.microsoft.com/). +* Visual Studio for Mac Tools for Unity are installed automatically during the installation process. +* Follow the steps in the [installation guide](/visualstudio/mac/installation/?view=vsmac-2017) for additional installation help. + +> [!NOTE] +> Visual Studio for Mac Tools for Unity requires Unity version 5.6.1 or above. To verify that Visual Studio Tools for Unity are enabled in your version of Unity, select **About Unity** from the Unity menu and look for the text "Microsoft Visual Studio Tools for Unity enabled" in the bottom-left of the dialog. +> +> ![About Unity](media/setup-vsmac-tools-unity-image3.png) + +## Confirm that the Visual Studio for Mac Tools for Unity extension is enabled + +While the Visual Studio for Mac Tools for Unity extension should be enabled by default, you can confirm this and check the installed version number: + +1. From the Visual Studio menu, select **Extensions...**. + + ![Select Extensions](media/setup-vsmac-tools-unity-image1.png) + +2. Expand the Game Development section and confirm the Visual Studio for Mac Tools for Unity entry. + + ![View Unity Entry](media/setup-vsmac-tools-unity-image2.png) + +## Configure Unity for use with Visual Studio for Mac + +Starting with Unity 2018.1, Visual Studio should be the default external script editor in Unity. You can confirm this or change the external script editor to Visual Studio: + +1. Select **Preferences...** from the Unity menu. + + ![Select Preferences](media/setup-vsmac-tools-unity-image4.png) + +2. In the Preferences dialog, select the **External Tools** tab. + +3. From the External Script Editor dropdown list, choose **Visual Studio** if it is listed, otherwise select **Browse...**. + + ![Select Visual Studio](media/setup-vsmac-tools-unity-image5.png) + +4. If **Browse...** was selected, navigate to the Applications directory and select Visual Studio and then click **Open**. + + ![Select Open](media/setup-vsmac-tools-unity-image6.png) + +5. Once Visual Studio is selected in the **External Script Editor** list, close the Preferences dialog to complete the configuration process. \ No newline at end of file diff --git a/mac/2017/signing-in.md b/mac/2017/signing-in.md new file mode 100644 index 00000000000..3a4ac9130ca --- /dev/null +++ b/mac/2017/signing-in.md @@ -0,0 +1,44 @@ +--- +title: "Signing in to Visual Studio for Mac" +description: "How to sign in to Visual Studio for Mac" +author: conceptdev +ms.author: crdun +ms.date: 05/06/2018 +ms.assetid: E4CFD03C-03AF-48CA-B409-6DB1CA45E991 +--- +# Sign in to Visual Studio for Mac + +When you launch Visual Studio for Mac for the first time, you're prompted to log in using a Microsoft account. Use a Microsoft account that is connected to the license that you wish to use. If you do not have a Microsoft account, see [How do I sign up for an account](https://support.microsoft.com/instantanswers/d18cc497-d839-cf50-dea8-f99c95f2bd16/sign-up-for-a-microsoft-account). + +If you do decide not to log in straight away, you'll be able to use an evaluation copy for 30 days. After 30 days you must log in to continue using your copy of Visual Studio for Mac. + +## How to sign in to Visual Studio for Mac + +Make sure that you're connected to the internet before signing in to Visual Studio for Mac. Subscriptions can only be activated online. + +To sign in to Visual Studio for Mac, do the following steps: + +1. Click the **Sign in** link on the Welcome page to display the Accounts Dialog, and press the **Sign In** button: + + ![Accounts dialog in Visual Studio for Mac](media/signing-in-image12.png) + +2. Enter your Microsoft Credentials: + + ![Microsoft credentials dialog](media/signing-in-image13.png) + + You cannot use Xamarin credentials to log into Visual Studio for Mac. + +3. After you've logged in, you'll see your license type. From this dialog, you can add additional Microsoft accounts that you might wish you use: + + ![Sign in successful](media/signing-in-image14.png) + +## Adding multiple user accounts + +Visual Studio for Mac supports adding multiple accounts to your personalization account. These additional accounts will allow you to access resources, such as Azure, from any added account. + +To add additional user accounts, follow the steps in the [How to sign in to Visual Studio for Mac](#how-to-sign-in-to-visual-studio-for-mac) section. + +## See also + +- [Sign in to Visual Studio (on Windows)](/visualstudio/ide/signing-in-to-visual-studio) +- [Work with multiple user accounts (Visual Studio on Windows)](/visualstudio/ide/work-with-multiple-user-accounts) \ No newline at end of file diff --git a/mac/2017/snippets.md b/mac/2017/snippets.md new file mode 100644 index 00000000000..c70f7bf3170 --- /dev/null +++ b/mac/2017/snippets.md @@ -0,0 +1,88 @@ +--- +title: "Code Snippets" +description: "How to use code snippets to program efficiently in Visual Studio for Mac" +author: conceptdev +ms.author: crdun +ms.date: 02/07/2019 +ms.assetid: 0FE27C0C-A861-4133-A74E-8D0505CF5342 +--- + +# Code snippets + +Code snippets, often referred to as _code templates_, are useful for efficient programming as they allow the insertion and editing of pre-written blocks of code. Using code snippets can be convenient for quickly adding common patterns, or even for learning new patterns when as the developer you are unsure of syntax. There are templates provided for C#, F#, HTML, XML, Python, and Razor. + +This section explains how to create, insert, and use snippets in code. + +## Inserting a snippet + +There are some different ways to add code snippets, some of which are described below: + +- **Tab Expansion** – Start typing the template name, select it from the list and press **Tab**, **Tab** to add it: + + ![Tab Expansion in Code](media/source-editor-image13.png) + +- **Toolbox** – Use the toolbox pad to display a list of all code snippets. Drag any template from the toolbox into the correct position in the source code: + + [![Code snippets in Toolbox](media/source-editor-image14-sml.png)](media/source-editor-image14.png#lightbox) + +- **Insert Templates command** – There is currently no default key binding set for inserting a template. To create one, browse to **Visual Studio > Preferences > Key Bindings** and search for `template`. This allows adding the desired key binding into the Edit Binding field, then click **Apply**: + + ![Inset Template command](media/source-editor-image15.png) + +## Creating a new template + +While there are many existing templates in a variety of languages that you can use and edit, new templates can also be added by navigating to **Visual Studio > Preferences > Text Editor > Code Snippets**: + +![Inset new template](media/source-editor-image12.png) + +Press the **Add** or **Edit** buttons to create or edit snippets. + +## Keywords in code snippets + +After a code snippet is inserted into the editor, any keywords defined are highlighted and can be edited by tabbing between them. Keywords behave like a "variable" in the code snippet and are defined by placing a dollar-sign `$` before and after the name of the keyword. + +The **Edit template** window is shown below, editing the built-in `prop` snippet. The snippet contains two keywords – `$type$` and `$name$` – which can have further properties set (such as a default value and tooltip) on the right side of the window: + +![Edit template window](media/source-editor-image12z.png) + +The following fields are used to define a snippet: + +- **Shortcut** – The text the user types to insert the snippet. +- **Group** – Snippets are grouped together in the snippet content menu, using this value. +- **Description** – Explanation of the snippet's purpose. +- **Mime** – Controls what file types the snippet is available in. +- **Is expandable template** – Ensure this is checked so that the snippet can be inserted at the cursor by typing the shortcut. +- **Is surround with template** – Check this option to list this shortcut in the **Surround with...** content menu in the editor. +- **Template text** – The actual snippet that will be inserted into the editor. Keyword placeholders can be defined by surrounding a token with dollar signs eg. `$type$`. +- **Keyword property panel** – On the right-side of the window, use the drop-down list at the top to choose a keyword (eg `type`) and edit properties like default value and tooltip. + +## Using keywords in the editor + +To use a snippet with keywords, such as the one defined above, type the shortcut and press **Tab** twice, and the snippet contents will be inserted at the cursor: + +![Inserted snippet showing keywords](media/source-editor-image12a.png) + +Press the **Tab** key to move between `object` and `MyProperty` to customize the snippet for your class. + +A keyword can be repeated in a snippet, such as this `for` example, notice the `$i$` keyword appears 3 times: + +![Snippet template with repeated keywords](media/source-editor-image12b.png) + +When used in the editor, the **Tab** key will switch between the first `i` and `max`. If you overtype the `i` with a different variable name, all three instances will be updated: + +![Inserted snippet showing multiple keywords](media/source-editor-image12c.png) + +### Reserved keywords + +There are two reserved keywords that you can use in a snippet: + +- `$selected$` – If the snippet has **Is surround with template** checked, this keyword will be replaced by the text that was highlighted in the editor when the snippet was chosen. +- `$end$` – When the user has finished editing the keywords in a snippet, the cursor will be placed at the location of the `$end$` keyword. + +The `for` snippet in the previous section is an example of both these reserved keywords. + +Refer to the [Visual Studio code snippets reference](/visualstudio/ide/code-snippets-schema-reference#keywords) for more information. + +## See also + +- [Code snippets (Visual Studio on Windows)](/visualstudio/ide/code-snippets) \ No newline at end of file diff --git a/mac/2017/source-editor.md b/mac/2017/source-editor.md new file mode 100644 index 00000000000..7bc2fb3030b --- /dev/null +++ b/mac/2017/source-editor.md @@ -0,0 +1,81 @@ +--- +title: Source Editor +description: Using the source editor in Visual Studio for Mac +author: conceptdev +ms.author: crdun +ms.date: 05/06/2018 +ms.assetid: A018A314-C1C4-4F36-BCB6-2D434208FCFE +--- + +# Source editor + +A reliable source editor is essential for writing code succinctly and efficiently. Visual Studio for Mac provides a sophisticated source editor that is at the center of your interactions with the IDE. The source editor provides features that you might expect and need to do your work with ease: From the basics such a syntax highlighting, code snippets, and code folding, to the benefits of its Roslyn compiler integration, such as fully functional IntelliSense code completion. + +The source editor in Visual Studio for Mac allows for a seamless experience with all the other functionality in the IDE such as debugging, refactoring, and version control integration. + +This article introduces some of the key features of the source editor and explores how you can use Visual Studio for Mac to be as productive as possible. + +## The Source Editor Experience + +Viewing and moving efficiently throughout code is an integral part of the development workflow. Exactly how you decide to view and maintain code is a personal decision, which varies between developers - and often between projects. + +Visual Studio for Mac offers many powerful features to make cross-platform development as accessible and as useful as possible. The following sections describe some of the highlights. + +## Code folding + +Code folding makes it easier to manage large source code files by allowing developers to show or hide complete sections of code, such as using directives, boilerplate code and comments, and #region statements. Code folding is turned off by default in Visual Studio for Mac + +To turn on code folding, navigate to **Visual Studio > Preferences > Text Editor > General > Code Folding**: + +![Code Folding Options](media/source-editor-image1.png) + +This menu also includes the option to fold #regions and comments by default, displaying a named hint, in place of code. + +To show or hide sections, use the disclosure widget next to the line number: + +![Showing or Hiding sections in code](media/source-editor-image2.png) + +You can also switch between showing and hiding the folds by using the **View > Folding > Toggle Fold / Toggle All Folds** menu item: + +![Folding Menu item](media/source-editor-image19.png) + +This menu item can also be used to enable or disable code folding. + +## White space + +It may be necessary for you to view invisible characters in source code. It's a visible way to make sure that you're adhering to coding standards and not needlessly wasting space. It's also useful when writing F#, which depends on precisely indented lines for evaluating code. + +Set options to show whitespace by navigating to **Visual Studio > Preferences > Text Editor > Markers and Rulers**. Selecting this option allows setting _when_ invisible characters will be shown: Never, On Selection, or Always: + +![Show invisible characters options](media/source-editor-image3.png) + +The option to show tabs, spaces, and line endings is also available: + +![Show tabs and spaces](media/source-editor-image4.png) + +Invisible characters are displayed as gray dots, as illustrated in the following image: + +![whitespace displayed](media/source-editor-image22.png) + +## Ruler + +The column ruler is useful for determining line lengths, particularly when working on a team that has line length guidelines. The column ruler can be turned on or off by navigating to **Visual Studio > Preferences > Text Editor > Markers and Rulers** and selecting (or deselecting) **Show Column ruler**, as illustrated in the following image: + +![Preferences dialog with "show column ruler" highlighted](media/source-editor-image5.png) + + This displays as a vertical light gray line in the source editor. + +## Highlight identifier references + +With the "Highlight identifier references" option is enabled, you can select any symbol in the source code and the source editor will provide a visual guide to all other references in that file. To turn on this option, go to **Visual Studio > Preferences > Text Editor > Markers and Rulers** and select _Highlight identifier references_, as illustrated in the following image: + +![Preferences dialog with "Highlight identifier references" highlighted](media/source-editor-image6.png) + +The color of the highlight is also useful for denoting that something is being assigned or referenced. If something is assigned, it is highlighted in red; if it is referenced, it is highlighted in blue: + +![example showing color of highlight](media/source-editor-image7.png) + +## See also + +- [Features of the code editor (Visual Studio on Windows)](/visualstudio/ide/writing-code-in-the-code-and-text-editor) +- [Outlining (Visual Studio on Windows)](/visualstudio/ide/outlining) \ No newline at end of file diff --git a/mac/2017/task-comments.md b/mac/2017/task-comments.md new file mode 100644 index 00000000000..2c5c2416a51 --- /dev/null +++ b/mac/2017/task-comments.md @@ -0,0 +1,28 @@ +--- +title: "Task Comments" +description: "Adding task comments to your code" +author: conceptdev +ms.author: crdun +ms.date: 05/06/2018 +ms.assetid: 562DCB46-D8FA-4DC4-AAEA-F274448C4CD2 +--- + +# Task Comments + +When writing code, it's standard practice to explicitly comment unfinished or questionable code or quick workarounds with warnings. The default signal tokens provided by Visual Studio for Mac are TODO, HACK, FIXME, and UNDONE. Personalized tokens can be defined under **Visual Studio > Preferences > Environment > Tasks**, as illustrated in the following image: + +![Task list preferences](media/source-editor-image10.png) + +To add a new task comment, add a comment that includes the task keyword. For example: + +```csharp +//TODO: Finish this for all properties. +``` + +Visual Studio for Mac draws attention to these markers by highlighting them in the **Task List** pad, which can be displayed by navigating to **View > Pads > Task**: + +![Task list pad](media/source-editor-image11.png) + +## See also + +- [Use the Task List (Visual Studio on Windows)](/visualstudio/ide/using-the-task-list) \ No newline at end of file diff --git a/mac/2017/tf-version-control.md b/mac/2017/tf-version-control.md new file mode 100644 index 00000000000..6fec8f5c040 --- /dev/null +++ b/mac/2017/tf-version-control.md @@ -0,0 +1,189 @@ +--- +title: "Team Foundation Version Control (TFVC)" +description: "Connecting to Team Foundation Server or Azure DevOps Services with Team Foundation Version Control (TFVC)." +author: conceptdev +ms.author: crdun +ms.date: 09/05/2018 +ms.topic: article +ms.technology: vs-ide-general +ms.assetid: 52D3D26A-4D01-4FD1-AAA1-AE7D7BD39746 +--- + +# Connecting to Team Foundation Version Control + +> [!NOTE] +> Team Foundation Version Control support is currently in preview and some functionality is not yet fully working. We'd love feedback from you on any issues at [Developer Community](https://developercommunity.visualstudio.com/spaces/41/index.html). More changes are still to come! + +Azure Repos provides two models of version control: Git, which is distributed version control, and Team Foundation Version Control (TFVC), which is centralized version control. This article provides an overview and a starting point for using TFVC with Visual Studio for Mac. + +## Requirements + +* Visual Studio Community, Professional, or Enterprise for Mac version 7.5 or later. +* Azure DevOps Services, or Team Foundation Server 2013 and later. +* A project in Azure DevOps Services or Team Foundation Server, configured to use Team Foundation Version Control. + +## Installation + +In Visual Studio for Mac, choose **Visual Studio > Extensions** from the menu. In the **Gallery** tab, select **Version Control > Team Foundation Version Control for TFS and VSTS** and click **Install**: + +![Extension manager](media/tfvc-install.png) + +Follow the prompts to install the extension. Once it's installed, restart the IDE. + +## Updating the extension + +Updates to the TFVC extension are made periodically. To access updates, choose **Visual Studio > Extensions...** from the menu and select the **Updates** tab. Select the extension in the list and press the **Update** button: + +![Extension manager showing update](media/tfvc-update.png) + +Press **Install** on the next dialog to uninstall the old package and install the new one. + +For information on what's new in each release, see the [Release Notes](/visualstudio/releasenotes/vs2017-mac-preview-relnotes#team-foundation-version-control-extension--release-notes). + +## Using the add-in + +Once the extension is installed, select the **Version Control > TFS/Azure DevOps > Open from Remote Repository** menu item. + +![Menu item to open the extension](media/tfvc-source-control-explorer-devops.png) + +Choose either VSTS or Team Foundation Server to get started and press **Continue**: + +![Connect with a Server](media/tfvc-choose-server-type-devops.png) + +### Azure Repos Authentication + +When you select a project that is hosted on Azure Repos, you're prompted to enter your Microsoft account details: + +![Connect with Azure Repos](media/tfvc-vsts-login.png) + +### TFS Authentication + +To connect to TFS, enter the server details and your account credentials. Enter a domain to use NTLM authentication, otherwise leave blank to use basic authentication. Select **Add Server**: + +![Sign in to a TFS Server](media/tfvc-login.png) + +## Selecting a project + +Once you've successfully authenticated, you can see a list of repositories that are associated with the account in the **Open from Source Control** dialog: + +![Open from Source Control dialog with projects displayed](media/tfvc-vsts-projects.png) + +This dialog is organized with the following nodes: + +- Azure DevOps organization or collection – This displays all organizations connected to the Microsoft account you logged in with. +- Projects - In each organization or collection, you can have a number of projects. A project is where source code, work items, and automated builds are hosted. + +At this point, you can search and filter by the name of a project or organization. + +### Adding a new server + +To add a new server to the list, press the **Add Host** button on the **Open from Source Control** dialog: + +![Highlighted add button to add new server to the list](media/tfvc-add-new-server.png) + +Select the provider from the list, and enter your credentials: + +![Dialog showing option for source control provider](media/tfvc-add-new-creds-devops.png) + +## Creating a new workspace + +To start working with a project, you need to have a _workspace_. If you don't already have a workspace, you can create one from the **Workspace** combobox in the **Open from Source Control** dialog: + +![Create new workspace combobox option](media/tfvc-create-new-workspace.png) + +Set the name and local path for your new workspace and select **Create Workspace**: + +![Entering a name and local path for the new workspace](media/tfvc-local-workspace.png) + +## Using the Source Code Explorer + +Once you've created a workspace and mapped your project, you can start working with the _Source Code Explorer_. + +To open the Source Code Explorer, select the **Version Control > TFS/Azure DevOps > Source Control Explorer** menu item. + +The Source Code Explorer enables you to navigate through all the mapped projects, their files, and folders. It also allows you to perform all the basic source control actions such as: + +- Get the latest version +- Get a specific version +- Check files in and out +- Lock and unlock files +- Add, delete, and rename files +- View history +- Compare changes. + +Many of these actions are available through context actions on the project: + +![Context menu actions for a project](media/tfvc-sourcecode-actions.png) + +## Managing workspaces + +If you haven't already created a workspace, as described in the [Creating a workspace](#creating-a-new-workspace) section, you'll notice that the Source Code Explorer is empty: + +![empty source code explorer](media/tfvc-setup-empty-sce.png) + +To set up your remote project with a local workspace, use the following steps: + +1. Select the **Server** from the combobox. +1. Note that there are "no workspaces" and that the Local Path is "Not Mapped". Select the **Not Mapped** link to display the **Create new Workspace** dialog. +1. Provide a name for the workspace and then click **Add Working Folder** to map the project to a local folder on your computer: + + ![Create a new workspace dialog showing default options](media/tfvc-workspace1.png) + +1. Select the "$" folder to map all projects on your server to the same workspace, or select an individual project, and click **OK**: + + ![Browse for folder dialog showing all projects](media/tfvc-workspace2.png) + +1. Select the location on your local machine that you wish to map the project(s) to and click **Select Folder**. +1. Confirm the details of the new workspace by pressing **OK** + + ![Create new workspace dialog with working folder added](media/tfvc-workspace3.png) + +Once your workspace is set up, it can be changed or removed by clicking the **Manage Workspaces** button in the Source Code Explorer. + +![Manage Workspaces](media/tfvc-workspace4.png) + +## Troubleshooting + +### Problems using basic authentication + +The following options can be used to authenticate with a server: + +- Oauth +- Basic +- Ntlm + +To use basic authentication it is necessary to enable **Alternative authentication credentials** in Azure DevOps Services, by following the steps below: + +1. Sign in to your Azure DevOps organization as the owner (https://dev.azure.com/{organization}/{project}). + +2. From your organization toolbar, select the gear icon and select **Policy**: + + ![Policy settings option selected](media/tfvc-auth2.png) + +3. Review your application connection settings. Change these settings, based on your security policies: + + ![Policy settings option selected](media/tfvc-auth.png) + +### I do not see anything in TFVC + +To set up Team Foundation Version Control (TFVC) on your dev machine, you **must** create a workspace, as described in the [Managing workspaces](#managing-workspaces) section. + +In Source Control Explorer, press the **Manage Workspaces** Button. Follow the steps to map the project to a folder on your dev machine. + +### I do not see any / all of my projects + +After authenticating you should see the list of projects. By default, only TFS projects are shown. To see other types of projects, check the "See all projects" box. + +Keep in mind that projects that are on the server will not appear if you don't have the correct privileges. + +#### I am getting the error "Cannot create the workspace. Please, try again" + +When trying to [create a new workspace](#creating-a-new-workspace), you should make sure the following conditions are met: + +- No use of invalid characters in the workspace name. +- The name must be less than 64 characters. +- The local path cannot be used by any other workspaces. + +## See also + +- [Develop and share your code in TFVC using Visual Studio (on Windows)](/azure/devops/repos/tfvc/share-your-code-in-tfvc-vs) \ No newline at end of file diff --git a/mac/2017/troubleshooting.md b/mac/2017/troubleshooting.md new file mode 100644 index 00000000000..73bae40eb1b --- /dev/null +++ b/mac/2017/troubleshooting.md @@ -0,0 +1,46 @@ +--- +title: Troubleshoot +description: "Common issues and resolutions for Visual Studio for Mac users." +ms.topic: troubleshooting +author: conceptdev +ms.author: crdun +ms.date: 05/06/2018 +ms.assetid: CE860D79-E29E-4B93-B094-BE74B35FC1C2 +--- +# Troubleshooting + +## Viewing logs in Visual Studio for Mac + +Logs can be found by browsing to the **Help > Open Log Directory** menu item, as illustrated below: + +![Open Log directory menu item](media/troubleshooting-image1.png) + +## Viewing exceptions + +When an exception is caught, an exception bubble appears. To view more details, select the **View Details** button: + +![View more details about an exception](media/troubleshooting-image2.png) + +This displays the **Show Details** dialog, providing more information regarding the exception: + +![Show details dialog](media/troubleshooting-image3.png) + +Important sections of the dialog, which are numbered above are described in detail below: + +1. The exception type, which shows the full name of the exception type that is being observed. +2. The exception message, which shows the value of the Message property of the exception object. +3. The Inner exception type, which shows the full name of the exception type for the currently selected exception in the Inner exception tree view. +4. The Inner exception message, shows the value of the Message property of the selected exception in Inner exception tree view. +5. Stacktrace view. This can be collapsed via a disclosure arrow and contains stack frames entries. +6. Example of non-user code entries. +7. Example of user code entries. +8. Properties view, which shows all properties and fields of the exception. This can be collapsed via a disclosure arrow. +9. Inner exception tree view. Select inner exceptions in this view via keyboard up/down arrows or with the mouse or trackpad. +10. By default, this is set to what the **Debug project code only** option in debugger settings is set to. Selecting this box will enable all non-user code to collapse into one line in the stacktrace. +11. A copy button to copy the `exception.ToString()` output to clipboard. + +Note that some of these sections are only visible when the exception has an inner exception. + +## See also + +- [Resources for troubleshooting IDE errors (Visual Studio on Windows)](/visualstudio/ide/reference/resources-for-troubleshooting-integrated-development-environment-errors) \ No newline at end of file diff --git a/mac/2017/uninstall.md b/mac/2017/uninstall.md new file mode 100644 index 00000000000..ce349dce72f --- /dev/null +++ b/mac/2017/uninstall.md @@ -0,0 +1,218 @@ +--- +title: "Uninstall Visual Studio for Mac" +description: "Instructions for uninstalling Visual Studio for Mac and related tools." +author: conceptdev +ms.author: crdun +ms.date: 05/06/2018 +ms.technology: vs-ide-install +ms.assetid: 4EB95F75-BC2E-4982-9564-2975805712D8 +--- + +# Uninstalling Visual Studio for Mac + +There are a number of Xamarin products that enable cross-platform application development, including stand-alone apps like Visual Studio for Mac. + +You can use this guide to uninstall each product individually by navigating to the relevant section, or you can use the scripts provided in the [Uninstall Script](#uninstall-script) section to uninstall everything. + +If you have previously had Xamarin Studio installed on your machine, you may also need to follow the instructions in [Xamarin's uninstall](/xamarin/cross-platform/get-started/installation/uninstalling-xamarin#uninstall-xamarin-studio-on-mac) guide, in addition to the following steps. + +## Uninstall Script + +There are two scripts that can be used to uninstall Visual Studio for Mac and all components for your machine: + +- [Visual Studio and Xamarin script](#visual-studio-for-mac-and-xamarin-script) +- [.NET Core script](#net-core-script) + +The following sections provide information on downloading and using the scripts. + +### Visual Studio for Mac and Xamarin script + +You can uninstall Visual Studio and Xamarin components in one go by using the [uninstall script](https://raw.githubusercontent.com/MicrosoftDocs/visualstudio-docs/master/mac/resources/uninstall-vsmac.sh). + +This uninstall script contains most of the commands that you will find in the article. There are three main omissions from the script and are not included due to possible external dependencies. To remove this, jump to the relevant section below and remove them manually: + +- **[Uninstalling Mono](#uninstall-mono-sdk-mdk)** +- **[Uninstalling Android AVD](#uninstall-android-avd)** +- **[Uninstalling Android SDK and Java SDK](#uninstall-android-sdk-and-java-sdk)** + +To run the script, do the following steps: + +1. Right-click on the script and select **Save As** to save the file on your Mac. +2. Open Terminal and change the working directory to where the script was downloaded: + + ```bash + cd /location/of/file + ``` +3. Make the script executable and the run it with **sudo**: + + ```bash + chmod +x ./uninstall-vsmac.sh + sudo ./uninstall-vsmac.sh + ``` +4. Finally, delete the uninstall script. + +### .NET Core script + +The uninstall script for .NET Core is located in the [dotnet cli repo](https://raw.githubusercontent.com/dotnet/cli/master/scripts/obtain/uninstall/dotnet-uninstall-pkgs.sh) + +To run the script, do the following steps: + +1. Right-click on the script and select **Save As** to save the file on your Mac. +2. Open Terminal and change the working directory to where the script was downloaded: + + ```bash + cd /location/of/file + ``` +3. Make the script executable and the run it with **sudo**: + + ```bash + chmod +x ./dotnet-uninstall-pkgs.sh + sudo ./dotnet-uninstall-pkgs.sh + ``` +4. Finally, delete the .NET Core uninstall script. + +## Uninstall Visual Studio for Mac + +The first step in uninstalling Visual Studio from a Mac is to locate **Visual Studio.app** in the **/Applications** directory and drag it to the **Trash Can**. Alternatively, right-click and select **Move to Trash** as illustrated in the following image: + +![Move Visual Studio Application to trash](media/uninstall-image1.png) + +Deleting this app bundle removes Visual Studio for Mac, even though there may be other files related to Xamarin still on the file system. + +To remove all traces of Visual Studio for Mac, run the following commands in Terminal: + +```bash +sudo rm -rf "/Applications/Visual Studio.app" +rm -rf ~/Library/Caches/VisualStudio +rm -rf ~/Library/Preferences/VisualStudio +rm -rf ~/Library/Preferences/Visual\ Studio +rm -rf ~/Library/Logs/VisualStudio +rm -rf ~/Library/VisualStudio +rm -rf ~/Library/Preferences/Xamarin/ +rm -rf ~/Library/Application\ Support/VisualStudio +rm -rf ~/Library/Application\ Support/VisualStudio/7.0/LocalInstall/Addins/ +``` + +You may also want to remove the following directory containing various Xamarin files and folders. However, before you do you should be aware that this directory contains the Android signing keys. For more information refer to the section **[Uninstalling Android SDK and Java SDK](#uninstall-android-sdk-and-java-sdk)**: + +```bash +rm -rf ~/Library/Developer/Xamarin +``` + + +## Uninstall Mono SDK (MDK) + +Mono is an open-source implementation of Microsoft's .NET Framework and is used by all Xamarin Products—Xamarin.iOS, Xamarin.Android, and Xamarin.Mac to allow development of these platforms in C#. + +> [!WARNING] +> There are other applications outside of Visual Studio for Mac that also use Mono, such as Unity. +> Be sure that there are no other dependencies on Mono before uninstalling it. + +To remove the Mono Framework from a machine, run the following commands in Terminal: + +```bash +sudo rm -rf /Library/Frameworks/Mono.framework +sudo pkgutil --forget com.xamarin.mono-MDK.pkg +sudo rm -rf /etc/paths.d/mono-commands +``` + +## Uninstall Xamarin.Android + +There are a number of items required for the installation and use of Xamarin.Android, such as the Android SDK and Java SDK. + +Use the following commands to remove Xamarin.Android: + +```bash +sudo rm -rf /Developer/MonoDroid +rm -rf ~/Library/MonoAndroid +sudo pkgutil --forget com.xamarin.android.pkg +sudo rm -rf /Library/Frameworks/Xamarin.Android.framework +``` + +### Uninstall Android SDK and Java SDK + +The Android SDK is required for development of Android applications. To completely remove all parts of the Android SDK, locate the file at **~/Library/Developer/Xamarin/** and move it to **Trash**. + +> [!WARNING] +> You should be aware that Android signing keys that are generated by Visual Studio for Mac are located in `~/Library/Developer/Xamarin/Keystore`. Make sure to back these up appropriately, or avoid removing this directory if you wish to keep your keystore. + +The Java SDK (JDK) does not need to be uninstalled, as it is already pre-packaged as part of Mac OS X / macOS. + +### Uninstall Android AVD + +> [!WARNING] +> There are other applications outside of Visual Studio for Mac that also use Android AVD and these additional android components, such as Android Studio.Removing this directory may cause projects to break in Android Studio. + +To remove any Android AVDs and additional Android components use the following command: + +```bash +rm -rf ~/.android +``` + +To remove only the Android AVDs use the following command: + +```bash +rm -rf ~/.android/avd +``` + +## Uninstall Xamarin.iOS + +Xamarin.iOS allows iOS application development using C# or F# with Visual Studio for Mac. + +Use the following commands in Terminal to remove all Xamarin.iOS files from a file system: + +```bash +rm -rf ~/Library/MonoTouch +sudo rm -rf /Library/Frameworks/Xamarin.iOS.framework +sudo rm -rf /Developer/MonoTouch +sudo pkgutil --forget com.xamarin.monotouch.pkg +sudo pkgutil --forget com.xamarin.xamarin-ios-build-host.pkg +sudo pkgutil --forget com.xamarin.xamarin.ios.pkg +``` + +## Uninstall Xamarin.Mac + +Xamarin.Mac can be removed from your machine using the following two commands to eradicate the product and license from your Mac respectively: + +```bash +sudo rm -rf /Library/Frameworks/Xamarin.Mac.framework +rm -rf ~/Library/Xamarin.Mac +``` + +## Uninstall Workbooks and Inspector + +Starting with 1.2.2, Xamarin Workbooks & Inspector can be uninstalled from a terminal by running: + +```bash +sudo /Library/Frameworks/Xamarin.Interactive.framework/Versions/Current/uninstall +``` + +For older versions, you need to manually remove the following artifacts: + +* Delete the Workbooks app at `"/Applications/Xamarin Workbooks.app"` +* Delete the Inspector app at `"Applications/Xamarin Inspector.app"` +* Delete the add-ins: `"~/Library/Application Support/XamarinStudio-6.0/LocalInstall/Addins/Xamarin.Interactive"` and `"~/Library/Application Support/XamarinStudio-6.0/LocalInstall/Addins/Xamarin.Inspector"` +* Delete Inspector and supporting files here: `/Library/Frameworks/Xamarin.Interactive.framework` and `/Library/Frameworks/Xamarin.Inspector.framework` + +## Uninstall the Xamarin Profiler + +```bash +sudo rm -rf "/Applications/Xamarin Profiler.app" +``` + +## Uninstall the Visual Studio Installer + +Use the following commands to remove all traces of the Xamarin Universal Installer: + +```bash +rm -rf ~/Library/Caches/XamarinInstaller/ +rm -rf ~/Library/Caches/VisualStudioInstaller/ +rm -rf ~/Library/Logs/XamarinInstaller/ +rm -rf ~/Library/Logs/VisualStudioInstaller/ +rm -rf ~/Library/Preferences/Xamarin/ +rm -rf "~/Library/Preferences/Visual Studio/" +``` + +## See also + +- [Uninstall Visual Studio (on Windows)](/visualstudio/install/uninstall-visual-studio) \ No newline at end of file diff --git a/mac/2017/unity-tools.md b/mac/2017/unity-tools.md new file mode 100644 index 00000000000..8ede51a6139 --- /dev/null +++ b/mac/2017/unity-tools.md @@ -0,0 +1,59 @@ +--- +title: "Visual Studio for Mac Tools for Unity" +description: "Introducing the Visual Studio Tools for Unity extension" +author: therealjohn +ms.author: johmil +ms.date: 05/25/2018 +ms.assetid: 83FDD7A3-5D16-4B4B-9080-078E3FB5C623 +--- +# Visual Studio for Mac Tools for Unity + +![Stylized image of Unity and Visual Studio for Mac](media/vsmac-tools-unity-image1.png) + +Visual Studio for Mac Tools for Unity is a free Visual Studio extension that turns Visual Studio for Mac into a powerful tool for developing cross-platform games and apps with the Unity platform. + +Unity integration is included out of the box in Visual Studio for Mac, and starting from Unity 2018.1, Visual Studio for Mac is the default C# IDE for Unity projects. + +## Overview + +Here are some of the key features of Visual Studio for Mac Tools for Unity: + +### Compatible with Visual Studio for Mac Community Edition + +[Visual Studio for Mac Community Edition](https://visualstudio.microsoft.com/) is available for free, and bundled with Unity installs starting with Unity 2018.1. See the Visual Studio for Mac Tools for Unity [setup documentation](setup-vsmac-tools-unity.md) for more information. + +### IntelliSense for Unity messages + +IntelliSense makes it fast and easy to [implement Unity messages](using-vsmac-tools-unity.md#intellisense-for-unity-messages) like `OnCollisionEnter`, including their parameters. + +### Superior debugging + +Visual Studio for Mac Tools for Unity supports all the [debugging](using-vsmac-tools-unity.md#unity-debugging) features that you expect from Visual Studio: + +* Set breakpoints, including conditional breakpoints. +* Evaluate complex expressions in the Watch window. +* Inspect and modify the value of variables and arguments. +* Drill down into complex objects and data structures. + +### Powerful refactoring and context actions + +Write more usable code with quick menus and keyboard shortcuts for [renaming, refactoring, and context actions](refactoring.md). + +### Browse and add new files + +Browse Unity projects and [add folders, scripts, or shaders](using-vsmac-tools-unity.md#adding-new-unity-files-and-folders), all within the Visual Studio for Mac IDE. + +### Use familiar key bindings + +Boost productivity by using the key bindings that you know. Visual Studio for Mac provides familiar [key bindings](customizing-the-ide.md) for many popular IDEs, such as Visual Studio on Windows, ReSharper, Visual Studio Code, and Xcode. + +### Customize the Visual theme + +Give your eyes a rest with the included [dark theme](customizing-the-ide.md). + +## Tips for Unity developers getting started with Visual Studio for Mac + +These links explain useful features for Unity developers just starting with Visual Studio for Mac: + +* [Customizing the IDE](customizing-the-ide.md) – Learn how to [change the visual theme](customizing-the-ide.md#dark-theme) or switch to a more familiar [key binding](customizing-the-ide.md#key-bindings) scheme. +* [Source Editor](source-editor.md) – Learn how Visual Studio for Mac can make writing better code faster and easier, including common [keyboard shortcuts](keyboard-shortcuts.md). diff --git a/mac/2017/update.md b/mac/2017/update.md new file mode 100644 index 00000000000..8291fbfc1b3 --- /dev/null +++ b/mac/2017/update.md @@ -0,0 +1,52 @@ +--- +title: "Updating Visual Studio for Mac" +description: "Instructions for updating Visual Studio for Mac and accessing preview releases." +author: conceptdev +ms.author: crdun +ms.date: 05/06/2018 +ms.technology: vs-ide-install +ms.assetid: DB8DC9FE-FF21-4061-8A96-3F9FC08A4F8F +--- + +# Update Visual Studio for Mac + +Visual Studio for Mac distributes updates for the IDE and supported frameworks on a regular basis. These updates can be in the form of new features, improvements, and bug fixes. + +Visual Studio for Mac provides three channels to get these latest versions: + +* **Stable** - Provides thoroughly tested updates. This channel is recommended for the best development experience. +* **Beta** / **Alpha** - Provides early access to updates that are candidates for release in the Stable Channel. These releases may not be reliable for everyday use. + +## Checking for updates + +You can use the **Visual Studio Updater** box to check for new updates, change channels, and download and install updates. + +To open the **Visual Studio Updater**, browse to **Visual Studio > Check for Updates**: + +![Check for update option](media/update-image1.png) + +This displays the updater box: + +![updater box](media/update-image2.png) + +## Changing the Updater channel + +To change the channel select it from the channel drop down and press the **Switch Channel button**: + +![Change Channel drop down](media/update-image3.png) + +## Downloading and installing updates + +Switching channels automatically starts the download process of new updates. + +If you have selected the option to **Check Automatically**, the updater box will pop up when Visual Studio for Mac is open to let you know that new updates are available. It will also give you the option to start downloading them. + +To start installing updates, select the **Restart and Install Updates** button: + +![Button to start installing updates](media/update-image4.png) + +Depending on the components that need to be installed, you may need to accept additional licenses or enter your machine's administrator username and password. + +## See also + +- [Update Visual Studio (on Windows)](/visualstudio/install/update-visual-studio) \ No newline at end of file diff --git a/mac/2017/user-accounts.md b/mac/2017/user-accounts.md new file mode 100644 index 00000000000..70679385c71 --- /dev/null +++ b/mac/2017/user-accounts.md @@ -0,0 +1,19 @@ +--- +title: "User Accounts" +description: "Information about signing in to Visual Studio for Mac and enabling subscriptions in Visual Studio for Mac" +author: conceptdev +ms.author: crdun +ms.date: 05/06/2018 +ms.assetid: 17AB4F31-4921-4B4E-8D9D-95FB84294521 +--- + +# User Accounts + +Once you have downloaded and installed Visual Studio for Mac, you must sign in to activate your subscription in order to get access all features of Visual Studio for Mac. + +By signing-in, you enable access to all the services associated with your user account, as well as all the accounts that are linked to that account. Your account settings roam with you wherever you use Visual Studio. You can configure permissions levels on a specific Visual Studio instance for individual users. + +## In this section + +* [Signing in to Visual Studio for Mac](signing-in.md) +* [Enable Subscription](enable-subscription.md) \ No newline at end of file diff --git a/mac/2017/using-vsmac-tools-unity.md b/mac/2017/using-vsmac-tools-unity.md new file mode 100644 index 00000000000..5eedb324469 --- /dev/null +++ b/mac/2017/using-vsmac-tools-unity.md @@ -0,0 +1,108 @@ +--- +title: "Using Visual Studio for Mac Tools for Unity" +description: "This guide describes how to use Visual Studio for Mac Tools for Unity extension" +author: therealjohn +ms.author: johmil +ms.date: 07/17/2017 +ms.assetid: 83FDD7A3-5D16-4B4B-9080-078E3FB5C623 +--- +# Using Visual Studio for Mac Tools for Unity + +In this section, you'll learn how to use Visual Studio for Mac Tools for Unity's integration and productivity features, and how to use the Visual Studio for Mac debugger for Unity development. + +## Opening Unity scripts in Visual Studio for Mac + +Once Visual Studio for Mac is [set as the external script editor for Unity](setup-vsmac-tools-unity.md#configure-unity-for-use-with-visual-studio-for-mac), opening any script from the Unity editor will automatically launch or switch to Visual Studio for Mac, with the chosen script open. + +Alternatively, Visual Studio for Mac can be opened with no script open in the source editor by selecting **Open C# Project** from the **Assets** menu in Unity. + +![Open C# project](media/using-vsmac-tools-unity-image1.png) + +## Unity documentation access + +Visual Studio for Mac Tools for Unity includes a shortcut for accessing the Unity API documentation. To access Unity API documentation from Visual Studio for Mac, place the cursor over the Unity API you want to learn about and press **⌘ command + ‘**. + +## IntelliSense for Unity messages +The Unity engine broadcasts messages to MonoBehaviour scripts, allowing developers to write code that reacts to messages such as OnMouseDown, OnTriggerEnter, etc. Because these are not virtual methods in the base MonoBehaviour class, some IDEs such as MonoDevelop lack code completion functionality for Unity messages. + +However, Visual Studio for Mac Tools for Unity extends its IntelliSense functionality to Unity messages. This makes it easy to implement Unity messages in MonoBehaviour scripts, and assists with learning the Unity API. To use IntelliSense for Unity messages: + +1. Place the cursor on a new line inside the body of a class that derives from MonoBehaviour. + +2. Begin typing the name of a Unity message, such as `OnTriggerEnter`. + +3. Once the letters "**ont**" have been typed, a list of IntelliSense suggestions appears. + + ![Using IntelliSense](media/using-vsmac-tools-unity-image2.png) + +4. The selection on the list can be changed in three ways: + + * With the **Up** and **Down** arrow keys. + + * By clicking with the mouse on the desired item. + + * By continuing to type the name of the desired item. + +5. IntelliSense can insert the selected Unity message, including any necessary parameters: + + * By pressing **Tab**. + + * By pressing **Return**. + + * By double-clicking the selected item. + + ![Insert Unity message from IntelliSense](media/using-vsmac-tools-unity-image3.png) + +## Adding new Unity files and folders + +While you can always add new files to a Unity project in the Unity editor, Visual Studio for Mac allows for easily creating new Unity scripts, shaders, and folders from within Visual Studio. + +### Add a new C# MonoBehaviour script + +To add a new C# MonoBehaviour script, **right-click on the Assets folder** or one of its subdirectories in the Solution pad and select **Add > New MonoBehaviour**. + +![Add new MonoBehaviour](media/using-vsmac-tools-unity-image4.png) + +### Add a new Unity shader + +To add a new Unity shader, **right-click on the Assets folder** or a subdirectory in the Solution pad and select **Add > New Shader**. + +### Add a new folder + +To add a new folder, **right-click on the Assets folder** or a subdirectory in the Solution pad and select **Add > New Folder**. + +These additions are reflected in the Project window of the Unity editor. + +### To rename a file or folder +**right-click** on the item to rename in the Solution pad and select **Rename...**. + +> [!NOTE] +> If you have a new Unity project with no scripts and the Assets folder does not show up in the Solution pad in Visual Studio for Mac, add an initial C# script from within the Unity editor. + +## Unity debugging + +Unity projects can be debugged with Visual Studio for Mac. + +### Start debugging + +To start debugging: + +1. Connect Visual Studio to Unity by clicking the **Play** button, or type **Command + Return**, or **F5**. + + ![Click Play in Visual Studio](media/using-vsmac-tools-unity-image5.png) + +2. Switch to Unity and click the **Play** button to run the game in the editor. + + ![Click Play in Unity](media/using-vsmac-tools-unity-image6.png) + +3. When the game is running in the Unity editor while connected to Visual Studio, any breakpoints encountered will pause execution of the game and bring up the line of code where the game hit the breakpoint in Visual Studio for Mac. + +### Stop debugging + +To stop debugging: + +1. Click the **Stop** button in Visual Studio for Mac, or press **Shift + Command + Return**. + + ![Click Stop in Visual Studio](media/using-vsmac-tools-unity-image7.png) + +To learn more about debugging in Visual Studio for Mac, see [Using the debugger](debugging.md). diff --git a/mac/2017/version-control.md b/mac/2017/version-control.md new file mode 100644 index 00000000000..a3d4650f356 --- /dev/null +++ b/mac/2017/version-control.md @@ -0,0 +1,33 @@ +--- +title: Version Control +description: Using Git and Subversion in Visual Studio for Mac. +author: conceptdev +ms.author: crdun +ms.date: 05/06/2018 +ms.assetid: 49917483-28AA-4598-A847-71F1F2E0DCB5 +--- + +# Version control + +Version control is a system for managing files over many different versions, and - in software development - is generally contributed to by many developers. The principal purpose of any version control system (_VCS_) is to find a solution that enables all users to work on the codebase at the same time. + +At the core of any version control system is a _repository_, which acts as the central data store for all the different files - similar to a file server. However, unlike a file server, the repository contains the entire history of the project and all revisions that have been made. + +If the repository is the central data store, it is logical for each user to have a local store of the data, allowing them to work on it. This is called a _working copy_. In Visual Studio for Mac your working copy will appear just as any other local directory on your machine, allowing you to read from and write to any of the files. However, because Visual Studio for Mac has Version control system integration, you can use Subversion and Git without leaving the IDE. + +Subversion is a centralized version control system, which means that there is a single server that contains all files and revisions from which users can check out any version of any file. When files are checked out from a remote Subversion repository, the user gets a snapshot of the repository at that point in time. + +Git is a distributed version control system that allows teams to work on the same documents simultaneously. With Git there might be a single server that contains all the files, but the entire repository is cloned locally to your machine whenever a repository is checked out from this central source. + +## Basic Concepts + +Visual Studio for Mac provides support for both Git and Subversion version control systems. The following articles explore setting up Git and Subversion repositories through Visual Studio for Mac, as well as simple functionality such as reviewing, committing, and pushing changes. + +* [Setting Up a Git Repository](set-up-git-repository.md) +* [Working with Git](working-with-git.md) +* [Setting Up a Subversion Repository](set-up-subversion-repository.md) +* [Working with Subversion](working-with-subversion.md) + +## See also + +* [Version control in Visual Studio (on Windows)](/visualstudio/version-control/) \ No newline at end of file diff --git a/mac/2017/visual-studio-experience-improvement-program.md b/mac/2017/visual-studio-experience-improvement-program.md new file mode 100644 index 00000000000..02f23cb8630 --- /dev/null +++ b/mac/2017/visual-studio-experience-improvement-program.md @@ -0,0 +1,36 @@ +--- +title: Visual Studio Customer Experience Improvement Program +description: Find out how to manage privacy settings in Visual Studio for Mac. +author: conceptdev +ms.author: crdun +ms.date: 05/22/2018 +ms.assetid: 6F2ECF5A-E195-4890-8399-12A88C7D62FD +--- + +# Visual Studio Customer Experience Improvement Program + +The Visual Studio Customer Experience Improvement Program (VSCEIP) is a program designed to help Microsoft improve Visual Studio for Mac over time. This program collects information about computer hardware and how people use Visual Studio for Mac, without interrupting the users in their tasks at the computer. The information that is collected helps Microsoft identify which features to improve. This article describes how to opt in or out of the VSCEIP. + +For more information about the information collected, processed, or transmitted by the VSCEIP, see the [Microsoft Privacy Statement](https://privacy.microsoft.com/privacystatement). + +## Choice and control over the Visual Studio Customer Experience Improvement Program + +The VSCEIP is turned on by default. You can turn it off, or back on again, by following the instructions below. + +1. Open Visual Studio for Mac. + +1. From the menu bar, choose **Visual Studio > Preferences > Other > Feedback**. + +1. Select your preference for participation: + + ![Select a radio button to reflect your participation preference](media/visual-studio-experience-improvement-program-image1.png) + +[!INCLUDE [GDPR-related guidance](../../docs/misc/includes/gdpr-hybrid-note.md)] + +## See also + +* [Customer Experience Improvement Program (Visual Studio on Windows)](/visualstudio/ide/visual-studio-experience-improvement-program) +* [System-generated logs collected by Visual Studio (on Windows)](/visualstudio/ide/diagnostic-data-collection) +* [How to report a problem with Visual Studio for Mac](report-a-problem.md) +* [Visual Studio for Mac Developer Community](https://developercommunity.visualstudio.com/spaces/41/index.html) +* [Microsoft Privacy Statement](https://privacy.microsoft.com/privacystatement) diff --git a/mac/2017/web-app-deployment.md b/mac/2017/web-app-deployment.md new file mode 100644 index 00000000000..0e0f7a0160a --- /dev/null +++ b/mac/2017/web-app-deployment.md @@ -0,0 +1,20 @@ +--- +title: "ASP.NET Core Web App Deployment" +description: "Information about ASP.NET Core Web Application Deployment in Visual Studio for Mac." +author: sayedihashimi +ms.author: sayedha +ms.date: 01/25/2019 +ms.assetid: d746292d-0570-424a-bf43-e16ab85bbf0d +--- + +# ASP.NET Core Web App Deployment + +An important step in developing web applications is publishing (deployment). You can publish to a remote environment, so that others can use the application, or for testing purposes. Visual Studio for Mac offers two options to publish your application. Publish to Azure App Service enables you to publish your web application to Azure App Service. Publish to Folder enables you to publish your application to a folder. + +## Publish to Azure App Service + +Using Visual Studio for Mac you can publish your web application directly to Azure App Service. To publish your ASP.NET Core web application to Azure App Service refer to the [Publish to Azure App Service](publish-app-svc.md) article. + +## Publish to Folder + +You can also publish your ASP.NET Core web applications to a folder. To learn more about how you can publish your web application to a folder refer to [Publish to Folder](publish-folder.md). \ No newline at end of file diff --git a/mac/2017/working-with-git.md b/mac/2017/working-with-git.md new file mode 100644 index 00000000000..876f5ad5cbb --- /dev/null +++ b/mac/2017/working-with-git.md @@ -0,0 +1,101 @@ +--- +title: Working with Git +description: Using Git in Visual Studio for Mac. +author: conceptdev +ms.author: crdun +ms.date: 05/06/2018 +ms.assetid: 852B6A9D-AEFA-4EF4-A5DD-94A506019D20 +ms.custom: video +--- + +# Working with Git + +Git is a distributed version control system that allows teams to work on the same documents simultaneously. This means that there is a central server that contains all the files, but when a repository is checked out from this central source, the entire repository is cloned to the local machine. + +The sections below will explore how Git can be used for version control in Visual Studio for Mac. + +## Git version control menu + +The image below illustrates the options provided by Visual Studio for Mac by the Version Control menu item: + +![Version Control menu item](media/version-control-gitVersionControlMenu.png) + +## Push and Pull + +Pushing and Pulling are two of the most commonly used actions within Git. To synchronize changes that other people have made to the remote repository, you must **Pull** from there. This is done in Visual Studio for Mac by selecting **Version Control > Update Solution**. + +Once you have updated your files, reviewed and committed them, you must then **Push** them to the remote repository to allow others to access your changes. This is done in Visual Studio for Mac by selecting **Version Control > Push Changes**. This will display the Push dialog, allowing you to view the committed changes, and select the branch to push to: + +![Dialog showing the branch to commit to](media/version-control-gitPush.png) + +You can also Commit and Push your changes at the same time, via the Commit dialog: + +![Option showing how to commit and push at the same time.](media/version-control-commitPush.png) + +## Blame, Log, and Merge + +At the bottom of the window, there are five tabs displayed, as illustrated below: + +![Version Control tabs](media/version-control-gitTabs.png) + +These allow the following actions: + +* **Source** - Displays your source code file. +* **Changes** - Displays the change in code between your local file and the base file. You can also compare different versions of the file from different hashes: + + ![Changes tab](media/version-control-gitChange.png) + +* **Blame** - Displays the username of the user associated with each section of code. +* **Log** - Displays all the commits, times, dates, messages, and users that are responsible for the file: + + ![Log tab](media/version-control-gitLog.png) + +* **Merge** - This can be used if you have a merge conflict when committing your work. It shows a visual representation of the changes made by you and the other developer, allowing you to combine both sections of code cleanly. + +## Switching branches + +By default, the first branch created in a repository is known as the **Master** branch. There isn't technically anything different between the master branch and any other, but the master branch is the one that is most often thought of in development teams as the 'live' or 'production' branch. + +An independent line of development can be created by branching off Master (or any other branch, for that matter). This provides a new version of the master branch at a point in time, allowing for development independently of what is 'live.' Using branches in this way is often used for features in software development + +Users can create as many branches as they like for each repository, but it is recommended that once they have finished using a branch, it is deleted it to keep the repository organized. + +Branches are viewed in Visual Studio for Mac by browsing to **Version Control > Manage Branches and Remotes...**: + +![Branches view](media/version-control-gitBranch2.png) + +Switch to another branch by selecting it in the list and pressing the **Switch to Branch** button. + +To create a new branch select the **New** button in the Git repository configuration dialog. Enter the new branch name: + +![Create new branch](media/version-control-gitBranch.png) + +You can also set a remote branch to your _tracking_ branch. Read more about tracking branches in the [Git documentation](https://git-scm.com/book/en/v2/Git-Branching-Remote-Branches#Tracking-Branches). + +See the current branch in the Solution Pad, next to the project name: + + ![Current branch displayed in solution pad](media/version-control-gitBranchName.png) + +## Reviewing and committing + +To review changes in the files, use the Changes, Blame, Log, and Merge tabs on each document, illustrated earlier in this topic. + +Review all changes in your project by browsing to the **Version Control > Review Solution and Commit** menu item: + +![Review code view](media/version-control-gitReviewCommit.png) + +This allows viewing of all the changes in each file of a project with the option to Revert, Create a Patch, or Commit. + +To commit a file to the remote repository, press **Commit**, enter a commit message, and confirm with the Commit Button: + +![Committing a file](media/version-control-gitCommit.png) + +Once you have committed your changes, push them to the remote repository to allow other users to see them. + +## Related Video + +> [!Video https://channel9.msdn.com/Shows/Visual-Studio-Toolbox/Visual-Studio-for-Mac-Manage-Projects-with-Git/player] + +## See also + +* [Share your code with Visual Studio 2017 and Azure Repos Git](/azure/devops/repos/git/share-your-code-in-git-vs-2017) \ No newline at end of file diff --git a/mac/2017/working-with-subversion.md b/mac/2017/working-with-subversion.md new file mode 100644 index 00000000000..70221ac489a --- /dev/null +++ b/mac/2017/working-with-subversion.md @@ -0,0 +1,54 @@ +--- +title: Working with Subversion +description: Using Subversion in Visual Studio for Mac. +author: conceptdev +ms.author: crdun +ms.date: 05/06/2018 +ms.assetid: 2400ED9C-6236-4C0A-A3AB-9D7CBE1F0CF4 +--- + +# Working with Subversion + +Subversion is the centralized version control system that enables you to check out a single master copy of the centralized data. In contrast to Git, checking out a Subversion repository does not clone the entire repository, it only takes a snapshot at that point in time. + +Subversion uses a copy-modify-merge model to allow users to work on the same repository simultaneously. This means that each user creates a local, or working, copy of the centralized data, which they work on independently. The changes to users working copies are merged in a chronological fashion. + +For example, imagine that User A and User B both check out a copy from the remote repository and they each modify files. User A finishes the modifications and commits them remotely. Before User B commits their work, they must update their working copy with changes from the remote, merging in User A's changes. + +The following sections explore how Subversion can be used for version control in Visual Studio for Mac. + +The following image illustrates the options provided by Visual Studio for Mac by the Version Control menu item: + +![Version Control menu items](media/version-control-svnVersionControlMenu.png) + +## Checkout... + +Before starting to use a remote Subversion repository, check out the repo to create a working copy of that directory on your local machine. + +To find out about using the **Checkout** feature in Visual Studio for Mac, follow the steps in the [Setting up a Subversion repository](set-up-subversion-repository.md) section. + +## Update solution + +When using a remote repository, it's important to remember that other users may be modifying files, making your working copy outdated. In anticipation of conflicts, it's always recommended to pull any changes from the repository into your solution before starting work, and before committing. To do pull changes, select the **Version Control > Update Solution** menu item. + +## Review solution and commit + +To review changes in files, use the Changes, Blame, Log, and Merge tabs on each document, as illustrated in the following image: + +![Version Control Tabs](media/version-control-vcTabs.png) + +Review all changes in a project by browsing the **Version Control > Review Solution and Commit** menu item: + +![Review Solution](media/version-control-vcStatus.png) + +This allows viewing all the changes in each file of a project with the option to Revert, Create Patch, or Commit. + +To commit a file to the remote repository, press Commit..., enter a commit message, and confirm with the Commit Button: + +![Committing a file](media/version-control-svnCommit.png) + +This will send the changes to the repository where they create the new revision of all your modifications. + +## See also + +- [Set up a Subversion repository](set-up-subversion-repository.md) diff --git a/mac/2017/workloads.md b/mac/2017/workloads.md new file mode 100644 index 00000000000..5f673b94634 --- /dev/null +++ b/mac/2017/workloads.md @@ -0,0 +1,35 @@ +--- +title: "Visual Studio for Mac Workloads" +description: "This article describes the various workloads that can be used in Visual Studio for Mac, including Xamarin mobile apps, ASP.NET Core, and Unity for games." +author: conceptdev +ms.author: crdun +ms.date: 12/05/2018 +ms.assetid: DDC39599-8C5D-4CB9-8DA5-229E085384CA +--- +# Visual Studio for Mac Workloads + +Visual Studio for Mac comes pre-installed with workloads for developing the following types of app: + +* Cross-platform mobile apps with .NET using Xamarin, for Android, iOS, tvOS, and watchOS +* Mac desktop apps +* .NET Core apps +* ASP.NET Core Web apps +* Cross-platform Unity games + +## Mobile applications with Xamarin + +Xamarin allows you to create cross-platform mobile apps with .NET for Android, iOS, tvOS, watchOS, and Mac desktop apps. + +For information on using Xamarin in Visual Studio for Mac, refer to the [Xamarin Developer Center](https://developer.xamarin.com/) and check out the Mobile apps [hands-on lab](https://github.com/Microsoft/vs4mac-labs/tree/master/Mobile/Getting-Started). + +## .NET Core applications + +For more information on using .NET Core, refer to the [documentation](/dotnet/core/). + +## ASP.NET Core Web Applications + +For information on getting started using ASP.NET Core in Visual Studio for Mac, refer to the [Getting Started with ASP.NET Core](asp-net-core.md) guide or check out the ASP.NET Core web apps [hands-on lab](https://github.com/Microsoft/vs4mac-labs/tree/master/Web/Getting-Started). + +## Unity game development + +To start building games with Unity, see the [Setup page](setup-vsmac-tools-unity.md) and the [guide to using Unity Tools](using-vsmac-tools-unity.md), or check out the Unity [hands-on lab](https://github.com/Microsoft/vs4mac-labs/tree/master/Unity/Getting-Started). diff --git a/mac/2017/xamarin.md b/mac/2017/xamarin.md new file mode 100644 index 00000000000..9b475547d85 --- /dev/null +++ b/mac/2017/xamarin.md @@ -0,0 +1,56 @@ +--- +title: Xamarin in Visual Studio for Mac +description: "using Xamarin in Visual Studio for Mac allows you to create cross platform applications targeting iOS, Mac, Android, tvOS, and watchOS " +author: conceptdev +ms.author: crdun +ms.date: 02/12/2019 +ms.assetid: 339F6051-5F90-48DC-8237-EBBC8A03A32B +--- + +# Xamarin mobile app development + +First-class support for [Xamarin](/xamarin) allows you to develop rich native experiences for Android, macOS, iOS, tvOS, and watchOS. Xamarin.Forms cross-platform applications help you share XAML-based UI code between Android, iOS, and macOS without limiting access to native functionality. + +## Android + +Visual Studio for Mac has its own integrated Android SDK manager, allowing you access to the SDKs you want your app to target. + +For Android applications, Visual Studio for Mac includes its own designer, which works with Android `.axml` files to +visually construct user interfaces. Visual Studio for Mac will open these files in its Android Designer, as illustrated in the following image: + +![Android UI Designer](media/intro-image31.png) + +For more information on the Android Designer, see the [Xamarin.Android Designer Overview](/xamarin/android/user-interface/android-designer/index) guide. + +## iOS + +The iOS Designer is fully integrated with Visual Studio for Mac and enables visual editing of .xib and Storyboard files to create iOS, tvOS, and WatchOS UIs and transitions. The entire user interface can be built using drag-and-drop functionality between the Toolbox and Design Surface, while using an intuitive approach to handling events. The iOS Designer also supports [custom controls](/xamarin/ios/user-interface/designer/ios-designable-controls-overview) with the added benefit of design-time rendering. + +![iOS Storyboard designer](media/intro-image30.png) + +For more information on using the iOS Designer, see the [Designer](https://docs.microsoft.com/xamarin/ios/user-interface/designer/?tabs=macos) guides. + +### Mac + +Xamarin provides native Mac API bindings that allow you to create beautiful Mac applications. + +For more information on writing Mac applications with Visual Studio for Mac, refer to the [Xamarin.Mac](/xamarin/mac/get-started/index) guides. + +## Xamarin Enterprise features + +> [!Note] +> These products can only be used with a Visual Studio Enterprise subscription. + +### Profiler + +The Xamarin Profiler has three instruments available for profiling. The [Introduction to the Xamarin Profiler](/xamarin/tools/profiler/index?tabs=macos) guide explores what these instruments measure and how they analyze your application, and clarifies the meaning of the data presented on each screen. + +### Inspector + +The Xamarin Inspector provides an interactive C# console with user tools. It can be used as a debugging or diagnostics aid when inspecting live applications, as a teaching tool, as a documentation tool, or an experimentation tool. + +![Xamarin Inspector](media/intro-inspector.png) + +It consists of a standalone application that provides a rich C# console that can target various programming platforms (Android, iOS, Mac, and Windows) and integrate into your IDEs debugging workflow. + +For more information, see the [Xamarin Inspector](/xamarin/tools/inspector/) guide. \ No newline at end of file diff --git a/mac/2019/TOC.md b/mac/2019/TOC.md deleted file mode 100644 index 1efac1eb4d2..00000000000 --- a/mac/2019/TOC.md +++ /dev/null @@ -1,79 +0,0 @@ -# [Visual Studio for Mac](/visualstudio/mac/) -# [IDE Tour](ide-tour.md) - -# [Installation](installation.md) -## [Install and use behind a firewall or proxy](/visualstudio/mac/install-behind-a-firewall-or-proxy-server) -## [Install a preview release](/visualstudio/mac/install-preview) -## [Update](/visualstudio/mac/update) -## [Uninstall](/visualstudio/mac/uninstall) - - -# [User Accounts](/visualstudio/mac/user-accounts) -## [Signing In](/visualstudio/mac/signing-in) -## [Enable Subscription](/visualstudio/mac/enable-subscription) - -# [Customizing the IDE](/visualstudio/mac/customizing-the-ide) -## [Extending Visual Studio for Mac](/visualstudio/mac/extending-visual-studio-mac) - - -# [Projects and Solutions](/visualstudio/mac/projects-and-solutions) -## [Creating new Projects](/visualstudio/mac/create-new-projects) -## [Adding and removing Project Items](/visualstudio/mac/add-and-remove-project-items) -## [Managing Solutions and Project properties](/visualstudio/mac/managing-solutions-and-project-properties) -## [Managing references in a project](/visualstudio/mac/managing-references-in-a-project) -### [Walkthrough - Including a NuGet package in your project](/visualstudio/mac/nuget-walkthrough) -## [Managing App Resources](/visualstudio/mac/managing-app-resources) -## [How to: Open multiple solutions or instances](/visualstudio/mac/open-multiple-solutions) - -# [Source Editor](/visualstudio/mac/source-editor) -## [Refactoring](/visualstudio/mac/refactoring) -## [Comments](/visualstudio/mac/comments) -## [Editor Behavior](/visualstudio/mac/editor-behavior) -## [Task Comments](/visualstudio/mac/task-comments) -## [Snippets](/visualstudio/mac/snippets) -## [Block Selection](/visualstudio/mac/block-selection) -## [Editor Themes](/visualstudio/mac/editor-themes) -## [EditorConfig](/visualstudio/mac/editorconfig) -## [Common Keyboard Shortcuts](/visualstudio/mac/keyboard-shortcuts) - -# [Debugging](/visualstudio/mac/debugging) -## [Data Visualizations](/visualstudio/mac/data-visualizations) - -# [Compiling and Building](/visualstudio/mac/compiling-and-building) -## [Building and Cleaning Projects and Solutions](/visualstudio/mac/building-and-cleaning-projects-and-solutions) -## [Build Actions](/visualstudio/mac/build-actions) -## [Customizing the Build System](/visualstudio/mac/customizing-build-system) -## [Configurations](/visualstudio/mac/configurations) -### [Create and Edit configurations](/visualstudio/mac/create-and-edit-configurations) - -# [Version Control](/visualstudio/mac/version-control) -## [TF Version Control](/visualstudio/mac/tf-version-control) -## [Setting Up a Git Repository](/visualstudio/mac/set-up-git-repository) -## [Working with Git](/visualstudio/mac/working-with-git) -## [Setting Up a Subversion Repository](/visualstudio/mac/set-up-subversion-repository) -## [Working with Subversion](/visualstudio/mac/working-with-subversion) - -# [Web App Deployment](/visualstudio/mac/web-app-deployment.md) -## [Publish to Azure App Service](/visualstudio/mac/publish-app-svc.md) -## [Publish to Folder](/visualstudio/mac/publish-folder.md) - -# [Workloads](/visualstudio/mac/workloads) -## [ASP.NET Core](/visualstudio/mac/asp-net-core) -### [Razor](/visualstudio/mac/razor) -### [Javascript](/visualstudio/mac/javascript) -## [Azure](/visualstudio/mac/azure-workload) -### [Introduction to Azure Functions](/visualstudio/mac/azure-functions) -### [Tutorial: Azure Functions](/visualstudio/mac/azure-functions-lab) -### [Connected Services](/visualstudio/mac/connected-services) -## [Unity Game Development](/visualstudio/mac/unity-tools) -### [Setup](/visualstudio/mac/setup-vsmac-tools-unity) -### [Using Unity Tools](/visualstudio/mac/using-vsmac-tools-unity) -### [Using .NET 4.x in Unity](/visualstudio/mac//visualstudio/cross-platform/unity-scripting-upgrade/?context=visualstudio/mac/context) -### [Change Log](/visualstudio/mac//visualstudio/cross-platform/change-log-visual-studio-tools-for-unity-mac/?context=visualstudio/mac/context) -## [Mobile apps with Xamarin](/visualstudio/mac/xamarin) - -# [Accessibility](/visualstudio/mac/accessibility) - -# [Troubleshooting](/visualstudio/mac/troubleshooting) -## [Visual Studio Customer Experience Improvement Program](/visualstudio/mac/visual-studio-experience-improvement-program) -## [Report a Problem](/visualstudio/mac/report-a-problem) diff --git a/mac/TOC.md b/mac/TOC.md index b58856c8886..f856923fc73 100644 --- a/mac/TOC.md +++ b/mac/TOC.md @@ -1,7 +1,7 @@ # [Visual Studio for Mac](index.yml) -# [IDE Tour](/visualstudio/mac/ide-tour/) +# [IDE Tour](ide-tour.md) -# [Installation](/visualstudio/mac/installation/) +# [Installation](installation.md) ## [Install and use behind a firewall or proxy](install-behind-a-firewall-or-proxy-server.md) ## [Install a preview release](install-preview.md) ## [Update](update.md) diff --git a/mac/docfx.json b/mac/docfx.json index aa97504bf4d..22219edd904 100644 --- a/mac/docfx.json +++ b/mac/docfx.json @@ -18,27 +18,13 @@ ] },{ "group": "vsmac-2019", - "src": "2019", - "files": [ - "**/*.md", - "**/*.yml" - ], - "exclude": [ - "**/obj/**", - "**/includes/**", - "README.md", - "LICENSE", - "LICENSE-CODE", - "ThirdPartyNotices" - ] - },{ + "src": "./", "files": [ "**/*.md", "**/*.yml" ], "exclude": [ "2017/**", - "2019/**", "**/obj/**", "**/includes/**", "README.md", @@ -64,18 +50,7 @@ ] },{ "group": "vsmac-2019", - "src": "2019", - "files": [ - "**/*.png", - "**/*.jpg", - "**/*.svg", - "**/*.gif" - ], - "exclude": [ - "**/obj/**", - "**/includes/**" - ] - },{ + "src": "./", "files": [ "**/*.png", "**/*.jpg", @@ -84,7 +59,6 @@ ], "exclude": [ "2017/**", - "2019/**", "**/obj/**", "**/includes/**" ] @@ -104,7 +78,7 @@ "breadcrumb_path": "~/_breadcrumb/toc.yml", "extendBreadcrumb": true, "manager": "crdun", - "titleSuffix": "Visual Studio for Mac", + "titleSuffix": "Visual Studio 2019 for Mac", "ms.topic": "conceptual", "audience": "developer", "ms.prod": "visual-studio-mac", @@ -116,11 +90,11 @@ "fileMetadata": { "breadcrumb_path": { "2017/**/*.md": "/visualstudio/mac/_breadcrumb/toc.json", - "2019/**/*.md": "/visualstudio/mac/_breadcrumb/toc.json" + "2017/**/*.yml": "/visualstudio/mac/_breadcrumb/toc.json" }, "titleSuffix": { "2017/**/*.md": "Visual Studio 2017 for Mac", - "2019/**/*.md": "Visual Studio 2019 for Mac" + "2017/**/*.yml": "Visual Studio 2017 for Mac" } }, "template": [], diff --git a/mac/2019/ide-tour.md b/mac/ide-tour.md similarity index 100% rename from mac/2019/ide-tour.md rename to mac/ide-tour.md diff --git a/mac/index.yml b/mac/index.yml index 55df254e1c5..8a97e7a5449 100644 --- a/mac/index.yml +++ b/mac/index.yml @@ -1,6 +1,6 @@ ### YamlMime:YamlDocument documentType: LandingData -title: Visual Studio for Mac documentation +title: Visual Studio 2019 for Mac documentation metadata: description: This article introduces the features of Visual Studio for Mac. author: conceptdev @@ -29,11 +29,6 @@ sections: image: src: https://docs.microsoft.com/media/logos/logo_vs-mac.svg title: Tour Visual Studio for Mac - - href: ~/installation.md?view=vsmac-2019 - html:

- image: - src: ~/media/index-2019-preview.png - title: Try 2019 Preview! - title: What apps can I build? items: - type: paragraph diff --git a/mac/install-preview.md b/mac/install-preview.md index 7e8fccfe68e..7f1178fefb0 100644 --- a/mac/install-preview.md +++ b/mac/install-preview.md @@ -10,11 +10,6 @@ ms.assetid: 0E1EF257-9DE4-4653-9DF4-805CE007A1A1 --- # Install a preview release -> [!NOTE] -> Visual Studio 2019 for Mac preview is [now available for installation](/visualstudio/mac/installation/?view=vsmac-2019) and testing. - -## Install an update for Visual Studio for Mac - Before a new version of Visual Studio for Mac is officially released, it's available as a preview. The preview release gives you a chance to try out new features and get the latest bug fixes before they are fully incorporated into the product. Preview releases to Visual Studio for Mac are distributed as an update, rather than through a separate download. Visual Studio for Mac has three updater channels, as described in the [update](update.md) article: Stable, Beta, and Alpha. diff --git a/mac/2019/installation.md b/mac/installation.md similarity index 100% rename from mac/2019/installation.md rename to mac/installation.md diff --git a/mac/2019/media/ide-tour-2019-start-projects.png b/mac/media/ide-tour-2019-start-projects.png similarity index 100% rename from mac/2019/media/ide-tour-2019-start-projects.png rename to mac/media/ide-tour-2019-start-projects.png diff --git a/mac/2019/media/ide-tour-2019-start-signin.png b/mac/media/ide-tour-2019-start-signin.png similarity index 100% rename from mac/2019/media/ide-tour-2019-start-signin.png rename to mac/media/ide-tour-2019-start-signin.png diff --git a/mac/2019/media/ide-tour-image1.png b/mac/media/ide-tour-image1.png similarity index 100% rename from mac/2019/media/ide-tour-image1.png rename to mac/media/ide-tour-image1.png diff --git a/mac/2019/media/ide-tour-image17.png b/mac/media/ide-tour-image17.png similarity index 100% rename from mac/2019/media/ide-tour-image17.png rename to mac/media/ide-tour-image17.png diff --git a/mac/2019/media/ide-tour-image18.png b/mac/media/ide-tour-image18.png similarity index 100% rename from mac/2019/media/ide-tour-image18.png rename to mac/media/ide-tour-image18.png diff --git a/mac/2019/media/ide-tour-image19.png b/mac/media/ide-tour-image19.png similarity index 100% rename from mac/2019/media/ide-tour-image19.png rename to mac/media/ide-tour-image19.png diff --git a/mac/media/ide-tour-image20.png b/mac/media/ide-tour-image20.png new file mode 100644 index 00000000000..130c594cceb Binary files /dev/null and b/mac/media/ide-tour-image20.png differ diff --git a/mac/2019/media/ide-tour-image21.png b/mac/media/ide-tour-image21.png similarity index 100% rename from mac/2019/media/ide-tour-image21.png rename to mac/media/ide-tour-image21.png diff --git a/mac/2019/media/ide-tour-image22.png b/mac/media/ide-tour-image22.png similarity index 100% rename from mac/2019/media/ide-tour-image22.png rename to mac/media/ide-tour-image22.png diff --git a/mac/2019/media/ide-tour-image23.png b/mac/media/ide-tour-image23.png similarity index 100% rename from mac/2019/media/ide-tour-image23.png rename to mac/media/ide-tour-image23.png diff --git a/mac/2019/media/install-preview-checking-sml.png b/mac/media/install-preview-checking-sml.png similarity index 100% rename from mac/2019/media/install-preview-checking-sml.png rename to mac/media/install-preview-checking-sml.png diff --git a/mac/2019/media/install-preview-checking.png b/mac/media/install-preview-checking.png similarity index 100% rename from mac/2019/media/install-preview-checking.png rename to mac/media/install-preview-checking.png diff --git a/mac/2019/media/install-preview-icons-sml.png b/mac/media/install-preview-icons-sml.png similarity index 100% rename from mac/2019/media/install-preview-icons-sml.png rename to mac/media/install-preview-icons-sml.png diff --git a/mac/2019/media/install-preview-icons.png b/mac/media/install-preview-icons.png similarity index 100% rename from mac/2019/media/install-preview-icons.png rename to mac/media/install-preview-icons.png diff --git a/mac/2019/media/install-preview-installer-sml.png b/mac/media/install-preview-installer-sml.png similarity index 100% rename from mac/2019/media/install-preview-installer-sml.png rename to mac/media/install-preview-installer-sml.png diff --git a/mac/2019/media/install-preview-installer.png b/mac/media/install-preview-installer.png similarity index 100% rename from mac/2019/media/install-preview-installer.png rename to mac/media/install-preview-installer.png diff --git a/mac/2019/media/install-preview-older-upgrade.png b/mac/media/install-preview-older-upgrade.png similarity index 100% rename from mac/2019/media/install-preview-older-upgrade.png rename to mac/media/install-preview-older-upgrade.png diff --git a/mac/2019/media/install-preview-privacy-sml.png b/mac/media/install-preview-privacy-sml.png similarity index 100% rename from mac/2019/media/install-preview-privacy-sml.png rename to mac/media/install-preview-privacy-sml.png diff --git a/mac/2019/media/install-preview-privacy.png b/mac/media/install-preview-privacy.png similarity index 100% rename from mac/2019/media/install-preview-privacy.png rename to mac/media/install-preview-privacy.png diff --git a/mac/2019/media/install-preview-selection-sml.png b/mac/media/install-preview-selection-sml.png similarity index 100% rename from mac/2019/media/install-preview-selection-sml.png rename to mac/media/install-preview-selection-sml.png diff --git a/mac/2019/media/install-preview-selection.png b/mac/media/install-preview-selection.png similarity index 100% rename from mac/2019/media/install-preview-selection.png rename to mac/media/install-preview-selection.png diff --git a/subscriptions/TOC.md b/subscriptions/TOC.md index 9bb7e447766..8ab0f672f71 100644 --- a/subscriptions/TOC.md +++ b/subscriptions/TOC.md @@ -68,6 +68,7 @@ #### [Search for a Subscription](search-license.md) #### [Export Subscriptions](exporting-subscriptions.md) #### [Overallocations](handle-overclaimed-license.md) +#### [Maximum Usage](maximum-usage.md) #### [Expired Subscriptions](handle-expired-license.md) #### [Subscribers with Personal Email Sign-ins](personal-email-sign-ins.md) ## Acquiring Visual Studio Subscriptions diff --git a/subscriptions/_img/maximum-usage/maximum-usage-full-report.png b/subscriptions/_img/maximum-usage/maximum-usage-full-report.png new file mode 100644 index 00000000000..ebce42267ab Binary files /dev/null and b/subscriptions/_img/maximum-usage/maximum-usage-full-report.png differ diff --git a/subscriptions/_img/maximum-usage/maximum-usage-menu.png b/subscriptions/_img/maximum-usage/maximum-usage-menu.png new file mode 100644 index 00000000000..2dda9e29b94 Binary files /dev/null and b/subscriptions/_img/maximum-usage/maximum-usage-menu.png differ diff --git a/subscriptions/_img/maximum-usage/maximum-usage-summary.png b/subscriptions/_img/maximum-usage/maximum-usage-summary.png new file mode 100644 index 00000000000..f89cf87d7fd Binary files /dev/null and b/subscriptions/_img/maximum-usage/maximum-usage-summary.png differ diff --git a/subscriptions/maximum-usage.md b/subscriptions/maximum-usage.md new file mode 100644 index 00000000000..3e49682fecf --- /dev/null +++ b/subscriptions/maximum-usage.md @@ -0,0 +1,48 @@ +--- +title: Using the Maximum Usage feature in the Administration Portal +author: evanwindom +ms.author: lank +manager: lank +ms.date: 03/24/2019 +ms.topic: conceptual +description: Learn how to view the maximum number of assigned subscriptions in the admin portal +searchscope: VS Subscription +--- +# Using the Maximum Usage feature to track the number of assigned subscriptions + +A new feature in the Visual Studio subscriptions administration portal helps you track how many subscriptions you've purchased and assigned, and identifies the peak number of subscriptions of each level you've assigned, both within the past year and throughout the duration of your agreement(s). + +## Viewing maximum usage + +To see the peak number of subscriptions assigned for any agreement and subscription level: + +1. Select the agreement you wish to view in the drop-down at the top left of the portal. (If you only have one agreement, it will already be selected.) + +2. Click on the **Maximum Usage** tab. + > [!div class="mx-imgBorder"] + > ![Maximum Usage Menu](_img/maximum-usage/maximum-usage-menu.png) + +3. The "Maximum Usage Summary" will appear, and the maximum number of subscriptions you've assigned within the past year for each level will be displayed, along with the date on which you reached that peak. If you reached that peak more than once, the first time you reached it will be displayed. + > [!div class="mx-imgBorder"] + > ![Maximum Usage Summary](_img/maximum-usage/maximum-usage-summary.png) + +4. To see the maximum number of subscriptions assigned for the life of the agreement, click the **Full-Term** tab. + +## Viewing assignment history + +In addition to seeing the peak assignments for each subscription level, you can see a running account of the activity on the agreement, including purchases and assignments, by clicking the **Export full report** button. + +> [!div class="mx-imgBorder"] +> ![Maximum Usage Full Report](_img/maximum-usage/maximum-usage-full-report.png) + +For each subscription level, the report shows the date you reached a new maximum assignment level and the number of subscriptions you had purchased as of that date, allowing you to easily see any dates where you had overallocations. + +For example, in the table above, you can see that on 12/13/2018 there were 123 Visual Studio Enterprise subscriptions in the agreement, and 120 were assigned. On 1/8/2019, one more subscription was assigned, bringing the total to 121. The next day, another six subscriptions were assigned, and another four subscriptions were added to the agreement to cover the new assignments. + +## Frequently asked questions +### Q: How is the information in the Maximum Usage different from the assignment information available in the "Overview" section on the left side of the portal? + +A: The information in the overview shows the current assignments and available subscriptions for each subscription level. This may be very different from the maximum number of subscriptions assigned for the agreement at any point. The Maximum Usage feature allows you to see when the maximum assignnment levels were reached and what the levels were. This is an important distinction, since billing for subscriptions during true-up is based on the maximum number of subscriptions assigned at any point. + +## Next steps +If you have any questions about subscription assignments or other aspects of the administration portal, please contact https://visualstudio.microsoft.com/subscriptions/support/ for assistance. \ No newline at end of file