Showing posts with label XLINQ. Show all posts
Showing posts with label XLINQ. Show all posts

Thursday, October 9, 2008

Nice collection of VB.NET Programming Hacks

A nice collection of VB.NET Programming Hacks

Here is what is available

General
* Aliassing a namespace
* Memory usage for all processes
* Get the commandline parameters
* Get the computername
* Getting text from the clipboard
* Saving text on the clipboard
* Getting the freespace on a drive
* Getting memoryusage of one process
* Get the total space used by a drive
* Path to UNC
* Impersonating an administrator
* Programaticaly changing the Ignore addresses in the proxy settings


Strings
* Use StringBuilder to concatenate strings


Dates
* Add day, month, year to date
* Add time to a date (hours, minutes, seconds)
* Substract Time from a date (hours, minutes, seconds)
* Substract from a date (days, months, years)
* What day of the week is a certain date
* Is this year a leapyear?
* Difference in days between 2 dates


ADO.NET
* Use commandparameters instead of string concatenation


Forms
* Opening a form on a specified monitor
* Show a form in a form
* Open a form as modal
* Open a form
* MDI
* Hide a form on closing

Wednesday, October 24, 2007

C# 3.0 language specifications available for download

Get it here: http://download.microsoft.com/download/3/8/8/388e7205-bc10-4226-b2a8-75351c669b09/csharp%20language%20specification.doc

The document contains 503 pages.

Table of Contents
1. Introduction 1
1.1 Hello world 1
1.2 Program structure 2
1.3 Types and variables 4
1.4 Expressions 6
1.5 Statements 8
1.6 Classes and objects 12
1.6.1 Members 12
1.6.2 Accessibility 13
1.6.3 Type parameters 13
1.6.4 Base classes 14
1.6.5 Fields 14
1.6.6 Methods 15
1.6.6.1 Parameters 15
1.6.6.2 Method body and local variables 16
1.6.6.3 Static and instance methods 17
1.6.6.4 Virtual, override, and abstract methods 18
1.6.6.5 Method overloading 20
1.6.7 Other function members 21
1.6.7.1 Constructors 22
1.6.7.2 Properties 23
1.6.7.3 Indexers 23
1.6.7.4 Events 24
1.6.7.5 Operators 24
1.6.7.6 Destructors 25
1.7 Structs 25
1.8 Arrays 26
1.9 Interfaces 27
1.10 Enums 29
1.11 Delegates 30
1.12 Attributes 31

2. Lexical structure 33
2.1 Programs 33
2.2 Grammars 33
2.2.1 Grammar notation 33
2.2.2 Lexical grammar 34
2.2.3 Syntactic grammar 34
2.3 Lexical analysis 34
2.3.1 Line terminators 35
2.3.2 Comments 35
2.3.3 White space 37
2.4 Tokens 37
2.4.1 Unicode character escape sequences 37
2.4.2 Identifiers 38
2.4.3 Keywords 40
2.4.4 Literals 40
2.4.4.1 Boolean literals 40
2.4.4.2 Integer literals 40
2.4.4.3 Real literals 42
2.4.4.4 Character literals 42
2.4.4.5 String literals 43
2.4.4.6 The null literal 45
2.4.5 Operators and punctuators 45
2.5 Pre-processing directives 45
2.5.1 Conditional compilation symbols 47
2.5.2 Pre-processing expressions 47
2.5.3 Declaration directives 48
2.5.4 Conditional compilation directives 49
2.5.5 Diagnostic directives 51
2.5.6 Region directives 52
2.5.7 Line directives 52
2.5.8 Pragma directives 53
2.5.8.1 Pragma warning 53

