papadi Development Blog

.NET and Software Development by Dimitris Papadimitriou 
Filed under

Visual Studio

 

Overriding a small problem with Net.Tcp Port Sharing service and Visual Studio 2010 RC

I installed Visual Studio 2010 RC a couple of days after it became available, after uninstalling the previous installed beta 2. Today I discovered a small problem with Net.Tcp Port Sharing service. The status of the Windows Services console was the one show in the attached screen shot. It appears that the installation didn't update the service and it was still registered with executable that was in the previous version of .NET 4 (beta 2). So when trying to start the service I was getting a File not found error in Windows Event log.

I'm not sure if this was a problem of installation of RC or uninstallation of beta 2. Anyway, fixing the problem was easy. I downloaded .NET Framework 4 RC and executed it with the Repair option selected.

Filed under  //   .NET   Visual Studio  

Comments [1]

Finally! Create Project, Add New Item and Add Reference dialogs are fast!

I just installed Visual Studio 2010 Beta 2 on my machine. I only had little time to play with it so far but I'm so excited! Finally dialog boxes are fast! I never understood so far why 'Create New Project' and 'Add New Item' were so slow in previous versions! Any why 'Add Reference' was opening .NET Assembly tab by default and not Project tab.
Guess what! Huge improvement in VS 2010! Dialogs open extremely fast and Add Reference shows Project tab by default now. And even if you press COM or .NET tabs they are rendered in a few milliseconds!
Startup time of Visual Studio itself seems also improved!

Filed under  //   .NET   Visual Studio  

Comments [0]

Finally! Edit and Continue in x64!

To x64 or not to x64? One thing that was troubling me answering this question was the lack of 'Edit and Continue' feature when Visual Studio works under x64 (64 bit) operating system.

'Edit and Continue' allows editing code while being in debug mode and resuming execution without restarting the application. Yes, yes. Some people will argue that this is not a big deal, since 'Edit and Continue' is just a nice to have feature and not that important. I will tell you something. Most of the times these people are web developers that never had the chance to use it, since it was never available when developing on ASP.NET.

Good news! Edit and Continue is available on .NET 4 even when using x64 OS! Still not possible on ASP.NET. Watch my screencast...

Filed under  //   .NET   Screencast   Visual Studio   x64  

Comments [0]

.NET 3.5 in the eyes of a 5 year-old girl!

Very funny video of a little girl offering her opinion on .NET Framework 3.5! Presented by Soma Somasegar during his keynote in MVP Summit 2009!

Filed under  //   .NET   MVP   Video   Visual Studio  

Comments [0]

Windows Mobile - Χάρτης Προσανατολισμού

Νωρίτερα αυτή την άνοιξη είχα κάνει δυο παρουσιάσεις για τα Windows Mobile και σαν εισαγωγή προσπάθησα να συνοψίσω σε μια διαφάνεια τις βασικές τεχνολογίες και τα εργαλεία που πλαισιώνουν την ανάπτυξη λογισμικού σε αυτή την κατηγορία συσκευών. Πολλές φορές γίνεται μια σύγχυση των εννοιών Compact και Mobile, ενώ και οι συχνές αλλαγές ονομασιών για λόγους μάλλον μαρκετινγκ μπερδεύουν τα πράγματα περισσότερο. Δεν σας κρύβω ότι όταν για πρώτη φορά αποφάσισα να ασχοληθώ με το αντικείμενο αυτό είχα αρχίσει να πιστεύω ότι υπάρχει μια κρυφή συνομωσία και τα πράγματα είναι απλά για τους άλλους αλλά το κρύβει ο καθένας για τον εαυτό του! Δεν είναι εκνευριστικό όταν συμβαίνει αυτό;

Επιτρέψτε μου λοιπόν να επιχειρήσω να ξεδιαλύνω λίγο το τοπίο, ειδικά γι όσους θέλουν να ξεκινήσουν τώρα. Καταρχήν ας ρίξουμε μια ματιά στο παρακάτω slide:

Εκδόσεις "φορητών" Windows

