Visual studio 2017 java

Visual Studio 2017 Redistribution

On this Page

Note: In the lists below,

  • [arch] represents the processor architecture identifier, for instance "x86", "x64", or "arm".
  • [locale] represents a specific language, locale, or culture identifier, for instance "ENU", "en-us", or "1033".
  • [version] represents a folder name that uses a version number.
  • [VisualStudioFolder] represents the install location for Visual Studio 2017.


Click the button to download the latest version of Visual Studio 2017. For instructions, see Install Visual Studio 2017.

Note: Installation package size will vary depending on your current Visual Studio configuration.

Distributable Code Files for Visual Studio 2017

The following section is the "REDIST list" that is referenced in the "Distributable Code" section of the Microsoft Software License Terms for Visual Studio Enterprise 2017, Visual Studio Professional 2017, Visual Studio Community 2017 ("the software"). If you have a validly licensed copy of such software, you may copy and distribute with your program the unmodified form of the files listed below, subject to the License Terms for the software.

ASP.NET Libraries

The following software components are licensed and supported separately under the Microsoft .NET Library terms located at If you do not agree to the license terms for these software components, you may not use them.

  • MVC
  • Web API
  • Web Pages with Razor
  • Entity Framework
  • SignalR
  • Katana
  • Microsoft XML Document Transformation

Microsoft Azure

  • MobileServices.js
  • MobileServices.min.js
Object Code
  • Microsoft.WindowsAzure.Mobile.dll
  • Microsoft.WindowsAzure.Mobile.resources.dll
  • Microsoft.WindowsAzure.Mobile.UI.dll
  • Microsoft.WindowsAzure.Ext.dll

Blend and XAML Designers for Visual Studio

Redistributable files for Blend Project and Item Templates for Visual Studio are installed in the following locations:

  • [VisualStudioFolder]\Common7\IDE\ProjectTemplates
  • [VisualStudioFolder]\Common7\IDE\ItemTemplates
  • [VisualStudioFolder]\DesignTools\AppThemes
  • [Program Files (x86)]\MSBuild\Microsoft\Expression\Blend\.NETFramework
Blend for Visual Studio

Redistributable files for Blend for Visual Studio are installed in the following locations:

  • [Program Files (x86)]\Microsoft SDKs\Expression\Blend\.NETFramework\v4.0
  • [Program Files (x86)]\Microsoft SDKs\Expression\Blend\.NETFramework\v4.5
Sample Data Resources
  • [VisualStudioFolder]\DesignTools\SampleData

.NET Framework 4.6.2

Subject to the License Terms for the software, you may copy and distribute the following files, unmodified, with your program:

Offline Installer
  • dotNetFx-x86-x64-AllOS-ENU.exe (.NET Framework 4.6.2 as present in Visual Studio)
  • NDP462-KB3151800-x86-x64-AllOS-ENU.exe (.NET Framework 4.6.2 as present on other channels, such as the Microsoft Download Center)

Note: Both files are identical but may use different names for different distribution channels.

Language Packs
  • dotNetFx-x86-x64-AllOS-[locale].exe
  • NDP462-KB3151800-x86-x64-AllOS-[locale].exe


  • Both files are identical but may use different names for different distribution channels.
  • [locale] represents the specific three-letter language identifier. For instance, NDP462-KB3151800-x86-x64-AllOS-DEU.exe
    • Language Packs are available for the following (listed here with their associated identifier code): Arabic (ARA), Chinese-Taiwan (CHT), Czech (CSY), Danish (DAN), German (DEU), Greek (ELL), Finnish (FIN), French (FRA), Hebrew (HEB), Hungarian (HUN), Italian (ITA), Japanese (JPN), Korean (KOR), Dutch-Netherlands (NLD), Norwegian (NOR), Polish (PLK), Portuguese-Brazil (PTB), Russian (RUS), Swedish (SVE), Turkish (TRK), Chinese (CHS), Portuguese-Portugal (PTG), Spanish (ESN)

F# Runtime


Subject to the License Terms for the software, you may copy and distribute the following files, unmodified, with your program:

  • System.Data.dll
  • System.Data.DatasetExtensions.dll
  • System.Data.OracleClient.dll
  • Adonetdiag.dll


Subject to the License Terms for the software, you may copy and distribute the following files, unmodified, with your program:

  • [VisualStudioFolder]\DIA SDK\bin\msdia140.dll
  • [VisualStudioFolder]\DIA SDK\bin\amd64\msdia140.dll
  • [VisualStudioFolder]\DIA SDK\bin\arm\msdia140.dll

Visual C++ Runtime Files

Subject to the License Terms for the software, you may copy and distribute the following files, unmodified, as a part of the installation package of your program:

  • [Program Files (x86)]\Common Files\Merge Modules\
    • Microsoft_VC140_CRT_[arch].msm
    • Microsoft_VC140_CXXAMP_[arch].msm
    • Microsoft_VC140_MFC_[arch].msm
    • Microsoft_VC140_MFCLOC_[arch].msm
    • Microsoft_VC140_OpenMP_[arch].msm

Subject to the License Terms for the software, you may copy and distribute with your program any of the files within the following folder and its subfolders except as noted below. You may not modify these files.

  • [VisualStudioFolder]\VC\redist
  • You may not distribute the contents of the following folders:
    • [VisualStudioFolder]VC\Redist\MSVC\[version]\debug_nonredist
    • [VisualStudioFolder]VC\Redist\MSVC\[version]\debug_nonredist
    • [VisualStudioFolder]\VC\Redist\MSVC\[version]\onecore\debug_nonredist

Subject to the License Terms for the software, you may copy and distribute the following files with your program in your program’s application local folder or by deploying them into the Global Assembly Cache (GAC):

  • [VisualStudioFolder]\VC\Tools\MSVC\[version]\atlmfc\lib\[arch]\mfcmifc80.dll

Universal Windows Apps and Windows Store Apps

Side-loading of Universal Windows Apps

The AppX files contained in the following locations may be distributed unmodified with your Universal Windows apps that you intend to side-load:

  • [Program Files (x86)]\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs\14.0\Appx\Retail\[arch]\Microsoft.VCLibs.[arch].14.00.appx
  • [Program Files (x86)]\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.120\14.0\Appx\Retail\[arch]\Microsoft.VCLibs.[arch].12.00.Universal.appx
  • [Program Files (x86)]\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.NET.Native.Framework.1.3\1.3\[arch]\ret\Native\Microsoft.NET.Native.Framework.1.3.appx
  • [Program Files (x86)]\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.NET.Native.Runtime.1.4\1.4\AppX\[arch]\Microsoft.NET.Native.Runtime.1.4.appx
  • For additional versions of .NET Native, see