3. Basic concepts 55
3.1 Application Startup 55
3.2 Application termination 56
3.3 Declarations 56
3.4 Members 58
3.4.1 Namespace members 59
3.4.2 Struct members 59
3.4.3 Enumeration members 59
3.4.4 Class members 59
3.4.5 Interface members 60
3.4.6 Array members 60
3.4.7 Delegate members 60
3.5 Member access 60
3.5.1 Declared accessibility 60
3.5.2 Accessibility domains 61
3.5.3 Protected access for instance members 63
3.5.4 Accessibility constraints 64
3.6 Signatures and overloading 65
3.7 Scopes 66
3.7.1 Name hiding 69
3.7.1.1 Hiding through nesting 69
3.7.1.2 Hiding through inheritance 70
3.8 Namespace and type names 71
3.8.1 Fully qualified names 73
3.9 Automatic memory management 74
3.10 Execution order 76

4. Types 79
4.1 Value types 79
4.1.1 The System.ValueType type 80
4.1.2 Default constructors 80
4.1.3 Struct types 81
4.1.4 Simple types 81
4.1.5 Integral types 82
4.1.6 Floating point types 83
4.1.7 The decimal type 84
4.1.8 The bool type 85
4.1.9 Enumeration types 85
4.1.10 Nullable types 85
4.2 Reference types 86
4.2.1 Class types 86
4.2.2 The object type 87
4.2.3 The string type 87
4.2.4 Interface types 87
4.2.5 Array types 87
4.2.6 Delegate types 87
4.3 Boxing and unboxing 88
4.3.1 Boxing conversions 88
4.3.2 Unboxing conversions 89
4.4 Constructed types 90
4.4.1 Type arguments 91
4.4.2 Open and closed types 91
4.4.3 Bound and unbound types 91
4.4.4 Satisfying constraints 91
4.5 Type parameters 92
4.6 Expression tree types 93

5. Variables 95
5.1 Variable categories 95
5.1.1 Static variables 95
5.1.2 Instance variables 95
5.1.2.1 Instance variables in classes 96
5.1.2.2 Instance variables in structs 96
5.1.3 Array elements 96
5.1.4 Value parameters 96
5.1.5 Reference parameters 96
5.1.6 Output parameters 97
5.1.7 Local variables 97
5.2 Default values 98
5.3 Definite assignment 98
5.3.1 Initially assigned variables 99
5.3.2 Initially unassigned variables 99
5.3.3 Precise rules for determining definite assignment 99
5.3.3.1 General rules for statements 100
5.3.3.2 Block statements, checked, and unchecked statements 100
5.3.3.3 Expression statements 100
5.3.3.4 Declaration statements 101
5.3.3.5 If statements 101
5.3.3.6 Switch statements 101
5.3.3.7 While statements 101
5.3.3.8 Do statements 102
5.3.3.9 For statements 102
5.3.3.10 Break, continue, and goto statements 102
5.3.3.11 Throw statements 102
5.3.3.12 Return statements 102
5.3.3.13 Try-catch statements 103
5.3.3.14 Try-finally statements 103
5.3.3.15 Try-catch-finally statements 103
5.3.3.16 Foreach statements 104
5.3.3.17 Using statements 104
5.3.3.18 Lock statements 105
5.3.3.19 Yield statements 105
5.3.3.20 General rules for simple expressions 105
5.3.3.21 General rules for expressions with embedded expressions 105
5.3.3.22 Invocation expressions and object creation expressions 106
5.3.3.23 Simple assignment expressions 106
5.3.3.24 && expressions 106
5.3.3.25 || expressions 107
5.3.3.26 ! expressions 108
5.3.3.27 ?? expressions 108
5.3.3.28 ?: expressions 109
5.3.3.29 Anonymous functions 109
5.4 Variable references 110
5.5 Atomicity of variable references 110