Πατέρας όλων των Windows Mobile είναι τα Windows CE (Compact Edition). Προσοχή όμως, Compact Edition δεν σημαίνει απαραίτητα και mobile. Θα μπορούμε να δούμε Windows CE και σε σταθερές συσκευές, όπως... μια ραπτομηχανή. Για την ακρίβεια, τα Windows CE είναι μια πλατφόρμα-λειτουργικό σύστημα για συσκευές με περιορισμένης ισχύος hardware. Η διαφορά τους με άλλα λειτουργικά συστήματα για μικρές συσκευές, όπως τα Windows XP Embedded, είναι ότι πρόκειται για ένα σύστημα με ξεχωριστό kernel και όχι για απλά ένα λειτουργικό που του έχουν αφαιρεθεί χαρακτηριστικά για να "χωρέσει" σε μια μικρή συσκευή. Τα Windows Mobile από την άλλη αποτελούν μια (επιτρέψτε μου τη χρήση μιας λέξης βγαλμένης από έναν άλλο κόσμο) "διανομή" των Windows CE, η οποία έχει δημιουργηθεί από τη Microsoft για συσκευές PDA (Personal Digital Assistant) και κινητά τηλέφωνα.  Άλλες "διανομές" των Windows CE, εκτός των Mobile, είναι τα Windows Automotive, αλλά σε αυτό το άρθρο δεν θα επεκταθούμε σε αυτά.

Τα Windows Mobile έχουν εμφανιστεί στην αγορά με διάφορα ονόματα, συνοδεύοντας πάντα συγκεκριμένες συσκευές (Δυστυχώς δεν μπορεί κανείς να αγοράσει τα Windows Mobile μόνο και να τα εγκαταστήσει μόνος στο κινητό του τηλέφωνο. Κυρίως λόγω των ιδιομορφιών και ασυμβατοτήτων που υπάρχουν σε θέματα hardware από συσκευή σε συσκευή. Υπάρχουν διάφοροι τύποι που προσπαθούν να κάνουν κάτι τέτοιο και ακόμα κι αν παραβλέψουμε τα θέματα νομιμότητας, το αποτέλεσμα δεν νομίζω να ικανοποιήσει κάποιον που θέλει το τηλέφωνό του να χτυπήσει οπωσδήποτε όταν έχει μια εισερχόμενη κλήση!!! Πίσω στο θέμα μας...). Η πρώτη έκδοση των Windows Mobile είχε το όνομα Windows Pocket PC 2000 και κράτησε το όνομά αυτό έως το 2003. Το όνομα που ακολούθησε είναι το Windows Mobile (εκδόσεις 5 και 6 μέχρι και σήμερα).

Κάθε έκδοση βγήκε στην αγορά με τρεις διανομές (φτου... πάλι κακιές λέξεις!): Smartphone, Pocket PC και Pocket PC Phone Edition. Και για να μην πλήττουμε με τα ίδια και τα ίδια, οι ίδιες διανομές πλέον έχουν τα ονόματα Standard, Classic και Professional αντίστοιχα. Η πρώτη απευθύνεται σε κινητά που μοιάζουν με τα κλασικά κινητά (αριθμητικό πληκτρολόγιο 9-12 πλήκτρων, χωρίς οθόνη αφής), τα δεύτερα είναι τα κλασσικά PDA (με ή χωρίς QWERTY πληκτρολόγιο και με οθόνη αφής) ενώ τα τελευταία είναι τα PDA που έχουν και λειτουργίες τηλεφώνου.

.NET Framework

Ας περάσουμε τώρα στον κόσμο της ανάπτυξης λογισμικού για τις συσκευές αυτές. Ο πιο εύκολος τρόπος να γράψει κανείς λογισμικό για Windows Mobile είναι φυσικά το .NET το οποίο και αυτό κυκλοφορεί σε διάφορες εκδόσεις. Η standard desktop έκδοσή του, η έκδοση Compact (γνωστή και ως .NET CF - Compact Framewok), η έκδοση Micro (για συσκευές ακόμα πιο μικρές από το κινητό μας τηλέφωνο) και άλλες όπως το Silverlight και το Mono (.NET για Linux) . Φυσικά για Windows Mobile μας ενδιαφέρει η έκδοση Compact. Η νεότερη έκδοση είναι η 3.5 η οποία φέρει μερικά από τα νέα χαρακτηριστικά της αντίστοιχης desktop έκδοσης.