The files contained in the following locations may be distributed unmodified with your Universal Windows apps that you intend to side-load:

  • [Program Files (x86)]\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\CppUnitTestFramework.Universal\15.0\Redist\CommonConfiguration
  • [Program Files (x86)]\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\MSTestFramework.Universal\15.0\Redist\CommonConfiguration
  • [Program Files (x86)]\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\TestPlatform.Universal\15.0\Redist\CommonConfiguration

SQL Server Database Tooling files

Subject to the License Terms for the software, you may copy and distribute the .dll files and .exe files, unmodified, in this folder with your program:

  • [VisualStudioFolder]Common7\IDE\Extensions\Microsoft\SQLDB\DAC\120
  • [VisualStudioFolder]Common7\IDE\Extensions\Microsoft\SQLDB\DAC\130

SQL Server Redistributable Components

Subject to the License Terms for the software, you may copy and distribute the following files, unmodified, with your program:

  • SqlCmdLnUtils.msi
  • sqlncli.msi
  • SSCERuntime_x64-enu.exe
  • SSCERuntime_x86-enu.exe
  • sqllocaldb.msi
  • SharedManagementObjects.msi
  • SqlDom.msi
  • SQLSysClrTypes.msi
  • TSqlLanguageService.msi

Microsoft WCF Data Services files

Subject to the License Terms for the software, you may copy and distribute the following files, unmodified, with your program:

  • Microsoft.Data.Services.dll
  • Microsoft.Data.Services.Client.dll
  • Microsoft.Data.OData.dll
  • Microsoft.Data.Edm.dll
  • System.Spatial.dll

Microsoft Visual Studio Tools for Office

Subject to the License Terms for the software, you may copy and distribute the following files, unmodified, with your program:

  • Microsoft.Office.Tools.Common.v4.0.Utilities.dll
  • Microsoft.Office.Tools.Excel.v4.0.Utilities.dll
  • Microsoft.Office.Tools.Outlook.v4.0.Utilities.dll
  • Microsoft.Office.Tools.Word.v4.0.Utilities.dll

Subject to the License Terms for the software, you may copy and distribute the following files with your program:

  • setup.exe (bootstrapper used to install Office Add-ins)

Distributable Code Files for the Concurrency Visualizer Software Development Kit

Subject to the License Terms for the software, you may copy and distribute the following files, unmodified, with your program:

  • Microsoft.ConcurrencyVisualizer.Markers.dll (for .NET 3.5)
  • Microsoft.ConcurrencyVisualizer.Markers.dll (for .NET 4.0)
  • cvmarkers.h
  • cvmarkersobj.h

Distributable Code Files for Visual Studio extension development

This is the "REDIST list" that is referenced in the "Distributable Code" section of the Microsoft Software License Terms for Visual Studio 2017 ("the software"). If you have a validly licensed copy of the software, you may copy and distribute the unmodified object code form of the files listed below, subject to the License Terms for the software.

  • [VisualStudioFolder]\VSSDK\VisualStudioIntegration\Redistributables\VS150_piaredist.exe
  • [VisualStudioFolder]\VSSDK\VisualStudioIntegration\Redistributables\VSSDKTestHost.exe

List of Utilities for Visual Studio 2017

This is the “Utilities List” that is referenced in the “Utilities” section of Microsoft Software License Terms for certain editions of Visual Studio 2017 (the “software”). Depending on the specific edition of the software, the software you received may not include all of the files on this list. To determine your rights with respect to the following files, please refer to the Visual Studio License Terms that came with your edition of the software. You may not modify these files.

IntelliTrace Standalone Collector for Visual Studio 2017

Visual C++ Utilities

The "Utilities List" includes the following files within in the subfolders of the directories specified:

  • [VisualStudioFolder]\VC\Auxiliary\VS\redist\GraphicsDbgRedist\
    • VsGraphicsHelper.dll
    • VsGraphicsResources.dll
  • [VisualStudioFolder]\VC\Redist\MSVC\[version]\debug_nonredist\
    • concrt140d.dll
    • mfc140ud.dll
    • mfcm140ud.dll
    • msvcp140d.dll
    • vcamp140d.dll
    • vccorlib140d.dll
    • vcomp140d.dll
    • vcruntime140d.dll
  • [VisualStudioFolder]\VC\Tools\MSVC\[version]\bin\
    • pgort140.dll
    • pgort140ui.dll
    • pgosweep.exe

List of Build Server Files for Visual Studio 2017

This is the "Build Server List" that is referenced in the "Build Server" section of the Microsoft Software License Terms for certain editions of Visual Studio 2017 (the "software"). To determine your rights with respect to the following files, please refer to the License Terms that came with your edition of the software.

SharePoint Tooling for Visual Studio


  • Microsoft.VisualStudio.SharePoint.targets
  • Microsoft.VisualStudio.SharePoint.Tasks.dll


  • PrivateAssemblies\Microsoft.VisualStudio.SharePoint.Designers.Models.dll
  • PrivateAssemblies\Microsoft.VisualStudio.SharePoint.Designers.Models.Features.dll
  • PrivateAssemblies\Microsoft.VisualStudio.SharePoint.Designers.Models.Packages.dll
  • PublicAssemblies\Microsoft.VisualStudio.SharePoint.dll

Visual C++ Build Server files

Any of the files within the following folders and their subfolders.

  • Program Files\Common Files\Merge Modules
  • [VisualStudioFolder]\VC\
  • [VisualStudioFolder]\Common7\IDE\VC\VCTargets
  • [VisualStudioFolder]\Common7\Tools\vsdevcmd
  • [Program Files (x86)]\Microsoft Visual Studio\Shared\14.0\VC
  • [Program Files (x86)]\MSBuild\Microsoft.Cpp\v4.0\V140\

Individual Files

  • [VisualStudioFolder]\Common7\IDE\msobj120.dll
  • [VisualStudioFolder]\Common7\IDE\msobj140.dll
  • [VisualStudioFolder]\Common7\IDE\msvcdis120.dll
  • [VisualStudioFolder]\Common7\IDE\msvcdis140.dll
  • [VisualStudioFolder]\Common7\Tools\makehm.exe
  • [VisualStudioFolder]\Common7\Tools\VsDevCmd.bat

Distributable Code Files for Application Insights for Visual Studio 2017

Subject to the License Terms for the software, you may copy and distribute the following files, unmodified, with your program built with Visual Studio 2017:

  • Microsoft.ApplicationInsights.2.0.0.nupkg
  • Microsoft.ApplicationInsights.Agent.Intercept.1.2.1.nupkg
  • Microsoft.ApplicationInsights.AspNet.1.0.0-rc1-update4.nupkg
  • Microsoft.ApplicationInsights.AspNetCore.1.0.0-rc2-final.nupkg
  • Microsoft.ApplicationInsights.DependencyCollector.2.0.0.nupkg
  • Microsoft.ApplicationInsights.JavaScript.0.22.9-build00167.nupkg
  • Microsoft.ApplicationInsights.PerfCounterCollector.2.0.0.nupkg
  • Microsoft.ApplicationInsights.Web.2.0.0.nupkg
  • Microsoft.ApplicationInsights.WindowsServer.2.0.0.nupkg
  • Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.2.0.0.nupkg
  • Microsoft.Bcl.Async.1.0.168.nupkg
  • Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.24.nupkg

