<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" 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:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Adam Salvo (z) - Technology|Visual Studio</title>
    <link>http://blog.salvoz.com/</link>
    <description>newtelligence powered</description>
    <language>en-us</language>
    <copyright>Adam Salvo</copyright>
    <lastBuildDate>Fri, 09 Jul 2010 18:02:00 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.2.8279.16125</generator>
    <managingEditor>adam@salvoz.com</managingEditor>
    <webMaster>adam@salvoz.com</webMaster>
    <item>
      <trackback:ping>http://blog.salvoz.com/Trackback.aspx?guid=64b6ac5d-b2fe-4ff2-afeb-4449adbfb03b</trackback:ping>
      <pingback:server>http://blog.salvoz.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.salvoz.com/PermaLink,guid,64b6ac5d-b2fe-4ff2-afeb-4449adbfb03b.aspx</pingback:target>
      <dc:creator>Adam Salvo</dc:creator>
      <wfw:comment>http://blog.salvoz.com/CommentView,guid,64b6ac5d-b2fe-4ff2-afeb-4449adbfb03b.aspx</wfw:comment>
      <wfw:commentRss>http://blog.salvoz.com/SyndicationService.asmx/GetEntryCommentsRss?guid=64b6ac5d-b2fe-4ff2-afeb-4449adbfb03b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <strong>Today’s Task:</strong>
        </p>
        <p>
Add some Silverlight content to an existing Asp.Net MVC project. The MVC project contains
the standard CRUD for the application, while the Silverlight is meant to provide rich
visualization of the data.
</p>
        <p>
          <strong>Prerequisites:</strong>
        </p>
        <ul>
          <li>
VS 2010 
</li>
          <li>
An existing Asp.Net MVC 2.0 project 
</li>
          <li>
Expression Blend 4.0 (installs Silverlight 4 and Silverlight 4 SDK) 
</li>
          <li>
            <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=eff8a0da-0a4d-48e8-8366-6ddf2ecad801&amp;displaylang=en">Silverlight
4.0 tools</a> for Visual Studio 2010</li>
        </ul>
        <p>
          <strong>Creating the Project:</strong>
        </p>
        <p>
As stated in the opening and prerequisites, I am starting with an existing Asp.Net
MVC application. You should have Blend 4 installed, and have also installed the Silverlight
4 tools for Visual Studio.
</p>
        <p>
1) Right click on your web project and choose add new item (ctrl+shift+a). From the
add new Item window, click on Silverlight under Installed Templates and then select
the Silverlight Application. Name your Silverlight application appropriately. In my
example, I have named my project DataVisualization. Click Add
</p>
        <p>
          <a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/image_2.png">
            <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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/image_thumb.png" width="244" height="171" />
          </a>
        </p>
        <p>
2) The next screen that comes up is the “Add Silverlight Application” screen. I accepted
the defaults with the follow exception, I changed the location from being a sub folder
of my MVC application to one level higher. The destination folder, ClientBin is still
created in your MVC application. Make sure that you select Silverlight 4 for the version.
Finally click Add.
</p>
        <p>
          <a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/image_4.png">
            <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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/image_thumb_1.png" width="244" height="225" />
          </a>
        </p>
        <p>
3) You should now have the following in your solution.
</p>
        <ul>
          <li>
Your existing Asp.Net MVC application 
</li>
          <li>
A new Silverlight 4 application named DataVisualization 
</li>
          <li>
A DataVisualizationTestPage.aspx in your MVC application 
</li>
          <li>
A DataVisualizationTestPage.html in your MVC application 
</li>
          <li>
A Silverlight.js in your MVC application</li>
        </ul>
        <p>
We will eventually remove the test pages, but for now we will leave them so that they
can serve their intended purpose. 
</p>
        <p>
4) Build the solution. You should see a DataVisualization.xap added to the ClientBin
folder in your MVC application.
</p>
        <p>
          <a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/image_6.png">
            <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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/image_thumb_2.png" width="244" height="235" />
          </a>  
</p>
        <p>
5) Right click on DataVisualization.html and choose view in browser. You should see
an empty page in the browser, but get no errors. Right clicking anywhere in the browser
window should bring up the Silverlight context menu.
</p>
        <p>
          <a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/image_8.png">
            <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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/image_thumb_3.png" width="244" height="208" />
          </a>
        </p>
        <p>
          <strong>
          </strong> 
</p>
        <p>
          <strong>Integrate the Silverlight Application</strong>
        </p>
        <p>
In this stage, we are going to make our new Silverlight application appear like it’s
part of the rest of our MVC application. Right now if you browse to it, it doesn’t
look like its part of anything. We also want to be able to allow our users to navigate
thru our web application so we need our existing menu to show up.
</p>
        <p>
1) Either create a new controller/view or re-use an existing controller/view in your
MVC application to house your Silverlight application. I’m going to reuse an existing
controller called Dashboard, which has one view, Index.
</p>
        <p>
2) Open up your view, and the DataVisualizationTestPage.aspx file. We need to move
some stuff over to our view so it displays our Silverlight application. I have some
pre existing styling and layout defined, so my view is going to look differently from
yours. I also store my java script files in a specific location, so I will be moving
the included silverlight.js as well. The screen shot below shows what I am starting
with in the view for reference.
</p>
        <p>
          <a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/image_10.png">
            <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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/image_thumb_4.png" width="244" height="121" />
          </a>
        </p>
        <p>
3) If you don’t have any existing standard for your JavaScript, you can place the
two script tags from the test page somewhere before the reference to the Silverlight
object. For example, place the two script tags just below the second content place
holder. Next, copy the form tag inclusive and paste it into your view. For me, I pasted
it into my div tag that I have setup to control my formatting. In the screen shots
below you can see my view, and resulting web page. We still have an empty Silverlight
control, but now it looks like its actually part of our website. 
</p>
        <p>
          <a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/image_12.png">
            <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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/image_thumb_5.png" width="343" height="186" />
          </a>
          <a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/image_14.png">
            <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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/image_thumb_6.png" width="244" height="187" />
          </a>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
4) Remove the DataVisualizationTest.aspx page, but keep the HTML page as we will need
it in the next section.
</p>
        <p>
          <strong>Working with Blend</strong>
        </p>
        <p>
The final step is to begin adding content to our Silverlight application. For this
we are going to switch to Blend to make sure that we are able to work in both tools. 
</p>
        <p>
1) Start up Blend and choose to open an existing project. Browse to the location of
your DataVisualization project (folder that contains DataVisualization.csproj) and
open it. You should see the content of your project listed on the left under the project
tab (assuming default Blend layout) and the empty MainPage.xaml in the middle. Notice
that we have a solution called DataVisualization, and that I did not open up my existing
MVC application solution. 
</p>
        <p>
          <a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/image_16.png">
            <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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/image_thumb_7.png" width="244" height="150" />
          </a>
        </p>
        <p>
2) Go to Project in the tool bar, and click Run Project (or press F5). You will see
that our empty MainPage is shown using the DataVisualizationTest.html page, and that
we are using the local Asp.Net development server. This is good enough for me. I’m
hoping that with this setup I can work independently of my MVC application, and more
importantly, a designer would be able to work independently as well. When deploying
my application to production, I can remove the DataVisualizationTest.html page. 
</p>
        <p>
          <a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/image_18.png">
            <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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/image_thumb_8.png" width="244" height="125" />
          </a>
        </p>
        <p>
3) TFS Integration – At this point I can’t figure out how to get Blend to work with
TFS. It’s possible since I downloaded the trial version that it does not include TFS
support, or I need to install Team Explorer on top of Blend. For now I can use the
Explorer add-in to get by. 
</p>
        <p>
          <strong>Conclusion</strong>
        </p>
        <p>
At this point we have a functioning Silverlight application, integrated with an existing
Asp.Net MVC application. We are able to work independently of the web application
in Blend and vice-versa. This is my first attempt at this type of solution, so I will
post a follow-up in the future to report back how well it worked, and if I needed
to make any changes. 
</p>
        <img width="0" height="0" src="http://blog.salvoz.com/aggbug.ashx?id=64b6ac5d-b2fe-4ff2-afeb-4449adbfb03b" />
        <br />
        <hr />
This weblog is sponsored by <a href="http://www.salvoz.com">Adam Salvo</a>. 
</body>
      <title>Silverlight in an Existing Asp.Net MVC Project</title>
      <guid isPermaLink="false">http://blog.salvoz.com/PermaLink,guid,64b6ac5d-b2fe-4ff2-afeb-4449adbfb03b.aspx</guid>
      <link>http://blog.salvoz.com/2010/07/09/SilverlightInAnExistingAspNetMVCProject.aspx</link>
      <pubDate>Fri, 09 Jul 2010 18:02:00 GMT</pubDate>
      <description>&lt;p&gt;