6. Conversions 111
6.1 Implicit conversions 111
6.1.1 Identity conversion 111
6.1.2 Implicit numeric conversions 111
6.1.3 Implicit enumeration conversions 112
6.1.4 Implicit nullable conversions 112
6.1.5 Null literal conversions 112
6.1.6 Implicit reference conversions 113
6.1.7 Boxing conversions 113
6.1.8 Implicit constant expression conversions 114
6.1.9 Implicit conversions involving type parameters 114
6.1.10 User-defined implicit conversions 114
6.1.11 Anonymous function conversions and method group conversions 114
6.2 Explicit conversions 114
6.2.1 Explicit numeric conversions 115
6.2.2 Explicit enumeration conversions 116
6.2.3 Explicit nullable conversions 117
6.2.4 Explicit reference conversions 117
6.2.5 Unboxing conversions 118
6.2.6 Explicit conversions involving type parameters 118
6.2.7 User-defined explicit conversions 119
6.3 Standard conversions 119
6.3.1 Standard implicit conversions 119
6.3.2 Standard explicit conversions 120
6.4 User-defined conversions 120
6.4.1 Permitted user-defined conversions 120
6.4.2 Lifted conversion operators 120
6.4.3 Evaluation of user-defined conversions 120
6.4.4 User-defined implicit conversions 121
6.4.5 User-defined explicit conversions 122
6.5 Anonymous function conversions 123
6.5.1 Evaluation of anonymous function conversions to delegate types 124
6.5.2 Evaluation of anonymous function conversions to expression tree types 125
6.5.3 Implementation example 125
6.6 Method group conversions 127