Στην εικόνα δεξιά βλέπετε τα διαθέσιμα namespaces του .NET CF 3.5. Πρόκειται για ένα subset του desktop .NET, ενώ μεταξύ αυτών υπάρχει και το Microsoft.ServiceModel.Channels.Mail για το οποίο υπερυφανεύεται η ομάδα του .NET CF ότι είναι το πρώτο namespace που παιρνάει από το Compact στο desktop .NET Framework!

Ίσως δεν είναι αρκετά ξεκάθαρο, αλλά τα namespaces αυτά δεν καλύπτουν λειτουργικότητα όπως αποστολή sms, ανάγνωση των επαφών του Pocket Outlook και άλλα cool χαρακτηριστικά με τα οποία θα ήθελε κανείς να "παίξει" αναπτύσσοντας για Windows Mobile. Αυτά είναι χαρακτηριστικά τα οποία είναι προσβάσιμα μέσω του API των Windows Mobile (βλ. επόμενη παράγραφο). Το .NET CF προσφέρει τα βασικά που χρειάζεται κανείς για να γράψει λογισμικό π.χ. Arrays, Data Access, Forms κ.α. και φυσικά τις γλώσσες προγραμματισμού VB.NET και C#.
Κάντε κλικ εδώ για σχετικά Resources.

Managed vs Unmanaged API

Όπως και στο desktop development, έτσι και στα Windows Mobile το API του λειτουργικού συστήματος είναι διαθέσιμο για χρήση από τις εφαρμογές μας. Η λειτουργικότητα που προσφέρουν τα Windows Mobile και μπορούμε να χρησιμοποιήσουμε έχει να κάνει με το UI (Forms), με τις λειτουργίες του PocketOutlook (επαφές, sms, ημερολόγιο κλπ.), με τις λειτουργίες τηλεφώνου (αν υποστηρίζονται από τη συσκευή) κ.α. Οι λειτουργίες αυτές είναι διαθέσιμες μέσω Managed API (άμεση πρόσβαση μέσω .NET προσθέτοντας απλά .NET References στο project μας) ή μέσω Unmanaged API (πρόσβαση με χρήση native dlls). Το SDK των Windows Mobile 6 έχει αρκετά εμπλουτισμένο Managed API (βλ. σχετικά namespaces στην εικόνα αριστερά) και μπορούμε να έχουμε πρόσβαση στις περισσότερες λειτουργίες του λειτουργικού υστήματος χωρίς να μπερδευόμαστε με την πολυπλοκότητα του Unmanaged API. Κάντε κλικ εδώ για σχετικά Resources.

Development Environment και SDKs

Χρησιμοποιώντας το Visual Studio μπορούμε να δημιουργήσουμε εφαρμογές για όλες τις παραπάνω εκδόσεις των Windows Mobile χρησιμοποιώντας το .NET CF. Κάθε έκδοση του Visual Studio βγαίνει με προεγκατεστημένο κάποιο SDK (Software Development Kit) για κάποιες εκδόσεις των Windows Mobile που βρίσκονται στο προσκήνιο την ίδια χρονική περίοδο. Έτσι με το Visual Studio 2003 μπορούσαμε να δημιουργήσουμε εφαρμογές για Pocket PC 2002, με το VS 2005 για 2002-2003, ενώ με το 2008 μέχρι και για Windows Mobile 5. Εγκαθιστώντας επιπλέον SDKs που διανέμονται δωρεάν από την Microsoft μπορούμε να προσθέσουμε στο Visual Studio τη δυνατότητα να αναπτύξουμε και για νεότερες εκδόσεις. Π.χ. κάντε κλικ εδώ για να κατεβάσετε το SDK για τα Windows Mobile 6 Professional.

SQL Server

Για όλους εμάς που παρακολουθούμε την εξέλιξη των Windows Mobile, οι βάσεις δεδομένων σε τόσο μικρές συσκευές είναι κάτι δεδομένο (την ίδια στιγμή σε άλλα αντίστοιχα περιβάλλοντα η χρήση αρχείων για την αποθήκευση δεδομένων θεωρείται ακόμα τεχνολογία αιχμής και η "αρχαία" συζήτηση για τα προτερήματα της χρήσης βάσεων δεδομένων αντί αρχείων είναι ακόμα επίκαιρη!!!). Εμείς όμως έχουμε τον SQL Server CE (Compact Edition - στο παρελθόν SQL Server for Windows CE ή SQL Server Mobile Edition). Προσοχή όμως! Compact Edition δεν σημαίνει απαραίτητα Mobile. Μπορούμε να έχουμε SQL Server CE και σε desktop λειτουργικό (π.χ. Vista, XP). Η διαφορές με τον κλασσικό SQL Server φυσικά είναι εμφανής και έχουν να κάνουν με ελλειπή λειτουργικότητα αλλά και μικρότερο footprint (ακόμα μικρότερο και από τον SQL Server Express).

