<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Visual Studio</title>
        <link>http://www.rickgaribay.net/category/9.aspx</link>
        <description>Visual Studio</description>
        <language>en-US</language>
        <copyright>Rick G. Garibay</copyright>
        <managingEditor>rick@rickgaribay.net</managingEditor>
        <generator>Subtext Version 1.9.5.176</generator>
        <item>
            <title>Visual Studio 2010 Ultimate Event Content Download</title>
            <link>http://rickgaribay.net/archive/2010/03/13/visual-studio-2010-ultimate-event-content-download.aspx</link>
            <description>&lt;p&gt;Thanks to all who came out to the event in Phoenix, Salt Lake City &amp;amp; Las Vegas. We had a great turnout at all events with great questions and discussions.&lt;/p&gt;
&lt;p&gt;Remember that the conversation continues on &lt;a target="_blank" href="http://twitter.com/#search?q=%23vs2010phx"&gt;twitter&lt;/a&gt;. &lt;a target="_blank" href="http://twitter.com/#search?q=%23vs2010slc"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN-LEFT: 0px; BORDER-LEFT-WIDTH: 0px; MARGIN-RIGHT: 0px" title="image" border="0" alt="image" align="right" width="240" height="162" src="http://rickgaribay.net/Images/CustomContent/VisualStudio2010UltimateEventSaltLakeCit_8195/image_4.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;If you attended the event and have a question or comment for any of the presenters, use the following hashtags: &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Phoenix: #vs2010phx &lt;/li&gt;
    &lt;li&gt;Salt Lake City: #vs2010slc &lt;/li&gt;
    &lt;li&gt;Las Vegas: #vs2010vegas&lt;/li&gt;
&lt;/ul&gt;
&lt;p align="center"&gt;Below are the presentations from all four sessions in each city:   &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table border="0" cellspacing="0" cellpadding="2" width="912"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="190"&gt;Phoenix&lt;/td&gt;
            &lt;td valign="top" width="421"&gt;A Lap Around Visual Studio 2010&lt;/td&gt;
            &lt;td valign="top" width="473"&gt;Rick G. Garibay&lt;/td&gt;
            &lt;td valign="top" width="146"&gt;&lt;iframe style="PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fcfcfc; PADDING-LEFT: 0px; WIDTH: 250px; PADDING-RIGHT: 0px; HEIGHT: 59px; PADDING-TOP: 0px" title="Preview" marginheight="0" src="http://cid-df930ee6f91132fd.skydrive.live.com/embedrowdetail.aspx/Public/Talks/VS%202010%20Ultimate/Lap%20Around%20VS%202010%20Garibay.pptx" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="190"&gt;Phoenix&lt;/td&gt;
            &lt;td valign="top" width="421"&gt;Agile Management with TFS&lt;/td&gt;
            &lt;td valign="top" width="473"&gt;&lt;a target="_blank" href="http://blogs.neudesic.com/blogs/brendon_birdoes/default.aspx"&gt;Brendon Birdoes&lt;/a&gt;&lt;/td&gt;
            &lt;td valign="top" width="146"&gt;&lt;iframe style="PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fcfcfc; PADDING-LEFT: 0px; WIDTH: 250px; PADDING-RIGHT: 0px; HEIGHT: 59px; PADDING-TOP: 0px" title="Preview" marginheight="0" src="http://cid-df930ee6f91132fd.skydrive.live.com/embedrowdetail.aspx/Public/Talks/VS%202010%20Ultimate/TFS%202010%20Agile%20Management%20Brendon.pptx" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;*&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="190"&gt;Phoenix&lt;/td&gt;
            &lt;td valign="top" width="421"&gt;No More "No Repro"&lt;/td&gt;
            &lt;td valign="top" width="473"&gt;&lt;a target="_blank" href="http://blogs.neudesic.com/blogs/brendon_birdoes/default.aspx"&gt;Brendon Birdoes&lt;/a&gt;&lt;/td&gt;
            &lt;td valign="top" width="146"&gt;&lt;iframe style="PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fcfcfc; PADDING-LEFT: 0px; WIDTH: 250px; PADDING-RIGHT: 0px; HEIGHT: 59px; PADDING-TOP: 0px" title="Preview" marginheight="0" src="http://cid-df930ee6f91132fd.skydrive.live.com/embedrowdetail.aspx/Public/Talks/VS%202010%20Ultimate/No%20More%20No%20Repro%20Brendon.pptx" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;*&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="190"&gt;Phoenix&lt;/td&gt;
            &lt;td valign="top" width="421"&gt;Architecture for Everyone&lt;/td&gt;
            &lt;td valign="top" width="473"&gt;Rick G. Garibay&lt;/td&gt;
            &lt;td valign="top" width="146"&gt;&lt;iframe style="PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fcfcfc; PADDING-LEFT: 0px; WIDTH: 250px; PADDING-RIGHT: 0px; HEIGHT: 59px; PADDING-TOP: 0px" title="Preview" marginheight="0" src="http://cid-df930ee6f91132fd.skydrive.live.com/embedrowdetail.aspx/Public/Talks/VS%202010%20Ultimate/Architecture%20for%20Everyone%20Garibay.pptx" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="190"&gt;Salt Lake City&lt;/td&gt;
            &lt;td valign="top" width="421"&gt;A Lap Around Visual Studio 2010&lt;/td&gt;
            &lt;td valign="top" width="473"&gt;Rick G. Garibay&lt;/td&gt;
            &lt;td valign="top" width="146"&gt;&lt;iframe style="PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fcfcfc; PADDING-LEFT: 0px; WIDTH: 250px; PADDING-RIGHT: 0px; HEIGHT: 59px; PADDING-TOP: 0px" title="Preview" marginheight="0" src="http://cid-df930ee6f91132fd.skydrive.live.com/embedrowdetail.aspx/Public/Talks/VS%202010%20Ultimate/Lap%20Around%20VS%202010%20Garibay.pptx" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="190"&gt;Salt Lake City&lt;/td&gt;
            &lt;td valign="top" width="421"&gt;Agile Management with TFS&lt;/td&gt;
            &lt;td valign="top" width="473"&gt;Jeff Leite&lt;/td&gt;
            &lt;td valign="top" width="146"&gt;*&lt;iframe style="PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fcfcfc; PADDING-LEFT: 0px; WIDTH: 250px; PADDING-RIGHT: 0px; HEIGHT: 59px; PADDING-TOP: 0px" title="Preview" marginheight="0" src="http://cid-df930ee6f91132fd.skydrive.live.com/embedrowdetail.aspx/Public/Talks/VS%202010%20Ultimate/TFS%202010%20Agile%20Project%20Management.pptx" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="190"&gt;Salt Lake City&lt;/td&gt;
            &lt;td valign="top" width="421"&gt;No More "No Repro"&lt;/td&gt;
            &lt;td valign="top" width="473"&gt;Jeff Leite&lt;/td&gt;
            &lt;td valign="top" width="146"&gt;*&lt;iframe style="PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fcfcfc; PADDING-LEFT: 0px; WIDTH: 250px; PADDING-RIGHT: 0px; HEIGHT: 59px; PADDING-TOP: 0px" title="Preview" marginheight="0" src="http://cid-df930ee6f91132fd.skydrive.live.com/embedrowdetail.aspx/Public/Talks/VS%202010%20Ultimate/No%20More%20No%20Repro.pptx" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="190"&gt;Salt Lake City&lt;/td&gt;
            &lt;td valign="top" width="421"&gt;Architecture for Everyone&lt;/td&gt;
            &lt;td valign="top" width="473"&gt;Rick G. Garibay&lt;/td&gt;
            &lt;td valign="top" width="146"&gt;&lt;iframe style="PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fcfcfc; PADDING-LEFT: 0px; WIDTH: 250px; PADDING-RIGHT: 0px; HEIGHT: 59px; PADDING-TOP: 0px" title="Preview" marginheight="0" src="http://cid-df930ee6f91132fd.skydrive.live.com/embedrowdetail.aspx/Public/Talks/VS%202010%20Ultimate/Architecture%20for%20Everyone%20Garibay.pptx" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="190"&gt;Las Vegas&lt;/td&gt;
            &lt;td valign="top" width="421"&gt;A Lap Around Visual Studio 2010&lt;/td&gt;
            &lt;td valign="top" width="473"&gt;Rick G. Garibay&lt;/td&gt;
            &lt;td valign="top" width="146"&gt;&lt;iframe style="PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fcfcfc; PADDING-LEFT: 0px; WIDTH: 250px; PADDING-RIGHT: 0px; HEIGHT: 59px; PADDING-TOP: 0px" title="Preview" marginheight="0" src="http://cid-df930ee6f91132fd.skydrive.live.com/embedrowdetail.aspx/Public/Talks/VS%202010%20Ultimate/Lap%20Around%20VS%202010%20Garibay.pptx" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="190"&gt;Las Vegas&lt;/td&gt;
            &lt;td valign="top" width="421"&gt;Agile Management with TFS&lt;/td&gt;
            &lt;td valign="top" width="473"&gt;Mickey Williams&lt;/td&gt;
            &lt;td valign="top" width="146"&gt;*&lt;iframe style="PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fcfcfc; PADDING-LEFT: 0px; WIDTH: 250px; PADDING-RIGHT: 0px; HEIGHT: 59px; PADDING-TOP: 0px" title="Preview" marginheight="0" src="http://cid-df930ee6f91132fd.skydrive.live.com/embedrowdetail.aspx/Public/Talks/VS%202010%20Ultimate/TFS%202010%20Agile%20Project%20Management.pptx" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="190"&gt;Las Vegas&lt;/td&gt;
            &lt;td valign="top" width="421"&gt;No More "No Repro"&lt;/td&gt;
            &lt;td valign="top" width="473"&gt;Mickey Williams&lt;/td&gt;
            &lt;td valign="top" width="146"&gt;*&lt;iframe style="PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fcfcfc; PADDING-LEFT: 0px; WIDTH: 250px; PADDING-RIGHT: 0px; HEIGHT: 59px; PADDING-TOP: 0px" title="Preview" marginheight="0" src="http://cid-df930ee6f91132fd.skydrive.live.com/embedrowdetail.aspx/Public/Talks/VS%202010%20Ultimate/No%20More%20No%20Repro.pptx" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="190"&gt;Las Vegas&lt;/td&gt;
            &lt;td valign="top" width="421"&gt;Architecture for Everyone&lt;/td&gt;
            &lt;td valign="top" width="473"&gt;Rick G. Garibay&lt;/td&gt;
            &lt;td valign="top" width="146"&gt;&lt;iframe style="PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fcfcfc; PADDING-LEFT: 0px; WIDTH: 250px; PADDING-RIGHT: 0px; HEIGHT: 59px; PADDING-TOP: 0px" title="Preview" marginheight="0" src="http://cid-df930ee6f91132fd.skydrive.live.com/embedrowdetail.aspx/Public/Talks/VS%202010%20Ultimate/Architecture%20for%20Everyone%20Garibay.pptx" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;* Note that content for all venues is very similar but may vary from presenter to presenter. &lt;strike&gt;All content for both venues will be available soon so please check back shortly.&lt;/strike&gt;&lt;/p&gt;&lt;img src="http://rickgaribay.net/aggbug/275.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Rick G. Garibay</dc:creator>
            <guid>http://rickgaribay.net/archive/2010/03/13/visual-studio-2010-ultimate-event-content-download.aspx</guid>
            <pubDate>Sun, 14 Mar 2010 01:45:01 GMT</pubDate>
            <comments>http://rickgaribay.net/archive/2010/03/13/visual-studio-2010-ultimate-event-content-download.aspx#feedback</comments>
            <wfw:commentRss>http://rickgaribay.net/comments/commentRss/275.aspx</wfw:commentRss>
            <trackback:ping>http://rickgaribay.net/services/trackbacks/275.aspx</trackback:ping>
        </item>
        <item>
            <title>Take Me with You! Ensuring Team Build Brings Dependencies Along for the Ride</title>
            <link>http://rickgaribay.net/archive/2009/08/27/take-me-with-you-ensuring-team-build-brings-dependencies-along.aspx</link>
            <description>&lt;p&gt;As part of an automated build at a client, we currently have over 150 unit tests that run as part of each automated build. Some of the tests are also integration tests which serve to automatically smoke test the freshly compiled application code.&lt;/p&gt;
