<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Jeff Wilcox &#187; Microsoft</title>
	<atom:link href="http://www.jeff.wilcox.name/topics/microsoft/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jeff.wilcox.name</link>
	<description>Silverlight, rich client apps and web development</description>
	<lastBuildDate>Mon, 26 Jul 2010 17:56:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Making that corporate office a little more personal</title>
		<link>http://www.jeff.wilcox.name/2010/03/office-memorial/</link>
		<comments>http://www.jeff.wilcox.name/2010/03/office-memorial/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 19:34:10 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Off-topic]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2010/03/office-memorial/</guid>
		<description><![CDATA[I received word this week that I’m moving offices next month. It’s only fitting for an off-topic post about my current office; if nothing else, this can serve as a sort of memorial for me to look back on once I’m back in a storage closet somewhere. I also received a few questions at MIX [...]]]></description>
			<content:encoded><![CDATA[<p>I received word this week that I’m moving offices next month. It’s only fitting for an off-topic post about my current office; if nothing else, this can serve as a sort of memorial for me to look back on once I’m back in a storage closet somewhere.</p>
<p><em>I also received a few questions at MIX from customers about my office… I guess thanks to Twitter it has a reputation.</em></p>
<p>In the world of Microsoft buildings, I have always tried for a rather eccentric one. I like nice things and am not a fan of boring carpet. Afraid of the wrath of building maintenance, I customize the interiors without painting the walls or making any crazy modifications.</p>
<p>This means hardwood flooring to help brighten the space, custom furniture, and personal hardware (known as the Jeff Hardware Budget).</p>
<h3>Current office</h3>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Office4202" border="0" alt="Office4202" src="http://www.jeff.wilcox.name/wp-content/uploads/2010/03/Office4202.jpg" width="685" height="514" /> </p>
<p>Customizations: Hardwood flooring. Plants. Glass desk. Speakers. 30” LCD. Lamps. Hanging art. Beer fridge. Color changer. Large chair and storage ottoman.</p>
<p>Corporate furniture: Guest chair. Hanging bookcase. Development workstation. Whiteboards.</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="RedmondOffices" border="0" alt="RedmondOffices" src="http://www.jeff.wilcox.name/wp-content/uploads/2010/03/RedmondOffices.jpg" width="685" height="347" /> </p>
<h3>Construction</h3>
<p>Thanks to power tools, this took only about 3 hours of time one Saturday afternoon. These are IKEA “Tundra” floorboards, and once you get the hang of it, go in pretty easy. I decided not to finish the edges with molding, however – it’s just a temporary office adornment.</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="OfficeFlooring" border="0" alt="OfficeFlooring" src="http://www.jeff.wilcox.name/wp-content/uploads/2010/03/OfficeFlooring.jpg" width="685" height="233" /> </p>
<p>Hammering boards into place.</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Construction" border="0" alt="Construction" src="http://www.jeff.wilcox.name/wp-content/uploads/2010/03/Construction.jpg" width="685" height="514" /> </p>
<h3>Past offices</h3>
<p>To see the progression over time… here are some past offices.</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="InteriorWithCouch" border="0" alt="InteriorWithCouch" src="http://www.jeff.wilcox.name/wp-content/uploads/2010/03/InteriorWithCouch.jpg" width="685" height="514" />&#160;</p>
<p>Simple office in building 42, nothing but a notebook:</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="SimpleOffice42" border="0" alt="SimpleOffice42" src="http://www.jeff.wilcox.name/wp-content/uploads/2010/03/SimpleOffice42.jpg" width="685" height="679" /> </p>
<h3>How do Microsoft offices work?</h3>
<p>Many of the buildings on the Microsoft campus have been designed from the start to optimize for windows, as opposed to cubicles and enclosed spaces. More recent buildings do tend to have more interior space, but still a sufficient amount of corners in the building to offer windows to many.</p>
<p>If you take a printout of an organization and order by “service award date” (the starting date of employment), you get the office seniority list.</p>
<p>As many as can at the top, will receive their own window offices. After that, interior but still private offices. And finally, the remainder will typically be “doubled up” in offices. For the record, I was tripled up when I first started at the company… that was fun.</p>
<p>Turns out it’s not always that simple, but in a perfect world that would be it … sometimes your organization may ‘hold’ office space; you can’t always be moving, so often smaller moves just go into ‘available’ space instead of displacing other workers; and people managers, even recent hires, need private space to hold candid conversations.</p>
<p>Anyway, hope you had fun reading about my office. RIP!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2010/03/office-memorial/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Walkthrough: The power of the November 2009 Silverlight Toolkit testing tools</title>
		<link>http://www.jeff.wilcox.name/2009/11/november-walkthrough/</link>
		<comments>http://www.jeff.wilcox.name/2009/11/november-walkthrough/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 23:02:09 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Silverlight Toolkit]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2009/11/november-walkthrough/</guid>
		<description><![CDATA[The November 2009 Silverlight Toolkit is essentially a tools and infrastructure release on top of the October 2009 release (where we first introduced Visual Studio 2010 support). It also adds a Silverlight 4 Beta version. New infrastructure &#38; test tools ship in the Silverlight Toolkit There is a lot in the release that is joining [...]]]></description>
			<content:encoded><![CDATA[<p>The November 2009 Silverlight Toolkit is essentially a tools and infrastructure release on top of the October 2009 release (where we first introduced Visual Studio 2010 support). It also adds a Silverlight 4 Beta version.</p>
<h2>New infrastructure &amp; test tools ship in the Silverlight Toolkit</h2>
<p>There is a lot in the release that is joining publicly for the first time, based on some of the internal tools and utilities that we use in building and testing the Silverlight Toolkit, plus things we’d like to have as typical Silverlight developers.</p>
<p>These tools join in the Experimental quality band, and over the next few posts, I’ll dig into the details. This post is a literal walkthrough of how you could go about seeing all the utilities in the meantime.</p>
<p>One important thing to call out is that, as an initial release, there are definitely some rough edges: the test tools are centered around Microsoft Build (msbuild) integration, instead of Visual Studio integration; there’s no add-in or nice right-click project support to use these tools today.</p>
<p>We’ll be collecting feedback along the way and making changes in future releases. Until then, hopefully some of you will find the infrastructure useful, if only to peak behind the curtain. We’re also shipping the full source to these tools, you’ll find an Infrastructure.zip file inside the toolkit install folder.</p>
<h4>What we’ll do in this walkthrough</h4>
<p>This walkthrough uses Silverlight 4, though the instructions are virtually identical if you’re using Silverlight 3.</p>
<ul>
<li>Install the Silverlight Toolkit</li>
<li>Create a new Silverlight class library with a simple business object</li>
<li>Add a Silverlight Unit Test Application using the new templates found in the Silverlight Toolkit</li>
<li>Run the tests in Visual Studio</li>
<li>Run the tests from the command line in various browsers</li>
<li>Collect block-level code coverage information for the build</li>
</ul>
<p>This is screen-shot heavy, as future posts will dig into the details. I appreciate your patience!</p>
<p>Requirements:</p>
<ul>
<li>Latest Silverlight Toolkit</li>
<li>For test automation:</li>
</ul>
<ul>
<li>MSBuild on the machine</li>
</ul>
<li>For code coverage:</li>
<ul>
<li>Visual Studio 2010 Beta 2 Ultimate</li>
</ul>
<h2>Installing the tools</h2>
<p>When you install either Silverlight Toolkit drop from November, you’ll see that there’s a new feature listed in the setup: the Tools &amp; Templates feature. It’s selected by default, and adds Visual Studio templates, installs the tools, and prepares the tools if your machine has the proper dependencies on it.</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="SetupNewFeature" border="0" alt="SetupNewFeature" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/SetupNewFeature.png" width="541" height="430" /> </p>
<h2>Create a Silverlight Class Library</h2>
<p>Open Visual Studio 2010 Beta 2, after installing the toolkit. Create a new <strong>Silverlight Class Library</strong> project, we’ll store a simple business object in it.</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="VisualStudioNewSilverlightClassLibraryProject" border="0" alt="VisualStudioNewSilverlightClassLibraryProject" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/VisualStudioNewSilverlightClassLibraryProject.png" width="685" height="480" /> </p>
<p>Whichever flavor of Silverlight you use, remember to use the same flavor while creating future projects in the same solution!</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="VisualStudioSelectSilverlightVersion" border="0" alt="VisualStudioSelectSilverlightVersion" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/VisualStudioSelectSilverlightVersion.png" width="685" height="231" /></p>
<p>Create a new Person.cs type, with a few properties and a method. Here’s the source:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:bc34624e-1aaa-4618-a4cc-6c9dad4c3107" class="wlWriterEditableSmartContent">
<pre class="c-sharp" name="code">using System;

namespace MyApplication
{
    public class Person
    {
        public string First { get; set; }
        public string Last { get; set; }

        public string FullName { get { return First + " " + Last; } }

        public bool MightBe(string substring)
        {
            return FullName.Contains(substring);
        }
    }
}</pre>
</div>
<h2>Add a Silverlight Unit Test Application</h2>
<p>Right-click on the solution in the Solution Explorer and select Add New Project. Under the Visual C# (and also Visual Basic) languages node, select the Silverlight subgroup. You’ll see a <strong>Silverlight Unit Test Application</strong> project template.</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="VisualStudioUnitTestTemplate" border="0" alt="VisualStudioUnitTestTemplate" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/VisualStudioUnitTestTemplate.png" width="685" height="446" /></p>
<p>You now have two projects:</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="VisualStudioTestAppAndClassLibrarySolutionExplorer" border="0" alt="VisualStudioTestAppAndClassLibrarySolutionExplorer" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/VisualStudioTestAppAndClassLibrarySolutionExplorer.png" width="283" height="385" /></p>
<p>Next up, we want to add a reference to the class library, so that the unit tests can access the library. Right-click on the new test project and then select the Add Reference option. Under the Project tab, choose the class library you created earlier.</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="VisualStudioAddReference" border="0" alt="VisualStudioAddReference" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/VisualStudioAddReference.png" width="593" height="478" /></p>
<p>Now, let’s add some unit tests. Clear out the content in the created Tests.cs file and drop this in:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:a7e8d8fd-b4cb-4725-bb1a-cd35db6190c2" class="wlWriterEditableSmartContent">
<pre class="c-sharp" name="code">using Microsoft.VisualStudio.TestTools.UnitTesting;
using MyApplication;

namespace PersonTestProject {
    [TestClass]
    public class Tests
    {
        [TestMethod]
        public void TestCtor()
        {
            Person p = new Person();
        }

        [TestMethod]
        public void TestSetName()
        {
            Person p = new Person { First = "Scott", Last = "Guthrie" };
            Assert.AreNotEqual(p.First, p.Last);
        }

        [TestMethod]
        public void TestGetFullName()
        {
            Person p = new Person { First = "Steve", Last = "Ballmer" };
            StringAssert.Equals("Steve Ballmer", p.FullName);
        }
    }
}</pre>
</div>
<p>The tests are pretty simple, and exercise various simple PMEs on the type.</p>
<h2>Run the unit tests from Visual Studio</h2>
<p>Right-click on the test project and select Set as StartUp Project from the menu. Then, press F5 or click the Run button to begin execution.</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="VisualStudioSetAsStartupProject" border="0" alt="VisualStudioSetAsStartupProject" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/VisualStudioSetAsStartupProject.png" width="530" height="605" /> </p>
<p> The default web browser will open up, the tests will run, and the window will stay open. When you are satisfied, close the browser. You’ve just run some simple tests!</p>
<h2>Running unit tests from the Visual Studio command line</h2>
<p>More interesting is being able to automate the tests: through MSBuild, we’ve added a task that can control the browser and save out the log file(s) from the unit tests when they run.</p>
<p>To do this, you need a few things:</p>
<ul>
<li>The Visual Studio command prompt open.</li>
<li>The full path to the test project.</li>
</ul>
<h4>Open the command prompt</h4>
<p>Personally, I always pin the Visual Studio 2008 tools command prompt next to my Visual Studio taskbar icons.</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="TaskbarCmdPrompt" border="0" alt="TaskbarCmdPrompt" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/TaskbarCmdPrompt.png" width="685" height="71" /> </p>
<p>You can start it from the Start Menu, under the tools for the Visual Studio version you are using.</p>
<p>Alternatively, make sure MSBuild is in your path.</p>
<p>Or, start a command prompt and then move to your 32-bit Program Files, then ‘Visual Studio 9.0’, then VC. Run ‘vcvarsall.bat x86’</p>
<p><strong>Note</strong>: all these command prompts should be 32-bit, even on a x64 machine. Silverlight is a 32-bit world today.</p>
<h4>Move to the test project</h4>
<p>To get the full path to the test project, I just right-click on the test project in Visual Studio, then Open Folder in Windows Explorer. I copy the path from the resulting Explorer dialog’s crumb navigation bar.</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="VisualStudioOpenWindowsExplorerForProjectLocation" border="0" alt="VisualStudioOpenWindowsExplorerForProjectLocation" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/VisualStudioOpenWindowsExplorerForProjectLocation.png" width="685" height="428" /> </p>
<p>Now, inside the command prompt window, move to that path:</p>
<blockquote>
<p>pushd (PASTE PATH HERE) &lt;enter&gt;</p>
</blockquote>
<p>To run the unit tests in the default browser, simply type </p>
<blockquote>
<p><strong>msbuild /t:test</strong> </p>
</blockquote>
<p>and press Enter.</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="CommandLineMsbuildTest" border="0" alt="CommandLineMsbuildTest" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/CommandLineMsbuildTest.png" width="685" height="120" /></p>
<p>You’ll see the browser open, quickly run some tests, and then close. Here’s what it looks like, captured in the middle of the 5-second test run:</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="TestRunningInInternetExplorer" border="0" alt="TestRunningInInternetExplorer" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/TestRunningInInternetExplorer.png" width="685" height="345" /></p>
<p>And afterwards, you’ll see that Msbuild reports success, and you can read the test to see that 3 passing tests were reported, out of 3 total tests.</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="CommandLineMsbuildTestWithResults" border="0" alt="CommandLineMsbuildTestWithResults" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/CommandLineMsbuildTestWithResults.png" width="685" height="433" /></p>
<h3>Running tests in Google Chrome</h3>
<p>It’s easy! Just set the browser property to Chrome.</p>
<blockquote>
<p><strong><font color="#808080">msbuild /t:test </font>/p:browser=chrome</strong></p>
</blockquote>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="CommandLineMsbuildTestChrome" border="0" alt="CommandLineMsbuildTestChrome" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/CommandLineMsbuildTestChrome.png" width="685" height="67" />&#160;</p>
<p>And just like that, Chrome opens up and runs the tests.</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="TestRunningInChrome" border="0" alt="TestRunningInChrome" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/TestRunningInChrome.png" width="685" height="428" /></p>
<h3>Running tests in Mozilla Firefox</h3>
<p>Just set the browser to Firefox.</p>
<blockquote>
<p><strong><font color="#808080">msbuild /t:test </font>/p:browser=firefox</strong></p>
</blockquote>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="TestRunningInFirefox" border="0" alt="TestRunningInFirefox" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/TestRunningInFirefox.png" width="685" height="428" /></p>
<h3>Tag Expressions</h3>
<p>A nice feature to help select a subset of tests is the Tag Expression syntax. By specifying a tag expression at the command prompt, you can include and exclude tests that are marked with the Tag attribute found in Microsoft.Silverlight.Testing.</p>
<p>Also, tags <strong>implicitly exist for all test method names,</strong> short and full.</p>
<p>So, let’s run the test called <strong>TestSetName</strong> from our project.</p>
<blockquote>
<p><strong><font color="#808080">msbuild /t:test </font>/p:tagexpression=TestSetName</strong></p>
</blockquote>
<p>You may briefly see indication in the test UI in the browser that a ‘Tag expression’ is in use.</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="TestRunningInInternetExplorerWithTagExpression" border="0" alt="TestRunningInInternetExplorerWithTagExpression" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/TestRunningInInternetExplorerWithTagExpression.png" width="685" height="344" /></p>
<p>And the build results show that just one test ran:</p>
<p>&#160;<img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="CommandLineMsbuildTestWithTagExpressionResults" border="0" alt="CommandLineMsbuildTestWithTagExpressionResults" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/CommandLineMsbuildTestWithTagExpressionResults.png" width="685" height="433" /> </p>
<p>If you want to run all tests <strong>except that one</strong>, use this tag expression:</p>
<blockquote>
<p><strong><font color="#808080">msbuild /t:test </font>/p:tagexpression=!TestSetName</strong></p>
</blockquote>
<p>Cool, and easy!</p>
<h3>Test results files</h3>
<p>Another nice feature of running the tests through MSBuild is that you’ll see test result files (end in *.trx) inside the same folder as the test page for the application.</p>
<p>Similar and conformant to the Visual Studio *.trx format, you can parse and work with this data to understand execution times, results, and read other information. Unfortunately, you cannot open these files in Visual Studio 2010 Beta 2, but they do open in Visual Studio 2008. Note that there isn’t any real test integration with VS here: this is just an informative display. </p>
<p>Here’s a directory with several test result files (plus some coverage stuff we’ll get to later):</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="LookingInTheBinariesFolderAfterTestsRun" border="0" alt="LookingInTheBinariesFolderAfterTestsRun" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/LookingInTheBinariesFolderAfterTestsRun.png" width="685" height="502" /></p>
<p>You can open up the TestResults trx file and see what kind of information is in it:</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="LookingAtTheTrxFile" border="0" alt="LookingAtTheTrxFile" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/LookingAtTheTrxFile.png" width="685" height="524" /></p>
<p>And here’s the results file opened in Visual Studio:</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="VisualStudio2008TestResultsTrxFile" border="0" alt="VisualStudio2008TestResultsTrxFile" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/VisualStudio2008TestResultsTrxFile.png" width="685" height="312" />&#160;</p>
<h2>Preparing for Code Coverage</h2>
<p>Ripe for a Visual Studio add-in, this process requires us modifying the test project’s .csproj file some. Instructions are the same for Visual Studio.</p>
<p>We need to <strong>manually select the assembly to be instrumented </strong>by setting a property. The assembly to be instrumented must not be signed, and not have a strong name. In this example, the assembly is <strong>SilverlightClassLibrary3</strong>.</p>
<p>To make changes to the test project, to specify this, first unload the project by right-clicking on the test project and selecting the Unload option: </p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="VisualStudioUnloadProject" border="0" alt="VisualStudioUnloadProject" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/VisualStudioUnloadProject.png" width="503" height="621" /></p>
<p>Then, right-click the project file that is ‘(unavailable) and select ‘Edit’. </p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="VisualStudioEditProject" border="0" alt="VisualStudioEditProject" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/VisualStudioEditProject.png" width="492" height="214" /></p>
<p>Now you’ll see the XML data for the project. Scroll down in the template to where there is a commented out ItemGroup, and some comments about the code coverage support. Remove the comments from the ItemGroup: </p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="VisualStudioEditingTestProjectFileOriginal" border="0" alt="VisualStudioEditingTestProjectFileOriginal" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/VisualStudioEditingTestProjectFileOriginal.png" width="685" height="435" /></p>
<p>And now, change the Include statement from SilverlightClassLibrary1 to whatever your assembly to instrument is called. In our example here, it is called SilverlightClassLibrary3.</p>
<p>&#160;<img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="VisualStudioEditingTestProjectFile2" border="0" alt="VisualStudioEditingTestProjectFile2" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/VisualStudioEditingTestProjectFile2.png" width="685" height="435" /> </p>
<p> Now, that’s it. Let’s close the file and then right-click the project again and select Reload Project:</p>
<p>&#160;<img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="VisualStudioReloadTestProject" border="0" alt="VisualStudioReloadTestProject" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/VisualStudioReloadTestProject.png" width="502" height="400" /> </p>
<p> Now we’re ready to go!</p>
<h2>Running Silverlight Code Coverage</h2>
<p>Just like the msbuild /t:test from above, we have a similar target named <strong>CoverageTest</strong> and <strong>CoverageView</strong>. CoverageTest collects the data, while CoverageView collects the coverage data and then shows the results in an application that explores the hit and not hit portions of your source code.</p>
<p>Let’s collect coverage!</p>
<p><strong>Note:</strong> This is assuming that you have a high-level SKU of Visual Studio 2010 Beta 2 installed. The coverage tools depend on the Static Analysis Tools that ship in the beta. You will receive an error if you run this on a machine without those tools. We’ll look for a better experience in the future.</p>
<p>Remember, the same properties from above – browser and tag expression – still can apply and work in the coverage targets.</p>
<blockquote>
<p><strong><font color="#808080">msbuild </font>/t:coveragetest</strong></p>
</blockquote>
<p>Here is what it will look like if everything line up. Unfortunately, the coverage experience is a very early preview and very flaky in some situations due to the dependency on beta components. We also haven’t had I admit enough time to iron out all the issues customers may experience.</p>
<p>You see the Instrumentation messages come out, then the RunTests target, then the coverage data is merged and things should be successful. </p>
<p>&#160;<img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="CommandLineMsbuildCoverageTestResults" border="0" alt="CommandLineMsbuildCoverageTestResults" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/CommandLineMsbuildCoverageTestResults.png" width="685" height="433" /></p>
<p>If that worked, it is safe to assume that the view target will also work. It will re-run all the tests and instrument again as well.</p>
<blockquote>
<p><strong><font color="#808080">msbuild </font>/t:coverageview</strong></p>
</blockquote>
<p>Now you’ll see the viewer popup, that lets you drill into types and methods to see what is hit (cyan) or not hit (red), to spot code that your tests are missing:</p>
<h3><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="LookingAtCodeCoverage" border="0" alt="LookingAtCodeCoverage" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/LookingAtCodeCoverage.png" width="685" height="428" /></h3>
<p>You’ll find a Coverage.xml file in the same directory where the test results go. This is the data that is used by the viewer application. You’ll see in the XML file a set of ‘visited’ blocks, and other information, in the file:</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="CoverageXmlFile" border="0" alt="CoverageXmlFile" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/CoverageXmlFile.png" width="685" height="435" /> </p>
<p>More to come soon!</p>
<h3>Download the Silverlight Toolkit November 2009 Release Today</h3>
<p><a href="http://silverlight.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=36060"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Toolkit32[2][2][2]" border="0" alt="Toolkit32[2][2][2]" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/Toolkit32222.png" width="685" height="88" /></a> </p>
<p>The Silverlight Toolkit is a collection of Silverlight controls, components and utilities that help make Silverlight development a little easier, more fun, and add value outside the regular Silverlight release cycle.</p>
<p>The sixth release of the Silverlight Toolkit, the November 2009 release targets Silverlight 3. There is also a release available that targets the new Silverlight 4 Beta for developers.</p>
<p>Resources of note:</p>
<ul>
<li><a href="http://silverlight.codeplex.com/">Learn more about the Silverlight Toolkit</a> </li>
<li><a href="http://silverlight.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=36060"><strong>Download the November 2009 Release</strong></a> </li>
<li><a href="http://silverlight.net/getstarted/">Get started with Silverlight development</a> </li>
<li>Participate in the <a href="http://silverlight.net/forums/35.aspx">controls community at Silverlight.net</a> </li>
<li>Check out questions and answers on Stack Overflow using the <a href="http://stackoverflow.com/questions/tagged/silverlight-toolkit">‘silverlight-toolkit’ tag</a> </li>
<li>The <a href="http://silverlight.codeplex.com/WorkItem/List.aspx">Issue Tracker</a> can be used to report issues, add to the feature wish list, and vote on the work to be done by the Microsoft team </li>
</ul>
<p><em>Hope you enjoy our new release!</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2009/11/november-walkthrough/feed/</wfw:commentRss>
		<slash:comments>45</slash:comments>
		</item>
		<item>
		<title>Taking the Silverlight Control Browser sample Out-of-Browser &#8230; plus a tutorial</title>
		<link>http://www.jeff.wilcox.name/2009/11/out-of-browser-tutorial/</link>
		<comments>http://www.jeff.wilcox.name/2009/11/out-of-browser-tutorial/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 00:47:17 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Silverlight Toolkit]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2009/11/out-of-browser-tutorial/</guid>
		<description><![CDATA[The Silverlight Controls Browser sample app can now be taken out-of-browser. Here's info on that, plus how to get it done in your own apps.]]></description>
			<content:encoded><![CDATA[<p>We’ve enabled <a href="http://msdn.microsoft.com/en-us/library/dd550721(VS.95).aspx">Out of Browser support</a> for the Silverlight Control Browser application for the Silverlight Toolkit. That was reason enough for me to blog a little bit about that, and offer an overall guide to how to hook up to the proper events and respond to install state changes. Near the end of the post, I’ve even come up with a more attractive update notification that I hope I can move the samples app to in the future – message boxes are so <em>n – 14</em> years ago.</p>
<p>The <a href="http://silverlight.net/content/samples/sl3/toolkitcontrolsamples/run/default.html">Silverlight Control Browser</a> is a one-stop resource for learning about the core controls in Silverlight, the controls in the Silverlight SDK (like DataGrid), and of course the value-add controls and features that are found in the extra <a href="http://silverlight.codeplex.com/">Silverlight Toolkit download</a>.</p>
<p>By installing the app on your machine, you can learn about the controls even when offline. Perfect for those long holiday flights that are coming up this next month, when your airline doesn’t provide wireless Internet. <em>(Aside: I recently flew Delta and the wireless in-flight Internet rocked. Big time. I’ve never had a flight home to Seattle go by so quickly)</em></p>
<p>Another scenario: the infamous hipster coffee shops in Seattle whose wifi routers go down and never come up again. This morning I was in such a coffee shop without Internet, but was still able to fire up the sample app and grab a screen shot for the new <strong><a href="http://www.jeff.wilcox.name/2009/11/busy-indicator-control/">BusyIndicator control that’s in the Silverlight Toolkit now</a></strong>.</p>
<p><em><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="BusyIndicatorSample" border="0" alt="BusyIndicatorSample" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/BusyIndicatorSample1.png" width="685" height="419" />&#160;</em></p>
<h4>Any interest in an Out of Browser Helper Control?</h4>
<p>One thing I’ve been wondering if whether an ‘OutOfBrowserHelper’ control would be a useful, and quick, control for us to turn around inside the Silverlight Toolkit: something that has a very small scope, specific purpose, and will save developers time.</p>
<p>I’m imaging that this would wrap up the update logic, potentially offer the Install button, and other core services. I don’t know how practical it is, but I’d be interested in thoughts out there. Later in this post I talk about what all you need to do to enable the right Out of Browser update pattern in your apps.</p>
<p>I’ve created a <a href="http://silverlight.codeplex.com/WorkItem/View.aspx?WorkItemId=4708"><strong>Wishlist Feature request on the Silverlight Toolkit issue tracker</strong></a> to see if anyone else thinks it would be interesting… </p>
<p>A well-designed app that looks great in the browser looks great outside of it, too. What I like most about the Silverlight Out of Browser feature, compared to others, is that you don’t need to install anything else: no special runtime, no User Account Control permission, etc – since those apps run in the same security sandbox that Silverlight apps do while hosted in the Silverlight plugin.</p>
<p>This post is specific to that nice, simple Out of Browser support in Silverlight 3. For the hardcode developers out there, and some very interesting scenarios, Silverlight 4 adds a special elevated trust mode. That mode is outside the scope of this post.</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="OutOfBrowser" border="0" alt="OutOfBrowser" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/OutOfBrowser.png" width="685" height="483" /></p>
<h3>Enabling Out of Browser for your own applications</h3>
<p>A key feature in Silverlight 3, it takes about half an hour to enable Out of Browser if you’re a developer and looking to create your own graphics for the experience. Your users will notice that you have no design talent, but that is half the fun. Also, this is why “battleship gray” is so prevalent in Windows today.</p>
<p>If you have graphic assets from your designers, you can add the feature in about 2 minutes.</p>
<p>Here’s the technical set of hoops you need to do to define the Out of Browser metadata for your app.</p>
<h4>Using Visual Studio 2008 or Visual Studio 2010 Beta 2</h4>
<ul>
<li>First off, once you have the Silverlight Tools installed, just right-click on the project file in the Solution Explorer.</li>
<li>Then, navigate to the Silvelright tab.</li>
<li>Check the ‘Enable running application out of the browser’ option. This option will not be available if the ‘Reduce XAP size by using application library caching’ option is checked, fyi.</li>
<li>Click the ‘Out-of-Browser Settings’ button.</li>
</ul>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="VisualStudioOutOfBrowser" border="0" alt="VisualStudioOutOfBrowser" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/VisualStudioOutOfBrowser.png" width="685" height="526" /> </p>
<p>This window will then allow you to set the Out of Browser information, such as a nice quick blurb about the app, the application title, and other basics. This data is all stored in the .\Properties\OutOfBrowserSettings.xml in your project directory structure.</p>
<p>You’ll need to have those icons ready at this point.</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="OutOfBrowserSettings" border="0" alt="OutOfBrowserSettings" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/OutOfBrowserSettings.png" width="552" height="667" /> </p>
<p>Click OK, and that is it: your application can now be taken out of the browser!</p>
<h4>OutOfBrowserSettings.xml</h4>
<p>This file should be placed inside your Properties folder of the Silverlight application project. Visual Studio will create it for you when you enable the experience, and in fact the Silverlight Tools even offer tooling to easily modify these properties. If you author it by hand, the file is of build type ‘None’, and hooked up inside the .csproj or VB project through these properties:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:16096c81-6d25-4020-ba6c-f0d9b49a70ff" class="wlWriterEditableSmartContent">
<pre class="xml" name="code">    &lt;EnableOutOfBrowser&gt;true&lt;/EnableOutOfBrowser&gt;
    &lt;OutOfBrowserSettingsFile&gt;Properties\OutOfBrowserSettings.xml&lt;/OutOfBrowserSettingsFile&gt;</pre>
</div>
<p>Here’s what it looks like for the Silverlight Toolkit. We’ve defined the expected 16&#215;16, 32&#215;32, 48&#215;48, and 128&#215;128 brand icons. The icons are included in the project and marked as ‘Content’ in the Visual Studio properties dialog, so that they are in the Xap at the end of the build process.</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:40457d6f-4a75-4e73-b5b2-29cbc8011750" class="wlWriterEditableSmartContent">
<pre class="xml" name="code">&lt;OutOfBrowserSettings ShortName="Silverlight Controls Browser" EnableGPUAcceleration="True" ShowInstallMenuItem="True"&gt;
  &lt;OutOfBrowserSettings.Blurb&gt;Sample explorer for the controls and features found in the Silverlight Toolkit and Silverlight SDK.&lt;/OutOfBrowserSettings.Blurb&gt;
  &lt;OutOfBrowserSettings.WindowSettings&gt;
    &lt;WindowSettings Title="Silverlight Controls Browser" /&gt;
  &lt;/OutOfBrowserSettings.WindowSettings&gt;
  &lt;OutOfBrowserSettings.Icons&gt;
    &lt;Icon Size="16,16"&gt;Toolkit16.png&lt;/Icon&gt;
    &lt;Icon Size="32,32"&gt;Toolkit32.png&lt;/Icon&gt;
    &lt;Icon Size="48,48"&gt;Toolkit48.png&lt;/Icon&gt;
    &lt;Icon Size="128,128"&gt;Toolkit128.png&lt;/Icon&gt;
  &lt;/OutOfBrowserSettings.Icons&gt;
&lt;/OutOfBrowserSettings&gt;</pre>
</div>
<h4>Other options</h4>
<p>There are several additional Out of Browser options to chose from. The Silverlight 4 Beta also adds the elevated trust option here.</p>
<p><strong>Use GPU Acceleration: </strong>Check this to enable acceleration if your application will benefit from this.</p>
<p><strong>Show install menu:</strong> By default selected, this adds the option to Install the app (and take it Out of Browser) to the right-click menu for your Silverlight application.</p>
<p>If you decide not to show the install menu, you’ll need to implement your own user interface to show an Install button or other experience.</p>
<p>The one included in the Silverlight Toolkit sample app is a good example – implemented in Welcome.xaml and Welcome.xaml.cs, it is aware of the state of the running application and whether to offer the install option or not.&#160;&#160; </p>
<h4>Implementing all the necessary things to make Out of Browser shine</h4>
<p>Tim Heuer offers important information about making the <a href="http://timheuer.com/blog/tags/out-of-browser/default.aspx">Out of Browser experience world-class</a>. For instance, you need to actually have you app asynchronously check for updates, and offer information about the availability of any updates.</p>
<ul>
<li>You need to call CheckAndDownloadAsync and react to that in your user interface</li>
<li>You should check the InstallState if you want to offer different user interfaces depending on the Out of Browser state</li>
</ul>
<p>Tim also has a <a href="http://timheuer.com/blog/archive/2009/08/12/silverlight-out-of-browser-force-install-pattern.aspx">recommended pattern</a> for effectively forcing an app to only be available Out of Browser, similar to the experience you might find with <a href="http://www.tweetdeck.com/beta/">other popular apps</a> that live outside of the browser.</p>
<p>Here’s the App.xaml.cs file from the Silverlight Toolkit controls sample browser, to give you an idea of what we do. We’re only showing a MessageBox when an update becomes available, but you can make the experience a little richer if needed (see father down the post for that).</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:c6437c92-f507-4946-9901-96fcbf4d1225" class="wlWriterEditableSmartContent">
<pre class="c-sharp" name="code">// (c) Copyright Microsoft Corporation.
// This source is subject to the Microsoft Public License (Ms-PL).
// Please see http://go.microsoft.com/fwlink/?LinkID=131993 for details.
// All other rights reserved.

using System;
using System.Windows;
using System.Collections.Generic;
using System.Linq;

namespace System.Windows.Controls.Samples
{
    /// &lt;summary&gt;
    /// System.Windows.Controls samples application.
    /// &lt;/summary&gt;
    public partial class App : Application
    {
        /// &lt;summary&gt;
        /// Initializes a new instance of the App class.
        /// &lt;/summary&gt;
        public App()
        {
            if (App.Current.InstallState == InstallState.Installed)
            {
                App.Current.CheckAndDownloadUpdateCompleted += OnCheckAndDownloadUpdateCompleted;
                App.Current.CheckAndDownloadUpdateAsync();
            }

            Startup += delegate
            {
                RootVisual = new SampleBrowser(SampleTreeItems);
            };
            InitializeComponent();
        }

        /// &lt;summary&gt;
        /// Checks for the update completed event.
        /// &lt;/summary&gt;
        /// &lt;param name="sender"&gt;The source object.&lt;/param&gt;
        /// &lt;param name="e"&gt;The event arguments.&lt;/param&gt;
        private void OnCheckAndDownloadUpdateCompleted(object sender, CheckAndDownloadUpdateCompletedEventArgs e)
        {
            if (e.UpdateAvailable)
            {
                MessageBox.Show("An application update has been downloaded and "
                              + "will be available the next time you start the "
                              + "sample application.");
            }
            else if (e.Error != null)
            {
                MessageBox.Show("While checking for an application update, the "
                              + "following message was encountered:"
                              + Environment.NewLine
                              + Environment.NewLine
                              + e.Error.Message);
            }
        }
    }
}</pre>
</div>
<h4>Offering a button experience for taking the app Out of Browser</h4>
<p>Although you could just offer the experience in the right-click context menu of your Silverlight app in the browser, that’s not a very well-advertised and visual feature. For the samples app, we expose a button to “Install” the app on the machine.</p>
<p>We want to be able to update that offering UI in real-time, so once the user takes the app out of browser, the Install button is no longer visible.</p>
<p>We do this by subscribing in the Welcome.xaml.cs page to the OnInstallStateChanged event of the Application:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:2b2db57e-de3c-4e26-a9c3-a13dd7a7d79b" class="wlWriterEditableSmartContent">
<pre class="c-sharp" name="code">// Make sure that we are connected to the installation state change
// at least once.
Application.Current.InstallStateChanged += OnInstallStateChanged;</pre>
</div>
<p>And our Button has an event handler attached to start the actual install. The install call needs to happen in a user-initiated action: you can’t just call it whenever you like, but instead it needs to be placed somewhere in response to the user making a conscious installation decision:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:07209058-bef5-4c81-b174-8bf3bf534ba3" class="wlWriterEditableSmartContent">
<pre class="c-sharp" name="code">/// &lt;summary&gt;
/// Installs the application.
/// &lt;/summary&gt;
/// &lt;param name="sender"&gt;The source object.&lt;/param&gt;
/// &lt;param name="e"&gt;The event arguments.&lt;/param&gt;
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Event connected in XAML.")]
private void InstallSamplesClick(object sender, RoutedEventArgs e)
{
    Application.Current.Install();
}</pre>
</div>
<p>When they click that button, they’ll see the Consent Experience for the app. The clear and concise consent dialog is powered by Silverlight, but you’re able to customize the graphic displayed with your own designer brand asset: </p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="OutOfBrowserPrompt" border="0" alt="OutOfBrowserPrompt" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/OutOfBrowserPrompt.png" width="498" height="233" /></p>
<p>And then we are able to react to that by manually changing text, enabled status, visibility, etc. I’m sure a data binding expert would be able to make this example a little more attractive looking, but the code works!</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:5c394a85-644f-4ff5-b729-6eea2e7b75fc" class="wlWriterEditableSmartContent">
<pre class="c-sharp" name="code">/// &lt;summary&gt;
/// Shows or hides the installation button.
/// &lt;/summary&gt;
/// &lt;param name="sender"&gt;The source object.&lt;/param&gt;
/// &lt;param name="e"&gt;The event data.&lt;/param&gt;
private void OnInstallStateChanged(object sender, EventArgs e)
{
    switch (App.Current.InstallState)
    {
        case InstallState.Installing:
            InstallButton.Visibility = Visibility.Visible;
            InstallButton.IsEnabled = false;
            InstallButton.Content = "Installing...";
            break;

        case InstallState.Installed:
            InstallButton.Visibility = Visibility.Collapsed;
            InstallText.Text = "The samples have been installed on this computer.";
            break;

        case InstallState.NotInstalled:
            InstallButton.Visibility = Visibility.Visible;
            InstallButton.IsEnabled = true;
            break;

        case InstallState.InstallFailed:
            InstallButton.Visibility = Visibility.Collapsed;
            InstallText.Text = "The Out of Browser installation failed.";
            break;
    }

    InstallApplicationPanel.Visibility = App.Current.IsRunningOutOfBrowser ? Visibility.Collapsed : Visibility.Visible;
}</pre>
</div>
<h4>A smoother notification method</h4>
<p>Since most users aren’t going to immediately want to close the app they are working with, when an update becomes available, you’ll realize that the MessageBox.Show(…) route for the notification is jarring and rather inappropriate.</p>
<p>If you instead embed that information inside of your user interface, it can be simple “FYI” that is not as abrupt.</p>
<p>Here’s a simple use: if your root visual for the app contains a DockPanel, you could have a collapsed user interface element for displaying important messages, such as the availablility of an update.</p>
<p>Here’s what my UI might look like when a new version is available:</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="UpdateNotification" border="0" alt="UpdateNotification" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/UpdateNotification.png" width="682" height="403" /> </p>
<p>This user interface is accomplished with the toolkit’s DockPanel control, plus a little code behind. Here is the main application XAML:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:ecbee8b9-234f-42a9-b91d-d92e8abe7b19" class="wlWriterEditableSmartContent">
<pre class="xml" name="code">&lt;controlsToolkit:DockPanel Background="White"&gt;
    &lt;!-- Out of Browser Notification --&gt;
    &lt;Border Height="32"
            BorderBrush="#b4a555"
            BorderThickness="1"
            x:Name="OutOfBrowserNotification"
            Visibility="Collapsed"
            controlsToolkit:DockPanel.Dock="Top"&gt;
        &lt;Grid&gt;
            &lt;Grid.Background&gt;
                &lt;LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"&gt;
                    &lt;GradientStop Color="#fff6bd" Offset="0" /&gt;
                    &lt;GradientStop Color="#ffec82" Offset="1" /&gt;
                &lt;/LinearGradientBrush&gt;
            &lt;/Grid.Background&gt;
            &lt;Grid.ColumnDefinitions&gt;
                &lt;ColumnDefinition /&gt;
                &lt;ColumnDefinition Width="24" /&gt;
            &lt;/Grid.ColumnDefinitions&gt;
            &lt;StackPanel Orientation="Horizontal"&gt;
                &lt;TextBlock FontWeight="Bold"
                           VerticalAlignment="Center"
                           Text="Update Notification:"
                           Margin="5" /&gt;
                &lt;TextBlock VerticalAlignment="Center"&gt;The next time you use
                    this app, you'll be on the hot new version.
                &lt;/TextBlock&gt;
            &lt;/StackPanel&gt;
            &lt;TextBlock Grid.Column="1"
                       HorizontalAlignment="Center"
                       VerticalAlignment="Center"
                       FontWeight="Bold"
                       Text="X"
                       Padding="6"
                       MouseLeftButtonDown="OnCloseUpdateNotification"
                       /&gt;
        &lt;/Grid&gt;
    &lt;/Border&gt;

    &lt;Grid x:Name="LayoutRoot"&gt;
        &lt;Button Content="Your Application Goes Here"
                Opacity=".4"/&gt;
    &lt;/Grid&gt;
&lt;/controlsToolkit:DockPanel&gt;</pre>
</div>
<p>So, except when an update is available, the top notification section would not even be taking up any space. So here’s the code that responds to the application’s CheckAndDownloadUpdateCompleted event:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:3c12dc57-b4f3-4445-a24b-499d795f01d0" class="wlWriterEditableSmartContent">
<pre class="c-sharp" name="code">private void OnCheckAndDownloadUpdateCompleted(object sender, CheckAndDownloadUpdateCompletedEventArgs e)
{
    if (e != null &#038;&#038; e.UpdateAvailable)
    {
        OutOfBrowserNotification.Visibility = System.Windows.Visibility.Visible;
    }
}</pre>
</div>
<p>Behind the scenes, I’ve wired up a fake close button, so users can dismiss the window at their leisure:</p>
<p><div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:63e23869-b24c-4376-b9cd-5ff693533b60" class="wlWriterEditableSmartContent">
<pre class="c-sharp" name="code">private void OnCloseUpdateNotification(object sender, MouseButtonEventArgs e)
{
    OutOfBrowserNotification.Visibility = System.Windows.Visibility.Collapsed;
}</pre>
</div>
<p>For more information about the Silverlight Out of Browser feature, please check out the official <a href="http://msdn.microsoft.com/en-us/library/dd550721(VS.95).aspx">MSDN Library documentation, “Out-of-Browser Support”</a>.</p>
<h4>Out of Browser and Application Library Caching: Mutually Exclusive</h4>
<p>You may have also read that we’re <a href="http://www.jeff.wilcox.name/2009/11/app-library-caching-nov-2009/">finally shipping the application library cache support files</a> in the November 2009 release of the Silverlight Toolkit. Unfortunately, we haven’t enabled library cache support for the samples application, because we feel the value provided by Out of Browser trumps the cached library scenario.</p>
<p>When you setup Out of Browser support, you cannot enable Application Library Caching. The Visual Studio project properties are good about enforcing this.</p>
<p>The reason is that the Out of Browser experience requires that the entire Xap be self-contained, and when you enable application library caching for a project, it drops a bunch of .Zip files (zipped up versions of those dependent libraries) alongside the main app’s .Xap file. When Out of Browser, you may not always be able to download or grab those files.</p>
<h4>Consider a Splash Screen if you have a large app that is Out-of-Browser enabled</h4>
<p>I created a custom splash screen experience for the controls sample app that is hosted up on Silverlight.net, since the application is several megs. Your grandmother’s probably not interested in the control browser app, so don’t worry about those 14.4k modem users. My grandmother isn’t even interested, and she knows I work on this stuff!</p>
<p>The splash screen for the Silverlight Toolkit consists of a Silverlight Toolkit brand logo, a ton of TextBlocks, and I’m also using the native Grid to center the entire experience within the plugin. There’s a little JavaScript to update the text block with the percents, and the rest of the cycling animation is powered by several Storyboards that start when the page is initally loaded.</p>
<p>This is a good alternative to application library caching in some situations. Do remember to keep the splash screen small – users are much more interested in your app. Hopefully.</p>
<h3>Download the Silverlight Toolkit November 2009 Release Today</h3>
<p><a href="http://silverlight.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=36060"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Toolkit32" border="0" alt="Toolkit32" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/Toolkit32.png" width="685" height="88" /></a> </p>
<p>The Silverlight Toolkit is a collection of Silverlight controls, components and utilities that help make Silverlight development a little easier, more fun, and add value outside the regular Silverlight release cycle.</p>
<p>The sixth release of the Silverlight Toolkit, the November 2009 release targets Silverlight 3. There is also a release available that targets the new Silverlight 4 Beta for developers.</p>
<p>Resources of note:</p>
<ul>
<li><a href="http://silverlight.codeplex.com/">Learn more about the Silverlight Toolkit</a> </li>
<li><a href="http://silverlight.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=36060"><strong>Download the November 2009 Release</strong></a> </li>
<li><a href="http://silverlight.net/getstarted/">Get started with Silverlight development</a> </li>
<li>Participate in the <a href="http://silverlight.net/forums/35.aspx">controls community at Silverlight.net</a> </li>
<li>Check out questions and answers on Stack Overflow using the <a href="http://stackoverflow.com/questions/tagged/silverlight-toolkit">‘silverlight-toolkit’ tag</a> </li>
<li>The <a href="http://silverlight.codeplex.com/WorkItem/List.aspx">Issue Tracker</a> can be used to report issues, add to the feature wish list, and vote on the work to be done by the Microsoft team </li>
</ul>
<p><em>Hope you enjoy our new release!</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2009/11/out-of-browser-tutorial/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>BusyIndicator: David Poll&#8217;s ActivityControl is now in the Silverlight Toolkit November 2009 Release</title>
		<link>http://www.jeff.wilcox.name/2009/11/busy-indicator-control/</link>
		<comments>http://www.jeff.wilcox.name/2009/11/busy-indicator-control/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 23:37:02 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Silverlight Toolkit]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2009/11/busy-indicator-control/</guid>
		<description><![CDATA[BusyIndicator is a new control included in the November 2009 release of the Silverlight Toolkit.]]></description>
			<content:encoded><![CDATA[<p>Microsoft Program Manager <a href="http://www.davidpoll.com/">David Poll</a> is passionate about improving rich Internet application experiences involving data, and he previously blogged about his nice ActivityControl (<a href="http://www.davidpoll.com/?p=4">here</a> and <a href="http://www.davidpoll.com/2009/09/14/update-2-displaying-background-activity-in-a-silverlight-ria-application/">here</a>). The control is designer to provide a visual hint to users when an asynchronous update operation is going on – the type that can’t be interrupted.</p>
<p>It’s important to provide the user feedback that the UI is not hung, or crashed, but is in fact processing. This fills that void, and is really easy to get going with.</p>
<p>After some initial meetings with David, it became clear that the control would make a nice addition to the portfolio of valuable controls that are inside of the <a href="http://silverlight.codeplex.com/">Silverlight Toolkit</a>, so thanks to everyone who came together to get this added to the November release.</p>
<h3>Quick guide to using the control</h3>
<h4>IsBusy</h4>
<p>The key dependency property on the BusyIndicator control is the IsBusy bool property. It’s easy to data bind to your data model, or programmatically toggle on and off.</p>
<p>When toggled to true, the actual content of the BusyIndicator control (which itself is a ContentControl) will no longer be enabled.</p>
<h4>Place your content inside the control</h4>
<p>In the most simple use case, just place your content inside the control and bind to the model. When IsBusy is set to true, you’ll see the waiting user interface appear.</p>
<p>Your controls that are wrapped by the BusyIndicator control will not be enabled during the busy time, preventing the user from inadvertently altering the data state during the operation.</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:1086e259-5fd5-4933-8389-a2248f0a0692" class="wlWriterEditableSmartContent">
<pre class="xml" name="code">&lt;Grid x:Name="LayoutRoot" Background="White"&gt;
    &lt;controlsToolkit:BusyIndicator IsBusy="{Binding DataServicesAreBusy}"&gt;

        &lt;!-- This button will not be enabled when IsBusy is set to True --&gt;
        &lt;Button Content="This is a button" HorizontalAlignment="Center"  VerticalAlignment="Center" Padding="8"/&gt;

    &lt;/controlsToolkit:BusyIndicator&gt;
&lt;/Grid&gt;</pre>
</div>
<h4>Customizing the busy content</h4>
<p>The entire thing is very customizable, you can use data templates and even retemplate the control. David Anson covered this <a href="http://blogs.msdn.com/delay/archive/2009/11/18/silverlight-4-beta-is-out-and-the-toolkit-has-it-covered-silverlight-toolkit-november-2009-release-now-available-for-silverlight-3-and-4.aspx">in his post yesterday on the topic</a>.</p>
<p>Here’s a quick example of changing the text that is displayed – the Content property can take any kind of content, so you could even put a quick game in there if you wanted to go overboard.</p>
</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:43e84fe4-5da5-43da-b964-e31f66aeda88" class="wlWriterEditableSmartContent">
<pre class="xml" name="code">&lt;Grid x:Name="LayoutRoot" Background="White"&gt;

    &lt;controlsToolkit:BusyIndicator IsBusy="{Binding DataServicesAreBusy}"&gt;
            &lt;controlsToolkit:BusyIndicator.BusyContent&gt;
                &lt;TextBlock Text="Reticulating Splines..."
                           FontSize="18"
                           FontWeight="Bold" /&gt;
            &lt;/controlsToolkit:BusyIndicator.BusyContent&gt;

                &lt;!-- This button will not be enabled when IsBusy is set to True --&gt;
        &lt;Button Content="This is a button" HorizontalAlignment="Center"  VerticalAlignment="Center" Padding="8"/&gt;

    &lt;/controlsToolkit:BusyIndicator&gt;
&lt;/Grid&gt;</pre>
</div>
<p>And here’s what that looks like in a real application when IsBusy is true:</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Splines" border="0" alt="Splines" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/Splines.png" width="685" height="383" />&#160; </p>
<h3>Find out more in the Silverlight Controls Browser</h3>
<p>Just like all other controls in the Silverlight core runtime, SDK, and the Silverlight Toolkit, you’ll find the Activity Control in the Silverlight Controls Browser. It is under the Toolkit tree view item, near the bottom of the list on the left part of the app.</p>
<p>Silverlight 3 <a href="http://silverlight.net/samples/sl3/toolkitcontrolsamples/run/default.html">samples are here</a>. </p>
<p>Silverlight 4 Beta <a href="http://silverlight.net/content/samples/sl4/toolkitcontrolsamples/run/default.html">samples are here</a>, if you’re a developer and have the Silverlight 4 Beta on your machine.</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="BusyIndicatorSample" border="0" alt="BusyIndicatorSample" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/BusyIndicatorSample.png" width="685" height="419" />&#160;</p>
<h3>Where to find the control</h3>
<p>You’ll find the BusyIndicator control in the System.Windows.Controls.Toolkit.dll assembly, documentation in the Silverlight Toolkit docs, a few unit tests, and yeah it’s in the sample browser as well. It lives in the System.Windows.Controls namespace.</p>
<p>Hope you enjoy having this control available in the Silverlight Toolkit!</p>
<h3>Download the Silverlight Toolkit November 2009 Release Today</h3>
<p><a href="http://silverlight.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=36060"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Toolkit[3]" border="0" alt="Toolkit[3]" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/Toolkit3.png" width="685" height="88" /></a> </p>
<p>The Silverlight Toolkit is a collection of Silverlight controls, components and utilities that help make Silverlight development a little easier, more fun, and add value outside the regular Silverlight release cycle.</p>
<p>The sixth release of the Silverlight Toolkit, the November 2009 release targets Silverlight 3. There is also a release available that targets the new Silverlight 4 Beta for developers.</p>
<p>Resources of note:</p>
<ul>
<li><a href="http://silverlight.codeplex.com/">Learn more about the Silverlight Toolkit</a> </li>
<li><a href="http://silverlight.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=36060"><strong>Download the November 2009 Release</strong></a> </li>
<li><a href="http://silverlight.net/getstarted/">Get started with Silverlight development</a> </li>
<li>Participate in the <a href="http://silverlight.net/forums/35.aspx">controls community at Silverlight.net</a> </li>
<li>Check out questions and answers on Stack Overflow using the <a href="http://stackoverflow.com/questions/tagged/silverlight-toolkit">‘silverlight-toolkit’ tag</a> </li>
<li>The <a href="http://silverlight.codeplex.com/WorkItem/List.aspx">Issue Tracker</a> can be used to report issues, add to the feature wish list, and vote on the work to be done by the Microsoft team </li>
</ul>
<p><em>Hope you enjoy our new release!</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2009/11/busy-indicator-control/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Application Library Caching &#8211; November 2009 Silverlight Toolkit</title>
		<link>http://www.jeff.wilcox.name/2009/11/app-library-caching-nov-2009/</link>
		<comments>http://www.jeff.wilcox.name/2009/11/app-library-caching-nov-2009/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 22:49:06 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Silverlight Toolkit]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2009/11/app-library-caching-nov-2009/</guid>
		<description><![CDATA[The November 2009 release of the Silverlight Toolkit finally includes application library caching support to help reduce the size of your application .Xaps.]]></description>
			<content:encoded><![CDATA[<p>We’ve decided to include, free of charge,<strong> </strong>application library cache support in the <a href="http://silverlight.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=36060">November 2009 release</a> of the <a href="http://silverlight.codeplex.com/">Silverlight Toolkit</a> for Microsoft Silverlight 3 and also a preview supporting the new Silverlight 4 Beta. One of the many ways that we continue to deliver high-value in our open source set of goodies for Silverlight developers.</p>
<p>Kidding aside, yes, you can finally enable library caching when using the latest release. Since our installations are always side-by-side friendly, you should get this support immediately after installing the latest release that pairs with your Silverlight development environment.</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ReduceXapSize" border="0" alt="ReduceXapSize" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/ReduceXapSize.png" width="525" height="501" /> </p>
<p>Note that the Out of Browser feature of Silverlight is unavailable for your application if you use this feature, since key libraries need to be contained inside your Out of Browser Xap file.</p>
<p>Previously available <a href="http://www.jeff.wilcox.name/2009/10/toolkit-extmaps/">only by blog</a>, the application library cache files sit alongside the control, feature, and theme binaries for the Silverlight Toolkit and enable the Silverlight SDK to package up those components separately, improving application download and startup time in some situation for application users starting the second time they use your app.</p>
<h3>Toolkit Libraries Supported</h3>
<ul>
<li>Microsoft.Silverlight.Testing.dll </li>
<li>Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll </li>
<li>System.ComponentModel.Composition.Packaging.Toolkit.dll<em> <font color="#004080"><strong>(Silverlight 4 Toolkit Only)</strong></font> </em></li>
<li>System.Reactive.dll <strong><font color="#004080"><em>(Note: This is a pre-release version of the Reactive Framework at this time and supports the Drag and Drop features introduced in the last release)</em></font></strong> </li>
<li>System.Windows.Controls.Data.DataForm.Toolkit.dll </li>
<li>System.Windows.Controls.Data.Toolkit.dll </li>
<li>System.Windows.Controls.DataVisualization.Toolkit.dll </li>
<li>System.Windows.Controls.Input.Toolkit.dll </li>
<li>System.Windows.Controls.Layout.Toolkit.dll </li>
<li>System.Windows.Controls.Theming.Toolkit.dll </li>
<li>System.Windows.Controls.Toolkit.dll </li>
</ul>
<h3>Toolkit Themes Supported</h3>
<ul>
<li>System.Windows.Controls.Theming.BubbleCreme.dll </li>
<li>System.Windows.Controls.Theming.BureauBlack.dll </li>
<li>System.Windows.Controls.Theming.BureauBlue.dll </li>
<li>System.Windows.Controls.Theming.ExpressionDark.dll </li>
<li>System.Windows.Controls.Theming.ExpressionLight.dll </li>
<li>System.Windows.Controls.Theming.RainierOrange.dll </li>
<li>System.Windows.Controls.Theming.RainierPurple.dll </li>
<li>System.Windows.Controls.Theming.ShinyBlue.dll </li>
<li>System.Windows.Controls.Theming.ShinyRed.dll </li>
<li>System.Windows.Controls.Theming.TwilightBlue.dll </li>
<li>System.Windows.Controls.Theming.WhistlerBlue.dll </li>
</ul>
<h3>Size differences</h3>
<p>Here’s a simple application with a chart, you can see that the .Xap file weighs in around 345 KB:</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="OriginalSize[1]" border="0" alt="OriginalSize[1]" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/OriginalSize1.png" width="680" height="475" /> </p>
<p>After enabling the application library cache support, check it out:</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="UpdatedSize[1]" border="0" alt="UpdatedSize[1]" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/UpdatedSize1.png" width="680" height="475" /> </p>
<p>The core .Xap is now 41 KB. Of course, there are no time savings on the first download: all those other .Zip files with the extensions are downloaded as well. But if you update your .Xap file, you likely do not need to refresh the .Zip files with the cached libraries. So your users only download the new 41 KB on next visit after a change, instead of hundreds of kilobytes.</p>
<p><strong>Sorry!     <br /></strong>In retrospect, I admit that it’s quite embarrassing that we didn’t offer application library caching support right off-the-bat alongside the Silverlight 3 release. Having limited time and resources to deliver for each release, we’re not always able to get it all done.</p>
<p>Keep letting us know what you want us to work on by voicing your opinion on our blogs and by voting on the <a href="http://silverlight.codeplex.com/WorkItem/List.aspx">CodePlex Work Item Tracker</a> (it tracks both feature requests and bugs).</p>
<h3>Download the Silverlight Toolkit November 2009 Release Today</h3>
<p><a href="http://silverlight.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=36060"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Toolkit" border="0" alt="Toolkit" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/Toolkit.png" width="685" height="88" /></a> </p>
<p>The Silverlight Toolkit is a collection of Silverlight controls, components and utilities that help make Silverlight development a little easier, more fun, and add value outside the regular Silverlight release cycle.</p>
<p>The sixth release of the Silverlight Toolkit, the November 2009 release targets Silverlight 3. There is also a release available that targets the new Silverlight 4 Beta for developers.</p>
<p>Resources of note:</p>
<ul>
<li><a href="http://silverlight.codeplex.com/">Learn more about the Silverlight Toolkit</a></li>
<li><a href="http://silverlight.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=36060"><strong>Download the November 2009 Release</strong></a></li>
<li><a href="http://silverlight.net/getstarted/">Get started with Silverlight development</a></li>
<li>Participate in the <a href="http://silverlight.net/forums/35.aspx">controls community at Silverlight.net</a></li>
<li>Check out questions and answers on Stack Overflow using the <a href="http://stackoverflow.com/questions/tagged/silverlight-toolkit">‘silverlight-toolkit’ tag</a></li>
<li>The <a href="http://silverlight.codeplex.com/WorkItem/List.aspx">Issue Tracker</a> can be used to report issues, add to the feature wish list, and vote on the work to be done by the Microsoft team</li>
</ul>
<p><em>Hope you enjoy our new release!</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2009/11/app-library-caching-nov-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Silverlight Toolkit &#8211; now in the Microsoft Web Platform Installer</title>
		<link>http://www.jeff.wilcox.name/2009/11/toolkit-webpi/</link>
		<comments>http://www.jeff.wilcox.name/2009/11/toolkit-webpi/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 00:18:04 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Silverlight Toolkit]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2009/11/toolkit-webpi/</guid>
		<description><![CDATA[It’s now even easier to get started with the Silverlight Toolkit, an excellent complement to your Silverlight development environment. The latest Silverlight 3 release of the Silverlight Toolkit is now available on the Web PI. It is now the recommended way of getting the toolkit. Here’s a link to the installer, if you don’t already [...]]]></description>
			<content:encoded><![CDATA[<p>It’s now even easier to get started with the Silverlight Toolkit, an excellent complement to your Silverlight development environment. The latest Silverlight 3 release of the Silverlight Toolkit is now available on the Web PI. It is now the recommended way of getting the toolkit.</p>
<p><a href="http://www.microsoft.com/web/gallery/install.aspx?appid=SilverlightToolkit"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="btn-free-webpi" border="0" alt="btn-free-webpi" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/btnfreewebpi1.png" width="182" height="43" /></a> </p>
<p>Here’s a link to the installer, if you don’t already have it on your system: <a title="http://www.microsoft.com/web/downloads/platform.aspx" href="http://www.microsoft.com/web/downloads/platform.aspx">http://www.microsoft.com/web/downloads/platform.aspx</a> </p>
<p>Jump right to the toolkit install here: <a title="http://www.microsoft.com/web/gallery/install.aspx?appid=SilverlightToolkit" href="http://www.microsoft.com/web/gallery/install.aspx?appid=SilverlightToolkit">http://www.microsoft.com/web/gallery/install.aspx?appid=SilverlightToolkit</a>    <br /><em>Or</em>, a Twitter-friendly link: <a title="http://bit.ly/3eaT68" href="http://bit.ly/3eaT68">http://bit.ly/3eaT68</a></p>
<h3>Simple installation experience</h3>
<p>It’s quick and easy now to use the Silverlight Toolkit – no need to jump over to the <a href="http://silverlight.codeplex.com/">CodePlex site</a>.</p>
<p><a href="http://www.microsoft.com/web/gallery/install.aspx?appid=SilverlightToolkit"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="WebPi1" border="0" alt="WebPi1" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/WebPi11.png" width="680" height="511" /></a> </p>
<p>Once starting the Web Platform Installer, you’ll find the Silverlight Toolkit under the ‘Web Platform’ tab, in the ‘Tools’ section:</p>
<p><a href="http://www.microsoft.com/web/gallery/install.aspx?appid=SilverlightToolkit"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="WebPi3" border="0" alt="WebPi3" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/11/WebPi3.png" width="680" height="511" /></a> </p>
<p>The installation should only take a few seconds. Afterwards, you’ll find the controls inside Expression Blend 3, Visual Studio 2008 SP1 with the Silverlight Tools installed, and Visual Studio 2010 Beta 2.</p>
<h3>About the Silverlight Toolkit</h3>
<p>In case you’ve never used the <a href="http://silverlight.codeplex.com/">Silverlight Toolkit</a>, it’s never too late to start. The following controls have been part of the Silverlight Toolkit development process. You can find out more about the <a href="http://silverlight.codeplex.com/wikipage?title=Quality%20Bands&amp;referringTitle=Home">quality bands here</a>.     <br /> <br />
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="319">
<p><b>Mature/SDK/Runtime</b></p>
<p>AutoCompleteBox              <br />Calendar               <br />ChildWindow               <br />DataGrid               <br />DataPager               <br />DatePicker               <br />GridSplitter               <br />HeaderedItemsControl               <br />TabControl               <br />TreeView</p>
</td>
<td valign="top" width="319">
<p><b>Stable</b>               <br />DockPanel               <br />Expander               <br />HeaderedContentControl               <br />Label               <br />NumericUpDown               <br />Viewbox               <br />WrapPanel</p>
</td>
</tr>
<tr>
<td valign="top" width="319">
<p><b>Preview</b>               <br />Accordion               <br />Charting               <br />DataForm               <br />DomainUpDown               <br />ImplicitStyleManager               <br />LayoutTransformer               <br />Rating               <br />TimePicker               <br />TimeUpDown               <br /><i>11 designer visual themes</i></p>
</td>
<td valign="top" width="319">
<p><b>Experimental</b>               <br />GlobalCalendar               <br />TransitioningContentControl               <br />TreeMap               <br />Drag and Drop support for items controls</p>
</td>
</tr>
</tbody>
</table>
<p><strong>More resources:</strong></p>
<ul>
<li>You can also find the source code <a href="http://silverlight.codeplex.com/SourceControl/ListDownloadableCommits.aspx">online here</a>. </li>
<li>Check out the <a href="http://forums.silverlight.net/forums/35.aspx">Silverlight.net discussion forums for the controls</a> </li>
<li>There is an <a href="http://www.codeplex.com/Silverlight/WorkItem/List.aspx">issue tracker page on CodePlex</a> for reporting and voting on issues </li>
<li>Read the <a href="http://silverlight.codeplex.com/wikipage?title=Silverlight%20Toolkit%20October%202009%20change%20list">changes between the July 2009 and October 2009 releases</a> </li>
</ul>
<p>You can also find out more about the Web Platform <a href="http://www.microsoft.com/web/">here</a> and <a href="http://weblogs.asp.net/scottgu/archive/2009/06/02/microsoft-web-platform-installer.aspx">here</a>. Hope this helps!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2009/11/toolkit-webpi/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Silverlight Toolkit October 2009 Release</title>
		<link>http://www.jeff.wilcox.name/2009/10/toolkit-october-2009/</link>
		<comments>http://www.jeff.wilcox.name/2009/10/toolkit-october-2009/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 18:03:37 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Silverlight Toolkit]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2009/10/toolkit-october-2009/</guid>
		<description><![CDATA[The October 2009 release of the Silverlight Toolkit is out, and includes easy drag and drop components and an awesome Visual Studio 2010 experience for the toolkit controls.]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://silverlight.codeplex.com/">Silverlight Toolkit</a> (October 2009) release is now live. The 5<sup>th</sup> release of the product, the toolkit contains a great set of components and features that many of our customers have asked for. Our most recent release, July ’09, has had <b>over 129,000 developer downloads</b> to date.</p>
<p>Here’s what you need to get going:</p>
<p><a href="http://silverlight.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=30514">Download the Silverlight Toolkit installer</a> for Silverlight 3 (source code included in the installer, or <a href="http://silverlight.codeplex.com/SourceControl/ListDownloadableCommits.aspx">online here</a>)    <br /><a href="http://forums.silverlight.net/forums/35.aspx">Silverlight.net discussion forums for the controls</a>    <br /><a href="http://www.codeplex.com/Silverlight/WorkItem/List.aspx">Issue tracker page on CodePlex</a>    <br /><a href="http://silverlight.codeplex.com/wikipage?title=Silverlight%20Toolkit%20October%202009%20change%20list">Changes between the July 2009 and October 2009 releases</a></p>
<p>Our installations are side-by-side friendly, so even if you have a previous release, you’ll want to install this one for sure.</p>
<p><i>Here are a few highlights from this release:</i></p>
<h4>Awesome Visual Studio 2010 design experience</h4>
<p>The fully interactive design surface in Visual Studio 2010 really completes the Silverlight development experience. The Silverlight Toolkit contains a rich set of metadata that makes the controls even easier to use.</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Dev10" border="0" alt="Dev10" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/10/Dev10.png" width="680" height="490" /> </p>
<h4>Drag &amp; Drop</h4>
<p>A set of drag and drop targets for ListBox, DataGrid, charts, etc., allows you to add drag &amp; drop support to these controls in a single line of XAML (by enclosing them in a &lt;toolkit:ListBoxDragDropDecorator /&gt; element). Rich LOB-style apps are even easier to build now! Find out more <a href="http://themechanicalbride.blogspot.com/2009/08/new-with-silverlight-toolkit-drag-and.html">here</a>.</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="DragAndDrop" border="0" alt="DragAndDrop" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/10/DragAndDrop.png" width="350" height="120" /> </p>
<h4>Charting improvements</h4>
<p>Continued advancement of the charting APIs, optimized for extensibility and performance. <a href="http://blogs.msdn.com/delay/archive/2009/09/13/a-preview-of-upcoming-charting-changes-silverlight-wpf-data-visualization-development-release-1.aspx">Details</a>.</p>
<h3>About the Silverlight Toolkit</h3>
<p>In case you’ve never used the Silverlight Toolkit, here’s what you’ll find inside:</p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="319">
<p><b>Mature/Silverlight SDK</b></p>
<p>AutoCompleteBox           <br />Calendar            <br />ChildWindow            <br />DataGrid            <br />DataPager            <br />DatePicker            <br />GridSplitter            <br />HeaderedItemsControl            <br />TabControl            <br />TreeView</p>
</td>
<td valign="top" width="319">
<p><b>Stable</b>            <br />DockPanel            <br />Expander            <br />HeaderedContentControl            <br />Label            <br />NumericUpDown            <br />Viewbox            <br />WrapPanel</p>
</td>
</tr>
<tr>
<td valign="top" width="319">
<p><b>Preview</b>            <br />Accordion            <br />Charting            <br />DataForm            <br />DomainUpDown            <br />ImplicitStyleManager            <br />LayoutTransformer            <br />Rating            <br />TimePicker            <br />TimeUpDown            <br /><i>11 designer visual themes</i></p>
</td>
<td valign="top" width="319">
<p><b>Experimental</b>            <br />GlobalCalendar            <br />TransitioningContentControl            <br />TreeMap            <br />Drag and Drop support for items controls</p>
</td>
</tr>
</tbody>
</table>
<p>Hope you enjoy the new features!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2009/10/toolkit-october-2009/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Silverlight Toolkit in the wild &#8211; Sunday Night Football player</title>
		<link>http://www.jeff.wilcox.name/2009/09/football-plus-an-accordion-control/</link>
		<comments>http://www.jeff.wilcox.name/2009/09/football-plus-an-accordion-control/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 13:06:21 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Silverlight Toolkit]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/?p=454</guid>
		<description><![CDATA[The awesome online Sunday Night Football experience features the Accordion control from the Silverlight Toolkit.]]></description>
			<content:encoded><![CDATA[<p>If you had a chance to watch the Packers and Bears play last night, you were in for a treat if you used the <a href="http://nbcsports.msnbc.com/id/26393211/ns/sports-nfl/">Silverlight-powered Sunday Night Football Extra</a> player: multiple camera angles, beautiful high definition video, and yes, the Silverlight Toolkit! Last week, the Tennessee Titans played the Pittsburg Steelers (Steelers won, 13-10), using the same technology. The season’s off to a good start now.</p>
<p>NBC has really made a great call here to use <a href="http://www.microsoft.com/silverlight/">Silverlight</a>, paired with <a href="http://www.iis.net/extensions/SmoothStreaming">Smooth Streaming</a> technology. The rich Silverlight app is very nice, <a href="http://www.vertigo.com/Projects.aspx">Vertigo</a> did a great job building it to tie everything together.</p>
<h3>Accordion control for the win!</h3>
<p>One thing that I was really happy to notice in the player app was one of the Preview controls from the Silverlight Toolkit, so I just wanted to take a minute to point that out…</p>
<p><a href="http://nbcsports.msnbc.com/id/26393211/ns/sports-nfl/"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="SnfAccordion" border="0" alt="SnfAccordion" src="http://www.jeff.wilcox.name/wp-content/uploads/2009/09/SnfAccordion.jpg" width="685" height="464" /></a> </p>
<p>Here’s a screen shot of the player. On the far right corner, the “Stats” tab contains team stats and other information. The user interface control that lets you decide between the sets of data in this example is the Silverlight Toolkit’s <a href="http://silverlight.codeplex.com/Wiki/View.aspx?title=Silverlight%20Toolkit%20Overview%20Part%201&amp;ANCHOR#Accordion">Accordion control</a>.</p>
<p>It’s a nice vote of confidence, seeing this control in use – as a Preview control (<a href="http://silverlight.codeplex.com/Wiki/View.aspx?title=Quality%20Bands">quality band definitions here</a>), it is intended to meet basic usage scenarios, has been released to get feedback, and can be considered an ‘Alpha’ quality control. Maybe we’ll need to prop that up a level with the next release, it looks to be working great!</p>
<p>If you’ve used the control before, you’ll probably recognize that there are two AccordionItems: one with the header ‘Offensive Leaders’, another with the header ‘Team Stats’. The developers at <a href="http://www.vertigo.com/">Vertigo</a> have done a great job of re-templating the control to make it look really nice, plus setup data binding all these fields inside the content of the accordion items.</p>
<p>The Accordion control was developed by <a href="http://www.sitechno.com/blog/">Ruurd Boeke</a>, a member of the Silverlight team. He’s created a great set of guides on the control, I invite you to check them out:</p>
<ul>
<li><a href="http://www.sitechno.com/Blog/ct.ashx?id=1b37749a-295b-4696-96af-b9d8de1c7fb2&amp;url=http%3a%2f%2fwww.sitechno.com%2fBlog%2fAccordionPart1.aspx">Part 1</a> – accordion</li>
<li><a href="http://www.sitechno.com/Blog/ct.ashx?id=1b37749a-295b-4696-96af-b9d8de1c7fb2&amp;url=http%3a%2f%2fwww.sitechno.com%2fBlog%2fAccordionPart2.aspx">Part 2</a> – accordion item</li>
<li><a href="http://www.sitechno.com/Blog/ct.ashx?id=1b37749a-295b-4696-96af-b9d8de1c7fb2&amp;url=http%3a%2f%2fwww.sitechno.com%2fBlog%2fAccordionPart3.aspx">Part 3</a> – expandable content control</li>
<li><a href="http://www.sitechno.com/Blog/ct.ashx?id=1b37749a-295b-4696-96af-b9d8de1c7fb2&amp;url=http%3a%2f%2fwww.sitechno.com%2fBlog%2fAccordionPart4TemplatingExample.aspx">Part 4</a> – retemplating, real world example</li>
<li><a href="http://www.sitechno.com/Blog/AccordionPart5AccordionButton.aspx">Part 5</a> – accordion button</li>
</ul>
<p>To get the control, download and install the <a href="http://silverlight.codeplex.com/">latest Silverlight Toolkit</a> release. The Accordion control is available for both Silverlight 2 and Silverlight 3 development.</p>
<h3>Next game is 9/20 at 8:00 PM ET</h3>
<p>Tune in for the next football game, where the New York Giants will play the Dallas Cowboys. <a href="http://nbcsports.msnbc.com/id/26393211/ns/sports-nfl/">Watch it here</a>.</p>
<h3>Learn more about the Vertigo player</h3>
<p>To learn more about the awesome set of features in this online football experience, check out <a href="http://blogs.vertigo.com/personal/bobc/Blog/archive/2009/09/10/get-ready-for-sunday-night-football.aspx">Bob Cowherd’s blog post</a> that goes through the special features. The devs at Vertigo are top-notch and have done an amazing job pulling this all together.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2009/09/football-plus-an-accordion-control/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Engineering Excellence recognition for the Silverlight Unit Test Framework</title>
		<link>http://www.jeff.wilcox.name/2009/06/09-ee-awards/</link>
		<comments>http://www.jeff.wilcox.name/2009/06/09-ee-awards/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 06:04:38 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/?p=410</guid>
		<description><![CDATA[I&#8217;m pleased to announce that the Silverlight Unit Test Framework received honorable mention at the Microsoft Engineering Excellence awards ceremony this evening. It&#8217;s great having the tool recognized as an important contribution to not only the success of Silverlight, but also to the success of so many development and test partners, both inside and outside [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m pleased to announce that the <b>Silverlight Unit Test Framework</b> received honorable mention at the Microsoft Engineering Excellence awards ceremony this evening. It&#8217;s great having the tool recognized as an important contribution to not only the success of Silverlight, but also to the success of so many development and test partners, both inside and outside Microsoft.</p>
<p>I really would like to thank each and every person who&#8217;s been able to use the tool. I really appreciate the feedback and conversations many of us have had to work to make improvements over the years (<em>Wow, has it been so long?!</em>).</p>
<h3>What&#8217;s this all about?</h3>
<p>Each year, Microsoft holds an Engineering Forum, jam-packed with sessions and talks much like an industry conference, focusing on everything from the core engineering disciplines to trustworthy computing and everything inbetween.</p>
<p>During the forum, a select set of awards are given out to a select innovations, recognizing teams and individuals for their successful engineering feats helping the company to ship safer, quicker, and better all-around software to the world. The criteria is challenging, nomination count very high, and the selection process intense.</p>
<p>Although the test framework wasn&#8217;t selected as a finalist, it did receive honorable mention, which is enough to make me happy.</p>
<p>It was also great hearing a little bit from some of the senior engineering leaders inside the company, including Ray Ozzie and Jon DeVaan.</p>
<p>A lot of great tools, processes, and accomplishments have been recognized over the years, and the bar is high, with great tools like <a href="http://www.nikhilk.net/Entry.aspx?id=196">Script#</a>, Nikhil Kothari&#8217;s famous C#/JavaScript tool, as well as Brad, Krzysztof, and Michael&#8217;s <a href="http://blogs.msdn.com/brada/archive/2007/07/05/fxcop-honored-with-chairman-s-award-for-engineering-excellence.aspx">FxCop</a> (now built into Visual Studio).</p>
<p>I hope that, with some of the plans I have in place for the framework, that maybe someday it&#8217;ll be a finalist for a future award of this nature &#8211; there&#8217;s a nice shiny crystal award that would look great on the bookshelf!</p>
<h3>What&#8217;s the Silverlight Unit Test Framework?</h3>
<p>The Silverlight Unit Test Framework is a simple unit and functional test system specially designed for Silverlight, building on existing desktop unit testing knowledge and metadata. You&#8217;ll find the test framework inside of the <a href="http://www.codeplex.com/Silverlight/">Silverlight Toolkit&#8217;s</a> source code package, and in use in a lot of places.</p>
<p>Thanks for everyone helping to make this a success!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2009/06/09-ee-awards/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Sharing Source and Skills &#8211; Source download</title>
		<link>http://www.jeff.wilcox.name/2009/04/mix09-source/</link>
		<comments>http://www.jeff.wilcox.name/2009/04/mix09-source/#comments</comments>
		<pubDate>Fri, 03 Apr 2009 19:30:15 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[MIX]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Silverlight Toolkit]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/?p=378</guid>
		<description><![CDATA[This post contains the sample app and control source code from Jeff Wilcox's MIX '09 talk, Sharing Skills and Code with Silverlight and WPF.]]></description>
			<content:encoded><![CDATA[<p>At the MIX &#8217;09 conference this year, I presented a talk, &#8220;<a href="http://www.jeff.wilcox.name/2009/03/mymix09-session/">Sharing Skills and Code with Silverlight &amp; WPF</a>&#8220;. Here&#8217;s the sample application and control source code that was used throughout the talk.</p>
<p>It demonstrates simple concepts for linking files from a Silverlight to WPF project, using partial classes and partial methods, preprocessor directives, and other tools to create projects that work throughout the Microsoft Client Platform.</p>
<h4>Silverlight sample application</h4>
<p><img alt="Silverlight Application" src="http://media.jeff.wilcox.name/blog/mix09/HousingPricesApp.png" title="Housing prices - Silverlight Application" width="685" height="620" /></p>
<h4>WPF sample application -100% the same source</h4>
<p><img alt="WPF Application" src="http://media.jeff.wilcox.name/blog/mix09/HousingPricesWpfApp.png" title="Housing prices - WPF Application" width="685" height="528" /></p>
<p><a href="http://media.jeff.wilcox.name/blog/mix09/SharingSkillsAndCode.zip">Download the samples</a> &#8211; Zip, 596 KB<br />
The Zip contains the following work:</p>
<ul>
<li>Toolbar control for Silverlight and WPF</li>
<li>Sample application for the Toolbox</li>
<li>Continuum application &#8211; same XAML and CS shared between a Silverlight and WPF application that uses the DataGrid, charting controls, and our custom Toolbar control</li>
<li>Value-add code, Awesome.cs, that adds some simple functionality to the WPF application only</li>
</ul>
<p>Hope this helps.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2009/04/mix09-source/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>The Silverlight Toolkit grows up a little with an install experience</title>
		<link>http://www.jeff.wilcox.name/2009/03/silverlight-toolkit-installer/</link>
		<comments>http://www.jeff.wilcox.name/2009/03/silverlight-toolkit-installer/#comments</comments>
		<pubDate>Mon, 23 Mar 2009 08:06:24 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[MIX]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Silverlight Toolkit]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/?p=330</guid>
		<description><![CDATA[The Silverlight Toolkit's March 2009 release is out, now with an installation experience that adds controls to the Visual Studio and Expression Blend toolbox, and improves the design experience.]]></description>
			<content:encoded><![CDATA[<p><img alt="Silverlight 3 Visual Studio Toolbox" src="http://media.jeff.wilcox.name/blog/mix09/Silverlight3Toolbox.png" title="Silverlight 3 Visual Studio Toolbox" width="240" height="1946" align="right" hspace="4" vspace="4" />The <a href="http://silverlight.codeplex.com/">Silverlight Toolkit March 2009</a> includes an install experience for the first time. Instead of having to download a Zip file with all the bits and little instruction, we now have a complete installation experience for Windows.</p>
<p>This provides a very nice experience when using Visual Studio 2008 and Expression Blend 3, since the Toolkit&#8217;s controls appear alongside all other Silverlight SDK controls now.</p>
<p>I wanted to take a few minutes and record a few questions and answers about the new experience. Let me know if there are some other questions you&#8217;d like answered.</p>
<h3>Why are there two setup downloads for the March 2009 release?</h3>
<p>The March 2009 release is available for targeting Silverlight 2 applications (recommended for most developers and designers working on current production Silverlight 2 apps), and a Silverlight 3 Beta release.</p>
<p>Since the target platform is important, you can make a choice. Of course, both the Silverlight 2 and Silverlight 3 Beta installs for the Silverlight Toolkit support side-by-side; however, the Visual Studio 2008&#8242;s Silverlight Tools do not support &#8220;multi-targeting,&#8221; so you really should decide and stick to a single target development environment for Silverlight coding today.</p>
<h3>What are the system requirements?</h3>
<p>The Silverlight Toolkit only requires a recent version of the .NET framework to install. However, for the best experience, you should have one of these development environments installed and configured:</p>
<ul>
<li>Visual Studio 2008 SP1 with the Silverlight Tools (Silverlight 2 or Silverlight 3 Beta)</li>
<li>Visual Web Developer Express with the Silverlight Tools (Silverlight 2 or Silverlight 3 Beta)</li>
<li>Expression Blend 2 SP1 with Silverlight 2</li>
<li>Expression Blend 3 MIX &#8217;09 Preview with Silverlight 3 Beta</li>
</ul>
<p>More information about these tools and downloads is available at <a href="http://silverlight.net/getstarted/silverlight3/default.aspx">http://silverlight.net/getstarted/silverlight3/default.aspx</a>.</p>
<p>You can install the Silverlight Toolkit before or after the Silverlight Tools installation.</p>
<h3>What&#8217;s with the namespace change to System.Windows.Controls?</h3>
<p>As the Silverlight Toolkit has begun delivering controls into the official Silverlight SDK, it became apparent that we should be consistent across the Silverlight platform with regard to the namespace used for the Microsoft controls. As a result, we decided to make this namespace change along with the new &#8220;.Toolkit&#8221; assembly name scheme.</p>
<h3>Where&#8217;s the AutoCompleteBox control? How about TreeView?</h3>
<p>Some of the &#8220;Stable&#8221; controls were moved to the official Microsoft Silverlight 3 Beta SDK, since they are trending towards the &#8220;Mature&#8221; quality band. As a result, the controls live in different assemblies depending on whether you are performing Silverlight 2 or Silverlight 3 Beta development.</p>
<p>In the Silverlight 2 Toolkit March 2009 release, AutoCompleteBox is in System.Windows.Controls.Input.Toolkit. TreeView is in System.Windows.Controls.Toolkit.</p>
<p>In the Silverlight 3 Toolkit March 2009 release, AutoCompleteBox is in System.Windows.Controls.Input. TreeView is in System.Windows.Controls. <i>These assemblies are part of the Silverlight 3 Beta SDK and DO NOT require installation of the Silverlight Toolkit.</i></p>
<p>The Silverlight 2 controls are compatible with Silverlight 3, so existing applications will continue to work &#8211; but we do highly recommend that you update to the appropriate Silverlight Toolkit for your target Silverlight version, since we  do add version-enhanced features, such as animation easing for the Silverlight Toolkit charts in the Silverlight 3 Beta.</p>
<p>More information about the assembly and namespace name changes is available in <a href="http://blogs.msdn.com/sburke/archive/2009/03/20/silverlight-toolkit-march-2009-release.aspx">this post by Shawn Burke</a>.</p>
<h3>What is installed with the Silverlight Toolkit now?</h3>
<p>You&#8217;ll find the same basics as before, plus some. You&#8217;ll find these in the &#8220;Microsoft Silverlight 3 Toolkit March 2009&#8243; (or similarly named folder for the Silverlight 2 version) folder in your Start Menu.<br />
<img alt="" src="http://media.jeff.wilcox.name/blog/mix09/StartMenu.png" title="Start Menu" class="alignnone" width="267" height="295" /></p>
<ul>
<li>New &#8220;Welcome&#8221; page with general information about the release, plus a link to the breaking changes and release notes for the release.</li>
<li>Links to the CodePlex site for the Toolkit, plus the Silverlight.net discussion forums</li>
<li>A link to the sample application for the Toolkit, served from the local system</li>
<li>Links to Zip files containing the control source code and/or the sample source code</li>
<li>The documentation for the Toolkit controls in CHM format. The documentation file no longer requires the &#8220;Unlock&#8221; workaround step on Windows Vista and Windows 7. Do note that the documentation for former Silverlight Toolkit controls that now appear in the Silverlight 3 SDK, such as AutoCompleteBox, are now located in the official Silverlight documentation. An <a href="http://blogs.msdn.com/silverlight_sdk/archive/2009/03/18/silverlight-3-beta-offline-msdn-docs-chm-is-available.aspx">offline download of the SDK documentation</a> is also available.</li>
</ul>
<h3>What rocked about the Zip?</h3>
<p>Well, in my mind, it was:</p>
<ul>
<li>Transparent experience</li>
<li>Nothing fancy</li>
<li>Lightweight. Nothing to install, so if you didn&#8217;t want it anymore, you could just delete the files, for instance.</li>
</ul>
<h3>What was so bad about the Zip?</h3>
<ul>
<li>No integration into Visual Studio or Expression Blend out-of-the-box, without doing some manual file copy or registry work</li>
<li>Confusing to users used to a setup experience</li>
<li>CHM documentation files downloaded in a Zip require &#8220;Unlocking&#8221; before they work. Until then, they appear broken.</li>
</ul>
<h3>Would you consider offering releases in a Zip file, optionally, still?</h3>
<p>We&#8217;re open to the idea. Especially now that there&#8217;s an Eclipse Silverlight development experience, we do need to be mindful of the need to use the releases on other platforms.</p>
<p>Since our packaging infrastructure was initially designed to output these nice .Zip files, it wouldn&#8217;t be too tough for us to get this going. We&#8217;ll see what the customer requests look like.</p>
<h3>How do I select whether I want to get the source code to the controls?</h3>
<p>There is an installation option for a feature called &#8220;Source code,&#8221; you can click on the box to the left of the item and remove the component if you would not like to install the source package.</p>
<p>If you do select this feature (per the default), a .Zip file is placed on the system that contains the source code. You can extract the zip file into a location of your selection to build or view the source.</p>
<p><img alt="Setup Options" src="http://media.jeff.wilcox.name/blog/mix09/SetupOptions.png" title="Setup Options" class="alignnone" width="509" height="398" /></p>
<p>As always, the source is also available on the <a href="http://silverlight.codeplex.com/">Silverlight Toolkit CodePlex site</a>.</p>
<h3>What about Microsoft Expression Blend integration?</h3>
<p>The Blend 3 MIX09 Preview release includes support for having the Silverlight Toolkit appear in the &#8220;Custom Controls&#8221; tab of the Asset Library. This is only available for Silverlight 3 Beta, not the Silverlight 2 / Expression Blend 2 product.</p>
<p><img alt="" src="http://media.jeff.wilcox.name/blog/mix09/Blend3Toolbox.png" title="Blend 3 Toolbox" class="alignnone" width="685" height="323" /></p>
<p>There is some really great design time support in this release. For instance, if you just drop a &#8220;Chart&#8221; control onto your Blend design canvas, you&#8217;re greeted with a chart that has simple design time data! It might look a little like one of those &#8220;the most bars anywhere&#8221; cell phone commercials, but it is very helpful for styling.</p>
<p><img alt="" src="http://media.jeff.wilcox.name/blog/mix09/ChartDesignTime.png" title="Chart design time" class="alignnone" width="685" height="347" /></p>
<h3>What powers the installer?</h3>
<p>We leveraged the open source <a href="http://wix.sourceforge.net/">Windows Installer XML (WiX) toolset</a>, an excellent and easy way to build Windows Installer packages. Kudos to Eric St. John, a Microsoft developer who contributes to WiX, for excellent advice, btw!</p>
<p><img alt="" src="http://media.jeff.wilcox.name/blog/mix09/SilverlightToolkitInstaller.png" title="Silverlight Toolkit Installer" class="alignnone" width="509" height="398" /></p>
<p>This was important to our small development team, since we wanted to spend time working on new features like <b>awesome design-time integration</b> and new controls like <b>accordion</b> instead of assigning a developer to the setup full-time.</p>
<p>Hope you like the new experience. Let us know!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2009/03/silverlight-toolkit-installer/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Sharing skills and code with Silverlight and WPF: MIX ‘09 session video and deck</title>
		<link>http://www.jeff.wilcox.name/2009/03/mymix09-session/</link>
		<comments>http://www.jeff.wilcox.name/2009/03/mymix09-session/#comments</comments>
		<pubDate>Mon, 23 Mar 2009 01:04:38 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[MIX]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Silverlight Toolkit]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/?p=321</guid>
		<description><![CDATA[Check out my Sharing Skills and Code with Silverlight and WPF talk from MIX '09. Yeah, what happens in Vegas doesn't always stay there!]]></description>
			<content:encoded><![CDATA[<p>What happens in Vegas doesn’t always stay there. On Friday, I gave a talk at the MIX ‘09 conference about sharing skills and code between Silverlight and Windows Presentation Foundation (WPF).</p>
<p>One of the most important messages that I had during the talk is the flexibility that the Microsoft Client Platform enables: you can be a Rich Internet App developer today, and build an enterprise Line of Business app tomorrow, since so many of the concepts, APIs, and ideas are shared between these frameworks.</p>
<p><a href="http://media.jeff.wilcox.name/blog/mix09/MIX09_Wilcox_T87F.pptx"><strong>Download</strong> session deck</a> (4.7 MB PowerPoint 2007)<br />
<strong>View</strong> the session on the VisitMix.com site: <a title="http://videos.visitmix.com/MIX09/T87F" href="http://videos.visitmix.com/MIX09/T87F">http://videos.visitmix.com/MIX09/T87F</a></p>
<p><a href="http://videos.visitmix.com/MIX09/T87F"><img src="http://media.jeff.wilcox.name/blog/mix09/SharingSkillsThumbnail.jpg" width="685" height="385" /></a></p>
<p>Check out other awesome <a href="https://content.visitmix.com/2009/sessions/?categories=Silverlight">Silverlight</a>, <a href="https://content.visitmix.com/2009/sessions/?categories=WPF">WPF</a>, and <a href="https://content.visitmix.com/2009/sessions/?categories=Expression">Expression</a>. Hope this helps. Let me know what you think.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2009/03/mymix09-session/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Silverlight MsBuild tricks &#8211; video</title>
		<link>http://www.jeff.wilcox.name/2009/01/silverlight-msbuild-tricks-video/</link>
		<comments>http://www.jeff.wilcox.name/2009/01/silverlight-msbuild-tricks-video/#comments</comments>
		<pubDate>Tue, 27 Jan 2009 09:23:05 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Silverlight Toolkit]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/?p=262</guid>
		<description><![CDATA[Build Silverlight apps and libraries without having to install the SDK in your build lab, following this video. A re-post.]]></description>
			<content:encoded><![CDATA[<p>A re-post, I had to switch video streaming services&#8230;</p>
<p>Part of the Silverlight SDK can be copied into your source tree to build projects on machines without requiring Silverlight or the SDK. This is great for continuous integration environments and build labs where having an independent build is key.</p>
<p>I’ve compiled a quick screencast (6:07) that demonstrates preparing a directory to check in the proper SDK components, updating a C# project file, and then proving the result by uninstalling the Silverlight SDK.</p>
<h3>Walkthrough video</h3>
<p><object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="685" height="385"><param name="source" value="http://media.jeff.wilcox.name/video/VideoPlayerM.xap" /><param name="background" value="white" /><param name="initParams" value="m=http://media.jeff.wilcox.name/video/SilverlightMsBuild.wmv" /><param name="enableHtmlAccess" value="true" /><param name="minruntimeversion" value="2.0.31005.0" />Your machine either needs Silverlight, or your feed reader does not permit embedded Silverlight content.  Please click-through to the post to view the video.<br />		<a href="http://go.microsoft.com/fwlink/?LinkId=124807" style="text-decoration: none;"><img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none" /></a></object><br /><em>6:07, 60MB, HD 720p (<a href="http://media.jeff.wilcox.name/video/SilverlightMsBuild.wmv">Download WMV</a>)</em></p>
<h3>Properties respected by the Silverlight MsBuild targets</h3>
<p>The Silverlight build system respects these build properties that can override the standard SDK locations:</p>
<table border="0" cellspacing="0" cellpadding="2" width="670">
<tbody>
<tr>
<td valign="top" width="335"><strong>Property</strong></td>
<td valign="top" width="335"><strong>Standard value</strong></td>
</tr>
<tr>
<td valign="top" width="335">TargetFrameworkDirectory</td>
<td valign="top" width="335">[Silverlight SDK]\Reference Assemblies\</td>
</tr>
<tr>
<td valign="top" width="335">TargetFrameworkSDKDirectory</td>
<td valign="top" width="335">[Silverlight SDK]\Libraries\Client\</td>
</tr>
<tr>
<td valign="top" width="335">SilverlightRuntimeVersion</td>
<td valign="top" width="335">2.0.31005.0</td>
</tr>
</tbody>
</table>
<p>The runtime version is used when generating the application manifest and HTML test page.</p>
<h3>Preparing your source enlistment</h3>
<p>On the Toolkit, we have a directory of external tools and engineering resources. One of these contains the Silverlight SDK’s assemblies, libraries, and build scripts, as shown in the video.</p>
<ul>
<li>Create a directory to store the MsBuild assets for Silverlight, and copy in the files from %programfiles%MSBuild\Microsoft\Silverlight\v2.0. </li>
<li>Copy the “Reference Assemblies” directory from %programfiles%\Microsoft SDKs\Silverlight\v2.0\ into the tools directory. </li>
<li>Copy the “Libraries” directory from %programfiles%\Microsoft SDKs\Silverlight\v2.0\ into the directory. </li>
</ul>
<p>You can then use relative paths in your projects or custom build targets to get things rolling.</p>
<h3>Updating projects</h3>
<p>Depending on your build system, you’ll want to update your custom targets or project files. In the video I’m simply modifying the .csproj file to add the necessary properties and modify the import statement.</p>
<h4>Add properties</h4>
<p>I’d scroll through the .csproj and insert the new properties right before the Import statement that pulls in the Silverlight build targets. Here are the properties defined; the SilverlightBuildResources property is my own made-up name that I’m using to store the relative path to the new building bits:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:1d721b58-bf73-4637-8135-1f7136b44119" class="wlWriterEditableSmartContent">
<pre class="xml" name="code">  &lt;PropertyGroup&gt;
    &lt;SilverlightBuildResources&gt;..\Build\&lt;/SilverlightBuildResources&gt;
    &lt;TargetFrameworkDirectory&gt;$(SilverlightBuildResources)Reference Assemblies\&lt;/TargetFrameworkDirectory&gt;
    &lt;TargetFrameworkSDKDirectory&gt;$(SilverlightBuildResources)Libraries\Client\&lt;/TargetFrameworkSDKDirectory&gt;
    &lt;SilverlightRuntimeVersion&gt;2.0.31005.0&lt;/SilverlightRuntimeVersion&gt;
  &lt;/PropertyGroup&gt;</pre>
</div>
<h4>Import the new Silverlight build target</h4>
<p>Silverlight projects import the Silverlight MsBuild targets from the central MsBuild extensions directory, so we just need to update the import to instead come from the source tree:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:21a1f393-b551-49ae-9ae0-e960ab17809f" class="wlWriterEditableSmartContent">
<pre class="xml" name="code">  &lt;Import Project="$(SilverlightBuildResources)Microsoft.Silverlight.CSharp.targets" /&gt;
  &lt;!--
	This is the default provided for new Silverlight projects:
  &lt;Import Project="$(MSBuildExtensionsPath)\Microsoft\Silverlight\v2.0\Microsoft.Silverlight.CSharp.targets" /&gt;
  --&gt;</pre>
</div>
<h4>Build</h4>
<p>You’re all set! And, for future reference: you can use this to build applications targeting multiple versions of Silverlight from the same tree. But more on that later.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2009/01/silverlight-msbuild-tricks-video/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
<enclosure url="http://media.jeff.wilcox.name/video/SilverlightMsBuild.wmv" length="60999705" type="video/x-ms-wmv" />
		</item>
		<item>
		<title>Building Silverlight code on machines without the SDK (guide &amp; video)</title>
		<link>http://www.jeff.wilcox.name/2009/01/independent-silverlight-msbuild/</link>
		<comments>http://www.jeff.wilcox.name/2009/01/independent-silverlight-msbuild/#comments</comments>
		<pubDate>Sun, 25 Jan 2009 08:09:23 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2009/01/independent-silverlight-msbuild/</guid>
		<description><![CDATA[A guide and walkthrough video showing how to setup a source enlistment to build Silverlight apps on machines without Silverlight or the SDK installed.]]></description>
			<content:encoded><![CDATA[<p>Part of the Silverlight SDK can be copied into your source tree to build projects on machines without requiring Silverlight or the SDK. This is great for continuous integration environments and build labs where having an independent build is key.</p>
<p>I’ve compiled a quick screencast (6:07) that demonstrates preparing a directory to check in the proper SDK components, updating a C# project file, and then proving the result by uninstalling the Silverlight SDK.</p>
<h3>Walkthrough video</h3>
<p><object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="685" height="385"><param name="source" value="http://media.jeff.wilcox.name/video/VideoPlayerM.xap" /><param name="background" value="white" /><param name="initParams" value="m=http://silverlight.services.live.com/56373/SilverlightIndependentBuild/video.wmv" /><param name="enableHtmlAccess" value="true" /><param name="minruntimeversion" value="2.0.31005.0" />Your machine either needs Silverlight, or your feed reader does not permit embedded Silverlight content.  Please click-through to the post to view the video.<br />		<a href="http://go.microsoft.com/fwlink/?LinkId=124807" style="text-decoration: none;"><img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none" /></a></object><br /><em>6:07, 60MB, HD 720p (<a href="http://silverlight.services.live.com/56373/SilverlightIndependentBuild/video.wmv">Download WMV</a>)</em></p>
<h3>Properties respected by the Silverlight MsBuild targets</h3>
<p>The Silverlight build system respects these build properties that can override the standard SDK locations:</p>
<table border="0" cellspacing="0" cellpadding="2" width="670">
<tbody>
<tr>
<td valign="top" width="335"><strong>Property</strong></td>
<td valign="top" width="335"><strong>Standard value</strong></td>
</tr>
<tr>
<td valign="top" width="335">TargetFrameworkDirectory</td>
<td valign="top" width="335">[Silverlight SDK]\Reference Assemblies\</td>
</tr>
<tr>
<td valign="top" width="335">TargetFrameworkSDKDirectory</td>
<td valign="top" width="335">[Silverlight SDK]\Libraries\Client\</td>
</tr>
<tr>
<td valign="top" width="335">SilverlightRuntimeVersion</td>
<td valign="top" width="335">2.0.31005.0</td>
</tr>
</tbody>
</table>
<p>The runtime version is used when generating the application manifest and HTML test page.</p>
<h3>Preparing your source enlistment</h3>
<p>On the Toolkit, we have a directory of external tools and engineering resources. One of these contains the Silverlight SDK’s assemblies, libraries, and build scripts, as shown in the video.</p>
<ul>
<li>Create a directory to store the MsBuild assets for Silverlight, and copy in the files from %programfiles%MSBuild\Microsoft\Silverlight\v2.0. </li>
<li>Copy the “Reference Assemblies” directory from %programfiles%\Microsoft SDKs\Silverlight\v2.0\ into the tools directory. </li>
<li>Copy the “Libraries” directory from %programfiles%\Microsoft SDKs\Silverlight\v2.0\ into the directory. </li>
</ul>
<p>You can then use relative paths in your projects or custom build targets to get things rolling.</p>
<h3>Updating projects</h3>
<p>Depending on your build system, you’ll want to update your custom targets or project files. In the video I’m simply modifying the .csproj file to add the necessary properties and modify the import statement.</p>
<h4>Add properties</h4>
<p>I’d scroll through the .csproj and insert the new properties right before the Import statement that pulls in the Silverlight build targets. Here are the properties defined; the SilverlightBuildResources property is my own made-up name that I’m using to store the relative path to the new building bits:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:1d721b58-bf73-4637-8135-1f7136b44119" class="wlWriterEditableSmartContent">
<pre class="xml" name="code">  &lt;PropertyGroup&gt;
    &lt;SilverlightBuildResources&gt;..\Build\&lt;/SilverlightBuildResources&gt;
    &lt;TargetFrameworkDirectory&gt;$(SilverlightBuildResources)Reference Assemblies\&lt;/TargetFrameworkDirectory&gt;
    &lt;TargetFrameworkSDKDirectory&gt;$(SilverlightBuildResources)Libraries\Client\&lt;/TargetFrameworkSDKDirectory&gt;
    &lt;SilverlightRuntimeVersion&gt;2.0.31005.0&lt;/SilverlightRuntimeVersion&gt;
  &lt;/PropertyGroup&gt;</pre>
</div>
<h4>Import the new Silverlight build target</h4>
<p>Silverlight projects import the Silverlight MsBuild targets from the central MsBuild extensions directory, so we just need to update the import to instead come from the source tree:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:21a1f393-b551-49ae-9ae0-e960ab17809f" class="wlWriterEditableSmartContent">
<pre class="xml" name="code">  &lt;Import Project="$(SilverlightBuildResources)Microsoft.Silverlight.CSharp.targets" /&gt;
  &lt;!--
	This is the default provided for new Silverlight projects:
  &lt;Import Project="$(MSBuildExtensionsPath)\Microsoft\Silverlight\v2.0\Microsoft.Silverlight.CSharp.targets" /&gt;
  --&gt;</pre>
</div>
<h4>Build</h4>
<p>You’re all set! And, for future reference: you can use this to build applications targeting multiple versions of Silverlight from the same tree. But more on that later.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2009/01/independent-silverlight-msbuild/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://silverlight.services.live.com/56373/SilverlightIndependentBuild/video.wmv" length="60999705" type="audio/x-ms-wmv" />
		</item>
		<item>
		<title>Help us improve the Silverlight Toolkit CodePlex site</title>
		<link>http://www.jeff.wilcox.name/2008/12/codeplex-silverlight-hosting/</link>
		<comments>http://www.jeff.wilcox.name/2008/12/codeplex-silverlight-hosting/#comments</comments>
		<pubDate>Tue, 16 Dec 2008 21:38:41 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Silverlight Toolkit]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2008/12/codeplex-silverlight-hosting/</guid>
		<description><![CDATA[Hi, it&#8217;s the giving time of the year&#8230; One thing we would love to do on the Silverlight Toolkit is embed Silverlight content in our CodePlex site, to help everyone better interact with and understand the capabilities of Silverlight and controls. It&#8217;d be nice for us to offer samples, control examples, and other Silverlight content [...]]]></description>
			<content:encoded><![CDATA[<p>Hi, it&#8217;s the giving time of the year&#8230; One thing we would love to do on the <a href="http://www.codeplex.com/Silverlight/">Silverlight Toolkit</a> is <a href="http://www.codeplex.com/CodePlex/WorkItem/View.aspx?WorkItemId=10303">embed Silverlight content</a> in our CodePlex site, to help everyone better interact with and understand the capabilities of Silverlight and controls.</p>
<p>It&#8217;d be nice for us to offer samples, control examples, and other Silverlight content on the CodePlex site. Does that mean embedded Silverlight &lt;object /&gt; tags or iframes? Not sure, but it would be nice to have some option here.</p>
<p>I think this would be a nice feature for many more projects than just ours.</p>
<p>One of the fun things about CodePlex is that it is all about the entire community, and we (&quot;Microsoft&quot;) don&#8217;t hold any special strings here. So, I&#8217;m asking for your assistance this holiday season!</p>
<p><strong>If you&#8217;re a CodePlex user, it would rock if you&#8217;d just spend a minute and vote for the &#8216;Silverlight hosting&#8217; feature request on the site at </strong><a title="http://www.codeplex.com/CodePlex/WorkItem/View.aspx?WorkItemId=10303" href="http://www.codeplex.com/CodePlex/WorkItem/View.aspx?WorkItemId=10303"><strong>http://www.codeplex.com/CodePlex/WorkItem/View.aspx?WorkItemId=10303</strong></a><strong>.</strong></p>
<p>Thanks for your assistance, and happy holidays,   <br />- Jeff</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2008/12/codeplex-silverlight-hosting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