Ο SQL Server CE είναι ένα μεγάλο κεφάλαιο από μόνο του οπότε ίσως το αναλύσω σε κάποιο μελλοντικό post. Έως τότε μπορείτε να τον κατεβάσετε (δωρεάν) και να πειραματιστείτε. Απλά κάντε κλικ στο Add New Item στο Visual Studio και προσθέστε μια νέα βάση στο project σας (Database File).

Ελπίζω όλα αυτά να βοήθησαν λίγο την κατάσταση και να σας βοήθησαν να ξεδιαλύνετε λίγο τα πράγματα.

Filed under  //   .NET   Greek   Mobile   Visual Studio  

Comments [0]

15ο dNZ event - Mobile development - Post Event stuff!

Την περασμένη Τετάρτη, 9 Απριλίου παρουσίασα τις νέες δυνατοτήτες του Visual Studio 2008 σχετικά με την ανάπτυξη mobile εφαρμογών. Η παρουσίαση έγινε στα πλαίσια του 15ου dotNETZone event. Ήταν το 1ο μέρος μιας σειράς από 6 παρουσιάσεις που θα γίνουν έως το καλοκαίρι και θα παρουσιάζουν στα μέλη της κοινότητας τα νέα development εργαλεία της Microsoft, με επίκεντρο πάντα το Visual Studio.

Επισυνάπτω παρακάτω την παρουσίαση σε Power Point και δυο συμπιεσμένα αρχεια με τα παραδείγματα που είδαμε. Επίσης, κατά τη διάρκεια τους παρουσίασης είδαμε και ένα παράδειγμα συγχρονισμού δεδομένων μεταξύ μιας βάσης δεδομένων SQL Server Compact Edition και μιας SQL Server 2005. Όπως υποσχέθηκα, παραθέτω δυο links με αναλυτικά βήματα για το πως μπορεί να επιτευχθεί κάτι τέτοιο. Συνιστώ να ακολουθήσετε με μεγάλη προσοχή αυτά τα walkthtough καθώς περιέχουν σημαντικές λεπτομέρειες, τις οποίες αν παραβλέψετε μπορεί να... σπάσετε το κεφάλι σας μέχρι να το κάνετε να δουλέψει

Μεταξύ των άλλων θεμάτων, είδαμε και τον εξαιρετικό Cellular Emulator, ο οποίος μπορεί να εξομοιώσει εισερχόμενες και εξερχόμενες κλήσεις και SMS, δίκτυο 2G/3G και άλλες λειτουργίες ενός κινητού τηλεφώνου, εκτοξεύοντας έτσι την χρηστικότητα των ήδη πολύ χρήσιμων Windows Mobile Emulators που συνοδεύουν το Visual Studio και τα Windows Mobile SDKs.

Στους παρευρισκομένους μοιράστηκαν δωρεάν DVD με χρήσιμο υλικό που περιλάμβανε trial εκδόσεις των Windows Server 2008 (32/64bit), Visual Studio 2008 και CTP του SQL Server 2008, καθώς και ένα DVD σχετικό με Windows Mobile Development.

Ελπίζω η παρουσίαση αυτή να φάνηκε χρήσιμη σε όσους την παρακολούθησαν. Φυσικά... "στέι τιουντ" για τις επόμενες παρουσιάσεις του dotNETZone, στις οποίες θα έχετε την ευκαιρία γρήγορα και εύκολα να γνωρίσετε τις νέες προσθήκες στο Visual Studio 2008.

Special thanks to Michael Saffitz (Program Manager on the Windows Mobile Developer Experience team) and Daniel Moth (Microsoft Developer Evangelist) for their help getting ready for this presentation!