7. Expressions 131
7.1 Expression classifications 131
7.1.1 Values of expressions 132
7.2 Operators 132
7.2.1 Operator precedence and associativity 132
7.2.2 Operator overloading 133
7.2.3 Unary operator overload resolution 135
7.2.4 Binary operator overload resolution 135
7.2.5 Candidate user-defined operators 135
7.2.6 Numeric promotions 136
7.2.6.1 Unary numeric promotions 136
7.2.6.2 Binary numeric promotions 136
7.2.7 Lifted operators 137
7.3 Member lookup 138
7.3.1 Base types 139
7.4 Function members 139
7.4.1 Argument lists 142
7.4.2 Type inference 144
7.4.2.1 The first phase 145
7.4.2.2 The second phase 145
7.4.2.3 Input types 145
7.4.2.4 Output types 145
7.4.2.5 Dependence 145
7.4.2.6 Output type inferences 145
7.4.2.7 Explicit parameter type inferences 146
7.4.2.8 Exact inferences 146
7.4.2.9 Lower-bound inferences 146
7.4.2.10 Fixing 146
7.4.2.11 Inferred return type 147
7.4.2.12 Type inference for conversion of method groups 148
7.4.2.13 Finding the best common type of a set of expressions 148
7.4.3 Overload resolution 148
7.4.3.1 Applicable function member 149
7.4.3.2 Better function member 149
7.4.3.3 Better conversion from expression 150
7.4.3.4 Better conversion from type 151
7.4.3.5 Overloading in generic classes 151
7.4.4 Function member invocation 152
7.4.4.1 Invocations on boxed instances 153
7.5 Primary expressions 153
7.5.1 Literals 154
7.5.2 Simple names 154
7.5.2.1 Invariant meaning in blocks 156
7.5.3 Parenthesized expressions 156
7.5.4 Member access 157
7.5.4.1 Identical simple names and type names 158
7.5.4.2 Grammar ambiguities 159
7.5.5 Invocation expressions 160
7.5.5.1 Method invocations 160
7.5.5.2 Extension method invocations 161
7.5.5.3 Delegate invocations 163
7.5.6 Element access 164
7.5.6.1 Array access 164
7.5.6.2 Indexer access 165
7.5.7 This access 165
7.5.8 Base access 166
7.5.9 Postfix increment and decrement operators 166
7.5.10 The new operator 167
7.5.10.1 Object creation expressions 168
7.5.10.2 Object initializers 169
7.5.10.3 Collection initializers 171
7.5.10.4 Array creation expressions 172
7.5.10.5 Delegate creation expressions 174
7.5.10.6 Anonymous object creation expressions 175
7.5.11 The typeof operator 177
7.5.12 The checked and unchecked operators 178
7.5.13 Default value expressions 180
7.5.14 Anonymous method expressions 181
7.6 Unary operators 181
7.6.1 Unary plus operator 181
7.6.2 Unary minus operator 181
7.6.3 Logical negation operator 182
7.6.4 Bitwise complement operator 182
7.6.5 Prefix increment and decrement operators 183
7.6.6 Cast expressions 183
7.7 Arithmetic operators 184
7.7.1 Multiplication operator 184
7.7.2 Division operator 185
7.7.3 Remainder operator 186
7.7.4 Addition operator 187
7.7.5 Subtraction operator 189
7.8 Shift operators 191
7.9 Relational and type-testing operators 192
7.9.1 Integer comparison operators 192
7.9.2 Floating-point comparison operators 193
7.9.3 Decimal comparison operators 194
7.9.4 Boolean equality operators 194
7.9.5 Enumeration comparison operators 194
7.9.6 Reference type equality operators 194
7.9.7 String equality operators 196
7.9.8 Delegate equality operators 196
7.9.9 Equality operators and null 197
7.9.10 The is operator 197
7.9.11 The as operator 198
7.10 Logical operators 198
7.10.1 Integer logical operators 199
7.10.2 Enumeration logical operators 199
7.10.3 Boolean logical operators 199
7.10.4 Nullable boolean logical operators 199
7.11 Conditional logical operators 200
7.11.1 Boolean conditional logical operators 201
7.11.2 User-defined conditional logical operators 201
7.12 The null coalescing operator 201
7.13 Conditional operator 202
7.14 Anonymous function expressions 203
7.14.1 Anonymous function signatures 205
7.14.2 Anonymous function bodies 205
7.14.3 Overload resolution 206
7.14.4 Outer variables 206
7.14.4.1 Captured outer variables 206
7.14.4.2 Instantiation of local variables 207
7.14.5 Evaluation of anonymous function expressions 209
7.15 Query expressions 209
7.15.1 Ambiguities in query expressions 211
7.15.2 Query expression translation 211
7.15.2.1 Select and groupby clauses with continuations 211
7.15.2.2 Explicit range variable types 212
7.15.2.3 Degenerate query expressions 212
7.15.2.4 From, let, where, join and orderby clauses 213
7.15.2.5 Select clauses 216
7.15.2.6 Groupby clauses 216
7.15.2.7 Transparent identifiers 217
7.15.3 The query expression pattern 218
7.16 Assignment operators 219
7.16.1 Simple assignment 220
7.16.2 Compound assignment 222
7.16.3 Event assignment 223
7.17 Expression 223
7.18 Constant expressions 223
7.19 Boolean expressions 225

8. Statements 227
8.1 End points and reachability 227
8.2 Blocks 229
8.2.1 Statement lists 229
8.3 The empty statement 230
8.4 Labeled statements 230
8.5 Declaration statements 231
8.5.1 Local variable declarations 231
8.5.2 Local constant declarations 232
8.6 Expression statements 233
8.7 Selection statements 233
8.7.1 The if statement 233
8.7.2 The switch statement 234
8.8 Iteration statements 237
8.8.1 The while statement 238
8.8.2 The do statement 238
8.8.3 The for statement 239
8.8.4 The foreach statement 240
8.9 Jump statements 242
8.9.1 The break statement 243
8.9.2 The continue statement 244
8.9.3 The goto statement 244
8.9.4 The return statement 245
8.9.5 The throw statement 246
8.10 The try statement 247
8.11 The checked and unchecked statements 250
8.12 The lock statement 250
8.13 The using statement 251
8.14 The yield statement 253

9. Namespaces 255
9.1 Compilation units 255
9.2 Namespace declarations 255
9.3 Extern aliases 257
9.4 Using directives 257
9.4.1 Using alias directives 258
9.4.2 Using namespace directives 260
9.5 Namespace members 262
9.6 Type declarations 262
9.7 Namespace alias qualifiers 263
9.7.1 Uniqueness of aliases 264