Distributable Code Files for Mobile Development with Xamarin

Subject to the License Terms for the software, you may copy and distribute with your application built using Visual Studio or Visual Studio for Mac the object code form of the following files (and associated debug symbol files) as installed within subfolders of the following directories:

On macOS® operating system:

  • /Library/Frameworks/Xamarin.iOS.framework
  • /Library/Frameworks/Xamarin.Android.framework
  • /Library/Frameworks/Xamarin.Mac.framework

On Windows operating system:

  • [VisualStudioFolder]\MSBuild\Xamarin,
  • [VisualStudioFolder]\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid,
  • [VisualStudioFolder]\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoTouch,
  • [VisualStudioFolder]\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\Xamarin.iOS,
  • [VisualStudioFolder]\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\Xamarin.Mac,
  • [VisualStudioFolder]\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\Xamarin.TVOS, or
  • [VisualStudioFolder]\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\Xamarin.WatchOS
Xamarin Distributable Code Files:
  • FSharp.Compiler.CodeDom.dll
  • FSharp.Core.dll
  • FSharp.Core.optdata
  • FSharp.Core.sigdata
  • FSharp.Core.xml
  • I18N.CJK.dll
  • I18N.dll
  • I18N.MidEast.dll
  • I18N.Other.dll
  • I18N.Rare.dll
  • I18N.West.dll
  • Info.plist
  • Ionic.Zip.dll
  • Irony.dll
  • Java.Interop.dll
  • Java.Interop.Tools.Cecil.dll
  • Java.Interop.Tools.Diagnostics.dll
  • Java.Interop.Tools.JavaCallableWrappers.dll
  • libapp.a
  • libextension.a
  • libmono-2.0.a
  • libmono-2.0.dylib
  • libmono-android.debug.d.dylib
  • libmono-android.debug.dylib
  • libmono-android.release.d.dylib
  • libmono-android.release.dylib
  • libMonoPosixHelper.d.dylib
  • libMonoPosixHelper.dylib
  • libmono-profiler-log.a
  • libmono-profiler-log.d.dylib
  • libmono-profiler-log.dylib
  • libmonosgen-2.0.a
  • libmonosgen-2.0.d.dylib
  • libmonosgen-2.0.dylib
  • libtvextension.a
  • libwatchextension.a
  • libxamarin.a
  • libxamarin.dylib
  • libxamarin-debug.a
  • libxamarin-debug.dylib
  • libxammac.a
  • libxammac.dylib
  • libxammac-debug.a
  • libxammac-debug.dylib
  • libxammac-system.a
  • libxammac-system-debug.a
  • libzip.3.0.dylib
  • libZipSharp.dll
  • libZipSharp.dll.config
  • machine.config
  • Microsoft.CSharp.dll
  • Microsoft.Win32.Primitives.dll
  • Microsoft.Win32.Registry.AccessControl.dll
  • Microsoft.Win32.Registry.dll
  • Mono
  • Mono.Android.dll
  • Mono.Android.Export.dll
  • Mono.Btls.Interface.dll
  • Mono.CompilerServices.SymbolWriter.dll
  • Mono.CSharp.dll
  • Mono.Data.Sqlite.dll
  • Mono.Data.Sqlite.dll.config
  • Mono.Data.Tds.dll
  • Mono.Messaging.dll
  • Mono.Posix.dll
  • Mono.Security.dll
  • MonoTouch.Dialog-1.dll
  • monotouch.dll
  • MonoTouch.NUnitLite.dll
  • monotouch-fixes.dylib
  • mscorlib.dll
  • netstandard.dll
  • OpenTK.dll
  • OpenTK.dll.config
  • OpenTK-1.0.dll
  • OpenTK-1.0.dll.config
  • System.AppContext.dll
  • System.Collections.Concurrent.dll
  • System.Collections.dll
  • System.Collections.NonGeneric.dll
  • System.Collections.Specialized.dll
  • System.ComponentModel.Annotations.dll
  • System.ComponentModel.Composition.dll
  • System.ComponentModel.DataAnnotations.dll
  • System.ComponentModel.dll
  • System.ComponentModel.EventBasedAsync.dll
  • System.ComponentModel.Primitives.dll
  • System.ComponentModel.TypeConverter.dll
  • System.config
  • System.Configuration.dll
  • System.Configuration.Install.dll
  • System.Console.dll
  • System.Core.dll
  • System.Data.Common.dll
  • System.Data.dll
  • System.Data.Linq.dll
  • System.Data.Services.Client.dll
  • System.Data.SqlClient.dll
  • System.Diagnostics.Contracts.dll
  • System.Diagnostics.Debug.dll
  • System.Diagnostics.FileVersionInfo.dll
  • System.Diagnostics.Process.dll
  • System.Diagnostics.StackTrace.dll
  • System.Diagnostics.TextWriterTraceListener.dll
  • System.Diagnostics.Tools.dll
  • System.Diagnostics.TraceEvent.dll
  • System.Diagnostics.TraceSource.dll
  • System.Diagnostics.Tracing.dll
  • System.dll
  • System.Drawing.Primitives.dll
  • System.Dynamic.Runtime.dll
  • System.EnterpriseServices.dll
  • System.Globalization.Calendars.dll
  • System.Globalization.dll
  • System.Globalization.Extensions.dll
  • System.IdentityModel.dll
  • System.IdentityModel.Selectors.dll
  • System.IO.Compression.dll
  • System.IO.Compression.FileSystem.dll
  • System.IO.Compression.ZipFile.dll
  • System.IO.dll
  • System.IO.FileSystem.AccessControl.dll
  • System.IO.FileSystem.dll
  • System.IO.FileSystem.DriveInfo.dll
  • System.IO.FileSystem.Primitives.dll
  • System.IO.FileSystem.Watcher.dll
  • System.IO.IsolatedStorage.dll
  • System.IO.MemoryMappedFiles.dll
  • System.IO.Pipes.dll
  • System.IO.UnmanagedMemoryStream.dll
  • System.Json.dll
  • System.Linq.dll
  • System.Linq.Expressions.dll
  • System.Linq.Parallel.dll
  • System.Linq.Queryable.dll
  • System.Messaging.dll
  • System.Net.AuthenticationManager.dll
  • System.Net.Cache.dll
  • System.Net.dll
  • System.Net.Http.dll
  • System.Net.Http.WinHttpHandler.dll
  • System.Net.HttpListener.dll
  • System.Net.Mail.dll
  • System.Net.NameResolution.dll
  • System.Net.NetworkInformation.dll
  • System.Net.Ping.dll
  • System.Net.Primitives.dll
  • System.Net.Requests.dll
  • System.Net.Security.dll
  • System.Net.ServicePoint.dll
  • System.Net.Sockets.dll
  • System.Net.Utilities.dll
  • System.Net.WebHeaderCollection.dll
  • System.Net.WebSockets.Client.dll
  • System.Net.WebSockets.dll
  • System.Numerics.dll
  • System.Numerics.Vectors.dll
  • System.ObjectModel.dll
  • System.Reflection.Context.dll
  • System.Reflection.DispatchProxy.dll
  • System.Reflection.dll
  • System.Reflection.Emit.dll
  • System.Reflection.Emit.ILGeneration.dll
  • System.Reflection.Emit.Lightweight.dll
  • System.Reflection.Extensions.dll
  • System.Reflection.Primitives.dll
  • System.Reflection.TypeExtensions.dll
  • System.Resources.ReaderWriter.dll
  • System.Resources.ResourceManager.dll
  • System.Runtime.CompilerServices.VisualC.dll
  • System.Runtime.dll
  • System.Runtime.Extensions.dll
  • System.Runtime.Handles.dll
  • System.Runtime.InteropServices.dll
  • System.Runtime.InteropServices.RuntimeInformation.dll
  • System.Runtime.InteropServices.WindowsRuntime.dll
  • System.Runtime.Numerics.dll
  • System.Runtime.Serialization.dll
  • System.Runtime.Serialization.Formatters.dll
  • System.Runtime.Serialization.Formatters.Soap.dll
  • System.Runtime.Serialization.Json.dll
  • System.Runtime.Serialization.Primitives.dll
  • System.Runtime.Serialization.Xml.dll
  • System.Security.AccessControl.dll
  • System.Security.Claims.dll
  • System.Security.Cryptography.Algorithms.dll
  • System.Security.Cryptography.Cng.dll
  • System.Security.Cryptography.Csp.dll
  • System.Security.Cryptography.DeriveBytes.dll
  • System.Security.Cryptography.Encoding.dll
  • System.Security.Cryptography.Encryption.Aes.dll
  • System.Security.Cryptography.Encryption.dll
  • System.Security.Cryptography.Encryption.ECDiffieHellman.dll
  • System.Security.Cryptography.Encryption.ECDsa.dll
  • System.Security.Cryptography.Hashing.Algorithms.dll
  • System.Security.Cryptography.Hashing.dll
  • System.Security.Cryptography.OpenSsl.dll
  • System.Security.Cryptography.Pkcs.dll
  • System.Security.Cryptography.Primitives.dll
  • System.Security.Cryptography.ProtectedData.dll
  • System.Security.Cryptography.RandomNumberGenerator.dll
  • System.Security.Cryptography.RSA.dll
  • System.Security.Cryptography.X509Certificates.dll
  • System.Security.dll
  • System.Security.Principal.dll
  • System.Security.Principal.Windows.dll
  • System.Security.SecureString.dll
  • System.ServiceModel.dll
  • System.ServiceModel.Duplex.dll
  • System.ServiceModel.Http.dll
  • System.ServiceModel.Internals.dll
  • System.ServiceModel.NetTcp.dll
  • System.ServiceModel.Primitives.dll
  • System.ServiceModel.Security.dll
  • System.ServiceModel.Web.dll
  • System.ServiceProcess.ServiceController.dll
  • System.Text.Encoding.CodePages.dll
  • System.Text.Encoding.dll
  • System.Text.Encoding.Extensions.dll
  • System.Text.RegularExpressions.dll
  • System.Threading.AccessControl.dll
  • System.Threading.dll
  • System.Threading.Overlapped.dll
  • System.Threading.Tasks.dll
  • System.Threading.Tasks.Parallel.dll
  • System.Threading.Thread.dll
  • System.Threading.ThreadPool.dll
  • System.Threading.Timer.dll
  • System.Transactions.dll
  • System.ValueTuple.dll
  • System.Web.Services.dll
  • System.Windows.dll
  • System.Xml.dll
  • System.Xml.Linq.dll
  • System.Xml.ReaderWriter.dll
  • System.Xml.Serialization.dll
  • System.Xml.XDocument.dll
  • System.Xml.XmlDocument.dll
  • System.Xml.XmlSerializer.dll
  • System.Xml.XPath.dll
  • System.Xml.XPath.XDocument.dll
  • System.Xml.XPath.XmlDocument.dll
  • System.Xml.Xsl.Primitives.dll
  • Xamarin
  • Xamarin.Android.NUnitLite.dll
  • Xamarin.iOS.dll
  • Xamarin.Mac.dll
  • Xamarin.Mac.registrar.full.a
  • Xamarin.TVOS.dll
  • Xamarin.TVOS.registrar.a
  • Xamarin.WatchOS.dll
  • Xamarin.WatchOS.registrar.a
  • Xamarin-debug
  • XamMac.CFNetwork.dll
  • XamMac.dll
  • XamMacLauncher

