26
What is New in Visual Studio 2010 - .Net 4.0 !!! By : Shahzad Sarwar

New Features for Visual Studio 2010 / Dotnet 4.0

  • Upload
    shahzad

  • View
    7.235

  • Download
    1

Embed Size (px)

DESCRIPTION

New Features for Visual Studio 2010 / Dotnet 4.0

Citation preview

Page 1: New Features for Visual Studio 2010 / Dotnet 4.0

What is New in Visual Studio 2010 - .Net 4.0 !!!

By : Shahzad Sarwar

Page 2: New Features for Visual Studio 2010 / Dotnet 4.0

Dynamic Type• Background Theory, Difference between Static/Dynamic

languages Plus Strongly typed/Weekly typed Languages[Static/Dynamic deals “When” of type checking for a language, however Strong/Week deals with “How” of type checking for a language.]

• C# is Static and strongly typed language.• Type determination of “dynamic” type can be delayed till run

time. • According to MSDN: “The type is a static type, but an object of

type dynamic bypasses static type checking. In most cases, it functions like it has type object. At compile time, an element that is typed as dynamic is assumed to support any operation.”

• Demo Code at: http://softarchitect.wordpress.com/2010/08/08/software-architecture-c-sharp-4-0-new-feature-dynamic-type/

Page 3: New Features for Visual Studio 2010 / Dotnet 4.0

Dynamic TypeWhere to use:• Perform so many cast operations that it makes your code

almost unreadable.• Situations when a simple cast is not enough and needs

reflection methods, such as InvokeMember or GetProperties.• Enable scenarios that were either impossible or difficult,

including interoperation with dynamic languages. Examples of Usage:

• COM APIs such as the Office Automation APIs• Dynamic APIs such as IronPython libraries• HTML Document Object Model (DOM)

Overload Resolution with Arguments of Type dynamic Demo Code

http://softarchitect.wordpress.com/2011/01/30/software-architecture-%e2%80%93-c-4-0-%e2%80%93-dynamic-type-compile-time-polymorphism-method-overloading/

Page 4: New Features for Visual Studio 2010 / Dotnet 4.0

Dynamic Type• System.Dynamic namespace• DynamicObject Class:Provides a base class for

specifying dynamic behavior at run time.Demo Code:http://softarchitect.wordpress.com/2011/02/26/software-architecture-dynamicobject-class-of-system-dynamic-namespace-in-c-shar-4-0/

• ExpandoObject Class :Represents an object whose members can be dynamically added and removed at run time.

Implementation of the dynamic object concept that enables getting, setting, and invoking members.

Demo Code:http://softarchitect.wordpress.com/2011/02/26/software-architecture-expandoobject-class-of-system-dynamic-namespace-in-c-sharp-4-0/

Page 5: New Features for Visual Studio 2010 / Dotnet 4.0

Tuple• Generic type that provide an option to group together

different type of object in one piece.• Creation method via 1. Constructor 2. Static method create

of System.Tuple • By default, eight elements, for further do nested Tuples.• Tuples vs Anonymous Type

1. Anonymous Type: Can’t be passed as return type from a method. Tuples can be passed as input parameters and return type.2. Tuples can’t be identified with name, they are just called item1,item2,item3…itemn. However items of anonymous type can be named.

Demo Code: http://softarchitect.wordpress.com/2010/08/15/software-architecture-c-sharp-4-0-new-feature-tuple/

Page 6: New Features for Visual Studio 2010 / Dotnet 4.0

Lazy initialization• Backgroud, OR Mapping technologies like linq 2

sql or nhibernate, has ”Lazy loading” which suggest that a object/collection as property in a object is not created till it is accessed in the code.

• Provided with Lazy class at System.Lazy(Of T).• Suggests that “an object is not created till it is

used by the first time the Lazy(Of T).Value property is accessed or the Lazy(Of T).ToString method is called”

• Demo Code:http://softarchitect.wordpress.com/2010/08/14/software-architecture-c-sharp-4-0-new-feature-lazy-initialization/