10. Classes 265
10.1 Class declarations 265
10.1.1 Class modifiers 265
10.1.1.1 Abstract classes 266
10.1.1.2 Sealed classes 266
10.1.1.3 Static classes 266
10.1.2 Partial modifier 267
10.1.3 Type parameters 267
10.1.4 Class base specification 268
10.1.4.1 Base classes 268
10.1.4.2 Interface implementations 269
10.1.5 Type parameter constraints 270
10.1.6 Class body 274
10.2 Partial types 274
10.2.1 Attributes 274
10.2.2 Modifiers 274
10.2.3 Type parameters and constraints 275
10.2.4 Base class 275
10.2.5 Base interfaces 275
10.2.6 Members 276
10.2.7 Partial methods 276
10.2.8 Name binding 279
10.3 Class members 279
10.3.1 The instance type 281
10.3.2 Members of constructed types 281
10.3.3 Inheritance 282
10.3.4 The new modifier 283
10.3.5 Access modifiers 283
10.3.6 Constituent types 283
10.3.7 Static and instance members 283
10.3.8 Nested types 284
10.3.8.1 Fully qualified name 285
10.3.8.2 Declared accessibility 285
10.3.8.3 Hiding 285
10.3.8.4 this access 286
10.3.8.5 Access to private and protected members of the containing type 287
10.3.8.6 Nested types in generic classes 288
10.3.9 Reserved member names 288
10.3.9.1 Member names reserved for properties 289
10.3.9.2 Member names reserved for events 289
10.3.9.3 Member names reserved for indexers 289
10.3.9.4 Member names reserved for destructors 290
10.4 Constants 290
10.5 Fields 291
10.5.1 Static and instance fields 293
10.5.2 Readonly fields 293
10.5.2.1 Using static readonly fields for constants 294
10.5.2.2 Versioning of constants and static readonly fields 294
10.5.3 Volatile fields 295
10.5.4 Field initialization 296
10.5.5 Variable initializers 296
10.5.5.1 Static field initialization 297
10.5.5.2 Instance field initialization 298
10.6 Methods 299
10.6.1 Method parameters 300
10.6.1.1 Value parameters 301
10.6.1.2 Reference parameters 302
10.6.1.3 Output parameters 303
10.6.1.4 Parameter arrays 303
10.6.2 Static and instance methods 306
10.6.3 Virtual methods 306
10.6.4 Override methods 308
10.6.5 Sealed methods 310
10.6.6 Abstract methods 311
10.6.7 External methods 312
10.6.8 Partial methods 313
10.6.9 Extension methods 313
10.6.10 Method body 313
10.6.11 Method overloading 314
10.7 Properties 314
10.7.1 Static and instance properties 315
10.7.2 Accessors 316
10.7.3 Automatically implemented properties 320
10.7.4 Accessibility 321
10.7.5 Virtual, sealed, override, and abstract accessors 322
10.8 Events 324
10.8.1 Field-like events 326
10.8.2 Event accessors 327
10.8.3 Static and instance events 328
10.8.4 Virtual, sealed, override, and abstract accessors 329
10.9 Indexers 329
10.9.1 Indexer overloading 333
10.10 Operators 333
10.10.1 Unary operators 335
10.10.2 Binary operators 335
10.10.3 Conversion operators 336
10.11 Instance constructors 338
10.11.1 Constructor initializers 339
10.11.2 Instance variable initializers 340
10.11.3 Constructor execution 340
10.11.4 Default constructors 342
10.11.5 Private constructors 342
10.11.6 Optional instance constructor parameters 343
10.12 Static constructors 343
10.13 Destructors 345
10.14 Iterators 347
10.14.1 Enumerator interfaces 347
10.14.2 Enumerable interfaces 347
10.14.3 Yield type 347
10.14.4 Enumerator objects 347
10.14.4.1 The MoveNext method 348
10.14.4.2 The Current property 349
10.14.4.3 The Dispose method 349
10.14.5 Enumerable objects 349
10.14.5.1 The GetEnumerator method 350
10.14.6 Implementation example 350