Top of Page


You can find most of the videos below and more on our team YouTube channel.


Visual Studio Team Services Java DevOps Demo (Jan. 2017)

  • Published on January 24, 2017 to YouTube
  • 47:08 minutes

Visual Studio Team Services DevOps Java Demo using Docker

  • Published on January 11, 2017 to YouTube
  • 19:28 minutes

Team Services and Java Demo

  • Published on May 4, 2016 to YouTube
  • 31:10 minutes

Team Services and Java

  • Published on May 4, 2016 to YouTube
  • 30:30 minutes

Coffee and Code – Visual Studio for Java Developers!

  • Published on Feb. 7, 2016 to Microsoft Channel 9
  • 53:09 minutes

Java Development in Team Foundation Server and Visual Studio Team Services

  • Published on Nov. 18, 2015 to Channel9
  • 8:02 minutes

Customer Testimonials

Customer Testimonial on using Visual Studio Team Services for Java Mobile App Development

  • Published on August 11, 2016 to YouTube
  • 7:43 minutes

Eclipse Plug-in

Developing Java projects on Team Services with TEE

  • Published in 2015 to Microsoft Channel 9
  • 4:36 minutes

IntelliJ Plug-in

Getting Started with TFVC inside of Android Studio with the Team Services Plugin

  • Published on Mar. 7, 2017 to YouTube
  • 13:28 minutes

VSTS IntelliJ and Android Studio Plugin with TFVC

  • Published on Jan. 13, 2017 to YouTube
  • 20:42 minutes