Page 7: New Features for Visual Studio 2010 / Dotnet 4.0

Named Parameters and Optional Parameters• Named arguments enable you to specify an argument for a

particular parameter by associating the argument with the parameter’s name rather than with the parameter’s position in the parameter list.

• IntelliSense is shown for named parameters, by specifying parameters name followed by “:”

• Each optional parameter has a default value as part of its definition.

• Optional parameters are defined at the end of the parameter list, after any required parameters. If the caller provides an argument for any one of a succession of optional parameters, it must provide arguments for all preceding optional parameters.

• Optional parameters are shown by square brackets.• Demo Code:

http://softarchitect.wordpress.com/2010/07/25/software-architecture-c-4-0-new-feature-named-parameters-and-optional-parameters/

Page 8: New Features for Visual Studio 2010 / Dotnet 4.0

Synchronized Data Structures• New namespace with name “System.Collections.Concurrent”

which provide set of collections having thread safe behavior.• Some Important Thread Safe Collections.

• BlockingCollection<T> • ConcurrentBag<T> • ConcurrentDictionary<TKey, TValue> • ConcurrentQueue<T> • ConcurrentStack<T> • OrderablePartitioner<TSource> • Partitioner • Partitioner<TSource>

• Reference:http://softarchitect.wordpress.com/2010/08/15/software-architecture-c-sharp-4-0-new-feature-synchronized-data-structures-thread-safe-queue/

Page 9: New Features for Visual Studio 2010 / Dotnet 4.0

Covariance and Contravariance and Invariance

• Variance Theory • As more specific type can be assigned to less specific type, but reverse is not

possible. This thin is called compatibility Assignment.• In actual mathematical integers, consider ≤ relation on integers, the "less than or

equal to" relation.• A "relation" is a function which takes two things and returns a bool which

indicates whether the given relationship holds or does not hold.• A projection is a function which takes a single integer and returns a new integer.

So, for example, z → z + z is a projection; call it D for "double". So are z → 0 - z, N for "negate" and z → z * z, S for "square".

• (x ≤ y) = (D(x) ≤ D(y))? • [D preserves the direction of size, The projection D is "covariant"]• (x ≤ y) = (N(x) ≤ N(y))? • [N reverses the direction of size, The projection N is "contravariant"]• (x ≤ y) = (S(x) ≤ S(y))? • [S does not preserve the direction of size, and nor does it reverse it, The

projection S is "invariant".]

Page 10: New Features for Visual Studio 2010 / Dotnet 4.0

Covariance and Contravariance and Invariance

• A Giraffe may be assigned to a variable of type Animal, and therefore an sequence of Giraffes may be assigned to a variable that can hold a sequence of Animals.

• IEnumerable<T> is covariant" what we mean is "the projection which takes a reference type T and produces a reference type IEnumerable<T> is a covariant projection".

• Demo Code 1 & 2• http://msdn.microsoft.com/en-us/library/ms173174(v=vs.80

).aspx• http://blogs.msdn.com/b/ericlippert/archive/2009/11/30/w

hat-s-the-difference-between-covariance-and-assignment-compatibility.aspx

Videos:• http://msdn.microsoft.com/en-us/vcsharp/Video/ee672314• http://msdn.microsoft.com/en-us/vcsharp/video/Ee672319

Page 11: New Features for Visual Studio 2010 / Dotnet 4.0

Generate From UsageTrick is to first use class,its properies,its method , its constructor and then

generate code on basis of usage by simply pressing CTRL + “.” several times. [Demo]

• Generating a Class from Usage• Generating a Delegate Stub from Usage• Generating an Interface Stub from Usage• Generating New Types with Additional Options from Usage ( General for all )• http://msdn.microsoft.com/en-us/library/dd409796.aspx

Page 12: New Features for Visual Studio 2010 / Dotnet 4.0

Intelliense Modes• Use suggestion mode when classes and members are