11. Structs 357
11.1 Struct declarations 357
11.1.1 Struct modifiers 357
11.1.2 Partial modifier 358
11.1.3 Struct interfaces 358
11.1.4 Struct body 358
11.2 Struct members 358
11.3 Class and struct differences 358
11.3.1 Value semantics 359
11.3.2 Inheritance 360
11.3.3 Assignment 360
11.3.4 Default values 360
11.3.5 Boxing and unboxing 361
11.3.6 Meaning of this 362
11.3.7 Field initializers 363
11.3.8 Constructors 363
11.3.9 Destructors 364
11.3.10 Static constructors 364
11.4 Struct examples 364
11.4.1 Database integer type 364
11.4.2 Database boolean type 366

12. Arrays 369
12.1 Array types 369
12.1.1 The System.Array type 370
12.1.2 Arrays and the generic IList interface 370
12.2 Array creation 370
12.3 Array element access 371
12.4 Array members 371
12.5 Array covariance 371
12.6 Array initializers 371

13. Interfaces 375
13.1 Interface declarations 375
13.1.1 Interface modifiers 375
13.1.2 Partial modifier 375
13.1.3 Base interfaces 376
13.1.4 Interface body 376
13.2 Interface members 376
13.2.1 Interface methods 378
13.2.2 Interface properties 378
13.2.3 Interface events 378
13.2.4 Interface indexers 378
13.2.5 Interface member access 379
13.3 Fully qualified interface member names 380
13.4 Interface implementations 381
13.4.1 Explicit interface member implementations 382
13.4.2 Uniqueness of implemented interfaces 384
13.4.3 Implementation of generic methods 385
13.4.4 Interface mapping 385
13.4.5 Interface implementation inheritance 388
13.4.6 Interface re-implementation 389
13.4.7 Abstract classes and interfaces 391

14. Enums 393
14.1 Enum declarations 393
14.2 Enum modifiers 393
14.3 Enum members 394
14.4 The System.Enum type 396
14.5 Enum values and operations 396

15. Delegates 397
15.1 Delegate declarations 397
15.2 Delegate compatibility 399
15.3 Delegate instantiation 399
15.4 Delegate invocation 400

16. Exceptions 403
16.1 Causes of exceptions 403
16.2 The System.Exception class 403
16.3 How exceptions are handled 403
16.4 Common Exception Classes 404

17. Attributes 407
17.1 Attribute classes 407
17.1.1 Attribute usage 407
17.1.2 Positional and named parameters 408
17.1.3 Attribute parameter types 409
17.2 Attribute specification 409
17.3 Attribute instances 414
17.3.1 Compilation of an attribute 415
17.3.2 Run-time retrieval of an attribute instance 415
17.4 Reserved attributes 415
17.4.1 The AttributeUsage attribute 415
17.4.2 The Conditional attribute 416
17.4.2.1 Conditional methods 416
17.4.2.2 Conditional attribute classes 418
17.4.3 The Obsolete attribute 419
17.5 Attributes for Interoperation 420
17.5.1 Interoperation with COM and Win32 components 421
17.5.2 Interoperation with other .NET languages 421
17.5.2.1 The IndexerName attribute 421

18. Unsafe code 423
18.1 Unsafe contexts 423
18.2 Pointer types 425
18.3 Fixed and moveable variables 428
18.4 Pointer conversions 428
18.5 Pointers in expressions 429
18.5.1 Pointer indirection 430
18.5.2 Pointer member access 430
18.5.3 Pointer element access 431
18.5.4 The address-of operator 432
18.5.5 Pointer increment and decrement 433
18.5.6 Pointer arithmetic 433
18.5.7 Pointer comparison 434
18.5.8 The sizeof operator 434
18.6 The fixed statement 435
18.7 Fixed size buffers 438
18.7.1 Fixed size buffer declarations 438
18.7.2 Fixed size buffers in expressions 440
18.7.3 Definite assignment checking 440
18.8 Stack allocation 441
18.9 Dynamic memory allocation 442