&lt;strong&gt;Today’s Task:&lt;/strong&gt; 
&lt;/p&gt;
&lt;p&gt;
Add some Silverlight content to an existing Asp.Net MVC project. The MVC project contains
the standard CRUD for the application, while the Silverlight is meant to provide rich
visualization of the data.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Prerequisites:&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
VS 2010 
&lt;li&gt;
An existing Asp.Net MVC 2.0 project 
&lt;li&gt;
Expression Blend 4.0 (installs Silverlight 4 and Silverlight 4 SDK) 
&lt;li&gt;
&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=eff8a0da-0a4d-48e8-8366-6ddf2ecad801&amp;amp;displaylang=en"&gt;Silverlight
4.0 tools&lt;/a&gt; for Visual Studio 2010&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;Creating the Project:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
As stated in the opening and prerequisites, I am starting with an existing Asp.Net
MVC application. You should have Blend 4 installed, and have also installed the Silverlight
4 tools for Visual Studio.
&lt;/p&gt;
&lt;p&gt;
1) Right click on your web project and choose add new item (ctrl+shift+a). From the
add new Item window, click on Silverlight under Installed Templates and then select
the Silverlight Application. Name your Silverlight application appropriately. In my
example, I have named my project DataVisualization. Click Add
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/image_2.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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/image_thumb.png" width="244" height="171"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
2) The next screen that comes up is the “Add Silverlight Application” screen. I accepted
the defaults with the follow exception, I changed the location from being a sub folder
of my MVC application to one level higher. The destination folder, ClientBin is still
created in your MVC application. Make sure that you select Silverlight 4 for the version.
Finally click Add.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/image_thumb_1.png" width="244" height="225"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
3) You should now have the following in your solution.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Your existing Asp.Net MVC application 
&lt;li&gt;
A new Silverlight 4 application named DataVisualization 
&lt;li&gt;
A DataVisualizationTestPage.aspx in your MVC application 
&lt;li&gt;
A DataVisualizationTestPage.html in your MVC application 
&lt;li&gt;
A Silverlight.js in your MVC application&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
We will eventually remove the test pages, but for now we will leave them so that they
can serve their intended purpose. 
&lt;/p&gt;
&lt;p&gt;
4) Build the solution. You should see a DataVisualization.xap added to the ClientBin
folder in your MVC application.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/image_6.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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/image_thumb_2.png" width="244" height="235"&gt;&lt;/a&gt;&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
5) Right click on DataVisualization.html and choose view in browser. You should see
an empty page in the browser, but get no errors. Right clicking anywhere in the browser
window should bring up the Silverlight context menu.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/image_8.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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/image_thumb_3.png" width="244" height="208"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Integrate the Silverlight Application&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
In this stage, we are going to make our new Silverlight application appear like it’s
part of the rest of our MVC application. Right now if you browse to it, it doesn’t
look like its part of anything. We also want to be able to allow our users to navigate
thru our web application so we need our existing menu to show up.
&lt;/p&gt;
&lt;p&gt;
1) Either create a new controller/view or re-use an existing controller/view in your
MVC application to house your Silverlight application. I’m going to reuse an existing
controller called Dashboard, which has one view, Index.
&lt;/p&gt;
&lt;p&gt;
2) Open up your view, and the DataVisualizationTestPage.aspx file. We need to move
some stuff over to our view so it displays our Silverlight application. I have some
pre existing styling and layout defined, so my view is going to look differently from
yours. I also store my java script files in a specific location, so I will be moving
the included silverlight.js as well. The screen shot below shows what I am starting
with in the view for reference.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/image_10.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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/image_thumb_4.png" width="244" height="121"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
3) If you don’t have any existing standard for your JavaScript, you can place the
two script tags from the test page somewhere before the reference to the Silverlight
object. For example, place the two script tags just below the second content place
holder. Next, copy the form tag inclusive and paste it into your view. For me, I pasted
it into my div tag that I have setup to control my formatting. In the screen shots
below you can see my view, and resulting web page. We still have an empty Silverlight
control, but now it looks like its actually part of our website. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/image_12.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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/image_thumb_5.png" width="343" height="186"&gt;&lt;/a&gt; &lt;a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/image_14.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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/image_thumb_6.png" width="244" height="187"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
4) Remove the DataVisualizationTest.aspx page, but keep the HTML page as we will need
it in the next section.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Working with Blend&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The final step is to begin adding content to our Silverlight application. For this
we are going to switch to Blend to make sure that we are able to work in both tools. 
&lt;/p&gt;
&lt;p&gt;
1) Start up Blend and choose to open an existing project. Browse to the location of
your DataVisualization project (folder that contains DataVisualization.csproj) and
open it. You should see the content of your project listed on the left under the project
tab (assuming default Blend layout) and the empty MainPage.xaml in the middle. Notice
that we have a solution called DataVisualization, and that I did not open up my existing
MVC application solution. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/image_16.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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/image_thumb_7.png" width="244" height="150"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
2) Go to Project in the tool bar, and click Run Project (or press F5). You will see
that our empty MainPage is shown using the DataVisualizationTest.html page, and that
we are using the local Asp.Net development server. This is good enough for me. I’m
hoping that with this setup I can work independently of my MVC application, and more
importantly, a designer would be able to work independently as well. When deploying
my application to production, I can remove the DataVisualizationTest.html page. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/image_18.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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/SilverlightinanExistingAsp.NetMVCProject_8B5E/image_thumb_8.png" width="244" height="125"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
3) TFS Integration – At this point I can’t figure out how to get Blend to work with
TFS. It’s possible since I downloaded the trial version that it does not include TFS
support, or I need to install Team Explorer on top of Blend. For now I can use the
Explorer add-in to get by. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Conclusion&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
At this point we have a functioning Silverlight application, integrated with an existing
Asp.Net MVC application. We are able to work independently of the web application
in Blend and vice-versa. This is my first attempt at this type of solution, so I will
post a follow-up in the future to report back how well it worked, and if I needed
to make any changes. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.salvoz.com/aggbug.ashx?id=64b6ac5d-b2fe-4ff2-afeb-4449adbfb03b" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.salvoz.com"&gt;Adam Salvo&lt;/a&gt;. </description>
      <comments>http://blog.salvoz.com/CommentView,guid,64b6ac5d-b2fe-4ff2-afeb-4449adbfb03b.aspx</comments>
      <category>Technology/Asp.Net MVC</category>
      <category>Technology/Programming</category>
      <category>Technology/Silverlight</category>
      <category>Technology/Visual Studio</category>
    </item>
    <item>
      <trackback:ping>http://blog.salvoz.com/Trackback.aspx?guid=127e6c47-0aee-48c6-b710-894f3b3f5048</trackback:ping>
      <pingback:server>http://blog.salvoz.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.salvoz.com/PermaLink,guid,127e6c47-0aee-48c6-b710-894f3b3f5048.aspx</pingback:target>
      <dc:creator>Adam Salvo</dc:creator>
      <wfw:comment>http://blog.salvoz.com/CommentView,guid,127e6c47-0aee-48c6-b710-894f3b3f5048.aspx</wfw:comment>
      <wfw:commentRss>http://blog.salvoz.com/SyndicationService.asmx/GetEntryCommentsRss?guid=127e6c47-0aee-48c6-b710-894f3b3f5048</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
With the release of the VS2010 Release Candidate, I went about uninstalling VS2010
beta 2 and ran into an issue. I started out by going to Add/Remove programs to uninstall
VS2010 Ultimate Beta 2, but during the uninstall process, it hung at the point of
running VSTestConfig_UnInstall_def. At the same time, my network adapter was set to
disabled, and could not be enabled. I ended up having to do a hard reset on the machine.
Upon reboot, the entry for Visual Studio was not in Add/Remove programs, however,
running the setup off the Beta 2 ISO allowed me to pick up where I left off. 
</p>
        <p>
The <a href="http://go.microsoft.com/fwlink/?LinkId=182382">VS2010 RC Readme</a> contains
instructions for uninstalling the RC, and a link to the <a href="http://go.microsoft.com/fwlink/?LinkID=143397">VS
2010 B2 readme</a> for the uninstall instructions for that version. So after uninstalling
VS 2010 Ultimate, I uninstalled the remaining components in the following order:
</p>
        <ol>
          <li>
Visual Studio 2010 Tools for Office Runtime Beta 2 
</li>
          <li>
The .NET Framework version 4 Language Pack 
<ol><li>
This was not present on my computer but included in the uninstall instructions</li></ol></li>
          <li>
The .NET Framework version 4 Extended 
<ol><li>
This removed 2 “.Net Framework 4” items from the list 
</li><li>
I was prompted to reboot and did so</li></ol></li>
          <li>
The .NET Framework version 4 Client 
<ol><li>
I was prompted to reboot and did so</li></ol></li>
        </ol>
        <p>
At this point, I felt that I had uninstalled everything I needed to, so I proceeded
to mount the RC .iso and proceed with the installation. It looks like we’ll be getting
the premium edition at work when it RTM’s, so I went with that edition for the Release
Candidate. I figured there is no sense in playing around with features that I won’t
have in a couple of months.  
</p>
        <p>
After a quick reboot during the install (happens after .Net 4 is installed), the rest
of the installation went flawlessly. I fired up Visual Studio, and it did open noticeably
faster for my small solution. My TDD.Net plugin for XUnit was still fully functional
which I was not expecting. All unit tests passed for my Windows Service application
I’ve been working on.
</p>
        <p>
On the web side of things, just about everything is working, and all tests pass on
my Asp.Net MVC application. The one exception is the client side Asp.Net MVC validation
on my logon page. The other pages that have the client side validation work fine.
I’ve tried updating the .js files from a newly created MVC project, as well as trying
the Microsoft Ajax script files instead of the JQuery files. At this point I’m not
going to waste any more time on it.
</p>
        <p>
Next up, TFS 2010 RC install.
</p>
        <img width="0" height="0" src="http://blog.salvoz.com/aggbug.ashx?id=127e6c47-0aee-48c6-b710-894f3b3f5048" />
        <br />
        <hr />
This weblog is sponsored by <a href="http://www.salvoz.com">Adam Salvo</a>. 
</body>
      <title>Uninstall VS2010 Beta2 for RC</title>
      <guid isPermaLink="false">http://blog.salvoz.com/PermaLink,guid,127e6c47-0aee-48c6-b710-894f3b3f5048.aspx</guid>
      <link>http://blog.salvoz.com/2010/02/11/UninstallVS2010Beta2ForRC.aspx</link>
      <pubDate>Thu, 11 Feb 2010 17:12:13 GMT</pubDate>
      <description>&lt;p&gt;
