| Comments

There are a few ways to give feedback on Silverlight.  I wanted to share my thoughts on them as some are obvious and some aren’t.

Forums

The product team and test team regularly monitor the Silverlight Forums.  It is a great place to get your questions answered by other experts, community members and perhaps the product team directly.  This is a good place to search for previous questions as well.

Report a bug

If you’ve scoured the forums, posted your question and didn’t get any answer and you think you’ve identified a bug, you can submit one.  I’ll admit here this is a cumbersome process.  We’re trying to improve it, I promise.  I’ve been on some user studies with this team giving them feedback on that.  Until then, here’s what you’d have to do:

  1. Visit http://connect.microsoft.com/visualstudio (you have to have a Live ID to login)
  2. Create a new issue under Visual Studio 2010 and .NET 4
  3. In that template you’ll see a drop-down list for Visual Studio Version – here select your version of Silverlight (3 or 4)
  4. Complete the rest of the form.

Yes, I know it may seem odd, but for now that is a part of the process.  If you submit a bug, be prepared to submit a reproduction of the bug.  I can’t stress enough this fact: providing a reproducible project showing the potential bug is the fastest route to resolution.

Got a suggestion for the future versions?

Here’s my favorite part.  If you think you’ve got a suggestion (not a bug) and want it on the wish list, then add it!

Visit http://silverlight.mswish.net to add your suggestions.  Here is what I ask of you:

  • SEARCH FIRST using simple terms.  Duplicates suck.  Add your votes to something that already exists first.  If you search for “I think printing should work with bilateral PNG fusion” then you may not find anything.  But if you search “printing” there may be a suggestion already logged for you to add your votes to.
  • BE VAGUELY SPECIFIC.  This is a tough one.  Ensure you don’t make a suggestion that boxes everyone else out from voting.  Example: Printing sucks, fix it. is not a good suggestion.  It’s too vague and doesn’t help.  Meanwhile Printing should include automatic pagination is a much better suggestion.
  • DON’T PUT MULTIPLE SUGGESTIONS IN ONE.  Don’t add a suggestion that is actually multiple.  Example of a bad one: Change printing, implement modal and add transparent windows is actually 3 different suggestions.

The team looks at this list to help prioritize and understand how people are using this.  This list is always there and we’ll mark things planned/completed when we identify what we’ll be working on.

Blogs

As always if you see something on my blog or other Silverlight team members’ blogs, leave a comment.  We don’t go around announcing each other’s blog posts so if you send me a question about something David Poll wrote…it’s better to start with him first.  Blogs are great sources of information but also can be hard to find specific bits of information at time.  They are a mechanism for sharing bits and pieces.  Usually you’ll find deep feature content from a program manager who owns that feature.

Hope this helps!


| Comments

NOW OFFICIALLY RELEASED: DOWNLOAD HERE

A while back I posted a sneak peek preview of 3 new themes that we were working on for Silverlight 4 applications.  Our team wanted to do more than just the overall base theme and provide the themes for the core, SDK and some Silverlight Toolkit controls as well.  In addition, there was a lot of internal chatter about how cool these new themes were and a lot of teams wanting to adopt them as default, including WCF RIA Services.

While we finalize a better distribution plan for these templates (and some may show up as defaults soon), I wanted to provide a raw drop of the sample project we use to display the themes.  These projects have the Silverlight ResourceDictionary files for the themes and a few pages showing samples.  These are raw theme project files.  And without further adieu, I present the bits for you:

Grayscale Theme

This theme is a clean implementation that initially has a ‘greenscale’ approach to it, but modifying the brushes even slightly will give you some great color pallettes to work with.

Silverlight 4 Theme - Grayscale

Honestly, initially this one didn’t pop for me as much, but the fit-n-finish added here is really making me like this structure.  And the ability to change a single brush and have it replicate through other areas makes this clean template highly customizable.

Windows Theme

Want a theme for your application to look a bit more native?  Here’s a starter place for you. 

Silverlight 4 Theme - Windows

Cosmopolitan Theme (formerly Metro)

And finally the most popular requested, we’re calling Cosmopolitan.  This one has features that resemble the Zune and Windows Phone design language aspects of it in a modern, clean UI form.

Silverlight 4 Theme - Cosmopolitan