&lt;p&gt;One of our apps makes use of an XML file that allows the ability to dynamically change behavior of a component without requiring an app domain recycle. A static method uses a FileWatcher to detect a change and applies the configuration changes at runtime accordingly. But I digress…&lt;/p&gt;
&lt;p&gt;When Team Build executes your unit tests, it creates a special directory on the build agent called TestResults.The TestResults folder includes a .trx file that captures the build results in XML along with a folder for each build/run which isolates all required test assemblies and other dependant assemblies for execution. The App.config file will automatically be copied over and renamed to AssemblyName.dll.config. This is fine and dandy, but what about other dependencies like the XML file?&lt;/p&gt;
&lt;p&gt;The answer is different depending on whether you are running your tests locally from Visual Studio or if Team Build is running your tests as part of an automated build, but you must be familiar with both techniques to accomplish a consistent and repeatable means for taking the XML file along for the ride under both scenarios which you will undoubtedly need to understand because chances are you are (or at least should be) running all unit tests locally before checking into source control, right? Right?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Local Dependencies&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When running and debugging unit tests using Visual Studio and a just-in-time test runners like TestDriven.NET that have an external dependency such as an XML file, you must ensure the dependency is in the binary root relative to the executing assembly. This is also true when using other unit testing frameworks like NUnit, which I talk about &lt;a href="http://rickgaribay.net/archive/2007/03/21/Making-Configuration-Files-Available-to-NUnit.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Right click the resource in the test project, click properties and set “Copy to Output Directory” to “Copy Always”:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://rickgaribay.net/Images/CustomContent/TakeMewithYouEnsuringMSBuildBringsDepend_E003/image.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="image" border="0" alt="image" width="240" height="94" src="http://rickgaribay.net/Images/CustomContent/TakeMewithYouEnsuringMSBuildBringsDepend_E003/image_thumb.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;This will ensure that the dependency is copied to the bin directory just as other dependencies like DLLs and App.Config/Web.Config are automatically.&lt;/p&gt;
&lt;p&gt;At this point, the XML file can be referenced in the root of the bin which is relative to the executing assembly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Team Build Dependencies&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As I mentioned earlier, when Team Build executes unit tests, it moves all required assemblies and assembly dependencies to a TestResults folder. While this includes App.config and Web.config files, other dependencies are not copied regardless of whether you specify “Copy to Output Directory” to “Copy Always” as shown above. This makes sense, because when Team Build runs, the unit test project is no longer located with the rest of the source- instead it is copied to the TestResults folder and prepped for execution.&lt;/p&gt;
&lt;p&gt;There are two ways to address this.&lt;/p&gt;
&lt;p&gt;The first option is to mark each test method with a &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting.deploymentitemattribute(VS.80).aspx"&gt;DeploymentItem&lt;/a&gt; attribute. This is documented &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting.deploymentitemattribute(VS.80).aspx"&gt;here&lt;/a&gt;, so I won’t go into much into it. The basic usage is to mark you test method with the DeploymentItem attribute, providing a parameter with the path and filename of the dependency:&lt;/p&gt;
&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;style type="text/css"&gt;&lt;![CDATA[


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}

.csharpcode pre { margin: 0em; }

.csharpcode .rem { color: #008000; }

.csharpcode .kwrd { color: #0000ff; }

.csharpcode .str { color: #006080; }

.csharpcode .op { color: #0000c0; }

.csharpcode .preproc { color: #cc6633; }

.csharpcode .asp { background-color: #ffff00; }

.csharpcode .html { color: #800000; }

.csharpcode .attr { color: #ff0000; }

.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}

.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;[TestMethod]&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        [DeploymentItem(&lt;span class="str"&gt;"../../MyExternalDependency.xml"&lt;/span&gt;)]&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; FooShouldReturnBar()&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        {  &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;           &lt;span class="rem"&gt;//...&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        }&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;When the assembly that includes the test class loads, the attribute is reflected and the dependent file is copied to the TestResults folder. You can also add the attribute at the test class level and it will have the same effect.&lt;/p&gt;
&lt;p&gt;The draw back of this approach is that it requires that you apply this attribute to the test class and it is really quite noisy because it is only used when running tests with Team Build or the Test List Editor.&lt;/p&gt;
&lt;p&gt;To keep things cleaner, I prefer to make these dependencies configuration driven. So, similarly to setting the “Copy to Output Directory” to “Copy Always” for just-in-time testing, you can determine dependencies that should be copied to the TestResults folder using a global configuration setting that will apply to all tests: Test Run Configuration.&lt;/p&gt;
&lt;p&gt;Go to Test, “Edit Test Run Configuration” and click on the configuration file as shown below:&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://rickgaribay.net/Images/CustomContent/TakeMewithYouEnsuringMSBuildBringsDepend_E003/image_3.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="image" border="0" alt="image" width="240" height="113" src="http://rickgaribay.net/Images/CustomContent/TakeMewithYouEnsuringMSBuildBringsDepend_E003/image_thumb_3.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Now, click on the Deployment option on the left, ensure “Enable Deployment” is checked, and either click “Add File” to add a specific file, or “Add Directory” to include the entire contents of a directory:&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://rickgaribay.net/Images/CustomContent/TakeMewithYouEnsuringMSBuildBringsDepend_E003/image_4.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="image" border="0" alt="image" width="240" height="170" src="http://rickgaribay.net/Images/CustomContent/TakeMewithYouEnsuringMSBuildBringsDepend_E003/image_thumb_4.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;The localtestrun.testrunconfig file will be configured with the dependencies specified and this file will be consulted just prior to kicking off a test run to ensure that all dependencies are copied to the TestResults folder.&lt;/p&gt;
&lt;p&gt;That’s really all there is to it. Thanks to &lt;a target="_blank" href="http://blogs.neudesic.com/blogs/brendon_birdoes/default.aspx"&gt;Brendon Birdoes&lt;/a&gt; for turning &lt;a target="_blank" href="http://www.rickgaribay.net/contact.aspx"&gt;me&lt;/a&gt; on to the DeploymentItem attribute which I was not familiar with.&lt;/p&gt;&lt;img src="http://rickgaribay.net/aggbug/258.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Rick G. Garibay</dc:creator>
            <guid>http://rickgaribay.net/archive/2009/08/27/take-me-with-you-ensuring-team-build-brings-dependencies-along.aspx</guid>
            <pubDate>Fri, 28 Aug 2009 03:05:14 GMT</pubDate>
            <comments>http://rickgaribay.net/archive/2009/08/27/take-me-with-you-ensuring-team-build-brings-dependencies-along.aspx#feedback</comments>
            <wfw:commentRss>http://rickgaribay.net/comments/commentRss/258.aspx</wfw:commentRss>
            <trackback:ping>http://rickgaribay.net/services/trackbacks/258.aspx</trackback:ping>
        </item>
        <item>
            <title>Unit Testing Microsoft Sync Framework 2.0 &amp;amp; WCF</title>
            <link>http://rickgaribay.net/archive/2009/08/17/unit-testing-microsoft-sync-framework-amp-wcf.aspx</link>
            <description>&lt;p&gt;I just wrapped up some work for a client that entails exposing the Sync Framework 2.0 via WCF.&lt;/p&gt;  &lt;p&gt;We are using Sync Framework 2.0 CTP 2 to support occasionally connected client scenarios between applications deployed out in the edge and core services hosted in the client’s cloud. I am using WCF to wrap the Sync Fx APIs to support interoperable synchronization support via SOAP 1.1. This way, any client can on-ramp with the core services and essentially become self-provisioned by initiating and initial synchronization to download required data necessary to come on line. In addition, when events happen out on the edge, the client can synchronize each event back to the cloud using an upload semantic. &lt;/p&gt;  &lt;p&gt;There are many benefits to using the Sync Fx as opposed to rolling your own, and one benefit is the extremely simple provider model which makes basic synchronization scenarios a breeze, particularly between relational replicas such as SQL Server. Note however, that Sync Fx is fully extensible and capable of synchronizing any two memory streams. &lt;/p&gt;  &lt;p&gt;So, the basic idea is that given a SyncProvider for the local and remote replica, any two data sources/applications can be synchronized:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://rickgaribay.net/Images/CustomContent/UnitTestingMicrosoftSyncFrameworkWCF_13226/image_5.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://rickgaribay.net/Images/CustomContent/UnitTestingMicrosoftSyncFrameworkWCF_13226/image_thumb_5.png" width="640" height="394" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In my scenario, the local client out in the edge utilizes the out of the box SqlSyncProvider. The goal was to expose the cloud over HTTP using SOAP, which required some understanding of the underlying APIs. From there, it was simply a matter of wrapping the Sync Fx APIs in a service layer, so that I would arrive at something like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://rickgaribay.net/Images/CustomContent/UnitTestingMicrosoftSyncFrameworkWCF_13226/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://rickgaribay.net/Images/CustomContent/UnitTestingMicrosoftSyncFrameworkWCF_13226/image_thumb_6.png" width="640" height="371" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;By providing a proxy to the orchestrator, I was able to implement a proxy which is polymorphic with RelationalSyncProvider. &lt;/p&gt;  &lt;p&gt;Immediately it should be obvious that this is not your typical integration scenario. Essentially, I am extending a framework by exposing it over WCF so that any orchestrator can leverage the WebSyncProvider. &lt;/p&gt;  &lt;p&gt;I started the implementation by writing some tests. It was simple enough to extract an interface for the RelationalSyncProvider type because it is abstract. I used RhinoMocks to stub it, which worked great but where I ran into problems was in recording expectations on the return types because there are not a lot of test seams in the framework. With the absence of setters on main properties that I needed to assert, I needed a way to reach into the framework types and manipulate them so that I could develop the CUT  (in this case the ServiceContract implementation) independent of the framework.&lt;a href="http://rickgaribay.net/Images/CustomContent/UnitTestingMicrosoftSyncFrameworkWCF_13226/clip_image002.jpg"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002" border="0" alt="clip_image002" align="right" src="http://rickgaribay.net/Images/CustomContent/UnitTestingMicrosoftSyncFrameworkWCF_13226/clip_image002_thumb.jpg" width="240" height="227" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb514191.aspx" target="_blank"&gt;Publicize.exe&lt;/a&gt; works pretty nicely for what I was looking for. &lt;/p&gt;  &lt;p&gt;For example, let’s say I want to stub a closed/framework type so that I can actually write my test without having to resort to integrating with the framework (which wouldn’t be a unit test at all), in this case, a couple of types in the Microsoft.Syncronization.dll assembly. &lt;/p&gt;  &lt;p&gt;I run Publicize.exe Microsoft.Syncronization.dll and it generates a shadow assembly called Microsoft.Syncronization_Accessor.dll, which takes all types, adds _Accessor and exposes all non-public members as public as shown in Reflector on the right. &lt;/p&gt;  &lt;p&gt;This pretty powerful. &lt;/p&gt;  &lt;p&gt;I can now stub the return type of any closed/framework class and test as long as I am asserting *properties*, which is pretty common:&lt;/p&gt; &lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;style type="text/css"&gt;&lt;![CDATA[

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}

.csharpcode pre { margin: 0em; }

.csharpcode .rem { color: #008000; }

.csharpcode .kwrd { color: #0000ff; }

.csharpcode .str { color: #006080; }

.csharpcode .op { color: #0000c0; }

.csharpcode .preproc { color: #cc6633; }

.csharpcode .asp { background-color: #ffff00; }

.csharpcode .html { color: #800000; }

.csharpcode .attr { color: #ff0000; }

.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}

.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        [TestMethod]&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GetChangesShouldReturnNumberOfChangesApplied()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;            MockRepository mockRepository = &lt;span class="kwrd"&gt;new&lt;/span&gt; MockRepository();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;            RelationalSyncProvider provider = mockRepository.Stub&amp;lt;RelationalSyncProvider&amp;gt;();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;            &lt;span class="kwrd"&gt;using&lt;/span&gt; (mockRepository.Record())&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;            {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;                &lt;span class="rem"&gt;// Set up the out parameter on RelationalSyncProvider Stub&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;                DbSyncContext changeDataRetriever = &lt;span class="kwrd"&gt;new&lt;/span&gt; DbSyncContext();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;                &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;                &lt;span class="rem"&gt;// Set up ScopeProgress property on DbySyncContext instance&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;                &lt;span class="rem"&gt;/*&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;&lt;span class="rem"&gt;                 * Note that in order to test for number of changes applied, we need to reach into the&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;&lt;span class="rem"&gt;                 * DbSyncScopeProgress and access the _totalChanges private member &lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;&lt;span class="rem"&gt;                 * so that public properties can be asserted. This is because the TotalChanges property only has a &lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;&lt;span class="rem"&gt;                 * getter, so the only way to influence the value is through it's backing field.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;&lt;span class="rem"&gt;                 */&lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;                DbSyncScopeProgress dbSyncScopeProgress = &lt;span class="kwrd"&gt;new&lt;/span&gt; DbSyncScopeProgress();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;                &lt;span class="rem"&gt;// Reference the actual object which will be accessed by the generated accessor&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;                PrivateObject obj = &lt;span class="kwrd"&gt;new&lt;/span&gt; PrivateObject(dbSyncScopeProgress);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;                &lt;span class="rem"&gt;// Generated accessor which wraps the type to be exposed using reflection.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;                &lt;span class="rem"&gt;// Instead of writing the reflection code manually, Publicize.exe was run against the real assembly,&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;                &lt;span class="rem"&gt;// which in turn generated reflection wrappers for *all* types.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;                DbSyncScopeProgress_Accessor dbSyncScopeProgressAccessor = &lt;span class="kwrd"&gt;new&lt;/span&gt; DbSyncScopeProgress_Accessor(obj);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;                &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;                &lt;span class="rem"&gt;// Look ma, I am accessing a private field&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;                dbSyncScopeProgressAccessor._tablesProgress = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;DbSyncTableProgress&amp;gt;();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;                &lt;span class="rem"&gt;// Now we need to repeat the same process again for this type, which is at the heart of what we need to&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;                &lt;span class="rem"&gt;// gain access to.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;                DbSyncTableProgress dbSyncTableProgress = &lt;span class="kwrd"&gt;new&lt;/span&gt; DbSyncTableProgress();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;                &lt;span class="rem"&gt;// Provides the accessor with a reference to the actual object&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;                obj = &lt;span class="kwrd"&gt;new&lt;/span&gt; PrivateObject(dbSyncTableProgress);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;                &lt;span class="rem"&gt;// Generated accessor which wraps the type to be exposed using reflection.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;                &lt;span class="rem"&gt;// Instead of writing the reflection code manually, Publicize.exe was run against the real assembly,&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;                &lt;span class="rem"&gt;// which in turn generated reflection wrappers for *all* types.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;                DbSyncTableProgress_Accessor dbSyncTableProgressAccessor = &lt;span class="kwrd"&gt;new&lt;/span&gt; DbSyncTableProgress_Accessor(obj);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;                &lt;span class="rem"&gt;// Set the _rowsApplied field so that the stubbed return instance of DbSyncScopeProgress can be asserted.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;                dbSyncTableProgressAccessor._rowsApplied = 42;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  54:  &lt;/span&gt;                &lt;span class="rem"&gt;// Add the dbSyncTableProgress to the private collection&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  55:  &lt;/span&gt;                dbSyncScopeProgressAccessor._tablesProgress.Add(dbSyncTableProgress);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  56:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  57:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  58:  &lt;/span&gt;                &lt;span class="rem"&gt;// Now, set the property to our used and abused instance of DbSyncScopeProgress&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  59:  &lt;/span&gt;                changeDataRetriever.ScopeProgress = dbSyncScopeProgress;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  60:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  61:  &lt;/span&gt;                &lt;span class="rem"&gt;// Provider is implemented in COM so out params are prevelant (yuk)&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  62:  &lt;/span&gt;                &lt;span class="kwrd"&gt;object&lt;/span&gt; changeDataRetrieverObj = changeDataRetriever;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  63:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  64:  &lt;/span&gt;                &lt;span class="rem"&gt;// Set the expectation&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  65:  &lt;/span&gt;                provider.GetChangeBatch(0, &lt;span class="kwrd"&gt;null&lt;/span&gt;, &lt;span class="kwrd"&gt;out&lt;/span&gt; changeDataRetrieverObj);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  66:  &lt;/span&gt;                &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  67:  &lt;/span&gt;                &lt;span class="rem"&gt;// Initialize params&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  68:  &lt;/span&gt;                SyncIdFormatGroup idFormats = &lt;span class="kwrd"&gt;new&lt;/span&gt; SyncIdFormatGroup();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  69:  &lt;/span&gt;                SyncKnowledge destinationKnowledge = &lt;span class="kwrd"&gt;new&lt;/span&gt; SyncKnowledge();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  70:  &lt;/span&gt;                ForgottenKnowledge sourceForgottenKnowledge = &lt;span class="kwrd"&gt;new&lt;/span&gt; ForgottenKnowledge();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  71:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  72:  &lt;/span&gt;                &lt;span class="rem"&gt;// Stub the return, including the object reference to DbSyncContext&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  73:  &lt;/span&gt;                LastCall.Return(&lt;span class="kwrd"&gt;new&lt;/span&gt; ChangeBatch(idFormats, destinationKnowledge, sourceForgottenKnowledge))&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  74:  &lt;/span&gt;                    .OutRef(changeDataRetrieverObj).IgnoreArguments();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  75:  &lt;/span&gt;            }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  76:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  77:  &lt;/span&gt;            IRelationalSyncManager manager = &lt;span class="kwrd"&gt;new&lt;/span&gt; RelationalSyncManager();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  78:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  79:  &lt;/span&gt;            &lt;span class="rem"&gt;// Inject the stub&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  80:  &lt;/span&gt;            manager.Provider = provider;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  81:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  82:  &lt;/span&gt;            SyncKnowledge localKnowledge = &lt;span class="kwrd"&gt;new&lt;/span&gt; SyncKnowledge();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  83:  &lt;/span&gt;            DbSyncContext returnedContext = &lt;span class="kwrd"&gt;new&lt;/span&gt; DbSyncContext();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  84:  &lt;/span&gt;            returnedContext.ScopeProgress = &lt;span class="kwrd"&gt;new&lt;/span&gt; DbSyncScopeProgress();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  85:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  86:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  87:  &lt;/span&gt;            var changeBatch = manager.GetChanges(0, localKnowledge, &lt;span class="kwrd"&gt;out&lt;/span&gt; returnedContext);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  88:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  89:  &lt;/span&gt;            DbSyncContext context = returnedContext;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  90:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  91:  &lt;/span&gt;            Assert.IsTrue(context.ScopeProgress.TotalChangesApplied ==42);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  92:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  93:  &lt;/span&gt;        }&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;There is a bit of work here, but with a bit of elbow grease thanks to Visual Studio Test Tools, RhinoMocks, reflection and a little code generation the framework is testable.&lt;/p&gt;&lt;img src="http://rickgaribay.net/aggbug/256.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Rick G. Garibay</dc:creator>
            <guid>http://rickgaribay.net/archive/2009/08/17/unit-testing-microsoft-sync-framework-amp-wcf.aspx</guid>
            <pubDate>Tue, 18 Aug 2009 04:46:33 GMT</pubDate>
            <comments>http://rickgaribay.net/archive/2009/08/17/unit-testing-microsoft-sync-framework-amp-wcf.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://rickgaribay.net/comments/commentRss/256.aspx</wfw:commentRss>
            <trackback:ping>http://rickgaribay.net/services/trackbacks/256.aspx</trackback:ping>
        </item>
        <item>
            <title>Free Public Class: A Day in the Life of Scrum with VSTS 2008 and TFS- 6/2 in Phoenix</title>
            <link>http://rickgaribay.net/archive/2009/05/31/free-public-class-a-day-in-the-life-of-scrum.aspx</link>
            <description>&lt;p&gt;I will be delivering my last free public class, "A Day in the Life of Scrum with Visual Studio Team System 2008 and Team Foundation Server" to Microsoft Phoenix next Tuesday, June 2nd.&lt;/p&gt;
&lt;p&gt;There are still a few seats available, so feel free to register (please see invitation below with &lt;strong&gt;Invitation Key 4DEAA2)&lt;/strong&gt;. If you would be interested in a private class for your team or organization, please feel free to contact me for scheduling. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://rickgaribay.net/Images/CustomContent/ADayintheLifeofScrumwithVisualStudioTeam_12917/clip_image002.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 5px; BORDER-RIGHT-WIDTH: 0px" height="80" alt="clip_image002" width="164" align="right" border="0" src="http://rickgaribay.net/Images/CustomContent/ADayintheLifeofScrumwithVisualStudioTeam_12917/clip_image002_thumb.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Please join &lt;a href="http://www.microsoft.com/"&gt;Microsoft&lt;/a&gt; and &lt;a href="http://www.neudesic.com/"&gt;Neudesic&lt;/a&gt; for a day in the life of Scrum with Visual Studio Team System 2008 and Team Foundation Server!  Agile methods are a set of development processes intended to create software in a lighter, faster, more people-centric way. Many development teams have adopted "agile" methodologies to manage change and to improve software quality. These methodologies promote continuous integration as a practice to build and test software products incrementally as new features are included, bugs are fixed, and code is refactored.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;If you missed the first series of Agile &amp;amp; Scrum Essentials last fall; here’s your chance to attend the follow-on event where we’ll briefly revisit the basics of Agile and Scrum and provide a walkthrough of how to configure Visual Studio Team System 2008 and Team Foundation Server for Scrum. Participants will be familiarized with how key artifacts are managed within this popular process template for enacting Scrum in organizations.   &lt;/p&gt;
&lt;p&gt;Join us for this interactive event as we explore a “day in the life of a Sprint,” that will give you a practical perspective of how Scrum teams leverage Visual Studio Team System for end to end management of the planning, execution and control of Scrum projects. The day will end with an overview of what’s coming in Visual Studio Team System 2010!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Register &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Welcome: 8:30 PM&lt;/p&gt;
&lt;p&gt;Seminar: 9:00 AM-4:30 PM&lt;/p&gt;
&lt;p&gt;&lt;a href="http://rickgaribay.net/Images/CustomContent/ADayintheLifeofScrumwithVisualStudioTeam_12917/image.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 5px; BORDER-RIGHT-WIDTH: 0px" height="64" alt="image" width="169" align="right" border="0" src="http://rickgaribay.net/Images/CustomContent/ADayintheLifeofScrumwithVisualStudioTeam_12917/image_thumb.png" /&gt;&lt;/a&gt;&lt;a href="http://rickgaribay.net/Images/CustomContent/ADayintheLifeofScrumwithVisualStudioTeam_12917/clip_image004.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://rickgaribay.net/Images/CustomContent/ADayintheLifeofScrumwithVisualStudioTeam_12917/clip_image004.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://rickgaribay.net/Images/CustomContent/ADayintheLifeofScrumwithVisualStudioTeam_12917/clip_image004.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 5px; BORDER-RIGHT-WIDTH: 0px" height="36" alt="clip_image004" width="220" align="right" border="0" src="http://rickgaribay.net/Images/CustomContent/ADayintheLifeofScrumwithVisualStudioTeam_12917/clip_image004_thumb.jpg" /&gt;&lt;/a&gt;&lt;strong&gt;Phoenix, AZ&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;June 2, 2009&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Click &lt;a href="http://msevents.microsoft.com/cui/EventDetail.aspx?culture=en-US&amp;amp;EventID=1032414516"&gt;here&lt;/a&gt; to register or call 1.877.MSEVENT (1.877.673.8368) with invitation code: &lt;a href="http://msevents.microsoft.com/cui/EventDetail.aspx?culture=en-US&amp;amp;EventID=1032414516"&gt;4DEAA2&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://rickgaribay.net/Images/CustomContent/ADayintheLifeofScrumwithVisualStudioTeam_12917/clip_image004.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://rickgaribay.net/Images/CustomContent/ADayintheLifeofScrumwithVisualStudioTeam_12917/clip_image004.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://rickgaribay.net/Images/CustomContent/ADayintheLifeofScrumwithVisualStudioTeam_12917/clip_image004.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://rickgaribay.net/Images/CustomContent/ADayintheLifeofScrumwithVisualStudioTeam_12917/clip_image004.jpg"&gt; &lt;/a&gt;&lt;/p&gt;&lt;img src="http://rickgaribay.net/aggbug/244.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Rick G. Garibay</dc:creator>
            <guid>http://rickgaribay.net/archive/2009/05/31/free-public-class-a-day-in-the-life-of-scrum.aspx</guid>
            <pubDate>Sun, 31 May 2009 20:49:56 GMT</pubDate>
            <comments>http://rickgaribay.net/archive/2009/05/31/free-public-class-a-day-in-the-life-of-scrum.aspx#feedback</comments>
            <wfw:commentRss>http://rickgaribay.net/comments/commentRss/244.aspx</wfw:commentRss>
            <trackback:ping>http://rickgaribay.net/services/trackbacks/244.aspx</trackback:ping>
        </item>
        <item>
            <title>.NET Framework 4.0 Beta 1</title>
            <link>http://rickgaribay.net/archive/2009/05/18/.net-framework-4.0-beta-1.aspx</link>
            <description>&lt;p&gt;I am thrilled to share that today, Monday, May 18th, the .NET Framework 4 Beta 1 will be available to MSDN Subscribers through MSDN Subscriber Downloads and to the general public on Wednesday, May 20th through Microsoft Downloads.&lt;/p&gt;  &lt;p&gt;I have been fortunate to have my hands on a limited April CTP for some time now which is very close to what is included in Beta 1, so stay tuned for more information about VS 2010 and the WCF and WF enhancements in .NET 4.0 which are key areas that I will continue to focus on and share with you here.&lt;/p&gt;  &lt;p&gt;Until then, here are some helpful links to get you started with NET FX 4.0:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Get the Bits&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Download the .NET Framework 4 beta here from MSDN Downloads:&lt;a title="http://msdn.microsoft.com/en-us/subscriptions/downloads/default.aspx?pv=18:370" href="http://msdn.microsoft.com/en-us/subsc ions/downloads/default.aspx?pv=18:370"&gt;http://msdn.microsoft.com/en-us/subsc ions/downloads/default.aspx?pv=18:370&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;On Wed, May 20th, you can obtain the Beta 1 bits here: &lt;a href="http://go.microsoft.com/fwlink/?LinkId=151799"&gt;http://go.microsoft.com/fwlink/?LinkId=151799&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Learn What’s New&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;A First Look at VS 2010: &lt;a title="http://www.microsoft.com/visualstudio/en-us/products/2010/default.mspx" href="http://www.microsoft.com/visualstudio/en-us/products/2010/default.mspx"&gt;http://www.microsoft.com/visualstudio/en-us/products/2010/default.mspx&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;New .NET Framework 4 features: &lt;a href="http://go.microsoft.com/?linkid=9666478"&gt;http://go.microsoft.com/?linkid=9666478&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Scott Hanselman's .NET 4 overview (PDC 2008) : &lt;a href="http://channel9.msdn.com/pdc2008/TL49"&gt;http://channel9.msdn.com/pdc2008/TL49&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Get Support from the Community&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Beta 1 Forum is available here: &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/VSPreRelease,netdevelopmentprerelease,visualstudioprerelease,vstsprerelease"&gt;http://social.msdn.microsoft.com/Forums/en-US/category/VSPreRelease,netdevelopmentprerelease,visualstudioprerelease,vstsprerelease&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Stay tuned for posts in the next couple of weeks that will address the significance of this major release, particularly around VS 2010 enhancements and Connected Systems framework technologies. Until then, if you haven’t already, please take the time to upgrade to .NET Framework 3.5 which will make sure your upgrade path to .NET 4.0 is as seamless as possible.&lt;/p&gt;&lt;img src="http://rickgaribay.net/aggbug/243.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Rick G. Garibay</dc:creator>
            <guid>http://rickgaribay.net/archive/2009/05/18/.net-framework-4.0-beta-1.aspx</guid>
            <pubDate>Mon, 18 May 2009 21:00:00 GMT</pubDate>
            <comments>http://rickgaribay.net/archive/2009/05/18/.net-framework-4.0-beta-1.aspx#feedback</comments>
            <wfw:commentRss>http://rickgaribay.net/comments/commentRss/243.aspx</wfw:commentRss>
            <trackback:ping>http://rickgaribay.net/services/trackbacks/243.aspx</trackback:ping>
        </item>
        <item>
            <title>Phoenix Visual Studio Team System Big Event was BIG!</title>
            <link>http://rickgaribay.net/archive/2009/05/11/phoenix-visual-studio-team-system-big-event-was-big.aspx</link>
            <description>&lt;p&gt;Thanks to all who came out for the &lt;a href="http://rickgaribay.net/archive/2009/04/13/phoenix-visual-studio-team-system-big-event-is-coming-to.aspx"&gt;Visual Studio Team System Big Event on Thursday, May 7th&lt;/a&gt;! &lt;a href="http://rickgaribay.net/Images/CustomContent/PhoenixVisualStudioTeamSystemBigEventwas_EE11/DSCN0480.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; margin: 5px; border-left: 0px; border-bottom: 0px" height="100" alt="DSCN0480" src="http://rickgaribay.net/Images/CustomContent/PhoenixVisualStudioTeamSystemBigEventwas_EE11/DSCN0480_thumb.jpg" width="244" align="right" border="0" /&gt;&lt;/a&gt;We had a great time with the Microsoft Developer Evangelist team, Microsoft Technical Specialists,  MVPs and influencers who at the end of the full day of action packed training left no doubt that Visual Studio Team System is &lt;strong&gt;BIG&lt;/strong&gt;! &lt;/p&gt;  &lt;p&gt;&lt;a href="http://rickgaribay.net/Images/CustomContent/PhoenixVisualStudioTeamSystemBigEventwas_EE11/P5070484.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; margin: 5px; border-left: 0px; border-bottom: 0px" height="184" alt="P5070484" src="http://rickgaribay.net/Images/CustomContent/PhoenixVisualStudioTeamSystemBigEventwas_EE11/P5070484_thumb.jpg" width="244" align="left" border="0" /&gt;&lt;/a&gt;Dan Weinman, Senior Consultant at Neudesic kicked off with the keynote on  "&lt;b&gt;Development Best Practices &amp;amp; How Microsoft Helps&lt;/b&gt;" and set the stage for what the day full of training had in store. Dan talked about the various roles that VSTS supports and how each role comes together to enact process under a single tool that maximizes transparency and communication on Agile teams.  &lt;/p&gt;  &lt;p&gt;Next, Brendon Birdoes, Principal Consultant at Neudesic delivered a great talk on &lt;a href="http://rickgaribay.net/Images/CustomContent/PhoenixVisualStudioTeamSystemBigEventwas_EE11/P5070488.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; margin: 5px; border-left: 0px; border-bottom: 0px" height="184" alt="P5070488" src="http://rickgaribay.net/Images/CustomContent/PhoenixVisualStudioTeamSystemBigEventwas_EE11/P5070488_thumb.jpg" width="244" align="right" border="0" /&gt;&lt;/a&gt;Test-Driven-Development with Visual Studio. Brendon covered unit testing, including test first development and showed off the refactoring capabilities right within the IDE  along with code coverage. Brendon talked about how important code coverage and quality assertions are to ensuring that your unit tests are as useful as possible in maintaining high degrees of quality within your software projects. &lt;/p&gt;  &lt;p&gt;Following the excellent session on TDD, Visual Studio Team System MVP Dave McKinstry delivered a session entitled ""It Works on My Machine!" Closing the Loop Between Development &amp;amp; Testing" which discussed the close integration between testing tools in Visual Studio Team System and the code itself which minimizes the cost and complexity in task switching.&lt;/p&gt;  &lt;p&gt;We were then treated by another excellent talk by Rob Bagby, Developer Evangelist on "Treating Databases as First-Class Citizens in Development". In this session, Rob made clear that &lt;a href="http://rickgaribay.net/Images/CustomContent/PhoenixVisualStudioTeamSystemBigEventwas_EE11/P5070489.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; margin: 5px; border-left: 0px; border-bottom: 0px" height="184" alt="P5070489" src="http://rickgaribay.net/Images/CustomContent/PhoenixVisualStudioTeamSystemBigEventwas_EE11/P5070489_thumb.jpg" width="244" align="right" border="0" /&gt;&lt;/a&gt;database work can no longer hide from unit testing and how the Database Project in Visual Studio Team System makes synchronizing DDL and DML objects seamless and eminently testable. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://rickgaribay.net/Images/CustomContent/PhoenixVisualStudioTeamSystemBigEventwas_EE11/DSCN0481.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; margin: 5px; border-left: 0px; border-bottom: 0px" height="184" alt="DSCN0481" src="http://rickgaribay.net/Images/CustomContent/PhoenixVisualStudioTeamSystemBigEventwas_EE11/DSCN0481_thumb.jpg" width="244" align="left" border="0" /&gt;&lt;/a&gt;I was lucky enough to show off the new Visual Studio Team System 2010 Team Architect bits which include fully compliant UML 2.1 diagram support as well as assembly, namespace, class and method visualization using the VSTS 2010 Architecture Explorer.  I talked about VSTS 2010 Team Architect being yet another clear signal of Microsoft's commitment to modeling which is, and will continue to manifest itself in technologies like Windows Workflow, BizTalk Server, Entity Framework, and Quadrant to name just a few. As a Connected Systems guy, VS2010 Team Architect is really going to go a long way in helping me and my teams visualize the problem domain and partition our big balls of mud into the right architecture.  &lt;/p&gt;  &lt;p&gt;Speaking of which, I think my favorite new modeling feature in Team Architect is the Layer Diagram which lets you define your layers and then validate them at build time! What this means is that&lt;a href="http://rickgaribay.net/Images/CustomContent/PhoenixVisualStudioTeamSystemBigEventwas_EE11/DSCN0482.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; margin: 5px; border-left: 0px; border-bottom: 0px" height="184" alt="DSCN0482" src="http://rickgaribay.net/Images/CustomContent/PhoenixVisualStudioTeamSystemBigEventwas_EE11/DSCN0482_thumb.jpg" width="244" align="right" border="0" /&gt;&lt;/a&gt; I can use a layer diagram to define separation of concerns and single responsibility principle and then make sure that team members are honoring the layer rules. It is just awesome to be able to map namespaces to a layer diagram, wire it up to the automated build and keep violations from every being delivered.&lt;/p&gt;  &lt;p&gt;The day winded up with a great talk by Steve Lange, Technical Specialist on how to get the most out of TFS. The session was aptly called "Bang for Your Buck" Getting the Most out of Team Foundation Server, and Steve gave away some great tips on things you can do with your investment in TFS that you may not have even known about. &lt;/p&gt;  &lt;p&gt;I want to thank Steve and Rob for inviting us to speak at this event. The room was full of great folks with lots of passion and great questions which is exactly what we like to see at these events. If you have any follow up questions that I wasn't able to get answered at the event, please don't hesitate to &lt;a href="http://rickgaribay.net/contact.aspx"&gt;contact me&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://rickgaribay.net/aggbug/241.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Rick G. Garibay</dc:creator>
            <guid>http://rickgaribay.net/archive/2009/05/11/phoenix-visual-studio-team-system-big-event-was-big.aspx</guid>
            <pubDate>Tue, 12 May 2009 00:29:16 GMT</pubDate>
            <comments>http://rickgaribay.net/archive/2009/05/11/phoenix-visual-studio-team-system-big-event-was-big.aspx#feedback</comments>
            <wfw:commentRss>http://rickgaribay.net/comments/commentRss/241.aspx</wfw:commentRss>
            <trackback:ping>http://rickgaribay.net/services/trackbacks/241.aspx</trackback:ping>
        </item>
        <item>
            <title>Fix: Can't Set Breakpoints in Visual Studio 2008</title>
            <link>http://rickgaribay.net/archive/2009/04/28/fix-cant-set-breakpoints-in-visual-studio-2008.aspx</link>
            <description>&lt;p&gt;I recently uninstalled a certain productivity enhancement tool for VS 2008 which shall remain nameless because they are a good group of guys and have been very nice to me.&lt;/p&gt;  &lt;p&gt;I uninstalled the tool, namely because I felt I was becoming a bit too dependant on it. Certainly, VS features like intellisense and basic refactoring support are not things I would willingly live without, but I feel that the features in VS are probably adequate for my needs and my IDE was starting to feel a bit clunky.&lt;/p&gt;  &lt;p&gt;So, I uninstalled this tool, and immediately intellisense was missing. Anoying. I went into Tools-&amp;gt;Options and re-enabled Intellisense. Life was good, or so it seemed.&lt;/p&gt;  &lt;p&gt;For the last 5 weeks, the bane of my existence has been the fact that I couldn't set breakpoints in my code.&lt;a href="http://rickgaribay.net/Images/CustomContent/FixCantSetBreakpointsinVisualStudio2008_B45F/image.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; margin: 10px 5px 5px; border-left: 0px; border-bottom: 0px" height="84" alt="image" src="http://rickgaribay.net/Images/CustomContent/FixCantSetBreakpointsinVisualStudio2008_B45F/image_thumb.png" width="244" align="right" border="0" /&gt;&lt;/a&gt; I could debug just fine if I right clicked + Breakpoints + Insert Breakpoint, or use F9, but when I tried to set the breakpoint on the left pane, as shown here, it just wouldn't work at all:&lt;/p&gt;  &lt;p&gt;I was giving a class on TDD to one of my biggest customers today and in desperation, having right clicked + Breakpoints + Insert Breakpoint one too many times, I offered to buy lunch to the developer who could help me fix this. Now one developer offered the F9 option as workaround, which is better than a 3 step process, and this would have helped me out. Then, about 15 minutes later, another developer said they had the fix, and sure enough, he did!&lt;/p&gt;  &lt;p&gt; The problem was that the "Indicator Margin" had been disabled. How did this happen? Why would this happen and what the hell is an Indicator Margin? Well, I don't have proof, but I am guessing that it is that "productivity" tool that did it when I uninstalled it.&lt;/p&gt;  &lt;p&gt;The solution was simply to go into Tools-&amp;gt;Options-&amp;gt;Text Editor and enable Indicator margin as shown below:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://rickgaribay.net/Images/CustomContent/FixCantSetBreakpointsinVisualStudio2008_B45F/image_3.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; margin: 5px; border-left: 0px; border-bottom: 0px" height="144" alt="image" src="http://rickgaribay.net/Images/CustomContent/FixCantSetBreakpointsinVisualStudio2008_B45F/image_thumb_3.png" width="244" align="left" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;I am forever indebted to this customer and am sharing this tip here in case this is driving you as nuts as it has me over the last month!&lt;/p&gt;&lt;img src="http://rickgaribay.net/aggbug/238.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Rick G. Garibay</dc:creator>
            <guid>http://rickgaribay.net/archive/2009/04/28/fix-cant-set-breakpoints-in-visual-studio-2008.aspx</guid>
            <pubDate>Tue, 28 Apr 2009 20:03:29 GMT</pubDate>
            <comments>http://rickgaribay.net/archive/2009/04/28/fix-cant-set-breakpoints-in-visual-studio-2008.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://rickgaribay.net/comments/commentRss/238.aspx</wfw:commentRss>
            <trackback:ping>http://rickgaribay.net/services/trackbacks/238.aspx</trackback:ping>
        </item>
        <item>
            <title>Phoenix Visual Studio Team System Big Event is Coming to Phoenix on 5/7!</title>
            <link>http://rickgaribay.net/archive/2009/04/13/phoenix-visual-studio-team-system-big-event-is-coming-to.aspx</link>
            <description>&lt;p&gt;My friends &lt;a href="http://blogs.msdn.com/slange" target="_blank"&gt;Steve Lange&lt;/a&gt;, &lt;a href="http://www.robbagby.com/" target="_blank"&gt;Rob Bagby&lt;/a&gt; and Microsoft are hosting a &lt;strong&gt;&lt;u&gt;FREE&lt;/u&gt;&lt;/strong&gt; &lt;b&gt;event&lt;/b&gt; which will help you discover how people, process and technology are key to helping your organization succeed in today’s environment. &lt;/p&gt;  &lt;p&gt;This all day seminar includes several sessions within &lt;em&gt;Architecture&lt;/em&gt;, &lt;em&gt;Development &amp;amp; Testing&lt;/em&gt; and &lt;em&gt;Application Lifecycle Management &lt;/em&gt;track&lt;em&gt;s.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Dan Weinmann and Brendon Birdoes of &lt;a href="http://neudesic.com" target="_blank"&gt;Neudesic&lt;/a&gt; and I will be delivering content on each of the tracks along with members of the Microsoft Technical Specialist teamand other area VSTS MVPs and ALM practitioners.&lt;/p&gt;  &lt;p&gt;Here is a list of available sessions:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Test Driven Development: Improving .NET Application Performance &amp;amp; Scalability&lt;/strong&gt;      &lt;ul&gt;       &lt;li&gt;This session will demonstrate how to leverage Test Driven Development in Team System. We’ll highlight both writing unit tests up front as well as creating test stubs for existing code. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;"It Works on My Machine!" Closing the Loop Between Development &amp;amp; Testing&lt;/strong&gt;      &lt;ul&gt;       &lt;li&gt;In this session, we will examine the traditional barriers between the developer and tester; and how Team System can help remove those walls. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Treating Databases as First-Class Citizens in Development&lt;/strong&gt;      &lt;ul&gt;       &lt;li&gt;Team System Database Edition elevates database development to the same level as code development. See how Database Edition enables database change management, automation, comparison, and deployment. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;&lt;img title="vstsbigevent_character" height="213" alt="vstsbigevent_character" src="http://blogs.msdn.com/blogfiles/slange/WindowsLiveWriter/ItoldyouitwascomingTeamSystemBigEvent_EEE9/vstsbigevent_character_3.jpg" width="119" align="right" border="0" /&gt;Architecture without &lt;b&gt;Big&lt;/b&gt; Design Up Front&lt;/strong&gt;      &lt;ul&gt;       &lt;li&gt;Microsoft Visual Studio Team System 2010 Architecture Edition, introduces new UML designers, use cases, activity diagrams, sequence diagrams that can visualize existing code, layering to enforce dependency rules, and physical designers to visualize, analyze, and refactor your software. See how &lt;b&gt;VSTS&lt;/b&gt; extends UML logical views into physical views of your code. Learn how to create relationships from these views to work items and project metrics, how to extend these designers, and how to programmatically transform models into patterns for other domains and disciplines. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Development Best Practices &amp;amp; How Microsoft Helps&lt;/strong&gt;      &lt;ul&gt;       &lt;li&gt;Sometimes development teams get too bogged down with the details. Take a deep breath, step back, and re-acquaint yourself with a review of current development best practice trends, including continuous integration, automation, and requirements analysis; and see how Microsoft tools map to those practices. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;"Bang for Your Buck" Getting the Most out of Team Foundation Server&lt;/strong&gt;      &lt;ul&gt;       &lt;li&gt;Today’s IT budgets are forcing teams to do as much as they can with as little as possible. Why not leverage Team Foundation Server to its full potential? In this session we’ll highlight some capabilities of TFS that you may or may not already know about to help you maximize productivity. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;This event will not only provide you with best practices around development and testing, but will demonstrate key capabilities of both Visual Studio Team System 2008 and the upcoming 2010 release that you won't want to miss. It’s a day that promises to have something for everyone! &lt;/p&gt;  &lt;p&gt;Click &lt;a href="http://msevents.microsoft.com/CUI/InviteOnly.aspx?EventID=74-21-6B-AF-11-28-B7-87-D5-BB-15-AE-35-CB-41-14&amp;amp;Culture=en-US" target="_blank"&gt;here&lt;/a&gt; to register with invitation code: &lt;a href="http://msevents.microsoft.com/CUI/InviteOnly.aspx?EventID=74-21-6B-AF-11-28-B7-87-D5-BB-15-AE-35-CB-41-14&amp;amp;Culture=en-US" target="_blank"&gt;90BC47&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you have any problems registering, please &lt;a href="http://rickgaribay.net/contact.aspx" target="_blank"&gt;drop me a note&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://rickgaribay.net/aggbug/235.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Rick G. Garibay</dc:creator>
            <guid>http://rickgaribay.net/archive/2009/04/13/phoenix-visual-studio-team-system-big-event-is-coming-to.aspx</guid>
            <pubDate>Mon, 13 Apr 2009 18:24:58 GMT</pubDate>
            <comments>http://rickgaribay.net/archive/2009/04/13/phoenix-visual-studio-team-system-big-event-is-coming-to.aspx#feedback</comments>
            <wfw:commentRss>http://rickgaribay.net/comments/commentRss/235.aspx</wfw:commentRss>
            <trackback:ping>http://rickgaribay.net/services/trackbacks/235.aspx</trackback:ping>
        </item>
        <item>
            <title>Free Public Class: A Day in the Life of Scrum with VSTS 2008 and Team Foundation Server - 4/2 in Bellevue, WA</title>
            <link>http://rickgaribay.net/archive/2009/03/27/a-day-in-the-life-of-scrum-with-visual-studio.aspx</link>
            <description>&lt;h4&gt;&lt;/h4&gt;  &lt;p&gt;I will be delivering the second free public class, "A Day in the Life of Scrum with Visual Studio Team System 2008 and Team Foundation Server" to Microsoft Bellevue next Thursday, April 2nd.&lt;/p&gt;  &lt;p&gt;Please see invitation below and be sure to register ASAP as seating is limited. If you are not in Bellevue, but would be interested in a private class for your team or organization, please feel free to contact me. Also, stay tuned right here for additional free public classes coming to your city soon!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://rickgaribay.net/Images/CustomContent/ADayintheLifeofScrumwithVisualStudioTeam_12917/clip_image002.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 5px; border-right-width: 0px" height="80" alt="clip_image002" src="http://rickgaribay.net/Images/CustomContent/ADayintheLifeofScrumwithVisualStudioTeam_12917/clip_image002_thumb.jpg" width="164" align="right" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Please join &lt;a href="http://www.microsoft.com/"&gt;Microsoft&lt;/a&gt; and &lt;a href="http://www.neudesic.com/"&gt;Neudesic&lt;/a&gt; for a day in the life of Scrum with Visual Studio Team System 2008 and Team Foundation Server!  Agile methods are a set of development processes intended to create software in a lighter, faster, more people-centric way. Many development teams have adopted "agile" methodologies to manage change and to improve software quality. These methodologies promote continuous integration as a practice to build and test software products incrementally as new features are included, bugs are fixed, and code is refactored.&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;If you missed the first series of Agile &amp;amp; Scrum Essentials last fall; here’s your chance to attend the follow-on event where we’ll briefly revisit the basics of Agile and Scrum and provide a walkthrough of how to configure Visual Studio Team System 2008 and Team Foundation Server for Scrum. Participants will be familiarized with how key artifacts are managed within this popular process template for enacting Scrum in organizations.   &lt;/p&gt;  &lt;p&gt;Join us for this interactive event as we explore a “day in the life of a Sprint,” that will give you a practical perspective of how Scrum teams leverage Visual Studio Team System for end to end management of the planning, execution and control of Scrum projects. The day will end with an overview of what’s coming in Visual Studio Team System 2010!&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Register &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Welcome: 8:30 PM&lt;/p&gt;  &lt;p&gt;Seminar: 9:00 AM-4:30 PM&lt;/p&gt;  &lt;p&gt;&lt;a href="http://rickgaribay.net/Images/CustomContent/ADayintheLifeofScrumwithVisualStudioTeam_12917/image.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; margin: 5px; border-left: 0px; border-bottom: 0px" height="64" alt="image" src="http://rickgaribay.net/Images/CustomContent/ADayintheLifeofScrumwithVisualStudioTeam_12917/image_thumb.png" width="169" align="right" border="0" /&gt;&lt;/a&gt;&lt;a href="http://rickgaribay.net/Images/CustomContent/ADayintheLifeofScrumwithVisualStudioTeam_12917/clip_image004.jpg"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://rickgaribay.net/Images/CustomContent/ADayintheLifeofScrumwithVisualStudioTeam_12917/clip_image004.jpg"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://rickgaribay.net/Images/CustomContent/ADayintheLifeofScrumwithVisualStudioTeam_12917/clip_image004.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 5px; border-right-width: 0px" height="36" alt="clip_image004" src="http://rickgaribay.net/Images/CustomContent/ADayintheLifeofScrumwithVisualStudioTeam_12917/clip_image004_thumb.jpg" width="220" align="right" border="0" /&gt;&lt;/a&gt;&lt;b&gt;Bellevue, WA&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;April 2, 2009&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Click &lt;a href="http://msevents.microsoft.com/CUI/InviteOnly.aspx?EventID=9A-21-56-92-69-0C-AE-00-BE-A0-93-DA-09-AE-12-71&amp;amp;Culture=en-US"&gt;here&lt;/a&gt; to register or call 1.877.MSEVENT (1.877.673.8368) with invitation code: &lt;a href="http://msevents.microsoft.com/CUI/InviteOnly.aspx?EventID=9A-21-56-92-69-0C-AE-00-BE-A0-93-DA-09-AE-12-71&amp;amp;Culture=en-US"&gt;46F263&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://rickgaribay.net/Images/CustomContent/ADayintheLifeofScrumwithVisualStudioTeam_12917/clip_image004.jpg"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://rickgaribay.net/Images/CustomContent/ADayintheLifeofScrumwithVisualStudioTeam_12917/clip_image004.jpg"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://rickgaribay.net/Images/CustomContent/ADayintheLifeofScrumwithVisualStudioTeam_12917/clip_image004.jpg"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://rickgaribay.net/Images/CustomContent/ADayintheLifeofScrumwithVisualStudioTeam_12917/clip_image004.jpg"&gt; &lt;/a&gt;&lt;/p&gt;&lt;img src="http://rickgaribay.net/aggbug/232.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Rick G. Garibay</dc:creator>
            <guid>http://rickgaribay.net/archive/2009/03/27/a-day-in-the-life-of-scrum-with-visual-studio.aspx</guid>
            <pubDate>Sat, 28 Mar 2009 04:07:46 GMT</pubDate>
            <comments>http://rickgaribay.net/archive/2009/03/27/a-day-in-the-life-of-scrum-with-visual-studio.aspx#feedback</comments>
            <wfw:commentRss>http://rickgaribay.net/comments/commentRss/232.aspx</wfw:commentRss>
            <trackback:ping>http://rickgaribay.net/services/trackbacks/232.aspx</trackback:ping>
        </item>
        <item>
            <title>Visual Studio 2008 Guided Tour</title>
            <link>http://rickgaribay.net/archive/2009/03/24/visual-studio-2008-guided-tour.aspx</link>
            <description>&lt;p&gt;J. Michael Palermo pointed me to this menu of VS resources: &lt;a title="http://msdn.microsoft.com/en-us/library/bb514232.aspx" href="http://msdn.microsoft.com/en-us/library/bb514232.aspx"&gt;http://msdn.microsoft.com/en-us/library/bb514232.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Great one-stop reference, thanks Michael.&lt;/p&gt;&lt;img src="http://rickgaribay.net/aggbug/231.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Rick G. Garibay</dc:creator>
            <guid>http://rickgaribay.net/archive/2009/03/24/visual-studio-2008-guided-tour.aspx</guid>
            <pubDate>Tue, 24 Mar 2009 16:07:25 GMT</pubDate>
            <comments>http://rickgaribay.net/archive/2009/03/24/visual-studio-2008-guided-tour.aspx#feedback</comments>
            <wfw:commentRss>http://rickgaribay.net/comments/commentRss/231.aspx</wfw:commentRss>
            <trackback:ping>http://rickgaribay.net/services/trackbacks/231.aspx</trackback:ping>
        </item>
    </channel>
</rss>