With the release of the VS2010 Release Candidate, I went about uninstalling VS2010
beta 2 and ran into an issue. I started out by going to Add/Remove programs to uninstall
VS2010 Ultimate Beta 2, but during the uninstall process, it hung at the point of
running VSTestConfig_UnInstall_def. At the same time, my network adapter was set to
disabled, and could not be enabled. I ended up having to do a hard reset on the machine.
Upon reboot, the entry for Visual Studio was not in Add/Remove programs, however,
running the setup off the Beta 2 ISO allowed me to pick up where I left off. 
&lt;/p&gt;
&lt;p&gt;
The &lt;a href="http://go.microsoft.com/fwlink/?LinkId=182382"&gt;VS2010 RC Readme&lt;/a&gt; contains
instructions for uninstalling the RC, and a link to the &lt;a href="http://go.microsoft.com/fwlink/?LinkID=143397"&gt;VS
2010 B2 readme&lt;/a&gt; for the uninstall instructions for that version. So after uninstalling
VS 2010 Ultimate, I uninstalled the remaining components in the following order:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Visual Studio 2010 Tools for Office Runtime Beta 2 
&lt;li&gt;
The .NET Framework version 4 Language Pack 
&lt;ol&gt;
&lt;li&gt;
This was not present on my computer but included in the uninstall instructions&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;
The .NET Framework version 4 Extended 
&lt;ol&gt;
&lt;li&gt;
This removed 2 “.Net Framework 4” items from the list 
&lt;li&gt;
I was prompted to reboot and did so&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;
The .NET Framework version 4 Client 
&lt;ol&gt;
&lt;li&gt;
I was prompted to reboot and did so&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
At this point, I felt that I had uninstalled everything I needed to, so I proceeded
to mount the RC .iso and proceed with the installation. It looks like we’ll be getting
the premium edition at work when it RTM’s, so I went with that edition for the Release
Candidate. I figured there is no sense in playing around with features that I won’t
have in a couple of months.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
After a quick reboot during the install (happens after .Net 4 is installed), the rest
of the installation went flawlessly. I fired up Visual Studio, and it did open noticeably
faster for my small solution. My TDD.Net plugin for XUnit was still fully functional
which I was not expecting. All unit tests passed for my Windows Service application
I’ve been working on.
&lt;/p&gt;
&lt;p&gt;
On the web side of things, just about everything is working, and all tests pass on
my Asp.Net MVC application. The one exception is the client side Asp.Net MVC validation
on my logon page. The other pages that have the client side validation work fine.
I’ve tried updating the .js files from a newly created MVC project, as well as trying
the Microsoft Ajax script files instead of the JQuery files. At this point I’m not
going to waste any more time on it.
&lt;/p&gt;
&lt;p&gt;
Next up, TFS 2010 RC install.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.salvoz.com/aggbug.ashx?id=127e6c47-0aee-48c6-b710-894f3b3f5048" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.salvoz.com"&gt;Adam Salvo&lt;/a&gt;. </description>
      <comments>http://blog.salvoz.com/CommentView,guid,127e6c47-0aee-48c6-b710-894f3b3f5048.aspx</comments>
      <category>Technology/Visual Studio</category>
    </item>
    <item>
      <trackback:ping>http://blog.salvoz.com/Trackback.aspx?guid=50c5ad5a-ce84-4c7b-aab3-63b22b1af93d</trackback:ping>
      <pingback:server>http://blog.salvoz.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.salvoz.com/PermaLink,guid,50c5ad5a-ce84-4c7b-aab3-63b22b1af93d.aspx</pingback:target>
      <dc:creator>Adam Salvo</dc:creator>
      <wfw:comment>http://blog.salvoz.com/CommentView,guid,50c5ad5a-ce84-4c7b-aab3-63b22b1af93d.aspx</wfw:comment>
      <wfw:commentRss>http://blog.salvoz.com/SyndicationService.asmx/GetEntryCommentsRss?guid=50c5ad5a-ce84-4c7b-aab3-63b22b1af93d</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <strong>Scenario</strong>
        </p>
        <p>
Locally developed Asp.Net MVC 2 application which needs to be deployed to a remote
web server. The web server, running IIS 7.5 is hosted by a 3rd party, but we have
full administrative access (Virtual Machine). In order to meet our deployment needs,
we will install and configure <a href="http://www.iis.net/expand/WebDeploymentTool">MSDeploy</a>.
MSDeploy is a new add-on for IIS 6 and above which enables the package and installation
of web applications, and optionally remote deployment and administration. You can
also use it to synchronize settings between web servers, for example in a Web Farm.
It is the remote deployment that we are most interested in, which is built upon the
packaging and installation piece. For this post I will be assuming a deployment source
of Visual Studio 2010 Beta 2. MSDeploy ships with an API which can be used to do the
deployment from say a build task on a Build Server (stay tuned for a follow-up post
on that). 
</p>
        <p>
          <strong>Installation</strong>
        </p>
        <p>
First you need to download MSDeploy to your remote web server and install it. Here
is the <a href="http://go.microsoft.com/?linkid=9684517">direct link</a> for the 64
bit version of MSDeploy. Other version can be downloaded from the <a href="http://www.iis.net/expand/WebDeploymentTool">MSDeploy</a> website.
Once downloaded, run the MSI installer and select the custom option. You need to select
the IIS 6 Deployment Hanlder to get the remote deployment feature. I also select the
UI Module and Management Service Delegation UI (See screen shot below). After selecting
the desire components, hit next, then install.
</p>
        <p>
          <a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_2.png">
            <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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_thumb.png" width="244" height="189" />
          </a>
        </p>
        <p>
          <strong>Configuration Overview</strong>
        </p>
        <p>
If you had IIS Manager open during the installation, you will need to restart it.
Once restarted, you can right click on the Default Web Site and you should see a deploy
option listed.
</p>
        <p>
          <a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_6.png">
            <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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_thumb_2.png" width="244" height="164" />
          </a>
        </p>
        <p>
Next we will be configuring some accounts and permissions for our remote deployment,
following the instructions provided by Microsoft, which can be viewed in their entirety <a href="http://technet.microsoft.com/en-us/library/dd722796(WS.10).aspx">here</a>.
Following these rules we will be able to create a specific account for our application
which limits our external exposure. I’m happy to see we can use the new IIS Users/Management
feature instead of having to create a local or domain windows account. Here is an
overview of the steps we will be doing:
</p>
        <ol>
          <li>
            <p>
Create an IIS Manager user account for the customer.
</p>
          </li>
          <li>
            <p>
Give the WMSvc account access to the customer’s directory.
</p>
          </li>
          <li>
            <p>
Configure delegation for the customer.
</p>
          </li>
          <li>
            <p>
Add delegation rules for the customer.
</p>
          </li>
          <li>
            <p>
Restart the Web Management Service.
</p>
          </li>
          <li>
            <p>
Test the Web Deployment Handler.
</p>
          </li>
        </ol>
        <p>
          <strong>Step 1 – Create an IIS Manager User</strong>
        </p>
        <p>
In IIS manager, select the root server level (this is usually named after the name
of the computer IIS is running on, it’s the node just below Start Page). Once selected
scroll down in the middle pane to the Management section and select IIS Manager Users.
</p>
        <p>
          <a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_8.png">
            <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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_thumb_3.png" width="244" height="47" />
          </a>
        </p>
        <ul>
          <li>
Double click on IIS Manger Users 
</li>
          <li>
Click Add User from the actions list on the far right side 
</li>
          <li>
Enter a username, and a strong password 
</li>
          <li>
Click OK</li>
        </ul>
        <p>
I used the naming convention, [AppName]User, and a randomly generated password from <a href="http://keepass.info/">KeePass</a>.
Once created you get additional options for managing the user, like Change Password,
and Disable. 
</p>
        <p>
        </p>
        <p>
          <strong>Step 2 – Grant the WMSvc account access to our directory</strong>
        </p>
        <p>
The Service name (as shown in the Services MMC) is Web Management Service, and is
not started by default. Using the Services MMC, start the Web Management Service and
set it’s start-up type to Automatic, or Automatic-Delayed. 
</p>
        <p>
Note the user account that the service is running under. By default it runs as Local
Service. You will need to Grant the Local Service account full permissions to the
targeted deployment directory. Since I’d like to look into running the Web Management
Service as a lower privileged account in the future, I took the extra steps to create
a local user group called MSDeplyUsers, added Local Service to it, and granted permissions
to the group. This will allow me to more easily switch accounts in the future. 
</p>
        <p>
Before proceeding, you may need to make an additional change to your IIS server configuration.
By default, the Management Service is not configured to accept remote connections.
While the Web Management Service is stopped, in IIS Manager, click your top level
server node on the left, and then select Management Service under Management in the
center pane.
</p>
        <p>
          <a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_12.png">
            <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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_thumb_5.png" width="244" height="52" />
          </a>
        </p>
        <p>
Check the box for Enable remote connections, and select a SSL certificate. I’m using
a self signed SSL cert for now. I also added IP restrictions to restrict remote deployments
from my office only. You can use <a href="http://www.whatismyip.com">www.whatismyip.com</a> to
determine you IP, but unless you have a static IP, you may have to come back and change
this often. You will also need to add the port specified to your allow section in
your firewall rules. 
</p>
        <p>
          <a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_14.png">
            <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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_thumb_6.png" width="218" height="244" />
          </a>
        </p>
        <p>
          <strong>Step 3 – Configure Delegation</strong>
        </p>
        <p>