This theme also has a ToUpper and ToLower behavior files that you can apply to your XAML for text formatting.

How these raw projects are structured

As I mentioned, these are raw project structures…ripped from the designer’s desktop, zipped and presented here.  There may be dependencies that you don’t have and will need (i.e., Toolkit, etc.).  There may be residual test files in there.  Deal with it :-).  But at the basics the core themes are all structured as ResourceDictionary files in the Assets folder:

Theme project structure

As you can see in here the files should be relatively self-explanatory.   We tried to make it so that you can pick and choose what you’d like from them (as well as learn how to segment out these types of dictionary files).

In each project you will also see the themes represented in showing: core controls, sdk controls and toolkit controls.  Please make sure to appreciate all of them.  I didn’t post screenshots of all here.

The future deployment of these themes/templates

The idea is that we’ll clean these up in a more distributable manner.  We’ll likely create VSIX files (Visual Studio extension installers) so that you could then say File…New Silverlight Cosmopolitan Application and have these already in there.  This also allows us to put them in the Visual Studio Gallery where you can search/download directly to Visual Studio.  We also will likely put the resources on the Expression Gallery for download.  And as I mentioned before, it’s possible that future iterations of things like WCF RIA Services and such might use them as default.  You tell me: what is the best distribution method?  How would you expect to download/install/use these?

Summary

I love these new themes.  I think our design team did a great job here.  Tsitsi and Corrina are awesome and put a lot of work into refining these.  By the feedback that I’ve been getting in email and blog comments, these are exactly the type of things that you’ve been wanting.  Mostly from developers I’m hearing the thank you for helping me since I have no design skills!  This is great feedback that our team loves to hear.  I hope you find these valuable.

These raw project templates here are essentially the Silverlight Navigation Application template modified.  We’ll have the biz app ones a while later, but these should get you started.

Hope this helps!


This work is licensed under a Creative Commons Attribution By license.

| Comments

While working on some plugins for the new Seesmic Desktop Platform I got sick of copying and pasting some boiler plate code over and over.  I had created some helper templates for myself so that I could say File…New Seesmic Desktop Plugin and get everything I needed initially.  This weekend I had some time and formalized those templates into an easy-to-use installer for anyone to consume. 

NOTE: It is likely that Seesmic themselves will create developer project/item templates…these were for my own use and I shared them on the Seesmic Desktop Platform developer forum for anyone to benefit from (or ignore).  They are not the official templates from Seesmic.

Prior to VS2010 you could create what is called a Visual Studio Community Content Installer…which is a .VSI file that installs things like snippets, etc.  And actually you can still do that today.  The process is manual and involves a few XML manifest files, zipping up the contents and renaming it to .VSI (the VSI is just a ZIP format).  It isn’t hard, but isn’t painless as well – it’s a lot of manual steps.

Enter VS2010 and the Visual Studio SDK.  First, the items I am describing below require you to have the VS2010 SDK installed.  It is NOT installed by default.  Visual Studio 2010 has a file format called VSIX which is basically a Visual Studio Extension (VSX was already taken by Visio).  This extension format is intended to be a one-stop installer format for all things extensible.  Things like add-ins, etc.  But it can also be used for simple things like Item and Project template types.  Here’s what I did.

1. Starting the project

After you have VS2010 SDK installed, choose File…New VSIX Project

VSIX Project