A. Documentation comments 445
A.1 Introduction 445
A.2 Recommended tags 446
A.2.1 447
A.2.2 447
A.2.3 448
A.2.4 448
A.2.5 449
A.2.6 449
A.2.7 450
A.2.8 451
A.2.9 451
A.2.10 451
A.2.11

452
A.2.12 452
A.2.13 453
A.2.14 453
A.2.15 454
A.2.16 454
A.2.17 454
A.2.18 455
A.3 Processing the documentation file 455
A.3.1 ID string format 455
A.3.2 ID string examples 456
A.4 An example 460
A.4.1 C# source code 460
A.4.2 Resulting XML 462

B. Grammar 468
B.1 Lexical grammar 468
B.1.1 Line terminators 468
B.1.2 Comments 468
B.1.3 White space 469
B.1.4 Tokens 469
B.1.5 Unicode character escape sequences 469
B.1.6 Identifiers 470
B.1.7 Keywords 471
B.1.8 Literals 471
B.1.9 Operators and punctuators 473
B.1.10 Pre-processing directives 473
B.2 Syntactic grammar 476
B.2.1 Basic concepts 476
B.2.2 Types 476
B.2.3 Variables 477
B.2.4 Expressions 478
B.2.5 Statements 484
B.2.6 Namespaces 488
B.2.7 Classes 489
B.2.8 Structs 496
B.2.9 Arrays 496
B.2.10 Interfaces 497
B.2.11 Enums 498
B.2.12 Delegates 498
B.2.13 Attributes 499
B.3 Grammar extensions for unsafe code 500

Tuesday, September 11, 2007

Podcast: Don Demsak on LINQ to XML

DotNetRocks has published their latest podcast: Don Demsak on LINQ to XML.

From the site:

Don Demsak (DonXML) discusses LINQ to XML and the new XML language features in Visual Basic.

Don Demsak (a.k.a. DonXML) is a Microsoft MVP and an independent consultant who specializes in architecting and programming multi-tier applications using Microsoft's .Net framework. He is an evangelist that is known for preaching the benefits of XML, SVG, and the .Net framework on various discussion groups across the web and on his blog. He also enjoys the intellectual comradery of working with people from around the world. Don is one of the founders of the SharpVectorGraphics (aka SVG#) open source project, which is bringing SVG to the .Net framework and a member of XmlInsiders, a select group of international professionals who have a demonstrated expertise in Microsoft's XML technologies and who provide valuable, early feedback on related developing technologies and publications to their peers, the Microsoft XML team, and others.


Download it here: http://www.dotnetrocks.com/default.aspx?showNum=271

Friday, August 31, 2007

Download LINQPad

Can't wait for C# 3.0 and LINQ? Well you don't have to! Dynamically query SQL databases today in LINQ: no more struggling with antiquated SQL. Download LINQPad and kiss goodbye to SQL Management Studio: LINQPad supports LINQ to objects, LINQ to SQL and LINQ to XML—in fact, everything in C# 3.0 and .NET Framework 3.5. LINQPad is also a terrific learning tool for experimenting with this exciting new technology.

No installation required: LINQPad ships as a simple "click and run" self-updating 300KB executable. Instant LINQ!


Download it here: http://www.albahari.com/linqpad.html

Friday, July 27, 2007

Video: S. Somasegar (Soma) and Scott Guthrie on Orcas Beta 2: What's in it?

Channel 9 has posted their latest video:
Visual Studio 2008 Code Name "Orcas" Beta 2 has just hit the wire and, since it's Beta 2, this means VS2008 is feature complete (oh, and it's GoLive! as well)!!!