In order for our user account we created in Step 1 to have access to their folder,
we need to grant permissions on the folder (or site). You can only set folder level
permissions if the folder is setup as an Application.
</p>
        <p>
Once you have selected the level (using the navigation tree on the left) at which
to grant permissions, you can select the IIS Manger Permissions option in the central
pane.
</p>
        <p>
          <a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_10.png">
            <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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_thumb_4.png" width="244" height="114" />
          </a>
        </p>
        <ul>
          <li>
Click on IIS Manger Permissions 
</li>
          <li>
Click on Allow User on the far right pane 
</li>
          <li>
Select IIS User and then select the user you created in Step 1</li>
        </ul>
        <p>
          <strong>Step 4 – Add delegation rules</strong>
        </p>
        <p>
We now need to grant some specific rights to our user so they can deploy. This is
done using the Management tools at the server level.
</p>
        <ul>
          <li>
Double click on Management Service Delegation 
</li>
          <li>
Click on Add rule on the actions pane 
</li>
          <li>
Select the Deploy Content Only Template (I, as an administrator will handle the configuration
of the application directory and advanced configuration). 
</li>
          <li>
Accept all default 
<ul><li>
Providers: contentPath 
</li><li>
Actions: * 
</li><li>
Path Type: Path Prefix 
</li><li>
Path: {userScope} 
</li><li>
Run As: Current User</li></ul></li>
          <li>
When you click OK, you will be asked to provide the name of a user to add to the rule.
This is where you specify your user you created in Step 1. 
</li>
        </ul>
        <p>
The steps for IIS 7.5 may differ from IIS 7.
</p>
        <p>
          <strong>Step 6 – Restart Web Management Service</strong>
        </p>
        <p>
Pretty self explanatory, using the Services restart, or start the Web Management Service.
</p>
        <p>
          <strong>Step 7 – Test</strong>
        </p>
        <p>
In visual study, you need to publish your web application to your newly configured
remote server. Right click on your web project and choose Publish. In the screen that
comes up, select MSDeploy Publish as your Publish Method and fill in the settings
to match what we did in Steps 1 – 6.
</p>
        <p>
          <a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_16.png">
            <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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_thumb_7.png" width="178" height="244" />
          </a>
        </p>
        <p>
Assuming everything is setup correctly, you should be able to publish you application
to your remote server. Based on the rules we setup in Step 4, this will only publish
content. It will not deploy database scripts, or create the application for you (mark
the folder as an application). You can follow the more <a href="http://technet.microsoft.com/en-us/library/dd722796(WS.10).aspx">detailed
instructions</a> to set this up, but I wanted to keep this simple for now. 
</p>
        <p>
          <strong>Trouble Shooting</strong>
        </p>
        <p>
Nothing ever works right on the first time does it? It took me a couple of tries (by
couple I mean hundreds) to get all the configuration setup on the client and server.
Here are some of the errors I got and what I did to fix them:
</p>
        <blockquote>
          <p>
            <strong>Connection Timeout</strong>
          </p>
          <p>
Could not complete the request to remote agent URL '<a href="https://Server:8172/msdeploy.axd?site=&lt;site&gt;'">https://Server:8172/msdeploy.axd?site=&lt;site&gt;'</a>.<br />
Unable to connect to the remote server<br />
A connection attempt failed because the connected party did not properly respond after
a period of time, or established connection failed because connected host has failed
to respond &lt;Server&gt;:8172
</p>
        </blockquote>
        <blockquote>
          <p>
If you get connection timeouts, make sure you can browse to the Service URL entered
above in the publish web screen. If you can’t, you hosting provider may be blocking
port 8172. You should at least get prompted for credentials when using a Web Browser.
If using a self signed cert, you will also get a certificate warning in the browser.
Finally, you should see you attempt in the Log Files for the Management Service. The
default path for the log files is: %SystemDrive%\Inetpub\logs\WMSvc
</p>
          <p>
            <strong>Error 400 Bad Request</strong>
          </p>
          <p>