Team Services IntelliJ/Android Studio Plugin End-to-End Demo

  • Published on July 7, 2016 to YouTube
  • 9:55 minutes

Team Services Build Integration

  • Published on June 14, 2016 to YouTube
  • 2:43 minutes

Work Items View

  • Published on April 27, 2016 to YouTube
  • 3:09 minutes

Associate Work Items with Commits

  • Published on April 13, 2016 to YouTube
  • 2:07 minutes

Pull Requests View

  • Published on Feb. 23, 2016 to YouTube
  • 0:58 seconds

Install the Team Services Plugin for IntellJ

  • Published on Oct. 23, 2015 to YouTube
  • 1:25 minutes

Checkout your Team Services Git sources from within IntelliJ IDEA

  • Published on Oct. 23, 2015 to YouTube
  • 2:13 minutes

Import your IntelliJ project into Team Services

  • Published on Oct. 23, 2015 to YouTube
  • 3:21 minutes

Create a Pull Request from the Team Services Plugin

  • Published on Oct. 23, 2015 to YouTube
  • 3:12 minutes

Java Software Builds

Java Mobile Android App Migration to Visual Studio Team Services

  • Published on August 11, 2016 to YouTube
  • 8:16 minutes

Create and run a Maven build on Team Services

  • Published on Oct. 23, 2015 to YouTube
  • 4:32 minutes

Subversion Integration

Build code in a Subversion repository with Team Services

  • Published on Nov. 18, 2015 to YouTube
  • 6:28 minutes

Visual Studio Code Extension

TFVC Source Code Control in Visual Studio Code

  • Published on April 12, 2017 to YouTube
  • 8:39 minutes

Set up and Configure the TEE CLC on Linux

  • Published on April 11, 2017 to YouTube
  • 5:47 minutes

Set up the Team Services extension for Visual Studio Code

  • Published on April 10, 2017 to YouTube
  • 2:20 minutes

Walkthrough of the Team Services extension for Visual Studio Code

  • Published on April 10, 2017 to YouTube
  • 7:26 minutes

Walkthrough of TFS 2015 support in Team Services extension for Visual Studio Code

  • Published on July 7, 2016 to YouTube
  • 5:31 minutes

Java/Utility Build tasks and Extensions

Team Services JBoss and WildFly Extension Demo

  • Published on December 9, 2016 to YouTube
  • 5:38 minutes

Apple App Store Extension

  • Published on August 24, 2016 to YouTube
  • 5:02 minutes

Follow Jenkins Pipelines and Download Artifacts with Visual Studio Team Services

  • Published on August 5, 2016 to YouTube
  • 3:28 minutes

Team Services FTP Upload Build Task

  • Published on August 4, 2016 to YouTube
  • 2:08 minutes

Copy Files over SSH

  • Published on July 29, 2016 to YouTube
  • 3:13 minutes


  • Published on July 29, 2016 to YouTube
  • 3:33 minutes

Team Services IntelliJ/Android Studio Plugin End-to-End Demo

  • Published on July 6, 2016 to YouTube
  • 9:56 minutes

Team Services Jenkins Queue Job Build Task

  • Published on June 28, 2016 to YouTube
  • 2:26 minutes

Walkthrough of the ArchiveFiles utility build task

  • Published on June 15, 2016 to YouTube
  • 5:09 minutes

Walkthrough of the ExtractFiles utility build task

  • Published on June 7, 2016 to YouTube
  • 2:27 minutes

A demo of the Team Services extension to publish build artifacts to a Sonatype Nexus server

  • Published on June 7, 2016 to YouTube
  • 2:34 minutes

A demo of the Visual Studio Team Services extension for integration with IBM UrbanCode Deploy

  • Published on June 7, 2016 to YouTube
  • 5:29 minutes

Setting up an automated build to push applications to Cloud Foundry with Visual Studio Team Services

  • Published on May 6, 2016 to YouTube
  • 5:20 minutes

Last updated on 04/12/2017

Java in VS Code

The Java support in VS Code is provided through extensions and optimized for lightweight Java projects with a simple, modern workflow. Popular extensions in the Marketplace provide project support, code completion, linting, debugging, code formatting, snippets, and more.

Download VS Code - If you haven't downloaded VS Code yet, quickly install for your platform (Windows, Mac, Linux).

Install Java Extensions

VS Code is a fast editor and ships with only the basic features. Add Java language support to VS Code by installing the popular Java extensions.

  1. In Visual Studio Code, go to the Extensions view (⇧⌘X (Windows, Linux Ctrl+Shift+X)).
  2. Filter the extensions list by typing "java".

To help set up Java on VS Code, there is a Java Extension Pack which contains two popular extensions:

  1. Language Support for Java(TM) by Red Hat
  2. Java Debugger for Visual Studio Code

Install the Java Extension Pack

This document describes the features included in the Java Extension Pack.

Java Project Support

Maven, Eclipse and Gradle Java project are supported through Language Support for Java(TM) by Red Hat, by utilizing M2Eclipse which provides Maven support and Buildship which provides Gradle support through the Eclipse JDT Language Server.

Please note that Gradle-based Android projects are not supported.

Editing and Navigating Code


A linter is a tool that provides warnings for suspicious looking code. Language Support for Java(TM) by Red Hat provides this feature to report parsing and compilation errors as you type, so you can fix them inside VS Code.


VS Code also supports code completion and Intellisense for Java through Language Support for Java(TM) by Red Hat. Intellisense is a general term for a number of features, including intelligent code completion (in-context method and variable suggestions) across all your files and for built-in and thirty-party modules.

Search for symbols

You can search for symbols in the current file or workspace to navigate your code more quickly.

To search for a symbol in the current file, use Quick Open (⌘P (Windows, Linux Ctrl+P)) then enter the '@' command, then enter the name of the symbol you're looking for. A list of potential matches will appear and be filtered as you type. Choose from the list of matches to navigate to its location.

To search for a symbol in the current workspace, start by pressing ⌘T (Windows, Linux Ctrl+T), then enter the name of the symbol. A list of potential matches will appear as before. If you choose a match that was found in a file that's not already open, the file will be opened before navigating to the match's location. Alternatively, you can also use Quick Open (⌘P (Windows, Linux Ctrl+P)) then enter the '#' command to search the current workspace. ⌘T (Windows, Linux Ctrl+T) is just the shortcut for the '#' commands, respectively, so everything works the same.

Peek Definition

You can take a quick look at how a symbol was defined by using the Peek Definition feature. This feature displays a few lines of code near the definition inside a peek window so you can take a look without navigating away from your current location.

To peek at a symbol's definition, place your cursor on the symbol anywhere it's used in your source code and then press ⌥F12 (Windows Alt+F12, Linux Ctrl+Shift+F10). Alternatively, you can choose Peek Definition from the context menu (right-click, then choose Peek Definition).

