Portable visual studio 2017

7++ reasons to move your C++ code to Visual Studio 2017

Whether you are a full-time or occasional C++ developer, whether you are using an older Visual Studio version or are considering using Visual Studio for the first time, this blog post is for you.

In this post I share seven reasons why Visual Studio 2017 should be your first choice of IDE for C++ development (to quickly jump to each section of this blog post, follow the links below):

  1. Take advantage of the latest compiler and Standard Library to write modern, portable C++ code
  2. Leverage the binary compatibility for a pain-free upgrade from Visual Studio 2015
  3. Be on the fastest path to the edit-build-debug inner-loop with the dramatic speedups in startup and project load
  4. Enjoy the productivity enhancements in the developer inner-loop
  5. Easily bring your non-MSBuild C++ projects to Visual Studio
  6. Target any platform including Android, iOS, Linux, and Windows from a single IDE
  7. Streamline your installation of C++ workloads

For those of you that prefer to learn more about this topic in video format, check out the 7++ reasons to move your C++ code to Visual Studio 2017 BUILD breakout session.

#1 Write modern, portable C++ code

There are multiple reasons why we choose C++ when we write code: code portability, runtime performance or low power consumption. At the end of the day, many of us also love writing C++, and it is our desire to better ourselves to write modern C++.

C++ Conformance

Visual Studio 2017 comes with a big update in terms of C++ language conformance. It supplies a close to complete list of new features in the C++11 and C++14 standards. Only three features remain unimplemented: two-phase name lookup from C++98, a conforming preprocessor, and a complete implementation of Expression SFINAE. Visual Studio 2017 also makes great progress towards C++17 with many new compiler and libraries features.

The C++ team will continue its work on C++17 and the C++ compiler rejuvenation effort will bring the missing C++98 features. In addition, Visual Studio 2017 comes with support for several C++ Technical Specifications:

I encourage you to try them all and provide feedback to the Standards body before they become part of the C++ standard.

C++ Core Guidelines, Checkers, and Support Library

If you are looking for guidance on how to write modern C++, a group led by Bjarne Stroustrup created the C++ Core Guidelines with the goal of helping people use modern C++ effectively.

To help with the adoption of the C++ Core Guidelines in your organization, Visual Studio 2017 ships with C++ Code Analysis tools (known as C++ Core Checkers) that validate your code against the guidelines, running bounds checks, type checks (including const checks) and resource management checks and then making suggestions on how to improve your code. The links in each suggestion point to the relevant parts of the guideline document that discuss the specific suggestion.

The C++ Core Checkers go hand-in-hand with the C++ Guideline Support Library, a header-only library that contains helper functions and types suggested by the guidelines to be used in your modern C++ codebase. This library is available as a GitHub repo, a NuGet package, and through VCPkg.

#2 Pain-free upgrade

Moving your C++ code between Visual Studio versions sometimes can create a bit of friction, especially if you are dealing with a large codebase or you depend on 3rd party libraries that haven’t announced their support for the latest MSVC compiler yet. In fact, the primary migration blocker we hear from developers in our surveys is the fact that a 3rd party dependency, either open-source or proprietary, has not yet been migrated.

VC Runtime binary compatibility with Visual Studio 2015

The single most important feature of Visual Studio 2017 if you are upgrading from Visual Studio 2015 is that the new VC Runtime is binary compatible with the VC Runtime shipping in Visual Studio 2015.

What this means in practice is that you can move your code to compile with the latest MSVC compiler and libraries even when your 3rd party dependencies have not yet moved!

VCPkg – acquire and build hundreds of C++ libraries on Windows

If you are depending on an open-source library, chances are you will find it in VCPkg’s list of supported C++ libraries for Visual Studio 2017. VCPkg (video here) has more than 220 open-source C++ libraries readily available.

Acquiring and building a C++ library on Windows has never been easier:

REM Get VCPkg from GitHub

git clone https://github.com/Microsoft/vcpkg.git


REM Bootstrap VCPkg



REM Install 3 libraries: curl, Boost, and GSL

.\vcpkg install curl boost ms-gsl


REM Integrate with Visual Studio

.\vcpkg integrate install


Install MSVC 2015.3 toolset with Visual Studio 2017

If you are only looking to use Visual Studio 2017 without upgrading your VC projects, that is now easier too. In previous releases, you had to install both the latest and the old Visual Studio versions, side-by-side, for the latest IDE to be able to build your projects.

You can now install just the MSVC toolset directly from the Visual Studio 2017 Installer by selecting the “VC++ 2015.3 v140 toolset (x86, x64)” option from the “Desktop development with C++” workload.

Migrating from Visual Studio 2013 or older?

If you are upgrading your C++ projects from Visual Studio 2013 or older, even 2003, you will find that we’ve put significant effort in making the Visual C++ migration documentation as complete and accessible as possible, documenting the compiler and linker errors you might encounter, explaining the reasons behind them and how to address them.

#3 Fastest IDE

When it comes to performance, Visual Studio 2017 brings dramatic performance improvements that vastly change the responsiveness of the IDE, making it truly feel faster:

The IDE now also monitors the performance characteristics of all VS extensions, notifying you in case of slowdowns originating from an extension during IDE startup, solution load, and typing.

#4 Productivity in the developer inner-loop

For many of you, productivity is the main reason you are using Visual Studio. The Visual Studio IDE saves you time in your everyday development when it comes to editing, building, testing, diagnosing as well as committing your code to source control.

Visual Studio 2017 includes a lot of new features as well as many user-suggested enhancements to existing functionality that will bring you unparalleled productivity to your C++ development inner-loop.

Editing & code navigation

The Find All References window has been redesigned from the ground-up to scale to larger result sets with incremental results display, better filtering, sorting, and searching within results. You can now also differentiate between reads vs. writes for fields/variables/parameters.

The Go To window (“Ctrl+,”, previously called Navigate To) becomes the central hub for code navigation by unifying several operations under one roof: ‘go to line’, ‘go to file’, ‘go to type’, ‘go to member’, and ‘go to symbol’.

Predictive IntelliSense uses contextual information to limit the number of results displayed by Member List or AutoComplete List to only those results that are the most obvious candidates for the current code location. This is an experimental feature that you will need to first turn on from Tools > Options > Text Editor > C/C++ > Experimental >> Enable Predictive IntelliSense = True

Before After


Compile-time /diagnostics:caret provides better warning/error messages by including column information as well as source context.

Exception Helper improves a common scenario of debugging and diagnosing a first-chance or unhandled exception by breaking on the line the exception is thrown, displaying summary info about the exception, and performing an access violation analysis (if applicable).