Remote agent (URL <a href="https://Server:8172/MsDeploy.axd:8172/msdeploy.axd?site=&lt;site&gt;)">https://Server:8172/MsDeploy.axd:8172/msdeploy.axd?site=&lt;site&gt;)</a> could
not be contacted.  Make sure the remote agent service is installed and started
on the target computer.<br />
An unsupported response was received. The response header 'MSDeploy.Response' was
'' but 'v1' was expected.<br />
The remote server returned an error: (400) Bad Request.
</p>
        </blockquote>
        <blockquote>
          <p>
This one was driving me nuts, and the fix/cause is absolutely ridiculous. Notice the
two /MsDeploy.axd, one pascal cased, and the other all lower case. Now take a look
at the following screen shot and compare have I have in the ServiceUrl and the example
service URL provided in the same dialog.
</p>
          <p>
            <a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_20.png">
              <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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_thumb_1.png" width="244" height="35" />
            </a>
          </p>
          <p>
Looks like it should work right? Nope, doesn’t work. What fixed it, changing it so
that the /MsDeploy was all lower case as in <a href="https://Server:8172/msdeploy.axd">https://Server:8172/msdeploy.axd</a>.
This got rid of the first MsDeploy.axd.
</p>
          <p>
            <strong>Error 401 </strong> 
</p>
        </blockquote>
        <p>
        </p>
        <blockquote>
          <p>
Remote agent (URL <a href="https://Server:8172/msdeploy.axd?site=Default">https://Server:8172/msdeploy.axd?site=Default</a> Web
Site) could not be contacted.  Make sure the remote agent service is installed
and started on the target computer.<br />
An unsupported response was received. The response header 'MSDeploy.Response' was
'' but 'v1' was expected.<br />
The remote server returned an error: (401) Unauthorized.
</p>
        </blockquote>
        <blockquote>
          <p>
The first question I had was, is the site “Default Web Site” correct? I was worried
about the spaces in the name, but after reviewing the log files, the correct escape
characters for a space where present. The full result code was a 401.2. I saw that
my user account I created in Step 1 was being passed thru, and assumed that it had
something to do with that.
</p>
        </blockquote>
        <blockquote>
          <p>
I changed my credentials to an Windows Administrative account and gave that a go,
and it worked. This means the service itself works, but either my authentication or
authorization for the IIS user account is incorrect. If you are having problems with
an administrative account, you need to make sure that you have the option enabled
for Administrators to bypass rules. This is under Management Service Delegate, Edit
Features. If you change this setting, you need to restart the Management Service.
</p>
        </blockquote>
        <blockquote>
          <p>
            <a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_22.png">
              <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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_thumb_9.png" width="244" height="113" />
            </a>
          </p>
        </blockquote>
        <blockquote>
          <p>
When I had the Allow Administrators to bypass rules box unchecked, I got a different
error message, one that said I was unauthorized to perform an action, not a 401. This
led me to believe that my IIS User was suffering from an Authentication issue, not
authorization. 
</p>
        </blockquote>
        <blockquote>
          <p>
Since the IIS Users are for management, I decided to try connecting to my Application
using the IIS Management tool. Running this as a non-administrator you presented with
a “empty” view. Right clicking on clicking on Start Page allows you to Connect to
a Server, Web Site or Application. Selecting Application, and entering my credentials
left me with a 401 Unauthorized error, confirming my belief that its a problem with
the IIS User and not MSDeploy.<br /></p>
          <p>
            <a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_24.png">
              <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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_thumb_10.png" width="244" height="206" />
            </a>
          </p>
        </blockquote>
        <p>
        </p>
        <blockquote>
          <p>
After playing around with the IIS settings, the IIS User account started working when
connecting via IIS Manager, but not via VS. I do not believe I changed anything (without
changing it back) to explain why it started working in IIS manager. The result codes
when it was failing was the same 401.2 as I was getting when connecting via IIS.
</p>
          <p>
            <strike>For now I have to leave this as an open issue, and maybe try again on a local
server.</strike>
          </p>
          <p>
            <strong>UPDATE:</strong>
          </p>
          <p>
I got it working more or less. Check out the comments for what I had to do.
</p>
        </blockquote>
        <img width="0" height="0" src="http://blog.salvoz.com/aggbug.ashx?id=50c5ad5a-ce84-4c7b-aab3-63b22b1af93d" />
        <br />
        <hr />
This weblog is sponsored by <a href="http://www.salvoz.com">Adam Salvo</a>. 
</body>
      <title>Deploying Asp.Net MVC 2 Application to Remote WebServer using MSDeploy</title>
      <guid isPermaLink="false">http://blog.salvoz.com/PermaLink,guid,50c5ad5a-ce84-4c7b-aab3-63b22b1af93d.aspx</guid>
      <link>http://blog.salvoz.com/2010/02/03/DeployingAspNetMVC2ApplicationToRemoteWebServerUsingMSDeploy.aspx</link>
      <pubDate>Wed, 03 Feb 2010 21:45:53 GMT</pubDate>
      <description>&lt;p&gt;
&lt;strong&gt;Scenario&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Locally developed Asp.Net MVC 2 application which needs to be deployed to a remote
web server. The web server, running IIS 7.5 is hosted by a 3rd party, but we have
full administrative access (Virtual Machine). In order to meet our deployment needs,
we will install and configure &lt;a href="http://www.iis.net/expand/WebDeploymentTool"&gt;MSDeploy&lt;/a&gt;.
MSDeploy is a new add-on for IIS 6 and above which enables the package and installation
of web applications, and optionally remote deployment and administration. You can
also use it to synchronize settings between web servers, for example in a Web Farm.
It is the remote deployment that we are most interested in, which is built upon the
packaging and installation piece. For this post I will be assuming a deployment source
of Visual Studio 2010 Beta 2. MSDeploy ships with an API which can be used to do the
deployment from say a build task on a Build Server (stay tuned for a follow-up post
on that). 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Installation&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
First you need to download MSDeploy to your remote web server and install it. Here
is the &lt;a href="http://go.microsoft.com/?linkid=9684517"&gt;direct link&lt;/a&gt; for the 64
bit version of MSDeploy. Other version can be downloaded from the &lt;a href="http://www.iis.net/expand/WebDeploymentTool"&gt;MSDeploy&lt;/a&gt; website.
Once downloaded, run the MSI installer and select the custom option. You need to select
the IIS 6 Deployment Hanlder to get the remote deployment feature. I also select the
UI Module and Management Service Delegation UI (See screen shot below). After selecting
the desire components, hit next, then install.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_2.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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_thumb.png" width="244" height="189"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Configuration Overview&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
If you had IIS Manager open during the installation, you will need to restart it.
Once restarted, you can right click on the Default Web Site and you should see a deploy
option listed.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_6.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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_thumb_2.png" width="244" height="164"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Next we will be configuring some accounts and permissions for our remote deployment,
following the instructions provided by Microsoft, which can be viewed in their entirety &lt;a href="http://technet.microsoft.com/en-us/library/dd722796(WS.10).aspx"&gt;here&lt;/a&gt;.
Following these rules we will be able to create a specific account for our application
which limits our external exposure. I’m happy to see we can use the new IIS Users/Management
feature instead of having to create a local or domain windows account. Here is an
overview of the steps we will be doing:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;
Create an IIS Manager user account for the customer.
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Give the WMSvc account access to the customer’s directory.
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Configure delegation for the customer.
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Add delegation rules for the customer.
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Restart the Web Management Service.
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Test the Web Deployment Handler.
&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
&lt;strong&gt;Step 1 – Create an IIS Manager User&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
In IIS manager, select the root server level (this is usually named after the name
of the computer IIS is running on, it’s the node just below Start Page). Once selected
scroll down in the middle pane to the Management section and select IIS Manager Users.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_8.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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_thumb_3.png" width="244" height="47"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Double click on IIS Manger Users 
&lt;li&gt;
Click Add User from the actions list on the far right side 
&lt;li&gt;
Enter a username, and a strong password 
&lt;li&gt;
Click OK&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
I used the naming convention, [AppName]User, and a randomly generated password from &lt;a href="http://keepass.info/"&gt;KeePass&lt;/a&gt;.
Once created you get additional options for managing the user, like Change Password,
and Disable. 
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Step 2 – Grant the WMSvc account access to our directory&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The Service name (as shown in the Services MMC) is Web Management Service, and is
not started by default. Using the Services MMC, start the Web Management Service and
set it’s start-up type to Automatic, or Automatic-Delayed. 
&lt;/p&gt;
&lt;p&gt;
Note the user account that the service is running under. By default it runs as Local
Service. You will need to Grant the Local Service account full permissions to the
targeted deployment directory. Since I’d like to look into running the Web Management
Service as a lower privileged account in the future, I took the extra steps to create
a local user group called MSDeplyUsers, added Local Service to it, and granted permissions
to the group. This will allow me to more easily switch accounts in the future. 
&lt;/p&gt;
&lt;p&gt;
Before proceeding, you may need to make an additional change to your IIS server configuration.
By default, the Management Service is not configured to accept remote connections.
While the Web Management Service is stopped, in IIS Manager, click your top level
server node on the left, and then select Management Service under Management in the
center pane.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_12.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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_thumb_5.png" width="244" height="52"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Check the box for Enable remote connections, and select a SSL certificate. I’m using
a self signed SSL cert for now. I also added IP restrictions to restrict remote deployments
from my office only. You can use &lt;a href="http://www.whatismyip.com"&gt;www.whatismyip.com&lt;/a&gt; to
determine you IP, but unless you have a static IP, you may have to come back and change
this often. You will also need to add the port specified to your allow section in
your firewall rules. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_14.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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_thumb_6.png" width="218" height="244"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Step 3 – Configure Delegation&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
In order for our user account we created in Step 1 to have access to their folder,
we need to grant permissions on the folder (or site). You can only set folder level
permissions if the folder is setup as an Application.
&lt;/p&gt;
&lt;p&gt;
Once you have selected the level (using the navigation tree on the left) at which
to grant permissions, you can select the IIS Manger Permissions option in the central
pane.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_10.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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_thumb_4.png" width="244" height="114"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Click on IIS Manger Permissions 
&lt;li&gt;
Click on Allow User on the far right pane 
&lt;li&gt;
Select IIS User and then select the user you created in Step 1&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;Step 4 – Add delegation rules&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
We now need to grant some specific rights to our user so they can deploy. This is
done using the Management tools at the server level.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Double click on Management Service Delegation 
&lt;li&gt;
Click on Add rule on the actions pane 
&lt;li&gt;
Select the Deploy Content Only Template (I, as an administrator will handle the configuration
of the application directory and advanced configuration). 
&lt;li&gt;
Accept all default 
&lt;ul&gt;
&lt;li&gt;
Providers: contentPath 
&lt;li&gt;
Actions: * 
&lt;li&gt;
Path Type: Path Prefix 
&lt;li&gt;
Path: {userScope} 
&lt;li&gt;
Run As: Current User&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
When you click OK, you will be asked to provide the name of a user to add to the rule.
This is where you specify your user you created in Step 1. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
The steps for IIS 7.5 may differ from IIS 7.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Step 6 – Restart Web Management Service&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Pretty self explanatory, using the Services restart, or start the Web Management Service.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Step 7 – Test&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
In visual study, you need to publish your web application to your newly configured
remote server. Right click on your web project and choose Publish. In the screen that
comes up, select MSDeploy Publish as your Publish Method and fill in the settings
to match what we did in Steps 1 – 6.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_16.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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_thumb_7.png" width="178" height="244"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Assuming everything is setup correctly, you should be able to publish you application
to your remote server. Based on the rules we setup in Step 4, this will only publish
content. It will not deploy database scripts, or create the application for you (mark
the folder as an application). You can follow the more &lt;a href="http://technet.microsoft.com/en-us/library/dd722796(WS.10).aspx"&gt;detailed
instructions&lt;/a&gt; to set this up, but I wanted to keep this simple for now. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Trouble Shooting&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Nothing ever works right on the first time does it? It took me a couple of tries (by
couple I mean hundreds) to get all the configuration setup on the client and server.
Here are some of the errors I got and what I did to fix them:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;strong&gt;Connection Timeout&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Could not complete the request to remote agent URL '&lt;a href="https://Server:8172/msdeploy.axd?site=&amp;lt;site&amp;gt;'"&gt;https://Server:8172/msdeploy.axd?site=&amp;lt;site&amp;gt;'&lt;/a&gt;.&lt;br&gt;
Unable to connect to the remote server&lt;br&gt;
A connection attempt failed because the connected party did not properly respond after
a period of time, or established connection failed because connected host has failed
to respond &amp;lt;Server&amp;gt;:8172
&lt;/p&gt;
&lt;/blockquote&gt; &lt;blockquote&gt; 
&lt;p&gt;
If you get connection timeouts, make sure you can browse to the Service URL entered
above in the publish web screen. If you can’t, you hosting provider may be blocking
port 8172. You should at least get prompted for credentials when using a Web Browser.
If using a self signed cert, you will also get a certificate warning in the browser.
Finally, you should see you attempt in the Log Files for the Management Service. The
default path for the log files is: %SystemDrive%\Inetpub\logs\WMSvc
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Error 400 Bad Request&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Remote agent (URL &lt;a href="https://Server:8172/MsDeploy.axd:8172/msdeploy.axd?site=&amp;lt;site&amp;gt;)"&gt;https://Server:8172/MsDeploy.axd:8172/msdeploy.axd?site=&amp;lt;site&amp;gt;)&lt;/a&gt; could
not be contacted.&amp;nbsp; Make sure the remote agent service is installed and started
on the target computer.&lt;br&gt;
An unsupported response was received. The response header 'MSDeploy.Response' was
'' but 'v1' was expected.&lt;br&gt;
The remote server returned an error: (400) Bad Request.
&lt;/p&gt;
&lt;/blockquote&gt; &lt;blockquote&gt; 
&lt;p&gt;
This one was driving me nuts, and the fix/cause is absolutely ridiculous. Notice the
two /MsDeploy.axd, one pascal cased, and the other all lower case. Now take a look
at the following screen shot and compare have I have in the ServiceUrl and the example
service URL provided in the same dialog.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_20.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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_thumb_1.png" width="244" height="35"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Looks like it should work right? Nope, doesn’t work. What fixed it, changing it so
that the /MsDeploy was all lower case as in &lt;a href="https://Server:8172/msdeploy.axd"&gt;https://Server:8172/msdeploy.axd&lt;/a&gt;.
This got rid of the first MsDeploy.axd.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Error 401 &lt;/strong&gt;&amp;nbsp;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Remote agent (URL &lt;a href="https://Server:8172/msdeploy.axd?site=Default"&gt;https://Server:8172/msdeploy.axd?site=Default&lt;/a&gt; Web
Site) could not be contacted.&amp;nbsp; Make sure the remote agent service is installed
and started on the target computer.&lt;br&gt;
An unsupported response was received. The response header 'MSDeploy.Response' was
'' but 'v1' was expected.&lt;br&gt;
The remote server returned an error: (401) Unauthorized.
&lt;/p&gt;
&lt;/blockquote&gt; &lt;blockquote&gt; 
&lt;p&gt;
The first question I had was, is the site “Default Web Site” correct? I was worried
about the spaces in the name, but after reviewing the log files, the correct escape
characters for a space where present. The full result code was a 401.2. I saw that
my user account I created in Step 1 was being passed thru, and assumed that it had
something to do with that.
&lt;/p&gt;
&lt;/blockquote&gt; &lt;blockquote&gt; 
&lt;p&gt;
I changed my credentials to an Windows Administrative account and gave that a go,
and it worked. This means the service itself works, but either my authentication or
authorization for the IIS user account is incorrect. If you are having problems with
an administrative account, you need to make sure that you have the option enabled
for Administrators to bypass rules. This is under Management Service Delegate, Edit
Features. If you change this setting, you need to restart the Management Service.
&lt;/p&gt;
&lt;/blockquote&gt; &lt;blockquote&gt; 
&lt;p&gt;
&lt;a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_22.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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_thumb_9.png" width="244" height="113"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;/blockquote&gt; &lt;blockquote&gt; 
&lt;p&gt;
When I had the Allow Administrators to bypass rules box unchecked, I got a different
error message, one that said I was unauthorized to perform an action, not a 401. This
led me to believe that my IIS User was suffering from an Authentication issue, not
authorization. 
&lt;/p&gt;
&lt;/blockquote&gt; &lt;blockquote&gt; 
&lt;p&gt;
Since the IIS Users are for management, I decided to try connecting to my Application
using the IIS Management tool. Running this as a non-administrator you presented with
a “empty” view. Right clicking on clicking on Start Page allows you to Connect to
a Server, Web Site or Application. Selecting Application, and entering my credentials
left me with a 401 Unauthorized error, confirming my belief that its a problem with
the IIS User and not MSDeploy.&lt;br&gt;
&lt;p&gt;
&lt;a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_24.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" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/Dep.NetMVC2ApplicationtoRemoteWebServeru_9778/image_thumb_10.png" width="244" height="206"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
After playing around with the IIS settings, the IIS User account started working when
connecting via IIS Manager, but not via VS. I do not believe I changed anything (without
changing it back) to explain why it started working in IIS manager. The result codes
when it was failing was the same 401.2 as I was getting when connecting via IIS.
&lt;/p&gt;
&lt;p&gt;
&lt;strike&gt;For now I have to leave this as an open issue, and maybe try again on a local
server.&lt;/strike&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;UPDATE:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
I got it working more or less. Check out the comments for what I had to do.
&lt;/p&gt;
&lt;/blockquote&gt;&lt;img width="0" height="0" src="http://blog.salvoz.com/aggbug.ashx?id=50c5ad5a-ce84-4c7b-aab3-63b22b1af93d" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.salvoz.com"&gt;Adam Salvo&lt;/a&gt;. </description>
      <comments>http://blog.salvoz.com/CommentView,guid,50c5ad5a-ce84-4c7b-aab3-63b22b1af93d.aspx</comments>
      <category>Technology/Programming</category>
      <category>Technology/Visual Studio</category>
    </item>
    <item>
      <trackback:ping>http://blog.salvoz.com/Trackback.aspx?guid=47c796be-3528-4c80-b8b8-8b1da09a5939</trackback:ping>
      <pingback:server>http://blog.salvoz.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.salvoz.com/PermaLink,guid,47c796be-3528-4c80-b8b8-8b1da09a5939.aspx</pingback:target>
      <dc:creator>Adam Salvo</dc:creator>
      <wfw:comment>http://blog.salvoz.com/CommentView,guid,47c796be-3528-4c80-b8b8-8b1da09a5939.aspx</wfw:comment>
      <wfw:commentRss>http://blog.salvoz.com/SyndicationService.asmx/GetEntryCommentsRss?guid=47c796be-3528-4c80-b8b8-8b1da09a5939</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <em>This post is part of my PDC09 Conference Notes series. These are my raw notes
taken while watching the various session videos from PDC09. Refer to my <a href="http://blog.salvoz.com/2009/11/25/PDC2009Notes.aspx">original
post</a> for some conventions I tried to use.</em>
        </p>
        <ul>
          <li>
4 Scenarios: 
<ul><li>
It Works on My Machine 
</li><li>
Choose the right tests 
</li><li>
Solve Complex Debugging Tasks 
</li><li>
Multi-Tier Performance Analysis</li></ul></li>
        </ul>
        <ul>
          <li>
Hard to Reproduce Bugs (It works on my machine/I can't reproduce it) 
<ul><li>
Solved by a new feature, IntelliTrace 
</li><li>
Used to be solved by adding Debug statements 
</li><li>
IntelliTrace adds Record, Playback and Rewind 
</li><li>
Demo shows a nightly build that failed 
<ul><li>
Click thru the build report to view the IntelliTrace log file 
</li><li>
Shows Threads, test data, system info, loaded modules 
</li><li>
Double click on call stack for the exception (test failure) line where error occurred
and takes you to the exact line in the source code. 
</li><li>
Step forwards and backwards in playback to view what was going on (variable state,
etc) 
</li><li>
Filter which events you want to see (Asp.Net, ADO.Net, Registy, etc)</li></ul></li></ul><ul><li>
You can now see the return value of methods! 
</li><li>
Records the exact execution path thru branches eliminating guess work. 
</li><li>
No need to add anything to your code 
</li><li>
Various levels of recording. The more you record, the higher the performance impact.
No mention was made of how much of a performance hit, although the default settings
are not supposed to impact it much. 
</li><li>
Works with Asp.Net as well. Tracks events like gets and posts, allows you to jump
into code at that point in time 
</li><li>
How does it Work? 
<ul><li>
IntelliTrace record starts, loads CollectionPlan.xml and starts recording 
</li><li>
IntelliTrace does not allow you to change what happens in your code since it's a recording.
You can't change a variable for example</li></ul></li></ul><ul><li>
Settings 
<ul><li>
IntelliTrace is set in Tools/Options/Intellitrace. 
</li><li>
Maximum amount of disk space for recording 
</li><li>
Where are they stored? C:\ProgramData\Microsoft Visual Studio\10.0\TraceDebugging\</li></ul></li></ul><ul><li>
What do you need to get IntelliTrace on a PC? 
<ul><li>
Install visual studio 
</li><li>
Install Test and Lab Manager 
</li><li>
Install Test Agent</li></ul></li></ul></li>
        </ul>
        <p>
IntelliTrace Options Window<br /><a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/PDC09FT16AdvancedDiagnosticsIntelliTrace_129E8/image_2.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="IntelliTrace Options Window" border="0" alt="IntelliTrace Options Window" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/PDC09FT16AdvancedDiagnosticsIntelliTrace_129E8/image_thumb.png" width="644" height="373" /></a></p>
        <ul>
          <li>
Test Impact Analysis (Choosing the right tests to run) 
<ul><li>
Automatically pinpoint which tests are impacted as a result of a code change, including
manual tests, although I'm not sure how it works 
</li><li>
TIA, as far as I can tell will only run with tests written in MS Test. 
</li><li>
If it can work with Manual tests, I see some advantage with that, but not running
all of your automated tests just seems bad. It seems like they may be fixing a symptom
(slow running tests) instead of the problem (poorly written tests) 
</li><li>
Working from the Nightly Build point of view 
<ul><li>
You can see impacted tests 
</li><li>
You can drill thru the impacted tests to see what changes caused the tests to be impacted.</li></ul></li></ul></li>
        </ul>
        <ul>
          <li>
Multi-Tier Performance Analysis 
<ul><li>
Scenario: Client Side script in the browser, business logic, database calls 
</li><li>
To start, goto Debug and click Start Profile Analysis 
<ul><li>
Select Profile Type 
</li><li>
Select Project, Executable or Asp.net/java script application 
</li><li>
Enable Tier Interaction Profiling</li></ul></li></ul><ul><li>
My Demo (I tried this out locally while watching the video) 
<ul><li>
Ran a Asp.Net MVC project 
</li><li>
I run everything as a normal user, not an admin. However, you need to be an admin,
but VS prompts your for credentials and it just works. 
</li><li>
You start out in summary view, but there is a drop down at the top (Current View)
that gives you access to stuff like Tier Interactions. 
</li><li>
Tier Interactions showed my database calls, the sql executed and how long they took 
</li><li>
It takes a little longer for it to get started, so there is a still a place in my
book for using SQL query analyzer while developing, but for end to end debugging of
slow pages, this is awesome. 
</li></ul></li></ul><ul><li>
Report Shows 
<ul><li>
Most expensive code paths 
</li><li>
Lets you look at "all code" which will include the base class library and loaded modules 
</li><li>
Jump between various report views by right clicking 
</li><li>
Jump to code</li></ul></li></ul></li>
        </ul>
        <ul>
          <li>
Collaborative Debugging (Solve Complex Problems) 
<ul><li>
While debugging, pin the value of a variable to the editor window (right click while
hovering) 
</li><li>
You can add comments to those pinned values 
</li><li>
You can export a break points and data tips as XML which you can then e-mail or what
ever 
</li><li>
After you import the break point and data tips, run the app in debug mode 
<ul><li>
Application will stop on the break point 
</li><li>
The value and comments will be displayed as exported/imported</li></ul></li></ul></li>
        </ul>
        <ul>
          <li>
Debug a Crash in a Deployed Application using Dump Files 
<ul><li>
When application crashes, open up task manager, find the task, right click and chose
create dump file. 
</li><li>
No need to have anything installed to create the dump file 
</li><li>
Open dump file in visual studio, and you can debug it. 
<ul><li>
Shows stuff about the computer it was running on 
</li><li>
Modules Loaded 
</li><li>
OS</li></ul></li></ul><ul><li>
Press ctrl+alt+q to get to QuickWatch, and type in $expression, and you'll get info
on the exception that caused the crash. 
</li><li>
My Test/Demo 
<ul><li>
Create new Widnows forms app with a button. When clicking the button throw new exception. 
</li><li>
Close VS, and run compiled application. Click on the button. The unhandled exception
dialog will appear. At this point, go into task manager, find the process, right click
and choose create dump file. 
</li><li>
Dump file was created in: C:\Users\USERNAME\AppData\Local\Temp\APPLCIATIONNAME.DMP 
</li><li>
Quit the application and go find the dump file and double click on it, VS will launch. 
</li><li>
You get the basic information, native debugging (machine code), but no managed debugging. 
</li><li>
It looks like you have to download the symbols from Microsoft, and possible set a
path for the debug symbols for your application, but I wasn’t able to get it to work
when I tried it. I will re-post if I get it to work.</li></ul></li></ul></li>
        </ul>
        <img width="0" height="0" src="http://blog.salvoz.com/aggbug.ashx?id=47c796be-3528-4c80-b8b8-8b1da09a5939" />
        <br />
        <hr />
This weblog is sponsored by <a href="http://www.salvoz.com">Adam Salvo</a>. 
</body>
      <title>PDC09 – FT16: Advanced Diagnostics, IntelliTrace and Test Automation</title>
      <guid isPermaLink="false">http://blog.salvoz.com/PermaLink,guid,47c796be-3528-4c80-b8b8-8b1da09a5939.aspx</guid>
      <link>http://blog.salvoz.com/2009/11/25/PDC09FT16AdvancedDiagnosticsIntelliTraceAndTestAutomation.aspx</link>
      <pubDate>Wed, 25 Nov 2009 03:11:31 GMT</pubDate>
      <description>&lt;p&gt;
&lt;em&gt;This post is part of my PDC09 Conference Notes series. These are my raw notes
taken while watching the various session videos from PDC09. Refer to my &lt;a href="http://blog.salvoz.com/2009/11/25/PDC2009Notes.aspx"&gt;original
post&lt;/a&gt; for some conventions I tried to use.&lt;/em&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
4 Scenarios: 
&lt;ul&gt;
&lt;li&gt;
It Works on My Machine 
&lt;li&gt;
Choose the right tests 
&lt;li&gt;
Solve Complex Debugging Tasks 
&lt;li&gt;
Multi-Tier Performance Analysis&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Hard to Reproduce Bugs (It works on my machine/I can't reproduce it) 
&lt;ul&gt;
&lt;li&gt;
Solved by a new feature, IntelliTrace 
&lt;li&gt;
Used to be solved by adding Debug statements 
&lt;li&gt;
IntelliTrace adds Record, Playback and Rewind 
&lt;li&gt;
Demo shows a nightly build that failed 
&lt;ul&gt;
&lt;li&gt;
Click thru the build report to view the IntelliTrace log file 
&lt;li&gt;
Shows Threads, test data, system info, loaded modules 
&lt;li&gt;
Double click on call stack for the exception (test failure) line where error occurred
and takes you to the exact line in the source code. 
&lt;li&gt;
Step forwards and backwards in playback to view what was going on (variable state,
etc) 
&lt;li&gt;
Filter which events you want to see (Asp.Net, ADO.Net, Registy, etc)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
You can now see the return value of methods! 
&lt;li&gt;
Records the exact execution path thru branches eliminating guess work. 
&lt;li&gt;
No need to add anything to your code 
&lt;li&gt;
Various levels of recording. The more you record, the higher the performance impact.
No mention was made of how much of a performance hit, although the default settings
are not supposed to impact it much. 
&lt;li&gt;
Works with Asp.Net as well. Tracks events like gets and posts, allows you to jump
into code at that point in time 
&lt;li&gt;
How does it Work? 
&lt;ul&gt;
&lt;li&gt;
IntelliTrace record starts, loads CollectionPlan.xml and starts recording 
&lt;li&gt;
IntelliTrace does not allow you to change what happens in your code since it's a recording.
You can't change a variable for example&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Settings 
&lt;ul&gt;
&lt;li&gt;
IntelliTrace is set in Tools/Options/Intellitrace. 
&lt;li&gt;
Maximum amount of disk space for recording 
&lt;li&gt;
Where are they stored? C:\ProgramData\Microsoft Visual Studio\10.0\TraceDebugging\&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
What do you need to get IntelliTrace on a PC? 
&lt;ul&gt;
&lt;li&gt;
Install visual studio 
&lt;li&gt;
Install Test and Lab Manager 
&lt;li&gt;
Install Test Agent&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
IntelliTrace Options Window&lt;br&gt;
&lt;a href="http://blog.salvoz.com/content/binary/WindowsLiveWriter/PDC09FT16AdvancedDiagnosticsIntelliTrace_129E8/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="IntelliTrace Options Window" border="0" alt="IntelliTrace Options Window" src="http://blog.salvoz.com/content/binary/WindowsLiveWriter/PDC09FT16AdvancedDiagnosticsIntelliTrace_129E8/image_thumb.png" width="644" height="373"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Test Impact Analysis (Choosing the right tests to run) 
&lt;ul&gt;
&lt;li&gt;
Automatically pinpoint which tests are impacted as a result of a code change, including
manual tests, although I'm not sure how it works 
&lt;li&gt;
TIA, as far as I can tell will only run with tests written in MS Test. 
&lt;li&gt;
If it can work with Manual tests, I see some advantage with that, but not running
all of your automated tests just seems bad. It seems like they may be fixing a symptom
(slow running tests) instead of the problem (poorly written tests) 
&lt;li&gt;
Working from the Nightly Build point of view 
&lt;ul&gt;
&lt;li&gt;
You can see impacted tests 
&lt;li&gt;
You can drill thru the impacted tests to see what changes caused the tests to be impacted.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Multi-Tier Performance Analysis 
&lt;ul&gt;
&lt;li&gt;
Scenario: Client Side script in the browser, business logic, database calls 
&lt;li&gt;
To start, goto Debug and click Start Profile Analysis 
&lt;ul&gt;
&lt;li&gt;
Select Profile Type 
&lt;li&gt;
Select Project, Executable or Asp.net/java script application 
&lt;li&gt;
Enable Tier Interaction Profiling&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
My Demo (I tried this out locally while watching the video) 
&lt;ul&gt;
&lt;li&gt;
Ran a Asp.Net MVC project 
&lt;li&gt;
I run everything as a normal user, not an admin. However, you need to be an admin,
but VS prompts your for credentials and it just works. 
&lt;li&gt;
You start out in summary view, but there is a drop down at the top (Current View)
that gives you access to stuff like Tier Interactions. 
&lt;li&gt;
Tier Interactions showed my database calls, the sql executed and how long they took 
&lt;li&gt;
It takes a little longer for it to get started, so there is a still a place in my
book for using SQL query analyzer while developing, but for end to end debugging of
slow pages, this is awesome. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Report Shows 
&lt;ul&gt;
&lt;li&gt;
Most expensive code paths 
&lt;li&gt;
Lets you look at "all code" which will include the base class library and loaded modules 
&lt;li&gt;
Jump between various report views by right clicking 
&lt;li&gt;
Jump to code&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Collaborative Debugging (Solve Complex Problems) 
&lt;ul&gt;
&lt;li&gt;
While debugging, pin the value of a variable to the editor window (right click while
hovering) 
&lt;li&gt;
You can add comments to those pinned values 
&lt;li&gt;
You can export a break points and data tips as XML which you can then e-mail or what
ever 
&lt;li&gt;
After you import the break point and data tips, run the app in debug mode 
&lt;ul&gt;
&lt;li&gt;
Application will stop on the break point 
&lt;li&gt;
The value and comments will be displayed as exported/imported&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Debug a Crash in a Deployed Application using Dump Files 
&lt;ul&gt;
&lt;li&gt;
When application crashes, open up task manager, find the task, right click and chose
create dump file. 
&lt;li&gt;
No need to have anything installed to create the dump file 
&lt;li&gt;
Open dump file in visual studio, and you can debug it. 
&lt;ul&gt;
&lt;li&gt;
Shows stuff about the computer it was running on 
&lt;li&gt;
Modules Loaded 
&lt;li&gt;
OS&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Press ctrl+alt+q to get to QuickWatch, and type in $expression, and you'll get info
on the exception that caused the crash. 
&lt;li&gt;
My Test/Demo 
&lt;ul&gt;
&lt;li&gt;
Create new Widnows forms app with a button. When clicking the button throw new exception. 
&lt;li&gt;
Close VS, and run compiled application. Click on the button. The unhandled exception
dialog will appear. At this point, go into task manager, find the process, right click
and choose create dump file. 
&lt;li&gt;
Dump file was created in: C:\Users\USERNAME\AppData\Local\Temp\APPLCIATIONNAME.DMP 
&lt;li&gt;
Quit the application and go find the dump file and double click on it, VS will launch. 
&lt;li&gt;
You get the basic information, native debugging (machine code), but no managed debugging. 
&lt;li&gt;
It looks like you have to download the symbols from Microsoft, and possible set a
path for the debug symbols for your application, but I wasn’t able to get it to work
when I tried it. I will re-post if I get it to work.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://blog.salvoz.com/aggbug.ashx?id=47c796be-3528-4c80-b8b8-8b1da09a5939" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.salvoz.com"&gt;Adam Salvo&lt;/a&gt;. </description>
      <comments>http://blog.salvoz.com/CommentView,guid,47c796be-3528-4c80-b8b8-8b1da09a5939.aspx</comments>
      <category>Technology/Conference Notes</category>
      <category>Technology/Visual Studio</category>
    </item>
    <item>
      <trackback:ping>http://blog.salvoz.com/Trackback.aspx?guid=50a9a42c-03e7-4439-a77d-29232db4d812</trackback:ping>
      <pingback:server>http://blog.salvoz.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.salvoz.com/PermaLink,guid,50a9a42c-03e7-4439-a77d-29232db4d812.aspx</pingback:target>
      <dc:creator>Adam Salvo</dc:creator>
      <wfw:comment>http://blog.salvoz.com/CommentView,guid,50a9a42c-03e7-4439-a77d-29232db4d812.aspx</wfw:comment>
      <wfw:commentRss>http://blog.salvoz.com/SyndicationService.asmx/GetEntryCommentsRss?guid=50a9a42c-03e7-4439-a77d-29232db4d812</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <em>This post is part of my PDC09 Conference Notes series. These are my raw notes
taken while watching the various session videos from PDC09. Refer to my <a href="http://blog.salvoz.com/2009/11/25/PDC2009Notes.aspx">original
post</a> for some conventions I tried to use.</em>
        </p>
        <p>
          <strong>FT60 - A Lap around Visual Studio and TFS 2010</strong>
        </p>
        <ul>
          <li>
Planning 
<ul><li>
Excel workbook for planning Iteration (for a specific Area?) 
</li><li>
Calculates # of working days based on Start and End Date 
</li><li>
Supports holidays and other non-working days by using the Interruptions sheet 
</li><li>
Capacity Planning graphs 
</li><li>
Looks like working in Excel is a much better (almost preferred) experience in 2010. 
</li><li>
Reports (at least the capacity report) was updated right away, no waiting for warehouse
to refresh.</li></ul></li>
        </ul>
        <ul>
          <li>
Hierarchical Work Items 
<ul><li>
As the name implies, you can setup hierarchies with your work items (kick ass!) 
</li><li>
Query support for hierarchical work items, allows you to define a query for the top
level item, and a second query for the child work items (<em>I have to think that
this feature was added as a direct result of MS dog fooding TFS</em>). 
</li></ul></li>
        </ul>
        <ul>
          <li>
Develop in Parallel 
<ul><li>
Branch visualization 
<ul><li>
Branches now show up as a "special" folder in Source Control viewer 
</li><li>
View Hierarchy (Right click on branch) allows you to view the branches and their relationships
in a graphical view. You can add a description for the branch 
</li><li>
Drag and Drop merges</li></ul></li></ul><ul><li>
Change tracing 
<ul><li>
Combine branch visualization with change sets, you can see which branches were affected
by a given change set. Arrows show stuff like merge directions.</li></ul></li></ul><ul><li>
Actionable History</li></ul></li>
        </ul>
        <ul>
          <li>
Continuous Integration 
<ul><li>
Gated Check-in 
<ul><li>
Verify code via a shelved check in set before something gets actually checked in. 
</li><li>
Seems somewhat redundant with proper branches for development, but I guess it's another
way to solve the problem. Although I think that you should be running most of the
tests locally before even trying to check in. 
</li></ul></li></ul><ul><li>
Architecture Diagrams 
<ul><li>
Map actually code assemblies (projects) to a block diagram. 
</li><li>
Blocks are for things like Web Layer, Business Layer, Data Layer etc. 
</li><li>
You can setup dependencies between the blocks, like Web Layer depends on Business
Layer. 
</li><li>
You can verify that code does not break the dependencies you have outlined in the
block diagram (i.e. don't have a business component that references the web component). 
</li></ul></li></ul><ul><li>
Visual Work Flow (WF) designer for builds looks a lot better then editing XML, but
we all know that Microsoft rarely demos stuff that has been tested in the real world. 
</li><li>
Build Reports are improved, more information with direct links to the information
in TFS that you need to get more details. Hopefully less digging around the build
output folder. 
</li><li>
New SysTray app that notifies you about build events</li></ul></li>
        </ul>
        <ul>
          <li>
Project Visibility and Health 
<ul><li>
Nice graphs in MOSS. Do they work in WSS? 
<ul><li>
Burndown 
</li><li>
User Stories vs. Tasks</li></ul></li></ul><ul><li>
Graphs build on Web Parts so you can customize the page layout. Also change parameters
passed to reports.</li></ul></li>
        </ul>
        <ul>
          <li>
Manageability 
<ul><li>
TFS Basic Install 
</li><li>
New Admin Console written WPF. Looks like MMC. 
<ul><li>
Ports, URL's, etc 
</li><li>
One click change TFS account password 
</li><li>
View logs</li></ul></li></ul></li>
        </ul>
        <img width="0" height="0" src="http://blog.salvoz.com/aggbug.ashx?id=50a9a42c-03e7-4439-a77d-29232db4d812" />
        <br />
        <hr />
This weblog is sponsored by <a href="http://www.salvoz.com">Adam Salvo</a>. 
</body>
      <title>PDC09 – FT60: A Lap Around Visual Studio and TFS 2010</title>
      <guid isPermaLink="false">http://blog.salvoz.com/PermaLink,guid,50a9a42c-03e7-4439-a77d-29232db4d812.aspx</guid>
      <link>http://blog.salvoz.com/2009/11/25/PDC09FT60ALapAroundVisualStudioAndTFS2010.aspx</link>
      <pubDate>Wed, 25 Nov 2009 03:07:37 GMT</pubDate>
      <description>&lt;p&gt;
&lt;em&gt;This post is part of my PDC09 Conference Notes series. These are my raw notes
taken while watching the various session videos from PDC09. Refer to my &lt;a href="http://blog.salvoz.com/2009/11/25/PDC2009Notes.aspx"&gt;original
post&lt;/a&gt; for some conventions I tried to use.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;FT60 - A Lap around Visual Studio and TFS 2010&lt;/strong&gt; 
&lt;ul&gt;
&lt;li&gt;
Planning 
&lt;ul&gt;
&lt;li&gt;
Excel workbook for planning Iteration (for a specific Area?) 
&lt;li&gt;
Calculates # of working days based on Start and End Date 
&lt;li&gt;
Supports holidays and other non-working days by using the Interruptions sheet 
&lt;li&gt;
Capacity Planning graphs 
&lt;li&gt;
Looks like working in Excel is a much better (almost preferred) experience in 2010. 
&lt;li&gt;
Reports (at least the capacity report) was updated right away, no waiting for warehouse
to refresh.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Hierarchical Work Items 
&lt;ul&gt;
&lt;li&gt;
As the name implies, you can setup hierarchies with your work items (kick ass!) 
&lt;li&gt;
Query support for hierarchical work items, allows you to define a query for the top
level item, and a second query for the child work items (&lt;em&gt;I have to think that
this feature was added as a direct result of MS dog fooding TFS&lt;/em&gt;). 
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Develop in Parallel 
&lt;ul&gt;
&lt;li&gt;
Branch visualization 
&lt;ul&gt;
&lt;li&gt;
Branches now show up as a "special" folder in Source Control viewer 
&lt;li&gt;
View Hierarchy (Right click on branch) allows you to view the branches and their relationships
in a graphical view. You can add a description for the branch 
&lt;li&gt;
Drag and Drop merges&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Change tracing 
&lt;ul&gt;
&lt;li&gt;
Combine branch visualization with change sets, you can see which branches were affected
by a given change set. Arrows show stuff like merge directions.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Actionable History&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Continuous Integration 
&lt;ul&gt;
&lt;li&gt;
Gated Check-in 
&lt;ul&gt;
&lt;li&gt;
Verify code via a shelved check in set before something gets actually checked in. 
&lt;li&gt;
Seems somewhat redundant with proper branches for development, but I guess it's another
way to solve the problem. Although I think that you should be running most of the
tests locally before even trying to check in. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Architecture Diagrams 
&lt;ul&gt;
&lt;li&gt;
Map actually code assemblies (projects) to a block diagram. 
&lt;li&gt;
Blocks are for things like Web Layer, Business Layer, Data Layer etc. 
&lt;li&gt;
You can setup dependencies between the blocks, like Web Layer depends on Business
Layer. 
&lt;li&gt;
You can verify that code does not break the dependencies you have outlined in the
block diagram (i.e. don't have a business component that references the web component). 
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Visual Work Flow (WF) designer for builds looks a lot better then editing XML, but
we all know that Microsoft rarely demos stuff that has been tested in the real world. 
&lt;li&gt;
Build Reports are improved, more information with direct links to the information
in TFS that you need to get more details. Hopefully less digging around the build
output folder. 
&lt;li&gt;
New SysTray app that notifies you about build events&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Project Visibility and Health 
&lt;ul&gt;
&lt;li&gt;
Nice graphs in MOSS. Do they work in WSS? 
&lt;ul&gt;
&lt;li&gt;
Burndown 
&lt;li&gt;
User Stories vs. Tasks&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Graphs build on Web Parts so you can customize the page layout. Also change parameters
passed to reports.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
Manageability 
&lt;ul&gt;
&lt;li&gt;
TFS Basic Install 
&lt;li&gt;
New Admin Console written WPF. Looks like MMC. 
&lt;ul&gt;
&lt;li&gt;
Ports, URL's, etc 
&lt;li&gt;
One click change TFS account password 
&lt;li&gt;
View logs&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://blog.salvoz.com/aggbug.ashx?id=50a9a42c-03e7-4439-a77d-29232db4d812" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.salvoz.com"&gt;Adam Salvo&lt;/a&gt;. </description>
      <comments>http://blog.salvoz.com/CommentView,guid,50a9a42c-03e7-4439-a77d-29232db4d812.aspx</comments>
      <category>Technology/Conference Notes</category>
      <category>Technology/Team Foundation Server</category>
      <category>Technology/Visual Studio</category>
    </item>
  </channel>
</rss>