used before they are defined.• In suggestion mode, when you type in the editor and

then commit the entry, the text you typed is inserted into the code. When you commit an entry in completion mode, the highlighted entry in the members list is inserted into the code.

• To avoid this problem, press CTRL+ALT+SPACEBAR to switch to IntelliSense suggestion mode (as opposed to completion mode).

http://msdn.microsoft.com/en-us/library/exbffbc2.aspx

Page 13: New Features for Visual Studio 2010 / Dotnet 4.0

Call Hierarchy window• To navigate through your code by displaying all calls to and from a selected

method, property, or constructor.• Available at design time, unlike the call stack that is displayed by the

debugger.• Search Scope box >> My Solution, Current Project, and Current Document.• Context Menu Item >>Add As New Root , Remove Root , Go To Definition ,

Find All References , Copy , Refresh Reference: http://msdn.microsoft.com/en-us/library/dd409859.aspx

Page 14: New Features for Visual Studio 2010 / Dotnet 4.0

Navigate To Window• A quick search tool for symbols Just press CTRL + “,” (or click Edit

and then Navigate To) to see the new Navigate To window.• Other Options>>Object Browser,Find Symbol,Find ,Go To Line.Reference:

http://msdn.microsoft.com/en-us/library/4sadchd3(v=VS.100).aspx

Page 15: New Features for Visual Studio 2010 / Dotnet 4.0

Productivity OptionsReference Highlighting• Put the cursor on a symbol (method, property, variable, etc.), all

instances of this symbol are automatically highlighted in the code editor.

• Navigate from one instance to another within a file by pressing CTRL+SHIFT+UP/DOWN ARROW.

Zoom• Press CTRL and use your mouse wheel to enlarge or decrease your

font size.Box Selection and Multiline Editing• Press ALT and then use your mouse or arrow keys to select the box

area.• Multiline box selection was there for delete from many versions of

studio. But now insert,edit,replace is also supported.• http://blogs.msdn.com/b/vseditor/archive/2009/05/25/the-new-box-

selection-now-with-multi-line-editing.aspx

Page 16: New Features for Visual Studio 2010 / Dotnet 4.0

Productivity Options• Code Intellisense with VS 2010(Regardless of what word it starts with – Find all keywords

having that word)Searching for Keywords Searching for TypesExamples: Exception , List

• Pascal Case IntellisenseFind and filter methods based on their pascal naming

pattern. For details see:http://weblogs.asp.net/scottgu/archive/2009/10/22/vs-2010-code-intellisense-improvements-vs-2010-and-net-4-0-series.aspx

Page 17: New Features for Visual Studio 2010 / Dotnet 4.0

Debugging Tips• Position cursor on the line in your code that you want to run the application

to, and then press the Ctrl + F10 keys together.• Grouping Multiple Breakpoints Together using a Label + Filtering/Sorting

Breakpoints by Label +Toggling Breakpoints On/Off by Label• Importing/Exporting Breakpoints• Pinned DataTips• Associating Comments with Pinned DataTips• See the Value Pinned DataTips from Last Debug Session• Importing/Exporting Pinned DataTips• Debugging Applications with IntelliTrace - Totally new debugger tool [Only for ultimate edition-Not covered in presentation-Self Reading]• Parallel Tasks and Parallel Stacks windows to debug a parallel application.

[Not covered in presentation-Self Reading]• http://weblogs.asp.net/scottgu/archive/2010/08/18/debugging-tips-with-vi

sual-studio-2010.aspx• http://weblogs.asp.net/scottgu/archive/2010/04/21/vs-2010-debugger-imp

rovements-breakpoints-datatips-import-export.aspx

Page 18: New Features for Visual Studio 2010 / Dotnet 4.0

Pinning Projects and Solutions • Pinning concept is there only for Windows 7• Window 7 allow to pin Mspaint ot

any other application.• Same can be done for Visual studio 2010• Even Projects can be pinned, so that they are avai

lable for quick access.• http://weblogs.asp.net/scottgu/archive/2010/05/

