Microsoft Visual Studio
Microsoft Visual Studio
It can be used to
develop console and graphical user interface applications along with Windows Forms applications, web
sites,web applications, and web services in both native code together with managed code for all platforms
supported by Microsoft Windows, Windows Mobile, Windows CE, .NET Framework, .NET Compact
Visual Studio includes a code editor supporting IntelliSense as well as code refactoring. The
integrateddebugger works both as a source-level debugger and a machine-level debugger. Other built-in
tools include a forms designer for building GUI applications, web designer, class designer, and database
schema designer. It accepts plug-ins that enhance the functionality at almost every level—including adding
support for source-control systems (like Subversion and Visual SourceSafe) and adding new toolsets like
editors and visual designers for domain-specific languages or toolsets for other aspects of the software
Visual Studio supports different programming languages by means of language services, which allow the
code editor and debugger to support (to varying degrees) nearly any programming language, provided a
language-specific service exists. Built-in languages include C/C++ (via Visual C++), VB.NET (via Visual
Basic .NET),C# (via Visual C#), and F# (as of Visual Studio 2010[3]). Support for other languages such
as M, Python, andRuby among others is available via language services installed separately. It also
Studio also exist which provide more limited language services to the user: Microsoft Visual Basic, Visual J#,
Microsoft provides "Express" editions of its Visual Studio 2010 components Visual Basic, Visual C#, Visual
C++, and Visual Web Developer at no cost. Visual Studio 2010, 2008 and 2005 Professional Editions, along
with language-specific versions (Visual Basic, C++, C#, J#) of Visual Studio 2005 are available for free to
students as downloads via Microsoft's DreamSpark program. The 90-day trial version of Visual Studio can
Contents
[hide]
• 1 Architecture
• 2 Features
o 2.2 Debugger
o 2.3 Designer
• 3 Supported products
• 4 Editions
• 5 Version history
• 7 References
• 8 External links
[edit]Architecture
Visual Studio does not support any programming language, solution or tool intrinsically. Instead, it allows
plugging in various types of functionality. Specific functionality is coded as a VSPackage. When installed,
the functionality is available as a Service. The IDE provides three services: SVsSolution, which provides the
ability to enumerate projects and solutions; SVsUIShell, which provides windowing and UI functionality
(including tabs, toolbars and tool windows); and SVsShell, which deals with registration of VSPackages. In
addition, the IDE is also responsible for coordinating and enabling communication between services.[4] All
editors, designers, project types and other tools are implemented as VSPackages. Visual Studio
uses COM to access the VSPackages. The Visual Studio SDK also includes the Managed Package
Framework (MPF), which is a set of managed wrappers around the COM-interfaces that allow the Packages
to be written in any CLI compliant language.[5] However, MPF does not provide all the functionality exposed
by the Visual Studio COM interfaces.[6] The services can then be consumed for creation of other packages,
Support for programming languages is added by using a specific VSPackage called a Language Service. A
language service defines various interfaces which the VSPackage implementation can implement to add
support for various functionalities.[7] Functionalities that can be added this way include syntax coloring,
statement completion, brace matching, parameter information tooltips, member lists and error markers for
background compilation.[7] If the interface is implemented, the functionality will be available for the language.
Language services are to be implemented on a per-language basis. The implementations can reuse code
from the parser or the compiler for the language.[7] Language services can be implemented either in native
code or managed code. For native code, either the native COM interfaces or the Babel Framework (part of
Visual Studio SDK) can be used.[8] For managed code, the MPF includes wrappers for writing managed
language services.[9]
Visual Studio does not include any source control support built in but it defines the MSSCCI (Microsoft
Source Code Control Interface) by implementing which source control systems can integrate with the IDE.
[10]
MSSCCI defines a set of functions that are used to implement various source control functionality.
[11]
MSSCCI was first used to integrate Visual SourceSafe with Visual Studio 6.0 but was later opened up via
the Visual Studio SDK. Visual Studio .NET 2002 used MSSCCI 1.1, and Visual Studio .NET 2003 used
MSSCCI 1.2. Both Visual Studio 2005 and 2008 use MSSCCI Version 1.3, which adds support for rename
Visual Studio supports running multiple instances of the environment (each with its own set of VSPackages).
The instances use different registry hives (seeMSDN's definition of the term "registry hive" in the sense
used here) to store their configuration state and are differentiated by their AppId (Application ID). The
instances are launched by an AppId-specific .exe that selects the AppId, sets the root hive and launches the
IDE. VSPackages registered for one AppId are integrated with other VSPackages for that AppId. The
various product editions of Visual Studio are created using the different AppIds. The Visual Studio
Expressedition products are installed with their own AppIds, but the Standard, Professional and Team
Suite products share the same AppId. Consequently, one can install the Express editions side-by-side with
other editions, unlike the other editions which update the same installation. The professional edition includes
a superset of the VSPackages in the standard edition and the team suite includes a superset of the
VSPackages in both other editions. The AppId system is leveraged by theVisual Studio Shell in Visual
Studio 2008.[12]
[edit]Features
[edit]Code editor
The Visual Studio code editor showingIntelliSense suggestions and a docked Task List window
Visual Studio, like any other IDE, includes a code editor that supports syntax highlighting and code
completion usingIntelliSense for not only variables, functions and methods but also language constructs
like loops and queries.[13]IntelliSense is supported for the included languages, as well as for XML and
for Cascading Style Sheets and JavaScriptwhen developing web sites and web applications.[14]
[15]
Autocomplete suggestions are popped up in a modeless list box, overlaid on top of the code editor. In
Visual Studio 2008 onwards, it can be made temporarily semi-transparent to see the code obstructed by it.
[13]
The code editor is used for all supported languages.
The Visual Studio code editor also supports setting bookmarks in code for quick navigation. Other
navigational aids include collapsing code blocks and incremental search, in addition to normal text search
and regex search.[16] The code editor also includes a multi-item clipboard and a task list.[16] The code editor
supports code snippets, which are saved templates for repetitive code and can be inserted into code and
customized for the project being worked on. A management tool for code snippets is built in as well. These
tools are surfaced as floating windows which can be set to automatically hide when unused or docked to the
side of the screen. The Visual Studio code editor also supports code refactoring including parameter
reordering, variable and method renaming, interface extraction and encapsulation of class members inside
Visual Studio features background compilation (also called incremental compilation).[17][18] As code is being
written, Visual Studio compiles it in the background in order to provide feedback about syntax and
compilation errors, which are flagged with a red wavy underline. Warnings are marked with a green
underline. Background compilation does not generate executable code, since it requires a different compiler
than the one used to generate executable code.[19] Background compilation was initially introduced
with Microsoft Visual Basic but has now been expanded for all included languages.[18]
[edit]Debugger
Main article: Microsoft Visual Studio Debugger
Visual Studio includes a debugger that works both as a source-level debugger and as a machine-level
debugger. It works with both managed code as well as native code and can be used for debugging
applications written in any language supported by Visual Studio. In addition, it can also attach to running
processes and monitor and debug those processes.[20] If source code for the running process is available, it
displays the code as it is being run. If source code is not available, it can show the disassembly. The Visual
Studio debugger can also create memory dumps as well as load them later for debugging.[21] Multi-threaded
programs are also supported. The debugger can be configured to be launched when an application running
outside the Visual Studio environment crashes.
The debugger allows setting breakpoints (which allow execution to be stopped temporarily at a certain
position) and watches (which monitor the values of variables as the execution progresses).[22] Breakpoints
can be conditional, meaning they get triggered when the condition is met. Code can be stepped over, i.e.,
run one line (of source code) at a time.[23] It can either step into functions to debug inside it, or step over it,
i.e., the execution of the function body isn't available for manual inspection.[23] The debugger supports Edit
and Continue, i.e., it allows code to be edited as it is being debugged (32 bit only; not supported in 64 bit).
[24]
When debugging, if the mouse pointer hovers over any variable, its current value is displayed in a tooltip
("data tooltips"), where it can also be modified if desired. During coding, the Visual Studio debugger lets
certain functions be invoked manually from the Immediate tool window. The parameters to the method
[edit]Designer
include:
The Windows Forms designer is used to build GUI applications using Windows Forms. It includes a
palette of UIwidgets and controls (including buttons, progress bars, labels, layout containers and
other controls) that can be dragged and dropped on a form surface. Layout can be controlled by
housing the controls inside other containers or locking them to the side of the form. Controls that
display data (like textbox, list box, grid view, etc.) can be data-bound to data sources
like databases or queries. The UI is linked with code using an event-driven programmingmodel.
The WPF designer, codenamed Cider,[26] was introduced with Visual Studio 2008. Like the
Windows Forms designer it supports the drag and drop metaphor. It is used to author user
including databinding and automatic layout management. It generatesXAML code for the UI. The
generated XAML file is compatible with Microsoft Expression Design, the designer-oriented
product. The XAML code is linked with code using a code-behind model.
Web designer/development
Visual Studio also includes a web-site editor and designer that allows web pages to be authored by
dragging and dropping widgets. It is used for developing ASP.NET applications and
supports HTML, CSS and JavaScript. It uses acode-behind model to link with ASP.NET code.
From Visual Studio 2008 onwards, the layout engine used by the web designer is shared
with Microsoft Expression Web. There is also ASP.NET MVC support for MVC technology as a
The Class Designer is used to author and edit the classes (including its members and their access)
using UMLmodeling. The Class Designer can generate C# and VB.NET code outlines for the
classes and methods. It can also generate class diagrams from hand-written classes.
Data designer
The data designer can be used to graphically edit database schemas, including typed tables,
primary and foreign keys and constraints. It can also be used to design queries from the graphical
view.
Mapping designer
From Visual Studio 2008 onwards, the mapping designer is used by LINQ to SQL to design
the mapping betweendatabase schemas and the classes that encapsulate the data. The new
solution from ORM approach, ADO.NET Entity Framework, replaces and improves the old
technology.
[edit]Other tools
This section needs
additional citations for verification.
Please help improve this article by adding reliable references.
Unsourced material may bechallenged and removed. (May 2008)
The open tabs browser is used to list all open tabs and to switch between them. It is invoked
using CTRL+TAB.
Properties Editor
The Properties Editor tool is used to edit properties in a GUI pane inside Visual Studio. It lists all
available properties (both read-only and those which can be set) for all objects including classes,
The Object Browser is a namespace and class library browser for Microsoft .NET. It can be used to
browse the namespaces (which are arranged hierarchically) in managed assemblies. The hierarchy
In Visual Studio parlance, a solution is a set of code files and other resources that are used to build
an application. The files in a solution are arranged hierarchically, which might or might not reflect
the organization in the file system. The Solution Explorer is used to manage and browse the files in
a solution.
Team Explorer
Team Explorer is used to integrate the capabilities of Team Foundation Server, the Revision
Control System into the IDE (and the basis for Microsoft's CodePlex hosting environment for open
source projects). In addition to source control it provides the ability to view and manage individual
work items (including bugs, tasks and other documents) and to browse TFS statistics. It is included
as part of a TFS install and is also available as a download for Visual Studio 2005[29] and 2008.
[30]
Team Explorer is also available as a stand-alone environment solely to access TFS services.
Data Explorer
Data Explorer is used to manage databases on Microsoft SQL Server instances. It allows creation
and alteration of database tables (either by issuing T-SQL commands or by using the Data
designer). It can also be used to createqueries and stored procedures, with the latter in either T-
SQL or in managed code via SQL CLR. Debugging andIntelliSense support is available as well.
Server Explorer
The Server Explorer tool is used to manage database connections on an accessible computer. It is
also used to browse running Windows Services, performance counters, Windows Event
Visual Studio includes a free 'light' version of PreEmptive Solutions' Dotfuscator product for code
obfuscation and application-size reduction.[32] Starting with Visual Studio 2010, this version of
Dotfuscator will include Runtime Intelligence capabilities that allow authors to gather end-user
usage, performance, and stability information from their applications running in production.[33]
[edit]Extensibility
Visual Studio
allows developers
to write
extensions for
Visual Studio to
extend its
capabilities.
These extensions
Studio and
extend its
functionality.
Extensions come
in the form
of macros, add-
ins,
and packages.
Macros represent
repeatable tasks
developers can
record
programmatically
for saving,
replaying, and
distributing.
Macros, however,
cannot implement
new commands
or create tool
windows. They
are written
using Visual
compiled.[6] Add-
Ins provide
access to the
Visual Studio
Add-Ins can be
used to
implement new
functionality and
windows. Add-Ins
are plugged in to
the IDE
be created in any
COM-compliant
languages.[6] Pac
kages are
Visual
provide the
highest level of
extensibility. They
can create
designers and
other tools, as
well as integrate
other
programming
languages. The
Visual Studio
SDK provides
unmanaged APIs
as well as a
managed API to
accomplish these
tasks. However,
isn't as
comprehensive
as the
unmanaged one.
[6]
Extensions are
supported in the
Standard (and
higher) versions
of Visual Studio
2005. Express
Editions do not
support hosting
extensions.
Visual Studio
2008 introduced
the Visual
allows for
development of a
customized
version of the
Studio Shell
defines a set of
VSPackages that
provide the
functionality
required in any
IDE. On top of
that, other
packages can be
added to
customize the
installation. The
Isolated mode of
a new AppId
where the
packages are
installed. These
are to be started
with a different
executable. It is
aimed for
development of
custom
development
environments,
either for a
specific language
or a specific
scenario. The
Integrated mode
installs the
AppId of the
Professional/Stan
dard/Team
System editions,
integrate into
these editions.
[12]
The Visual
Studio Shell is
available as a
free download.
of Visual Studio
2008, Microsoft
created
Gallery. It serves
as the central
location for
posting
information about
extensions to
Visual Studio.
Community
developers as
well as
commercial
developers can
upload
information about
their extensions
to Visual
through Visual
Studio 2008.
review the
extensions to
quality of
extensions being
posted. RSS
feeds to notify
users on updates
tagging features
[edit]Support
ed
products
[edit]Included
products
T
h
i
s
s
e
c
t
i
o
n
n
e
e
d
s
a
d
d
i
t
i
o
n
a
l
c
i
t
a
t
i
o
n
s
f
o
r
v
e
r
i
f
i
c
a
t
i
o
n
.
P
l
e
a
s
e
h
e
l
p
i
m
p
r
o
v
e
t
h
i
s
a
r
t
i
c
l
e
b
y
a
d
d
i
n
g
r
e
l
i
a
b
l
e
r
e
f
e
r
e
n
c
e
s
.
U
n
s
o
u
r
c
e
d
m
a
t
e
r
i
a
l
m
a
y
b
e
c
h
a
l
l
e
n
g
e
d
a
n
d
r
e
m
o
v
e
d
.
(
M
a
y
2
0
0
8
)
Microsoft Visual
C++
Microsoft Visual C++ is Microsoft's implementation of the C and C++ compiler and associated
languages-services and specific tools for integration with the Visual Studio IDE. It can compile
either in C mode or C++ mode. For C, it follows the ISO C standard with parts of C99 spec along
with MS-specific additions in the form of libraries.[35] For C++, it follows the ANSI C++ spec along
with a few C++0x features.[36] It also supports the C++/CLI spec to write managed code, as well as
mixed-mode code (a mix of native and managed code). Microsoft positions Visual C++ for
development in native code or in code that contains both native as well as managed components.
Visual C++ supports COM as well as the MFC library. For MFC development, it provides a set of
wizards for creating and customizing MFC boilerplate code, and creating GUI applications using
MFC. Visual C++ can also use the Visual Studio forms designer to design UI graphically. Visual C+
+ can also be used with the Windows API. It also supports the use of intrinsic functions,[37] which
are functions recognized by the compiler itself and not implemented as a library. Intrinsic functions
are used to expose the SSE instruction set of modern CPUs. Visual C++ also includes
Microsoft Visual C#, Microsoft's implementation of the C# language, targets the .NET Framework,
along with the language services that lets the Visual Studio IDE support C# projects. While the
language services are a part of Visual Studio, the compiler is available separately as a part of
the .NET Framework. The Visual C# 2008 compiler supports version 3.0 of the C# language
specifications. Visual C# supports the Visual Studio Class designer, Forms designer, and Data
Microsoft Visual Basic is Microsoft's implementation of the VB.NET language and associated tools
and language services. It was introduced with Visual Studio .NET (2002). Microsoft has positioned
Visual Basic for Rapid Application Development.[citation needed] Visual Basic can be used to author both
console applications as well as GUI applications. Like Visual C#, Visual Basic also supports the
Visual Studio Class designer, Forms designer, and Data designer among others. Like C#, the
VB.NET compiler is also available as a part of .NET Framework but the language services, that let
VB.NET projects be developed with Visual Studio, are available as a part of the latter.
M
i
c
r
o
s
o
f
t
V
i
s
u
a
l
W
e
b
D
e
v
e
l
o
p
e
r
Microsoft Visual Web Developer is used to create web sites, web applications and web
services using ASP.NET. Either C# or VB.NET languages can be used. Visual Web Developer can
use the Visual Studio Web Designer to graphically design web page layouts.
Team
Foun
datio
n
Serve
r
Included only with Visual Studio Team System, Team Foundation Server is intended for
collaborative software development projects and acts as the server-side backend providing source
control, data collection, reporting, and project-tracking functionality. It also includes the Team
Explorer, the client tool for TFS services, which is integrated inside Visual Studio Team System.
[edit]Previ
ous
products
Visual
FoxPro
by Microsoft. It derives from FoxPro (originally known asFoxBASE) which was developed by Fox
Software beginning in 1984. Visual FoxPro is tightly integrated with its own relational database
engine, which extends FoxPro's xBase capabilities to support SQL queries and data manipulation.
Visual FoxPro is a full-featured[citation needed], dynamic programming language that does not require the
Visual FoxPro has been discontinued after version 9 Service Pack 2, but will remain supported until
2015.[40]
Visual
SourceSafe
Microsoft Visual SourceSafe is a source control software package oriented towards small software-
database, using the Windows file system database primitives to provide locking and sharing
support. All versions are multi-user, using SMB (file server) networking.[41][42][43] However, with Visual
SourceSafe 2005, other client–server modes were added, Lan Booster and VSS Internet (which
used HTTP/HTTPS). Visual SourceSafe 6.0 was available as a stand-alone product[44] and was
included with Visual Studio 6.0, and other products such as Office Developer Edition. Visual
SourceSafe 2005 was available as a stand-alone product and included with the 2005 Team
Suite. Team Foundation Serverhas superseded VSS as Microsoft's recommended platform
Microsoft Visual J++ was Microsoft's implementation of the Java language (with Microsoft-specific
extensions) and associated language services. It was discontinued as a result of litigation from Sun
Microsystems, and the technology was recycled into Visual J#, Microsoft's Java compiler for .NET
Framework. J# was available with Visual Studio 2005 but has been discontinued in Visual Studio
2008.
Visual InterDev
Visual InterDev was used to create web applications using Microsoft Active Server Pages (ASP)
technologies. It supports code completion and includesdatabase server management tools. It has
[edit]Visual Studio
stripped-down versions
or per-language basis,
supported platforms (w
phone) or supported de
Express editions do no
languages available as
Visual Basic
Visual C++ E
Visual C# Ex
Visual Web D
Express
Express for W
[edit]Visual
Studio
LightSwitch
is an IDE specifically ta
creating line-of-busines
applications built on ex
SharePoint. LightSwitch
graphical designers for
[edit]Visual
Studio
Professional
development language
Professional edition.[49]
support is available as
depending on licensing
Mobile development su
Professional accepts al
extensibility mechanism
Premium edition.[49]
[edit]Visual Studio
for Office
2008, it is no longer a s
solutions.
[edit]Visual Studio
development, collabora
architecture, testing an
used for.
[edit]Visual Studio T
System
role-specific editions ar
Team Explor
client)
Architecture
Database Ed
Development
Test Edition
provided in a Team Su
as a separate edition a
Studio 2005's initial rele
[edit]Test Profess
tests.[45]
[edit]Editions featu
[edit]Version his
[edit]Visual Studio
(codenamed "Boston")[
editions, Professional a
Enterprise. It included V
Windows programming
programming. It introdu
development environm
separate environments
[edit]Visual Studio
(1998)
Microsoft transitioned th
development focus to th
Framework.
removed as part of a se
extensibility in mind, an
editions: Professional a
found in Professional e
including:
Application Pe
Explorer
Automation M
Microsoft Visu
RemAuto Con
Visual Studio
[edit]Visual Studio
(2002)
.NET,
s Mount Rainier), in Fe
Programs developed us
Language (MSIL) or Co
Intermediate Language
an MSIL application ex
implementation of Com
Language Infrastructure
in Linux or Mac OS X u
Studio to require an NT
Windows platform.[55] Th
Professional, Enterprise
introduced C# (C-sharp
programming language
targets .NET. It also int
Java's language-syntax
tools target.
programs.
applications targeting W
Framework).
environment. Compare
cohesiveness.[citation needed
development track.
March, 2005.[56]
[edit]Visual Studio
2003
to support developing p
compliance improved, e
specialization. Visual C
though As of 2010 it is
Professional, Enterprise
implementation of Micro
Modeling Language-ba
representations of an a
database-modeling solu
"Enterprise Templates"
property settings.
[edit]Visual Studio
codenamed Whidbey (a
to Whidbey Island in Pu
December 2006.[59] An
made available on 3 Ju
ASP.NET applications
databases. Database d
addition of C++/CLI wh
application designs to b
before deployments, an
as IA-64 (Itanium).[62] Th
successor to Visual Ba
consists of a customize
applications to expose
[edit]Visual Studio
to MSDN subscribers o
reference to an island i
of Microsoft's partners a
[67]
Microsoft released S
version is 10.0.
development of Window
by Microsoft Expression
configures compiled as
of Microsoft Foundation
code interoperability, V
algorithms tomanaged
containers, iterators an
that work on C+
an XAML-based design
(codenamed Cider), wo
object encapsulation fo
a concurrentbuild syste
(MSBuild) to compile m
a project across
compilingPNG compres
ources introduced in W
easier debugging of mu
applications. In debugg
executing instruction in
debugging.[78] As of 201
[edit]Visual Studio
Framework 4.[79][80][81]
Presentation Foundatio
[83]
whereas the internal
Extensibility Framework
2010.[85]
programming language
Studio 2010;[86] as do M
modeling language, an
developing applications
supports IBM
developingMicrosoft
Silverlight applications,
interactive designer.[82]
makeparallel programm
runtimestacks.[88] Tools
parallel applications ca
visualization of thread w
parallelism support in P
Studio.[91]
a symbol is selected, a
highlighted.[92] It also of
and camelCasesearche
supports a consume-fir
this by automatically de
System is no longer ba
[edit]Visual Studio U
2010
between them.[97][98] It
impacted by modificatio
speeds up testing by av
includes a Historical
parameters, events, ex
memory as additional d
be recorded. Microsoft
configuration of how mu
should be recorded, in
allowing developers to
Management compone
virtualization to create a
execution environment
operating environment