Note that this is under a language area (C# or Visual Basic).  This is because there is some assumption that you are creating more than just a template deployer…but just note that.  In my instance it actually didn’t matter what language area I chose.

2. Removing ‘binary’ packages

By default the VSIX project thinks you are going to be creating code extensions and will package the project’s DLL and PDB files as a part of your extension.  If you are using this process as I was for template extensions, this is not necessary.  There is an easy way of avoiding this.  Open up the csproj file (or vbproj) you just created in notepad and add these lines in the XML file:

   1: <PropertyGroup>
   2:   <CopyBuildOutputToOutputDirectory>false</CopyBuildOutputToOutputDirectory>
   3:   <CopyOutputSymbolsToOutputDirectory>false</CopyOutputSymbolsToOutputDirectory>
   4: </PropertyGroup>

This tells the compiler to not package those types of files into our extension.  I put these below my last PropertyGroup statement in the file.  Save the proj file.  If you return to Visual Studio (and had the project open while making these edits in notepad) you’ll be alerted to reload the project, go ahead and reload baby.

3. Editing the manfiest information

When you create the project it will open up with a dialog that is a visual editor to the core manifest.  This is where you will put your metadata as well as begin to add your content.  Here is a snapshot of mine:

VSIX Manifest Editor

Notice the simple metadata information (name, author, version, etc.).  This is important information that I’d highly recommend to include as you’ll see why in later steps.

Notice the Content area in the bottom.  This is where you’ll add your content.  If you have a blank project you will click the Add Content button and choose the type (in my case Project Template and Item Template) and browse to the file.  Note that this copies that file to this project…not a reference.  So if you change the file outside of this project, you’ll want to update it again.  Do this for each template type you want to deploy.

4. Understanding Path information for templates

Notice my path of my templates:

template path data

This is important because it will determine how the templates are structured in Visual Studio after the user installs them.  My path above results in this:

Installed Templates view

This enables my users to find it under Silverlight as well as the custom branch that I have specified.  This is a helpful tip to your users and provides a more professional look in my opinion.

5.  Building the VSIX file

This step is easy.  F5.  It’s the same build process as any other project type.  The result is a VSIX file.  When the user double-clicks on that (and has Visual Studio installed) they’ll see your dialog:

VSIX Install Dialog

You could optionally digitally sign your VSIX file so the ‘unidentified publisher’ statement isn’t there.

6.  Making your VSIX Discoverable

This is the fun part.  Now that you have a standard Visual Studio Extension, you can make it readily available to any Visual Studio developer.  You could simply post a link to it on your blog, have the user download the VSIX and that is acceptable.  But you can also make it available in Visual Studio’s online gallery which then becomes searchable and seamlessly installable by end users.

Visit the Visual Studio Gallery page to start the process.  Notice the Upload button in the upper right area…that is where you start.  After authenticating with Windows Live ID, it is a 3 step process:

  1. Determine what type (Tool, Control, Template)
  2. Upload the VSIX
  3. Edit and annotate further criteria

The first two steps are simple, in my case I chose Template, then uploaded my VSIX which goes through some steps of validation making sure it is a valid VSIX file.  The final step enables you to specify more data that is annotating your extension to make it more searchable.  Here was my page.

Visual Studio Gallery info page

Notice the tags I added to help it be discoverable?  Now users can – from within Visual Studio 2010 – search and install extensions immediately:

Integrated extension search in Visual Studio

Any installed extensions show up in the Extension Manager (Tools menu) for easy disabling or uninstalling).

Summary

After this quick process I have a distributed package for my community as well as now have added templates to my development environment making it easy to create new extensions for Seesmic (my sample used here):

new project templates

It was fairly simple and I love that it is integrated into Visual Studio 2010 for everyone now!

Hope this helps!

| Comments

May 1st is around the corner…time for an updated Windows 7 Smashing Magazine theme pack!

Thailand Kopipi

As you might expect with May the general theme is flowers and Mother’s day type things.  My favorites this time being the Thailand Kopipi (above) and the salt shore.  So here is your May 2010 Windows 7 Theme Packs for wallpapers – unfiltered and uncensored – about 40 wallpapers in all.

For details on these and to see past ones, visit the Smashing Magazine Windows 7 Theme information for the specifications I used for the theme pack as well as previous themes.  Want to participate and submit yours?  Join in!

| Comments

As most of you know at MIX10, we released the first version of the Windows Phone 7 developer tools (which are free) targeting Silverlight and XNA development to the world.  This was a community technology preview (CTP) release and targeted Visual Studio 2010 RC at the time (which was the publically available version).  Since MIX10, Visual Studio 2010 has released in final form and the phone developer tools team has been working to get a working version finalized.

Windows Phone 7 Associated Press applicationToday is that day – we’ve just made available the Windows Phone Developer Tools CTP (April 2010 Refresh) (direct link download).  This is the installer that will install directly on your machine.  If you don’t have any version of the tools installed, this will install the Visual Studio express edition for Windows Phone 7 (free).  If you already have any released version of Visual Studio 2010, this will install the tools on top (integrated) into those.