Go to Definition

You can also quickly navigate to where a symbol is defined by using the Go to Definition feature.

To go to a symbol's definition, place your cursor on the symbol anywhere its used in your code and then press F12. Alternatively, you can choose Go to Definition from the context menu (right-click, then choose Go to Definition). When there's only one definition of the symbol, you'll navigate directly to its location, otherwise the competing definitions are displayed in a peek window as described in the previous section and you have to choose the definition that you want to go to.

Other code editing features include:

  • Code formatting
  • Code snippets
  • Code outline
  • Code lens (references)
  • Javadoc hovers
  • Rename
  • Highlights


Java Debugger for Visual Studio Code is a lightweight Java Debugger based on Java Debug Server. It works with Language Support for Java by Red Hat to allow users debugging Java code using Visual Studio Code (VS Code).

The Java Debugger supports following features:

  • Launch/Attach - You can either launch the Java project within VS Code or attach to any running JVM process in debug mode, locally or remotely.
  • Breakpoints - Conditional breakpoints by Hit Count is supported and can easily be set using the inline breakpoint settings window. This allows you to conveniently add conditional breakpoints to your code, directly in the source viewer, without requiring a modal window. Break on exceptions is also supported.
  • Control flow - Including Pause, Continue F5, Step over F10, Step into F11, Step out Shift+F11
  • Data inspection - When you're stopped at a breakpoint, the debugger has access to the variable names and values that are currently stored in memory. Inspect/Watch/Set Variables are supported.
  • Diagnostics - The CALL STACK panel shows the call stack of your program and allows you to navigate through the call path of each captured allocation. Multi-threaded debugging is supported by parallel stacks.
  • Debug Console - The Debug Console lets you see information from both stdout and stderr.

You can launch the debugger following steps below:

  1. Switch to the Debug view (⇧⌘D (Windows, Linux Ctrl+Shift+D)).
  2. Open launch.json to add a debug configuration for Java
  3. Fill in the mainClass for Launch setting or hostName and port for Attach.
  4. Click Start button or press F5 to start debugging.

Next Steps

Read on to find out about:

  • Basic Editing - Learn about the powerful VS Code editor.
  • Code Navigation - Move quickly through your source code.
  • Tasks - use tasks to build your project and more
  • Debugging - find out how to use the debugger with your project

Last updated on 9/27/2017

Автоматизация CI/CD для Java приложений с помощью Microsoft Visual Studio Team Services

Привет, Хабр! На первый взгляд название этой статьи может показаться вам странным: Java и Visual Studio – что между ними общего? Зачем вообще Visual Studio, когда есть множество других классных инструментов для разработки на Java: Eclipse, NetBeans, IntelliJ IDEA и прочих (холивар устраивать не будем). На самом деле, Visual Studio сейчас – это не просто среда для разработки, а целое семейство продуктов, где IDE Visual Studio лишь один из инструментов. Под катом мы поговорим о Microsoft Visual Studio Team Services (VSTS).

Microsoft Visual Studio Team Services – это DevOps облачная платформа, позволяющая гибко выстраивать DevOps процессы непрерывной интеграции, сборки и развертывания (CI/CD). Конечно, тут не обходится без поддержки контроля версий, встроенной системы bag tracking, инструментов Agile планирования и многих других возможностей для разработчиков разных «религий», и «мастей». И, конечно, для разработчиков на Java тоже найдётся полезный функционал для DevOps автоматизации своих решенияй. О том, как им можно эффективно использовать возможности VSTS, и пойдет речь в нашей сегодняшней статье.

На протяжении 20 лет своего существования Java платформа сформировала вокруг себя богатую экосистему из разных инструментов для сборки, развёртывания, тестирования приложений, которыми Java разработчики пользуются в повседневной практике, и многие из которых, по сути, уже стали промышленным стандартом (Maven, Gradle, Ant, JUnit, JMeter и многие другие). И, конечно, у каждого разработчика или команды есть свои предпочтения по выбору инструментов: кто-то привык собирать проект используя Maven, а кто-то, использует Gradle. Основная идея VSTS — предоставить разработчикам возможности, которые позволят выстроить CI/CD процессы максимально гибко, используя знакомые и привычные OSS инструменты для сборки, развертывания, тестирования. VSTS — это облачная платформа (в отличие от Microsoft Team Foundation Server, который развертывается on-premise), однако, благодаря такому механизму как агенты сборки (build agents), о которых мы будем говорить ниже, сборку можно производить, например, on-premise (у вас в ЦОДе), и, конечно, на ваших виртуальных машинах в облаках (Azure, AWS, Google и другие платформы).

Нагляднее всего возможности VSTS можно проиллюстрировать на простом примере Java приложения с полным циклом сборки и развертывания. Сразу оговорюсь, что я не буду описывать полный и детальный step-by-step tutorial, цель данной статьи донести идею использования VSTS платформы для Java DevOps процессов.

Для наших экспериментов вам понадобится учетная запись Microsoft Visual Studio Team Services. Вы можете получить ее бесплатно, используя свой Microsoft Account или, создав новый.

Итак, начнем наше увлекательное путешествие. Зарегистрировавшись, нам нужно создать проект.

Указываем имя проекта, Git как систему контроля версий и создаем новый проект.

После создания проекта, VSTS автоматически создает новый Git репозиторий и предлагает клонировать его на вашу рабочую машину используя Git CLI или клонировать и открыть его в Java IDE, например, IntelliJ IDEA, также поддерживается и Eclipse. Для этих двух IDE есть плагины для интеграции с VSTS.