10/pinning-projects-and-solutions-with-visual-studio-2010.aspx

Page 21: New Features for Visual Studio 2010 / Dotnet 4.0

ASP .Net• ASP .Net Charting buildin support• http://weblogs.asp.net/scottgu/archive/2010/02/07/built-in-charting-control

s-vs-2010-and-net-4-series.aspxjQuery library• The Visual Studio templates for both Web Forms and MVC include the open-

source jQuery library.Enabling View State for Individual Controls• In earlier versions of ASP.NET, developers could disable view state

(EnableViewState)for individual controls in order to reduce page size, but had to do so explicitly for individual controls. In ASP.NET 4, Web server controls include a ViewStateMode property that lets you disable view state by default and then enable it only for the controls that require it in the page.

• The ViewStateMode property takes an enumeration that has three values: Enabled, Disabled, and Inherit. Enabled enables view state for that control and for any child controls that are set to Inherit or that have nothing set. Disabled disables view state, and Inherit specifies that the control uses the ViewStateMode setting from the parent control.

Page 22: New Features for Visual Studio 2010 / Dotnet 4.0

ASP .Net - Extensible Output Caching Recap till ASP .Net 3.5<%@ OutputCache Duration="#ofseconds" Location="Any | Client | Downstream | Server | None | ServerAndClient "

Shared="True | False" VaryByControl="controlname" VaryByCustom="browser | customstring" VaryByHeader="headers" VaryByParam="parametername" VaryByContentEncoding="encodings" CacheProfile="cache profile name | ''" NoStore="true | false" SqlDependency="database/table name pair | CommandNotification" ProviderName="Provider Name" %>

• http://weblogs.asp.net/scottgu/archive/2010/01/27/extensible-output-caching-with-asp-net-4-vs-2010-and-net-4-0-series.aspx

• http://msdn.microsoft.com/en-us/library/hdxfb6cy(v=VS.100).aspx

Page 23: New Features for Visual Studio 2010 / Dotnet 4.0

Memory-mapped• According Wiki A memory-mapped file is a segment of virtual memory which has

been assigned a direct byte-for-byte correlation with some portion of a file or file-like resource. This resource is typically a file that is physically present on-disk, but can also be a device, shared memory object, or other resource that the operating system can reference through a file descriptor.

• In C# 4.0, Microsoft has introduced a new namespace “System.IO.MemoryMappedFiles” for manipulating memory mapped file.

• CreateViewStream method of MemoryMappedFiles is used to create a stream which is mapped to memory mapped file.

• Reference: http://softarchitect.wordpress.com/2010/08/15/software-architecture-c-sharp-4-0-new-feature-memory-mapped-file/

Page 24: New Features for Visual Studio 2010 / Dotnet 4.0

Enum-HasFlag(Enum flag )• In C# 4.0, enum has a new function as:

public bool HasFlag(Enum flag )• which takes second enum as parameter and

return bool as true if the bit field or bit fields that are set in flag are also set in the current instance; otherwise, false.

• Logically HasFlag evaluates following expression:• thisInstance And flag = flag • Reference:

http://softarchitect.wordpress.com/2010/09/15/software-architecture-c-sharp-4-0-new-feature-enum-hasflag/

Page 25: New Features for Visual Studio 2010 / Dotnet 4.0

Managed Extensibility Framework or MEF

• The Managed Extensibility Framework or MEF is a library for creating lightweight, extensible applications. It allows application developers to discover and use extensions with no configuration required. It also lets extension developers easily encapsulate code and avoid fragile hard dependencies. MEF not only allows extensions to be reused within applications, but across applications as well.

• Reference: http://softarchitect.wordpress.com/2010/08/14/software-architecture-c-sharp-4-0-new-feature-whywhathow-of-managed-extensibility-framework-mef-sample-calculator-code/

Page 26: New Features for Visual Studio 2010 / Dotnet 4.0

Keep Visiting me at: http://softarchitect.wordpress.com