FAQ Σχετικά με τα events του dotNETZone

  • Πως μπορώ να μαθαίνω για τα events του dotNETZone.gr;
    Στην προσπάθειά μας να ενημερώνουμε το δυνατόν ευκολότερα για να events του dotNETZone.gr δημοσιεύουμε τα events μας στην πρώτη σελίδα του site μας. Παράλληλα δημοσιεύονται σε ελληνικά social bookmarking sites, το site του INETA Hellas και στο Facebook group του dotNETZone.gr.
  • Χρειάζεται προεγγραφή;
    Όχι
  • Που γίνεται;
    Στις εγκαταστάσεις της Microsoft Hellas στο Μαρούσι.
  • Πόσο κοστίζει;
    Είναι δωρεάν
  • Χρειάζεται να είμαι μέλος του dotNETZone.gr;
    Όχι, αλλά προτείνεται!
  • Πόση ώρα διαρκεί;
    Περίπου δυο ώρες ενώ στη συνέχεια ακολουθεί και μπύρα σε κοντινή μπυραρία...

Click here to download:
LowBatteryNotifications.zip (8 KB)

Click here to download:
demos._zip (7128 KB)

Filed under  //   .NET   dotNETZone   Greek   Mobile   Visual Studio  

Comments [0]

ResEx Version 1.1 is available!

Version 1.1 of ResEx is available! Here is more:

New version fixes some bugs, thus can be considered a stabilization release.

About ResEx

ResEx is the composite, translator friendly resource editor for .NET. Here is a quick list of feature supported:

  • Translate values side by side (just like the old time classic VB6 resource editor)
  • Lock specific strings so that translator does not translate them
  • Restrict length of translating strings
  • Ensure correct translation of strings with placeholders {0} {1} ...
  • Warnings about shortcut characters (string containing &)
  • View resource strings in tree form
  • Translate resources without Visual Studio IDE
  • Search inside resource files while translating

Filed under  //   .NET   ResEx   Tools   Visual Studio  

Comments [0]

ResEx - The composite, translation friendly .NET Resource editor

I have just released version 1.00 of ResEx, the composite, translation friendly .NET Resource editor. ResEx has been in beta version for some months to ensure some level of quality in the implementation of supported features. Here is a quick list of feature supported:

  • Translate values side by side (just like the old time classic VB6 resource editor)
  • Lock specific strings so that translator does not translate them
  • Restrict length of translating strings
  • Ensure correct translation of strings with placeholders {0} {1} ...
  • Warnings about shortcut characters (string containing &)
  • View resource strings in tree form
  • Translate resources without Visual Studio IDE
  • Search inside resource files while translating

You can download ResEx from here.

Please use the discussions page provided to send comments and questions (Anonymous posts are allowed).

Filed under  //   .NET   Desktop   ResEx   Tools   Visual Studio  

Comments [0]

ASP.NET on J2EE-enabled servers - Microsoft.VisualBasic.jar!

I downloaded and installed Grasshopper just to try it out! Installation was very smooth, without any of the difficulties I came upon every time I tried to install a non-Microsoft development tool. Well, ok, us, Microsoft oriented developers, may be a little spoiled! I just clicked on File-New-Project and there it was! VB for J2EE and C# for J2EE Projects! Amazing. My "Hello World" sample project was up and running on Tomcat (included in Grasshopper 50MB installation package) within 5 minutes! Right clicking on solution explorer allows to adding a reference to .NET and Java files! But one of the most astonishing things I have even seen in my humble carrier is this:

Microsoft.VisualBasic.jar !!!

Now I'm convinced!!! Anything is possible!
Unfortunately, since Grasshopper is based on Mono Project, it is available only for .NET Framework 1.1 and Visual Studio 2003. I read somewhere in Grasshopper forum that version for .NET Framework 2.0 is expected by the end of this summer.

About Grasshopper
Grasshopper, the freely available Visual MainWin® for J2EE™, Developer Edition, is a plug-in to the Visual Studio .NET IDE that enables .NET developers to port existing ASP.NET and server applications to J2EE servers. Developers can also use .NET skills to develop, debug, and deploy server and Web applications from within the Visual Studio .NET development environment, and run applications natively on the J2EE platform. Grasshopper is designed for small user group deployments.

Filed under  //   .NET   C#   VB   Visual Studio  

Comments [0]