Мы вернемся к интеграции с IDE в нашей статье чуть позже, а сейчас просто клонируем код из GitHub. Кликаем Import, указываем URL нашего GitHub репозитория ( и завершаем импорт. В нашем случае репозиторий публичный и авторизация не нужна, но, конечно, вы можете использовать и приватные репозитории, указав нужные credentials для доступа.

После завершения импорта, будет открыт Filesexplorer для нашего репозитория, где можно добавлять и вносить изменения в артефакты приложения, переключаться между ветками или создавать новые. Конечно, в рамках одного проекта, может быть несколько репозиториев, и вы можете конфигурировать отдельные CI/CD процессы для них.

А мы переходим к следующему этапу – сборке нашего приложения. Для этого нам нужно создать Build Definition (определение сборки) в нашем проекте.

В VSTS есть 2 важных понятия, связанных с конфигурированием CI/CD процессов. Это определение сборки (Build Definition) и определение релиза (Release Definition). Оба определения позволяют очень гибко выстроить DevOps процессы через концепцию заданий (tasks). Задания могут быть разных типов: например, сборка проекта в Maven, выполнение Bash скрипта, сборка Docker контейнера, копирование файлов, развертывание приложения в Tomcat контейнере – все это примеры заданий, из которых вы можете собирать ваши CI/CD процессы. При создании определения процесса сборки, можно пользоваться уже готовым шаблоном (template) c заданным набором заданий под определенную задачу (например, сборка проекта в Maven/Gradle) или создать пустое определение сборки и самому определить набор заданий в этом процессе. В нашем случае, мы выберем пустой шаблон (empty template) и сами определим задания в нем.

Порядок сборки и публикации нашего приложение будет следующий: первым шагом мы должны установить все front-end зависимости используя менеджер пакетов Bower, далее собираем наше приложение в Maven, в результате получаем war артефакт, который помещаем в Docker контейнер c Tomcat и публикуем его в Docker Registry (в нашем случае это будет приватный registry на базе Azure Container Registry).

Создав пустой шаблон, мы должны определить в нем необходимые задачи. Каждый шаг нашего CI процесса – это отдельная задача. Например, сборка Bower – это отдельный task, который нам нужно добавить в наш CI pipeline и настроить. Однако, не все задачи доступны в VSTS «из коробки». Например, Bower задачи по умолчанию в VSTS нет. Но, к счастью, есть Visual Studio Marketplace, где Microsoft и сторонние разработчики публикуют VSTS расширения для интеграции с различными инструментами. Установка этих расширений в VSTS предельно простая, достаточно найти нужный модуль и установить его к себе в окружение, кликнув Install и указав свою учетную запись VSTS.

Перед тем, как определить конкретные задания для сборки нашего приложения, необходимо указать где будет происходить сборка нашего приложения. Собирать мы его можем, используя механизм агентов сборки и релиза/развертывания (Build/Release agents) который есть в VSTS. Агенты могут быть двух типов: hosted и private. Hosted агенты использовать проще всего, так как эти окружения (VM) для сборки нам выделяет сама VSTS платформа со всеми вытекающими преимуществами cloud computing (обслуживание, upgrade и т.д.). Причем есть выбор ОС для окружения — это может быть Windows/Linux (последний пока в preview). Но что, если у нас сложный случай, и для окружения, в котором мы будем собирать Java приложение нужна специфическая сложная настройка компонентов сборки (например, нужно определить приватный репозиторий Maven в settings.xml). В этом случае можно самим развернуть окружение (на Linux/Windows/MacOS), установить Private Build Agent и инициировать сборку приложения в нем из VSTS консоли. Причем собственное окружение (VM) может быть развернуто в облаках (Azure, Google, AWS) или в собственном ЦОДе.

Для нашего примера вполне достаточно Hosted агента на Linux машине. Необходимо задать это явно в настройках процесса (Process).

Далее выстраиваем CI процесс, и определяем задачи, которые будут выполняться в нем.

В нашем CI процессе будет 6 задач. Давайте рассмотрим подробнее из чего он будет состоять.

Перед началом сборки, клонирование файлов из Git репозитория проекта в текущее окружение (виртуальную машину) происходит автоматически, далее VSTS выполняет последовательность задач, которые мы указали в определении сборки.

Bower.Install. Первая задача, Bower.Install, позволяет нам установить все front-end зависимости используя менеджер пакетов Bower. Для этого нужно лишь правильно настроить параметры задачи. Как видно из скриншота выше, конфигурация простая и не требует специальных комментариев (разве что нужно указать явно --allow-root).

Maven.Build. На втором шаге мы осуществляем сборку приложения, используя Maven task, и pom.xml артефакт из Git репозитория нашего приложения. Кроме имени задачи и Maven goals, можно настроить параметры публикации JUnit тестов, указать настройки JDK (версия, архитектура, настройки памяти и т.д.), а также подключить инструменты для статического анализа кода (SonarQube, Checkstyle, PMD, FindBugs) и покрытия кода (JaCoCo, Cobertura и т.д.).

Docker.ImageBuild. На третьем шаге мы выполняем сборку Docker образа, используя уже готовый Dockerfile из Git репозитория нашего проекта. Для этого шага используется задача Docker task (которая, будет использоваться и на следующем шаге). В качестве Action параметра мы выбираем Build an image и Dockerfile. Дополнительно также можно указать параметры для сборки образа.

Docker.ImagePush. На четвертом шаге происходит публикация собранного нами на предыдущем шаге Docker образа в приватный Docker registry, в качестве registry в нашем случае используется Azure Container Registry (ACR), но вы можете использовать и другие приватные/публичные Docker registry (Docker Hub). Обратите внимание, что здесь мы используем тот же самый Docker task, что и на предыдущем шаге, но Action параметр в этом случае установлен как Push an Image. В качестве имени образа, который собираем и публикуем мы указываем выражение$(Build.BuildId), где $(Build.BuildId) это переменная с ID текущей сборки.

Приложение мы собираемся развертывать в облачную службу контейнеров Azure Container Service и в качестве системы управления контейнерами будем использовать хорошо известный Kubernetes. Для публикации был заранее подготовлен YAML манифест с описанием deployment и service объектов Kubernetes.

Shell Script. В YAML артефакте нужно правильно определить Docker image, который мы собираемся использовать в deployment. В случае каждой новой сборки помечаем каждый собранный Docker image с нашим приложением используя Build ID в image tag, соответственно и при развертывании, в CD процессе мы должны запускать deployment процесс, используя образ c нужным нам Build Id. Для этого в YAML манифесте нужный образ определяется при помощи подстановки значения параметра, и происходит это на 5 шаге с помощью Shell Script task и Linux команды sed.

Publish Artifact. Наконец, мы подошли к финальному, 6-му шагу нашего CI процесса. Так как приложение запускается в контейнере, Docker image которого мы опубликовали в ACR на 4-ом шаге, никаких других артефактов приложения мы публиковать не будем. Единственный артефакт, который нам необходим для CD процесса это модифицированный YAML манифест для развертывания в Kubernetes. Его мы и будем публиковать на этом шаге. Опубликованный YAML артефакт будет использоваться далее в release definition для развертывания приложения через Kubernetes task.

Наш CI процесс почти сконфигурирован, остается лишь несколько дополнительных настроек, и мы можем проверять процесс сборки. Для запуска CI процесса после каждого изменения в выбранной ветке исходного кода (например, master), необходимо включить опцию Continuous Integration в свойствах Build Definition. Кроме того, одновременно можно включить опцию сборки по расписанию (Scheduled).

Наш build definition готов и сейчас самое время его протестировать. Жмем Save & queue, далее VSTS предложит нам подтвердить настройки сборки, и наслаждаемся процессом.

После размещения сборки в очереди, процессу будет присвоен Build ID, о чем VSTS сообщит нам.

Перейдя по ссылке с Build ID, вы увидите процесс выполнения сборки и исполнения тех задач, который мы определили ранее. После завершения сборки, можно просмотреть статистику тестов, покрытия кода (если вы настраивали), logs и, наконец, загрузить артефакты, которые были опубликованы в результате сборки.

Мы публикуем наш Docker image после каждой сборки в Azure Container Registry и открыв Azure Portal консоль, для нашего registry, можем действительно убедиться, что наш образ опубликован.

После завершения CI процесса, мы готовы двигаться далее и настроить CD процесс для нашего Java приложения. Для этого нам необходимо создать новый Release Definition (определение релиза) в нашем проекте.

Для приложения мы будем использовать пустое определение и добавим в него нужные задачи.

На следующем шаге VSTS предлагает указать проект и определение сборки на основе которого будет происходить наше развертывание. Дополнительно включаем опцию Continuous deployment, что означает что развертывание начнется сразу после успешного окончания сборки (CI процесса) для нашего приложения.

Для CD процесса необходимо выполнить некоторые настройки: дать осмысленное имя определению и CD окружению и выбрать Release Agent который будет использоваться для развертывания. В нашем случае продолжаем использовать Hosted Linux Preview. Обратите внимание на понятие окружения (environment) в контексте Release Definition. Окружения – это логические сущности, которые определяют, где мы будем развертывать приложение. В нашем простом примере — это только Dev окружение, но для промышленных решений сюда могут добавиться Test, Q&A, Stage, Prod окружения и т.д. Соответственно, для каждого окружения может быть свой набор задач, с разными алгоритмами развертывания в разные физические или виртуальные окружения. Кроме того, существует специальный механизм утверждений (approvals), который позволяет не начинать развертывание в следующем окружении до тех пор, пока пользователь или группа пользователей с соответствующими правами не утвердит (или откажет) в продолжении CD процесса. Например, развертывать приложения в Prod после Stage только после утверждения одного или нескольких пользователей.

Теперь мы готовы добавить одну единственную задачу для CD процесса, — Kubernetes task. Однако, по умолчанию этого расширения в каталоге VSTS нет, но снова выручает Visual Studio Marketplace, о котором я уже говорил выше, где его можно найти и установить для своей учетной записи VSTS.

По сути, в Kubernetes task, используется kubectl CLI и при помощи команды apply применяется наш YAML манифест и происходит развертывание приложения в Kubernetes (напоминаю о том, что приложение мы собираемся публиковать в облачную службу контейнеров Azure Container Service).

CD процесс готов и самое время запустить развертывание.

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

Как видно из результатов выполнения, CD процесс завершился успешно и объекты deployment и service созданы в Kubernetes успешно.

Результаты развертывания можно проверить, проверяя статус pods, deployments и services через CLI kubectl. Ну и конечно, просто перейдя в любимом браузере по ссылке: http://<EXTERNAL-IP>:8080

А что еще есть полезного для Java-разработчиков в VSTS?

VSTS поддерживает интеграцию c различными IDE, позволяя разработчикам работать с платформой, по сути не покидая пределы своей среды разработки. То есть просматривать список задач, назначенных на вас, проводить code review, создавать Pull Requests и многое другое, не говоря уже о привычной работе с GIT репозиторием. В настоящее время поддерживается интеграция через plug-ins для популярных Java IDE: IntelliJ IDEA, Android Studio, Eclipse.

Давайте проверим на простом примере, как это работает для IDE IntelliJ IDEA. Для этого нужно установить plug-in для VSTS. Где его скачать, и как установить описано здесь.

Предположим, нам была назначена новая задача из backlog в VSTS и предварительно создана новая ветка Git branch c названием homepage (это операции можно проделать в консоли VSTS). Первым шагом клонируем нужный Git репозиторий на рабочую машину. Проще всего это сделать, используя опцию Clone и выбрав пункт IntelliJ IDEA. Специальный скрипт автоматически запустит IDE и checkout процесс.

Для примера, отредактируем файл index.jsp, добавив новый элемент в список с заголовком Deployment и сделаем commit и push.

В окне Commit кроме основных настроек вы можете указать непосредственную задачу, с которой этот commit связан. Далее делаем commit и push.

Следующим шагом создадим pull request прямо в IntelliJ IDEA и укажем в качестве target branch ветки — master. Также мы указываем наш последний commit в качестве изменений и создаем pull request.

После создания pull request, его можно открыть и просмотреть в VSTS консоли в браузере.

Для завершения pull request, его необходимо утвердить (approve). Доступ для утверждения имеют пользователи или группа пользователей со специальными правами в VSTS. После завершения approve процесса, pull request можно завершить (complete).

При необходимости можно удалить рабочую ветку homepage, которую мы использовали под разработку определенного функционала приложения и сделать squash merge.

Слияние (merge) изменений в master ветку автоматически инициирует CI/CD процесс сборки, тестирования и развертывания нашего приложения в Azure Container Service. Перейдя в раздел Build&Release, можно отслеживать процесс выполнения сборки и развертывания.

После завершения CI/CD процессов, открываем любимый браузер и наслаждаемся изменениями в приложении.

Часто задаваемые вопросы

  1. У меня CI процесс построен в Jenkins, зачем мне VSTS? Jenkins и VSTS хорошо интегрируются и дополняют друг друга. Например, вы можете продолжать использовать Jenkins Server для CI сборок (on-premise или в облаках), а для CD процессов использовать VSTS. Более того, у вас может быть сложный CI процесс, где сборка в Jenkins представляет собой лишь часть определения сборки в VSTS. Интеграция Jenkins с VSTS осуществляется при помощи специального Team Foundation Server Plugin модуля.
  2. А что с нагрузочным тестированием? Могу ли я использовать JMeter в VSTS? Да, Apache JMeter доступен уже «из коробки» в VSTS. Как его использовать можно посмотреть в документации.
  3. Могу ли я написать собственное расширение для VSTS? Да, можете, доступен специальный SDK для разработчиков. Подробную информацию можно посмотреть здесь: Write your first extension for Visual Studio Team Services.
  4. Где найти дополнительные материалы и примеры про Java-разработку в VSTS? Для Java-разработчиков существует отдельный портал с информацией, примерами, tutorials, на тему использования VSTS в Java разработке: Ну и конечно доступна официальная документация по VSTS.


В данной статье был рассмотрен лишь простой пример использования VSTS в Java DevOps и некоторые аспекты не были рассмотрены детально, например, интеграция с инструментами покрытия кода (JaCoCo, Cobertura) и статического анализа кода (SonarQube, PMD, CheckStyle и так далее). Как я отмечал в начале статьи, самое большое преимущество VSTS платформы для разработчиков – это ее гибкость, универсальность, расширяемость и простота и тут девиз «Any Developer, Any Language, Any Platform» полностью себя оправдывает!

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