This April refresh is still a CTP-quality and as such there are a few known issues with this latest release.  Our goal was at least to get a set of tools that would be available to enable people to move to Visual Studio 2010 release.  The known issues are documented in the release notes for the April 2010 refresh.  Specifically the first item as a known issue in the release notes:

Authenticode signed assemblies fail to load. When including Authenticode signed assemblies in your project, the application XAP will fail to deploy and run. This includes the use of Microsoft client libraries such as WCF Data Services, the Silverlight Toolkit, and 3rd party managed libraries. This issue will be resolved in a future release to permit the inclusion of Authenticode signed assemblies.

This might be annoying for some.  We will eventually get this fixed in a future release and understand this is annoying to some.  We apologize for this.  We do have a workaround for you in the manner of a PowerShell script (note: PowerShell is included in Windows 7, otherwise download a version here).  Here is the workaround (also noted on Charlie’s blog).

You will know if you hit this issue if your app deploys to the emulator but fails to actually run with a System.IO.FileLoadException then you are likely hitting this issue.

The PowerShell Script

Attached here is the PowerShell Script – right-click and save this somewhere known.

Download: wp7ctpfix.ps1

Using the script

Here’s the steps to using the script on the assemblies that will cause you issue (those signed assemblies).

  1. Copy the script to the folder containing the signed assemblies
  2. Open an elevated command prompt (this must be done in elevated mode) and enter powershell (type: powershell) – alternatively you could start powershell itself
  3. Run “.\wp7ctpfix.ps1 <your-signed-assembly-fully-qualified-path>” in the PowerShell window
  4. The script should show ‘operation succeeded’ if successful.
  5. A *new* assembly prefixed with “WP7_CTP_Fix_<signed-assembly>” in that directory

NOTE: If you get a warning that the script couldn’t be run, in PowerShell first run set-executionpolicy Unrestricted and then proceed (and reset back to Restricted if desired).

You’ll need to do this on all assemblies you reference that might be impacted.  NOTE: This does not alter the existing assembly, but rather creates a NEW COPY for you to use temporarily.

Using the fixed assemblies

Once you’ve completed the step above, you’ll have to change your project refrences:

  1. Expand the References section of your project and remove any of the problematic references
  2. Add a reference pointing to the newly created copies done in the step above

Using these fixed assemblies will only work in the emulator.  Since right now there is no means of application distribution for the masses, this isn’t an issue.  Again, we will be fixing this issue and it is only temporary – we have no announcements yet, however, on when the next update of the tools will be.  As noted in Charlie’s blog because this is a little bit of a ‘brute force’ technique, Microsoft is giving permission to do this with this fine print:

So as to enable you to load your applications on the pre-release version of the Windows Phone 7 operating system that is included with this April 2010 CTP of the Windows Phone Developer Tools, you may temporarily remove the signatures from any Microsoft-owned assemblies that you would otherwise be licensed to include in your programs, solely for the limited purpose of evaluating this CTP.  Upon the next pre-release of these Developer Tools or July 31, 2010, whichever is earlier, you must replace such signature-stripped assemblies with assemblies from which the signatures have not been removed.  Nothing in this statement should be interpreted as permission on behalf of owners of non-Microsoft assemblies.

What’s New in April refresh?

There are some new items in this refresh that we’ve changed/added which are noted in the What’s New topic in MSDN.  Here are some highlights:

And a few others – be sure to review the topic link above on MSDN.

What about Expression Blend?

Expression Blend 4 had a plugin that enabled Windows Phone 7 development as well.  This plugin has also been updated for this April 2010 refresh.  You must have the Expression Blend 4 RC installed first.

You can get the updated Blend plugin here:

Summary

Please read the release notes before installing the tools.  If you think any of the known issues will impact you significantly, please do  what you think is right (if that means sticking with the March CTP build on Visual Studio RC).  The bug above was discovered late in our plans.  We had to make a decision whether to hold up another potentially ‘weeks’ or release what we had in another CTP form.  In this case we chose the to release what we had to provide something that customers have been asking for. 

There are a few other known issues of this refresh that you should review, but also some new items as indicated above.

Other useful resources:

Hope this helps!


This work is licensed under a Creative Commons Attribution By license.