Run to Click makes it a lot easier to debug your code without the need to set temporary breakpoints or use the context menu (to invoke Run to Cursor).

Reattach to Process is a one-click shortcut to reattach to the previously attached process without having to navigate through the Attach to Process dialog every time.

CPU Usage Caller/Callee View allows deeper analysis of the cost of functions calls, directly while debugging.

C++ Unit Testing

Writing unit tests is the perfect way to validate individual components of your code and running them on an ongoing basis avoids regressions. But running the tests on the command line breaks your inner-loop productivity. Visual Studio’s goal is to make this experience as seamless as possible, enabling you to run the tests right after you make edits to your project.

Visual Studio 2017 adds support for Google Test (with Boost.Test coming soon) allowing you to easily create, enumerate and run tests, and optionally measure their code coverage directly from the IDE regardless of the unit test framework you choose to use.

Source control

In addition to the performance improvements for git operations mentioned above, Visual Studio 2017 allows you to do more of your end-to-end workflow without leaving the IDE. You can:

  • perform a force push to complete a release or push an amended commit
  • easily view the diff between two commits
  • unset your upstream branch
  • connect through SSH

In addition, with Visual Studio 2017 and the Continuous Delivery Tools for Visual Studio extension, you can subject every commit to higher scrutiny by reviewing your C++ Code Analysis results before committing.

#5 Bring your C++ sources to Visual Studio with Open Folder

Now, I know that not all of you reading this post are Visual Studio users considering upgrading to the latest version. Some of you may be using other C++ IDEs or editors, considering adopting Visual Studio. But you might think that your codebase (which doesn’t come with .vcxproj and .sln files) is not well suited for loading inside Visual Studio. You might believe that the productivity features that I just outlined for you above couldn’t possibly work with your CMake or makefile project. This next reason addresses exactly your concern.

Visual Studio 2017 supports opening folders containing any code without the need to create solutions or projects (video here). Via “Open Folder”, you will have a more natural way to manage your files regardless of the build system you choose to use or the environment/platform you choose to target. With very little configuration, you get access to all the powerful C++ code understanding, editing, building, and debugging capabilities that you come to expect from Visual Studio with MSBuild projects.

While the out-of-the-box experience today allows you to only target the Windows environment, Visual Studio 2017 will soon add support for MinGW and Cygwin environments as well. To see a sneak peek at the experience, check out this MinGW demo during the C++ Panel at BUILD 2017 (click to jump to 2:20m).

CMake support

If you have a CMake project, you will enjoy the built-in support for CMake in Visual Studio 2017. You can open any folder containing CMakeLists.txt and Visual Studio will automatically start configuring your CMake projects, discover all your CMake targets, and provide you with:

  • accurate C++ IntelliSense when editing based on exactly how your files are being built
  • C++ code navigation and refactoring (rename refactor, extract function, move definition location, change signature, etc.)
  • CMake build integration through either Ninja or Visual Studio generators
  • debugging of any CMake executable targets
  • running CTest tests authored in your CMake projects
  • leverage the latest CMake release 3.8

The experience of developing your CMake projects with Visual Studio should not be limited to only targeting Windows. With that in mind, Visual Studio 2017 will soon expand support to allow targeting Linux with CMake as well. To see a sneak peek at that experience, check out the CMake Linux demo at BUILD 2017 (click to jump to 42:00m).

#6 Target Windows, Android, iOS, and Linux from a single IDE

In addition to C++ development for Windows Desktop and Universal Windows Platform, Visual Studio also comes with support for targeting Linux, Android and iOS. Visual Studio 2017 is the one IDE that allows you to target any platform from a single IDE without having to switch your development box.

Linux targeting

Visual Studio 2017 has built-in support for Linux development, allowing you to very easily connect to remote Linux machines, local or Azure VMs running Linux, and even Windows Subsystem for Linux in Windows 10. The requirements for the remote Linux system are very low: you need an SSH server with gdbserver and a C++ compiler installed. You can also share your C++ code easily with projects targeting other platforms.

Android targeting

Visual Studio 2017 not only supports editing, building, and debugging of C++ code targeting the Android platform, but also editing, building, and debugging Java code. For more details, read our Android and iOS development with C++ guide.

iOS targeting

With Visual Studio, you can import your C++ Xcode projects, benefit from all the C++ productivity improvements Visual Studio 2017 provides, and if needed you can always reopen your projects in Xcode for specific operations like storyboarding or iOS localization that are not directly supported by Visual Studio today.

#7 Streamlined installation

All of this new functionality in Visual Studio 2017 can be acquired via a fresh new installer that organizes the Visual Studio installation options into specific workloads that you can easily choose from. The workloads that are most relevant to C++ developers are:

  • Desktop development with C++
  • Universal Windows Platform development
  • Mobile development with C++
  • Game development with C++
  • Linux development with C++

This new approach has three major benefits:

  • By only installing what you need, Visual Studio’s footprint on disk will be much smaller.
  • With fewer bits to install, the installation time is greatly reduced (e.g. you can install the C++ Desktop workload in under 12 minutes on a good dev box with a good Internet connection).
  • Additionally, you end up with less visual noise inside the IDE from components you usually don’t use.

#7++ You helped build it

And finally, the reason you should use Visual Studio 2017 for your C++ development is that you helped build it!

This release incorporates so many of your suggestions and bug reports that it is hard to imagine how the product would’ve worked without them. Thank you! Visual Studio 2017 addressed UserVoice items that amount to 1,540+ votes and fixed 980+ bugs reported via Connect and through the IDE.