"Orcas" represents a major evolution for Visual Studio and our suite of .NET languages. Who better to talk about what's new in "Orcas" than our friends S. Somasegar (Everybody calls him Soma), VP of the Developer Division (the group that makes all of our development technologies), and Scott Guthrie, General Manager and one of Microsoft's most prolific employees (now a senior manager, but he keeps his hands in the technologies he and team build and innovate).

Here, we talk about what's new, exactly, why you (the developer) should care about it, what's changed from Beta 1 to Beta 2, what's the general process of building "Orcas" (we will dig deeper into this with the folks who drive the new, improved development process in the Developer Division), how feature cut decisions are made.

In this conversation, Scott makes a very interesting comment about the state of .NET languages like VB9 and C# 3.0: In his mind, they represent the most dramatic change since .NET 1.0 in terms of power and productivity.

As always, it's great to chat with Soma and Scott. DevDiv is loaded with talent, from top to bottom.

Play with Beta 2!

Enjoy.


Listen to the podcast(MP3)
Listen to the podcast(WMA)
Download the Video
Watch the Video

Tuesday, July 3, 2007

Microsoft .NET Framework 3.5 June 2007 Community Technology Preview Released

Brief Description
Microsoft .NET Framework 3.5 contains many new features that are compatible with both .NET Framework 2.0 and .NET Framework 3.0. .NET Framework 3.5 includes servicing for .NET Framework 2.0 and .NET Framework 3.0.

Overview
.NET Framework 3.5 builds incrementally on the new features added in .NET Framework 3.0, for example, Windows Workflow Foundation (WF), Windows Communication Foundation (WCF), Windows Presentation Foundation (WPF) and Windows CardSpace. In addition, .NET Framework 3.5 contains a number of new features in several technology areas. These new features have been added as new assemblies to avoid breaking changes. They include the following:
Deep integration of Language Integrated Query (LINQ) and data awareness. This new feature will let you write code written in LINQ-enabled languages to filter, enumerate, and create projections of several types of SQL data, collections, XML, and DataSets by using the same syntax.
ASP.NET AJAX lets you create more efficient, more interactive, and highly-personalized Web experiences that work across all the most popular browsers.
New Web protocol support for building WCF services including AJAX, JSON, REST, POX, RSS, ATOM, and several new WS-* standards.
Full tooling support for WF, WCF, and WPF, including the new workflow-enabled services technology.
New classes in .NET Framework 3.5 base class library (BCL) address the most common customer requests.

Download it here: http://www.microsoft.com/downloads/details.aspx?FamilyID=e6fd8663-8b77-4649-8d36-3830e18528fa&DisplayLang=en

Monday, April 23, 2007

Visual Studio Orcas Lambda Expressions, LINQ, DLINQ And XLINQ Samples

Microsoft has made available a bunch of samples that show how Lambda Expressions, LINQ, DLINQ And XLINQ work in Visual Studio Orcas Beta 1

This is what is available right now
C# LINQ Samples and content for Beta 1
C# LINQ Samples and content for March CTP
VB LINQ Samples for Beta 1


If you install C# LINQ Samples and content for Beta 1 then you will see the following examples
Data
DynamicQuery
ExpressionTreeVisualizer
LinqToNorthwind
ObjectDumper
PasteXmlAsXLinq
Reflector
Rss
SampleQueries
SimpleLambdas
WinFormsDataBinding
XLinqIntro
XQuery

In addidion to the samples there are also these five whitepapers
LINQ to SQL Overview for CSharp Developers.doc
XLinq_Overview - Feb.doc
LINQ Project Overview.doc
CSharp 3.0 Specification.doc
Standard Query Operators.doc

This is all a must read if you want to get started with .NET 3.5

Here is the download link in case the URLs above change: http://msdn2.microsoft.com/en-us/bb330936.aspx