Please report your feedback via UserVoice (for suggestions) and directly in the IDE via Help > Send Feedback > Report A Problem (issues reported are visible at https://developercommunity.visualstudio.com). The Visual Studio team spends a lot of time reading this feedback and incorporating it, one way or the other, into the upcoming releases, so keep it coming.

Get started today

Visual Studio 2017 is the one IDE that gives you the best C++ development experience regardless of the build systems you use (MSBuild, CMake, Ninja, make, etc.), regardless of the C++ libraries you depend on (see vcpkg library manager above), and regardless of the platforms you target (Windows desktop, Linux, etc.)

Download Visual Studio 2017 today and please share your feedback. We hope you’ll enjoy it. Happy coding!

Marian Luparu, Principal Program Manager, Visual C++ [email protected]@visualcMarian is a Product Manager in the Visual Studio team, focusing on C++. He joined the Visual Studio team 11 years ago, after being an avid user of Visual C++ and Visual Studio.


Welcome to Visual Studio 2017

We've got everything you need to create great apps for devices or desktop apps, for the web and in the cloud. Write code for iOS, Android, Linux, Windows, and others in one integrated development environment (IDE). Get great interactive code help (IntelliSense), easy code navigation and debugging, fast builds, and quick deployment. Visual Studio increases your productivity and makes it easy to do your work alone or as part of a larger team.

Download Visual Studio Community for free to start coding right away. If you want to do cross-platform development, make sure to install the optional packages. If you need more features, check out other editions of Visual Studio.

You can install Visual Studio 2017 by downloading it from Visual Studio Downloads. To learn more about the installation process, see Installing Visual Studio 2017. Jump right in, create a new project, or open a code file, and start writing code. Choose the type of app you want to create. Or you can take a tour of the Visual Studio IDE to get more familiar with the tools.

And don't forget to explore our code gallery to find samples to help you write your app more quickly! Check out the many free Visual Studio videos available on Channel 9 and Microsoft Virtual Academy.

Build cross-platform apps and games

You can use Visual Studio to build apps and games for Android, iOS, Linux, Windows, and other devices. Learn more about it at Cross-Platform Mobile Development. Universal Windows Apps help you leverage your code across multiple platforms. See Universal Windows Apps for more information.

Choose the tools you need based on your app requirements and the language you want to use.

Create games using Visual Studio with game development tools such as DirectX, Unity, Unreal, Cocos, and more.

Connect your apps to cloud services

If you have online account services such as Azure, you can connect to them out of the box by using Connected Services.

When you install Visual Studio, you can optionally install the Azure Development workload to get Azure SDK for .NET. These tools enable you to connect to Azure services, as well as letting you create and manage cloud-powered apps and resources directly from the IDE.

  • HockeyApp helps you distribute beta versions, collect live crash reports, and get feedback from real users.

In addition, you can integrate Office 365 REST APIs into your own app to connect to data stored in the cloud. For more information, see these samples.

Write great Web apps with ASP.NET

ASP.NET Core is a major update to MVC, WebAPI and SignalR, and runs on Windows, Mac, and Linux. ASP.NET Core has been designed from the ground up to provide you with a lean and composable .NET stack for building modern cloud-based web apps and services.

Build, test, and manage your code

Check in your code

If you work on a team, you need to share the latest versions of the code so everyone on the team is using the same codebase. Visual Studio seamlessly integrates with Visual Studio Team Services or Team Foundation Server to provide version control with Git or TFVC (Team Foundation Version Control).

Use Visual Studio Team Services to store your code in the cloud with no maintenance of a local server. Use Team Foundation Server if you want to have an on-premises server. Every time you create a code project, you have the option to add it to version control. Learn about which version control system is best for your needs: Choosing the right version control for your project.

Build your app

You can build your app locally and make sure that it works correctly. Then use the debugging tools to fix any issues with your app. Or you can build projects on shared build servers or in the cloud. Automate your build process to build the code that the devs on your team have checked into version control. For example, you can build one or more projects nightly or every time that code is checked in. See Continuous integration on any platform for more information.

Test and improve your app

Create unit tests to improve the quality of your app. These tests can be run every time you check in, and as part of your build.

Plan, create and run manual and automated tests for your app. Test plans, suites, test cases and your test results are stored in the cloud with Visual Studio Team Services or on-premises with Team Foundation Server. Learn more about testing the application.

Diagnose memory and CPU usage and other application-level issues. See Profiling tools for more information.

Deliver your team's code faster

Remove barriers between members of your team and improve collaboration. Go further and automate the release of your app to each stage in your development all the way to production. Monitor your app's performance and availability when live. Collect real-time usage data about how your customers are actually using your app. See DevOps and Application Lifecycle Management for more details.

What's new?

Learn about what's new in Visual Studio.

Extend Visual Studio

Add your own Visual Studio extension to include a tool or script that you often use while coding. You can create custom menu items and tool windows to integrate your own tools into the Visual Studio IDE. You can extend the Visual Studio editor to analyze and fix code, or add a new project type to include just what you need.

To find the latest version of the Visual Studio Extensibility Tools (VS SDK), see Visual Studio SDK.

You can use the .NET Compiler Platform (Roslyn) to write your own code analyzers and code generators. Find everything you need at Roslyn.

Find existing extensions for the VS IDE created by Microsoft developers as well as our development community.


EditorConfig для Visual Studio 2017

Если над проектом работает команда из нескольких человек, то она неизбежно сталкивается с проблемой стиля кодирования. Кто-то скобки расставил по-своему, кому-то больше нравится var вместо указания явного типа, кому-то — наоборот. Чего уж там говорить про open-source проекты, где случайный прохожий может сделать баг-фикс и уйти. Всё это ведет к тому, что стиль кода в проекте сильно разнится в разных его частях.

EditorConfig — это проект, который помогает разработчикам соблюдать единый стиль кода в рамках всего проекта. Visual Studio 2017 — одна из множества сред разработки, которая имеет встроенную поддержку EditorConfig.


Проект EditorConfig можно разделить на две части — формат файла, описывающий правила оформления кода и плагины для среды разработки, которые помогают эти правила соблюдать.

Практически все современные среды разработки имеют либо встроенные средства для поддержки EditorConfig, либо поддерживают EditorConfig за счёт устанавливаемых плагинов:

Чтобы добавить правила для стиля кода, достаточно положить файл .editorconfig в корневую папку вашего проекта. При этом можно изменять эти правила в отдельных подпапках — для этого создаем дополнительный файл .editorconfig в нужной подпапке. Т.е. правила EditorConfig применяются иерархически.

Формат файла .editorconfig напоминает INI-файлы с немного расширванным синтаксисом.

Для корневого файла .editorconfig в самом начале нужно добавить root = true. Символы # и ; позволяют добавить комментарии в файл. Превоначальная заготовка выглядит так:

# Правила EditorConfig для # описания стиля кодирования root = true

Далее следует описание правил. Но перед этим необходимо определить типы файлов, к которым эти правила должны применяться. Типы файлов задаются в стиле INI-секции:

root = true [*] indent_style = space indent_size = 2 [*.cs] indent_size = 4

Как видно, правила для всех файлов задаются в секции [*].

Указать типы файлов можно при помощи специальных шаблонов, при написании которых действуют следующие правила:

  • * — означает множество любых символов, кроме /
  • ** — означает множество любых символов, включая /
  • ? — означает любой единственный символ
  • [name] — явно задает имя файла
  • [!name] — применяется ко всем файлам, кроме указанного
  • {s1,s2,s3} — применяется ко всем файлам, указанным в списке
  • {x..y} — позволяет задать целочисленный диапазон

Вот некоторые примеры описания типа файлов:

  • [*.cs] — все файлы с расширением cs
  • [*.{cs,vb}] — все файлы с расширением cs и vb
  • [Properties/AssemblyInfo.cs] — файл AssemblyInfo.cs из папки Properties
  • [Model/**.js] — все файлы .js из папки Model, включая подпапки
  • [{appsettings.json, appsettings.dev.json, appsettings.test.json}] — файлы из списка


Для каждой секции нужно задать правила. Правила зависят от того, для какого языка программирования вы их пишете.

Правила задаются в следующем формате:

<имя правила> = <значение>

Для C# также можно задавать степень важности правила:

<имя правила> = <значение> : <важность правила>

Задание уровня важности правила позволяет повлиять на поведение компилятора и среды разработки при нарушении правила. Уровень важности может принимать следующие значения:

  • none — нет никакой реакции, если правило было нарушено.
  • suggestion — при нарушении правила в момент сборки проекта появляется рекомендация во вкладке Messages в Error List.
  • warning — при нарушении правила в момент сборки проекта появляется ошибка во вкладке Warnings в Error List. В этом случае сборка останавливается, если установлена опция Treat Warnings as Errors.
  • error — при нарушении правила в момент сборки проекта появляется ошибка во вкладке Errors в Error List и сборка останавливается.

Например, для правила:

[*.cs] csharp_style_var_for_built_in_types = false:warning

Мы увидим только предупреждение в момент сборки, если правило было нарушено.

Но если правило изменить так:

[*.cs] csharp_style_var_for_built_in_types = false:error

То вы не сможете собрать проект, пока ошибка не будет исправлена.

Список наиболее популярных правил можно найти здесь. Для .NET список правил здесь. В качестве примера .editorconfig для .NET можно посмотреть файл команды Roslyn.

Создадим правила для проекта .NET:

root = true [*] # Использовать отсутпы для пробелов indent_style = space # Использовать 4 пробела для отступа indent_size = 4 # Использовать UTF-8 для всех файлов charset = utf-8 # Запретить пробелы в конце строки trim_trailing_whitespace = false # Запретить пустую строку в конце файла insert_final_newline = false [*.cs] # Использовать явное указание простых типов csharp_style_var_for_built_in_types = false:warning # Использовать var когда тип очевиден исходя # из правой части выражения csharp_style_var_when_type_is_apparent = true:warning # Во всех остальный случаях также использовать var csharp_style_var_elsewhere = true:warning # Новая строка перед открывающей скобкой csharp_new_line_before_open_brace = true:error # Новая строка перед членами в анонимных типах csharp_new_line_before_members_in_anonymous_types = true:warning

Если в .editorconfig не указано какое-либо из правил, то считается, что нужно использовать текущие настройки среды разработки.

Visual Studio

Visual Studio 2017 имеет встроенную поддержку EditorConfig, т.е. вы просто можете добавить файл .editorconfig в проект и пользоваться этим инструментом. Для более ранних версий Visual Studio можно воспользоваться расширением EditorConfig.

Важно! Настройки .editorconfig имеют приоритет над настройками среды разработки. Это означает, что если у вас в Visual Studio, например, установлен отступ в 4 символа, а в .editorconfig — два, то среда разработки будет считать, что актуальная настройка — два символа.

При подключении .editorconfig к проекту Visual Studio автоматически подхватит эти настройки. Теперь если вы отформатируете документ при помощи меню Edit → Advanced → Format Document или Ctrl + E, D, то документ будет отформатирован в соответствии с правилами .editorconfig:

Если при сборке проекта какое-то правило нарушено, то вы увидите об этом ошибку:


Visual Studio Code March 2017

Update 1.11.2: Adds the 1.11 translations and addresses these issues.

Update 1.11.1: Fixes these issues.

Downloads: Windows | Mac | Linux 64-bit: .tar.gz .deb .rpm | Linux 32-bit: .tar.gz .deb .rpm


Some users are reporting issues with the new Git integration and the keyboard layout support.

If you like to go back to the previous behavior, you can apply the following workarounds:

  • Git integration - Run the SCM: Disable Preview SCM command.
  • Keyboard layout - Use the setting "keyboard.dispatch": "keyCode".

March Release Summary

Welcome to the March 2017 release of Visual Studio Code. There are a number of significant updates in this version that we hope you will like, some of the key highlights include:

The release notes are arranged in the following sections related to VS Code focus areas. Here are some further updates:

  • Editor - New Git SCM provider enabled by default, better file encoding detection, set the default language mode.
  • Workbench - Quickly navigate between and resize views, reveal editor if already open.
  • Languages - TypeScript 2.2.2, simplified TypeScript server log collection, Objective-C++ support.
  • Debugging - Column breakpoints improvements, additional exception information.
  • Node.js Debugging - Call stacks show async frames, access loaded scripts.
  • Tasks - Extensions can now provide custom tasks and problem matchers.
  • Extension Authoring - Debug extension improvements, increased extension size limit.

Tip: Want to see new features as soon as possible? You can download the nightly Insiders build and try the latest updates as soon as they are available.


Preview: Workbench theming

The first results of the effort on workbench theming are now visible. The built-in themes Abyss, Quiet Light, and Solarized Dark take advantage of new color theming capabilities.

There are still several gaps and we have not finalized the new theme file format. For that reason, there's no documentation and we ask theme authors to not use the new theme format yet.

However, if you want to play around with new colors, use the setting workbench.experimental.colorCustomizations to customize the currently selected theme.

Keyboard shortcuts editor

With this release, VS Code provides a rich and easy keyboard shortcuts editing experience using a new Keyboard Shortcuts editor. You can now find a command and change/remove/reset its key binding easily. Most importantly, you can see key bindings according to your keyboard layout, instead of mapping keys in the earlier json-based key bindings editor to your keyboard layout. The dialog to enter key bindings will assign the correct and desired key binding as per your keyboard layout.

NOTE: For more advanced customizations like editing when clause context of a key binding, you can open the keybindings.json file just like before and edit.

Improved keyboard layout support

On Windows and macOS, we now detect when the keyboard layout has been switched while VS Code is running and will update all keyboard shortcuts appropriately.

On Linux and macOS, we have made significant changes in how keyboard shortcuts are dispatched; we have switched to using the brand new KeyboardEvent.code. This new dispatching logic will result in changes in default keyboard shortcuts for non-US standard keyboard layouts. Unfortunately, due to the indeterminate nature of KeyboardEvent.keyCode on these platforms, we cannot be sure in each case the exact changed keybindings and present a list. In most cases, we expect the impact to be limited to the following built-in actions:

  • Toggle Integrated Terminal
  • Create New Integrated Terminal
  • Zoom in, Zoom out
  • Indent Line, Outdent Line
  • Fold, Unfold
  • Split Editor
  • Toggle Line Comment

You can read more in our wiki or in the plan item.

Note: If you experience issues with KeyboardEvent.code based dispatching on macOS or Linux, you can use the setting "keyboard.dispatch": "keyCode" to force VS Code to dispatch on KeyboardEvent.keyCode.

Text search improvements

Search is now powered by the excellent tool ripgrep, from Andrew Gallant (@BurntSushi), and searching should now be significantly faster. If you encounter an issue and need to revert to the previous search experience, you can set the option "search.useRipgrep": false.

Our ripgrep-based search can now respect .gitignore files as well. Enable it with the new Use Ignore Files button in the Search view, or by default with "search.useIgnoreFilesByDefault": true.

The gear icon next to it is also new, and toggles whether search will ignore the patterns specified in the files.exclude and search.exclude settings.

Maximize and restore the panel size

We have added a maximize/restore button to the panel title area:

New setting to keep editor open even when file is deleted

There is a new setting workbench.editor.closeOnFileDelete that can be set to false to keep editors open even if the file was deleted on disk. Editors will indicate if the file was deleted on disk with their label.

Note: Files that get deleted via the Explorer will still cause the editor to close.

Join editors of two groups

A new command (workbench.action.joinTwoGroups) was added to join the editors of one group with the one to the left. This allows to quickly reduce the number of opened editor groups without losing any of the editors inside.

Navigate between views

New commands have been added to navigate between the visible views of the application. For example, when focus is inside the first editor group, workbench.action.navigateLeft will bring you to the Side Bar. Similar, workbench.action.navigateDown would move focus to the panel.

Resize a view with keyboard

New commands are available to resize the currently focused view with the keyboard. Use workbench.action.increaseViewSize and workbench.action.decreaseViewSize to change the view size in increments.

New setting to reveal editor if opened

A new setting workbench.editor.revealIfOpen can be enabled to prevent opening the same file in another group if the file was already opened. One common scenario is the file picker (Quick Open): by default, it will open a file in the current active Editor Group. Changing this setting will prefer to open the file in any of the other groups in case the file is already opened there.

Note: There are still ways that the same editor will open in multiple groups, for example when you click the split editor action.


Drag and drop improvements

You can now copy selected text instead of moving it when you drag and drop. The experience is the same as you have on your platform. On macOS, press and hold the Option key while you drag and drop. Press the Ctrl key on Windows and press the Alt key on Linux.

When you drag and drop with or without copying the text, the style of the mouse pointer will change accordingly. You will see a + (plus) image when copying.

Git extension enabled

The new Git source control extension is now enabled by default. This Git integration goes through the same extension points as third-party SCM providers. We're still working on the Git extension and if you'd like to go back to the previous version, you can run the SCM: Disable Preview SCM command to switch back.

You can quickly tell if the Git extension is enabled by looking at the Activity Bar icon. The new SCM provider integration will show a merge icon instead of the Git icon:

Turn off occurrences highlight

There is a new option, editor.occurrencesHighlight that can be set to false to turn off highlighting of the selected word or word under cursor in cases where these highlights are computed by a rich language service.

Auto guess encoding of files

You can now let VS Code guess the encoding of a file automatically via the new files.autoGuessEncoding setting which is disabled by default. Once enabled, we will do an attempt at guessing the encoding from the file and use that information if there is a suitable encoding detected.

Note: there are cases where the encoding is detected wrongly or not at all. To have full control over the encoding in the workspace, use the files.encoding setting instead.

On top of that, if you select the encoding picker on a file to change its encoding, we will now present you the guessed encoding (if any) to the top of that list, making it very easy to pick the right encoding in case the file contents are not showing correctly and we can detect the encoding from the contents:

Note: The encoding is guessed, and can be wrong. There is no 100% accurate way to find the encoding from the contents of a file. The only exception is using a BOM (byte order mark) for UTF-8 or UTF-16 files.

More Fuzzy Matching

We have improved the filtering and scoring of suggestions. In addition to prefix and camel-case matching continuous substring matching is supported.

There is no more eager IntelliSense when typing in comments or strings! You can still request completions with Ctrl+Space but quick suggestions, AKA "24x7 IntelliSense", are disabled by default in comments and strings. To tune the suggestions behavior to your needs, we now allow more control over the editor.quickSuggestions setting:

"editor.quickSuggestions": { "comments": false, // <- no 24x7 IntelliSense in comments "strings": true, // but in strings and the other parts of source files "other": true, }

Set the default language for new files

A new setting files.defaultLanguage can be used to set the language mode for new files that are untitled and not saved yet. This setting avoids having to pick the language each time you open a new file if you are often working on the same file type.

Integrated Terminal

Link improvements

The terminal links feature that was introduced last month got some more polish this version. The experience is now aligned with the editor, requiring Ctrl or Cmd to be held depending on your platform.

Also all links are now validated so only links that actually go somewhere will react to user action.

Improved start experience on Windows

Unlike on macOS and Linux with their SHELL environment variable, Windows doesn't really have a reliable alternative. There is COMSPEC but unfortunately it always defaults to the 32-bit variant of Command Prompt and it's seldom modified. To work around this, we've introduced a message when the terminal is first launched on Windows that allows users to select from a set of shells detected on the machine.

Custom workspace shell settings

In VS Code v1.9, we disallowed workspace settings from configuring the terminal shell as it could have potentially been exploited maliciously. We are now re-allowing this but requiring an explicit user opt-in for each workspace before the settings will be picked up.

Warn when closing window with active terminal sessions

The new setting terminal.integrated.confirmOnExit has been added that presents a confirmation dialog when the window is closing with active terminal sessions. This is disabled by default.

Resizing horizontally no longer discards data

Thanks to an upstream PR from Lucian Buzzo, data is no longer discarded when resizing the terminal prompt horizontally.


In this release, we opened up tasks for contributions from extensions. They can contribute problem patterns and problem matchers via the extension's package.json file. These contributions work in both the output panel runner and in the new (not yet the default) terminal runner. Below an example to contribute a problem matcher for the gcc compiler in an extension:

{ "contributes": { "problemMatchers": [ { "name": "gcc", "owner": "cpp", "fileLocation": ["relative", "${workspaceRoot}"], "pattern": { "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", "file": 1, "line": 2, "column": 3, "severity": 4, "message": 5 } } ] } }

This problem matcher can now be used in a tasks.json via a name reference $gcc. An example looks like this:

{ "version": "0.1.0", "command": "gcc", "args": ["-Wall", "helloWorld.c", "-o", "helloWorld"], "problemMatcher": "$gcc" }

We also now allow extensions to contribute tasks to the Run Task Quick Pick list programmatically. This opens VS Code up for use cases where an extension wants to add support for a specific build system and wants to contribute corresponding tasks. An example is the npm extension that can now contribute scripts defined in the package.json as tasks to VS Code programmatically.

Please note the following limitations:

  • Contributed tasks can only be executed in the new terminal runner. To enable the terminal runner, add "version": "2.0.0" to your tasks.json file.
  • The task API is currently in proposed state.

For an example of how to use the API, please refer to VS Code's gulp extension or the proposed API file


TypeScript 2.2.2

VS Code now ships with TypeScript 2.2.2. This release includes a number of important bug fixes and performance improvements. You can find a complete list of changes here.

Implementation CodeLens for TypeScript

We now include a CodeLens that shows the number of implementers of interfaces and abstract classes in TypeScript code.

Clicking on the CodeLens will display a list of all implementations.

This feature is disabled by default and requires TypeScript 2.2.1+. To enable it, add "typescript.implementationsCodeLens.enabled": true to your settings.

Simplified TypeScript server log collection

Added a new "typescript.tsserver.log" setting to simplify the collection of logs from the TypeScript server that powers VS Code's TypeScript and JavaScript language support. These logs can be used to debug issues with JS and TS language support, and make it easier for users to provide these logs during issue investigations.

The new logging experience is supported with TypeScript 2.2.2+. Set "typescript.tsserver.log": "verbose" and reload VS Code to enable logging to a file. Use the "TypeScript: Open TS Server log" command to open the log file in the editor.

Improved support for Objective C++

VS Code now includes an objective-cpp language mode for working with Objective-C++. Previously, .mm files were treated as regular C++. This release also improves syntax coloring of Objective-C++ files.


We have added a top level debug menu with the most common debug commands:

Note: There is a new command (Install Additional Debuggers...) to bring up the Extension view to search for debugger extensions.

Column Breakpoints Improvements

It is now possible to edit multiple breakpoints on a line directly from the glyph margin context menu. Apart from this, there were issues with multiple breakpoints on a line which are now fixed.

More detailed exception experience

The editor's "Peek UI" has been enhanced to show additional information for thrown exceptions, For example, VS Code's built-in Node.js debugging now shows the stack trace:

Since this feature requires some adoption effort by debugger extensions, do not expect to see additional exception information in other debugger extensions immediately.

Node Debugging

Transitioning to the "inspector" protocol

In the February milestone, we folded the two Node.js debuggers ('node' and 'node2') into a single Node.js debugging experience and introduced a new launch configuration attribute protocol to control which protocol to use (for details see the section in the February release notes.

In this milestone, we've changed the default value for protocol from legacy to auto. So if you don't specify the protocol explicitly in your launch configuration, VS Code Node.js debugging will now try to detect the protocol used by the targeted runtime automatically. Since we do not want to switch users to the new "inspector" protocol too aggressively, we will use the new protocol only for 8.x versions of Node.js.

If you experience problems with this automatic protocol switching, you can get back to the old behavior by explicitly setting protocol to legacy.

Async call stacks

When debugging async JavaScript in Node.js or Chrome, we now show the async frames that led to the current call stack across async calls. This is currently only supported when debugging with the inspector protocol via "protocol": "inspector". It can be disabled by setting "showAsyncStacks": false in the launch config.


In this code snippet, fetchData is an async function that returns a Promise. Without async stacks, we can't see the calls that happened before the Promise was resolved:

But with the async call stacks, we can see the full call stack that produced the async call:

Access Loaded Scripts

It is now possible to access the loaded scripts of a JavaScript runtime. This is useful if you need to set a breakpoint in a script that is not part of your workspace and therefore cannot be easily located and opened through normal VS Code file browsing. A typical scenario for this is a remote debugging session: you attach to a remote Node.js program and have no code available locally. See issue #20355 for other scenarios that drove this enhancement.

The Debug: Open Loaded Script action (⌘F4 (Windows, Linux Ctrl+F4)) gives you access to loaded scripts while a debug session is active. In the Quick Pick, you can filter and select the script to open. The script is then loaded into a read-only editor where you can set breakpoints. These breakpoints are remembered across debug sessions but you only have access to the script content while a debug session is running.

Extension Authoring

Source Control

A stable Source Control API was released this month which lets you create source control extensions integrated within VS Code. You can learn all about it in the Source Control in VS Code documentation page.

Some extension developers have already started adopting it:

API Improvements

  • The end of line sequence a document uses (crlf or lf) is now exposed via TextDocument#eol. Also, the TextEdit allows you to change EOL-sequence of a document.
  • We added these new completion item kinds: Constant, Struct, and EnumMember completing the existing Enum kind.

Debug Extensions

  • ExceptionInfoRequest now used by VS Code

If a debug adapter returns a non-falsy supportsExceptionInfoRequest capability, VS Code will now use the ExceptionInfoRequest to obtain additional information for the exception. Currently the attributes exceptionId, exception, breakMode, and details.stackTrace are displayed in VS Code's exception Peek UI.

  • Server mode for debug adapters

VS Code always supported running debug adapters in server mode. However this was only officially supported for developing debug adapters, not for running them in production. With this release, we are starting to support the "server mode" as an official "run mode" for debug adapters. Please find the details for how to use this feature in the original feature request.

  • Changed semantics of StoppedEvent.reason

The semantics of the reason attribute of StoppedEvent has been changed slightly. Previously, it was specified that the reason attribute is shown in the UI (which has the consequence that the value needs to be translated to different languages). This makes it impossible for VS Code to interpret the reason attribute in a robust way. Starting with this release, VS Code uses the new attribute description when the "stopped" reason needs to be shown in the UI and uses the reason attribute to interpret the reason. If description is missing, VS Code falls back to the previous behavior.

  • New attribute presentationHint for StackFrame type

A new optional attribute presentationHint has been added to the StackFrame type which can be used to control how the client renders a stack frame in the UI.

  • Usage example for exception configuration API

The VS Code Mono debugger extension has been enhanced to use the recently introduced exceptionOptions attribute on the SetExceptionBreakpointsRequest for configuring exception catchpoints.

The implementation can serve as an example for how to use the debug adapter protocol (DAP) from an extension to add specific functionality that is not provided by the generic VS Code debugger UI.

Increase Extension Size Limit

In a collaboration with the Visual Studio Marketplace, we've increased the size limit of extensions in the Marketplace from 20MB to 100MB. You'll need to update to [email protected] to benefit from this.


Startup profiling for everyone

We have added a new command line option that allows you to profile the startup of VS Code. Run code like this code --prof-startup and it will create profiles for the main and renderer process. These profiles are stored in your home directory and we encourage you to share them with us. Often performance out in the wild is vastly different from our machines and getting more insights from you will help us improve VS Code.

VS Code currently ships with support for 9 languages: French, Italian, German, Spanish, Russian, Traditional and Simplified Chinese, Japanese, and Korean. In the March release, we started moving the current internal localization process to support the open translation platform called Transifex.

Once this work is done, we will be able to accept translations from the community directly instead of having to submit a bug and wait for us to localize the string(s).  Even more exciting though, this work enables VS Code to be localized by the community into additional languages such as Portuguese and Polish. In fact, we're opening up translations into 8 additional languages: Czech, Dutch, Hungarian, Polish, Portuguese (Brazil and Portugal), Swedish, and Turkish.

If you are passionate about having a high quality VS Code in your native language, please come and help us!  Learn more at the Visual Studio Code Community Localization Project.

New Commands

Key Command Command id
⌘, (Windows, Linux Ctrl+,) Open User Settings openGlobalSettings
Revert and Close Active Editor workbench.action.revertAndCloseActiveEditor
Join Editors of Two Groups workbench.action.joinTwoGroups
Move to the View Part Above workbench.action.navigateUp
Move to the View Part Below workbench.action.navigateDown
Move to the View Part to the Left workbench.action.navigateLeft
Move to the View Part to the Right workbench.action.navigateRight
Increase View Size workbench.action.increaseViewSize
Decrease View Size workbench.action.decreaseViewSize

Notable Changes

  • 12077: File does not reload in editor when quickly changed externally after making modifications
  • 13001: Keep scroll position stable when closing a tab
  • 13665: Improve VS Code when working with network drives
  • 19841: Node debug Step Over/Into hangs in 1.9
  • 20074: VS Code default language extensions override custom language extensions
  • 21948: Auto save no longer works
  • 22900: CPU usage even when idle (due to cursor rendering)
  • 22971: Run the terminal as a login shell by default on macOS
  • 22997: Execute Node.js application in external terminal throws error
  • 23494: Debugger does not work with electron v1.6.x

These are the closed bugs and these are the closed feature requests for the 1.11 update.

Contributions to Extensions

Our team maintains or contributes to a number of VS Code extensions. Most notably:

Thank You

Last but certainly not least, a big Thank You! to the following folks that helped to make VS Code even better:

Contributions to vscode:

Contributions to vscode-chrome-debug-core:

Contributions to language-server-protocol:

Contributions to vscode-languageserver-node:

Contributions to vscode-generator-code:


Download Gratis Microsoft Visual Studio 2017 v15.1.26403.0 Full Version


Download Gratis Microsoft Visual Studio 2017 v15.1.26403.0 Full Version – Microsoft Visual Studio merupakan sebuah software (suite) yang berfungsi untuk membuat aplikasi, seperti aplikasi bisnis maupun personal atau aplikasi lainnya dalam bentuk aplikasi windows, aplikasi web, dan aplikasi console. Terdapat banyak komplier yang dimasukan pada Microsoft Visual Studio 2017 seperti Visual C++, Visual Basic, Visual C#, Visual Basic .NET, Visual J++, Visual J# dan masih banyak lagi. Jika anda tertarik untuk mencoba Microsoft Visual Studio 2017, silahkan anda bisa Download Gratis Microsoft Visual Studio 2017 v15.1.26403.0 Full Version pada link yang telah disediakan.

Download Gratis Microsoft Visual Studio 2017 v15.1.26403.0 Full Version

Single Link (25 GB)
Part Link (@2.5 GB / Part)

Cara Install:

1. Nyalakan Koneksi Internet.

2. Extract file yang telah anda download menggunakan winrar, lalu bukalah folder yang telah anda Extract.

3. Selanjutnya, jalankan file Installer yang bernama “vs_enterprise.exe”.

4. Klik “Continue” dan tunggulah beberapa menit.

5. Silahkan pilih komponen yang ingin anda Install dengan memberikan tanda centang, lalu klik “Install” dan tunggulah sampai proses Instalasi selesai.

6. Jika sudah selesai, silahkan buka softwarenya.

7. Jika disuruh “Sign In”, pilih “Not now, maybe later”.

8. Pilih warna tema yang anda sukai, lalu klik “Start Visual Studio” dan tunggulah beberapa menit.

9. Pada software interface “Visual Studio 2017”, klik pada menu “Help”, lalu pilih “Register Product”.

10. Klik “Unlock with a Product Key”, lalu masukan Serial Number yang ada di bawah ini (Sesuaikan dengan tipe Visual Studio 2017 yang anda install).


11. Klik “Apply”.

12. Selesai ^_^


+ Jika saat menginstall terdapat notifikasi “Setup completed with warnings”, abaikan saja.

System Requirements

Sistem Operasi: 

  • Windows 10 version 1507 atau lebih tinggi: Home, Professional, Education & Enterprise (LTSB tidak support)
  • Windows Server 2016: Standard & Datacenter
  • Windows 8.1 (dengan Update 2919355): Basic, Professional & Enterprise
  • Windows Server 2012 R2 (dengan Update 2919355): Essentials, Standard, Datacenter
  • Windows 7 SP1 (dengan Windows Updates terbaru): Home Premium, Professional, Enterprise, Ultimate


  • 1.8 GHz atau lebih cepat. Dual-core atau lebih tinggi yang direkomendasikan.
  • 2 GB RAM (Rekomendasi 4 GB RAM) (Minimal 2.5 GB RAM jika di jalankan pada Virtual Machine)
  • Hard disk: 1GB – 40GB, Tergantung fitur yang terpasang.
  • Video card support minimal resolusi 720p (1280 by 720), Visual Studio akan bekerja lebih baik pada resolusi WXGA (1366 by 768) atau lebih tinggi.


Supported Languages

English, Chinese (Simplified), Chinese (Traditional), Czech, French, German, Italian, Japanese, Korean, Polish, Portuguese (Brazil), Russian, Spanish, Turkish

Anda dapat memilih bahasa Visual Studio selama instalasi. Pemasang Visual Studio tersedia dalam empat bahasa yang sama, dan akan cocok dengan bahasa Windows, jika tersedia.

Note: Visual Studio Team Foundation Server Office Integration 2017 Tersedia dalam sepuluh bahasa yang didukung oleh Visual Studio Team Foundation Server 2017.

Additional Requirements

  • .NET Framework 4.5 Diperlukan untuk menginstal Visual Studio. Visual Studio membutuhkan .NET Framework 4.6.1, yang akan diinstal saat proses setup.
  • Edisi Windows 10 Enterprise LTSB tidak didukung untuk pengembangan. Anda bisa menggunakan Visual Studio 2017 untuk membangun aplikasi yang berjalan di Windows 10 LTSB.
  • Internet Explorer 11 atau Edge diperlukan untuk skenario yang terkait dengan internet. Beberapa fitur mungkin tidak berfungsi kecuali jika ini, atau versi yang lebih baru, diinstal.
  • Untuk dukungan emulator, diperlukan edisi Windows 8.1 Pro atau Enterprise (x64). Prosesor yang mendukung Client Hyper-V dan Second Level Address Translation (SLAT) juga diperlukan.
  • Universal Windows app development, termasuk merancang, mengedit, dan debugging, membutuhkan Windows 10. Windows Server 2016 dan Windows Server 2012 R2 dapat digunakan untuk membuat aplikasi Universal Windows dari baris perintah (Command Line).
  • Opsi Server Core dan Minimal Server Interface tidak didukung saat menjalankan Windows Server.
  • Team Foundation Server 2017 Office Integration membutuhkan Office 2016, Office 2013, atau Office 2010.
  • Xamarin.Android membutuhkan edisi Windows 64-Bit dan 64-bit Java Development Kit (JDK).
  • PowerShell 3.0 atau lebih tinggi membutuhkan Windows 7 SP1 untuk menginstall the Mobile Development dengan C++, JavaScript, atau .NET workloads.


Note: Info lebih lanjut, silahkan baca disini => System Requirements Microsoft Visual Studio 2017

What’s New?

  • Build smarter apps, fast
  • Find and fix bugs sooner
  • Integrate with the cloud
  • Collaborate efficiently
  • Deliver quality mobile apps
  • Level up your language
  • Craft your ideal IDE
  • Optimized for performance
  • Deliver software faster
  • Stay ahead of the curve

Note: Baca lebih lanjut disini => What’s New in Microsoft Visual Studio 2017




Terima kasih anda telah mengunjungi website ini dan telah “Download Gratis Microsoft Visual Studio 2017 v15.1.26403.0 Full Version”. Jangan lupa, untuk terus mengunjungi website ini, karena website ini akan terus melakukan update Software & Game Terbaru.

Bingung Cara Download nya?

Bagi anda yang bingung cara mendownload nya atau lebih tepatnya bingung cara melewati Safelink dan ouo.io. Silahkan baca artikel berikut ini => Cara Melewati Safelink & Ouo.io di Ipeenk Downloader

Cara Mengatasi Google Drive Limit Kuota (Tidak Bisa Download File Di Google Drive)

Terima kasih dan mohon maaf atas ketidaknyaman nya

Gagal Menginstal? atau Link Mati? Hubungi Kami di FACEBOOK


Xamarin Forms | Создание проекта

Создание и настройка проекта в Visual Studio

Последнее обновление: 18.03.2017

Для создания кроссплатформенных приложений для Xamarin Forms в Visual Studio 2017 имеется неколько типов проектов. Все эти типы проектов можно найти в секции Cross-Platform:

  • Cross Platform App (Xamarin.Forms or Native): данный шаблон создает несколько проектов, один из которых предназначен для создания общей библиотеки dll со всей логикой. А остальные проекты для разных мобильных платформ используют эту dll.

  • Class Library (Xamarin.Forms): проект для создания библиотеки dll, которую затем могут использовать проекты для конкретных мобильных ОС.

  • UI Test App (Xamarin.UI Test | Cross-Platform): проект для тестирования вышеперечисленных проектов Xamarin Forms

То есть для создания проекта приложения нам по сути надо выбрать первый тип проекта.

Итак, создадим первый проект. Для него выберем тип Cross Platform App (Xamarin.Forms or Native) и назовем его, к примеру, HelloApp:

После этого будет предложено выбрать шаблон проекта и установить ряд настроек:

Здесь нам доступно два шаблона:

  • Blank App: пустой шаблон, создающий проект с минимальной функциональностью

  • Master Detail: проект для специально для тех случаев, когда должна быть функциональность для представления списка объектов и функциональность для вывода информации по каждому отдельному элементу списка

Кроме того, здесь мы можем настроить две опции. Опция UI Technology указывает, какая технология будет использоваться для построения визуального интерфейса. В данном случае нас интересует только пункт Xamarin.Forms.

Вторая опция Code Sharing Strategy определяет формат создания общего кода для всех мобильных платформ. Здесь доступны две возможности Portable Class Library (PCL) (данный шаблон создает несколько проектов, один из которых предназначен для создания общей библиотеки dll со всей логикой, а остальные проекты для разных мобильных платформ используют эту dll) и Shared Project (данный шаблон также создает несколько проектов по одному для каждой ОС, но теперь все они используют набор общих файлов). Далее мы рассмотрим, в чем между ними разница.

В данном случае в качестве шаблона проекта выберем Blank App, а в качестве стратегии написания кода Portable Class Library (PCL).

При создании проекта в Visual Studio 2017 в ОС Windows 10 будет предложено настроить минимальную и целевую версию UWP:

Можно оставить эти установки по умолчанию и нажать OK.

И Visual Studio сгенерирует новое решение, в которой будет четыре проекта:

  • HelloApp (Portable): главный проект библиотеки, которая и будет содержать всю основную логику приложения

  • HelloApp.Droid: проект для Android

  • HelloApp.iOS: проект для iOS

  • HelloApp.UWP: проект для Windows 10

Однако в зависимости от операционной системы набор проектов может быть иным. Например, при работае в Xamarin Studio на Mac OS X будут достуны только три проекта: общий проект библиотеки, проект для iOS и проект для Android. В данном случае же у меня Windows 10, поэтому к ним еще добавляются проекты для Windows.

Главным будет самый верхний проект (в данном случае HelloApp (Portable)). Он будет содержать весь код и определение интерфейса, которую затем будут использовать все остальные проекты.

Если мы обратимся к главному проекту, то в нем уже будет четыре основных файла:

Основные файлы, которые определены в главном проекте:

  • App.xaml: файл, который определяет ресурсы, общие для всего приложения

  • App.xaml.cs: файл с кодом C#, с которого начинается выполнене приложения

  • MainPage.xaml: файл с визуальным интерфейсом для единственной страницы MainPage в виде xaml

  • MainPage.xaml.cs: файл, который содержит логику MainPage на языке C#

В принципе при организации главного проекта используется та же схема, что и при создании проектов WPF/UWP: есть файлы, которые определяют логику всего приложения - App.xaml и App.xaml.cs и есть файлы с интерфейсом и логикой единственной страницы приложения - MainPage.


Смотрите также