<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.dotnetmafia.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Corey Roth [MVP] : Visual Studio 2008</title><link>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Visual+Studio+2008/default.aspx</link><description>Tags: Visual Studio 2008</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>How to: Change your namespace in a Silverlight application without breaking everything</title><link>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2010/07/23/how-to-change-your-namespace-in-a-silverlight-application-without-breaking-everything.aspx</link><pubDate>Fri, 23 Jul 2010 20:16:41 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:3773</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=3773</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2010/07/23/how-to-change-your-namespace-in-a-silverlight-application-without-breaking-everything.aspx#comments</comments><description>&lt;p&gt;The first thing I do when creating a new project in Visual Studio (regardless of type) is change the project name, assembly name, and default namespace.&amp;#160; I like for the names of all these to be consistent.&amp;#160; However, I have noticed in Silverlight, you must make changes in five different places for everything to work alright otherwise you will get errors.&amp;#160; I’m no Silverlight expert, but I thought this post would be useful for people like me who only dabble in it from time to time.&lt;/p&gt;  &lt;p&gt;When you create your new Silverlight project, right click on the project name and bring up its properties.&amp;#160; Go ahead and change the default namespace and assembly name just like you would in any other project.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/SilverlightProjectProperties1_7D3B24BA.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="SilverlightProjectProperties1" border="0" alt="SilverlightProjectProperties1" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/SilverlightProjectProperties1_thumb_5C47B213.png" width="561" height="280" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In my case, I change from a namespace of &lt;em&gt;SilverlightApplication1&lt;/em&gt; to &lt;em&gt;DotNetMafia.Silverlight.Test&lt;/em&gt;.&amp;#160; Here you can see the new assembly name and default namespace.&amp;#160; There are two other options to set here, but we will have to come back to it.&lt;/p&gt;  &lt;p&gt;At this point, we want to correct the namespace in the existing classes.&amp;#160; Let’s start with &lt;strong&gt;App.xaml&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/SilverlightStatusAppXaml1_1BA565A4.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="SilverlightStatusAppXaml1" border="0" alt="SilverlightStatusAppXaml1" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/SilverlightStatusAppXaml1_thumb_36DDBEA5.png" width="543" height="132" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I have highlighted the section, I need to change, &lt;em&gt;x:Class&lt;/em&gt;.&amp;#160; I’ll change it to DotNetMafia.Silverlight.Test like we see below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/SilverlightStatusAppXaml2_16567EF3.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="SilverlightStatusAppXaml2" border="0" alt="SilverlightStatusAppXaml2" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/SilverlightStatusAppXaml2_thumb_60DDBCCD.png" width="544" height="132" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Now, we just need to change the namespace in the code behind file &lt;strong&gt;App.xaml.cs&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/SilverlightStatusAppXamlCs1_073FA019.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="SilverlightStatusAppXamlCs1" border="0" alt="SilverlightStatusAppXamlCs1" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/SilverlightStatusAppXamlCs1_thumb_34C0BFDC.png" width="365" height="240" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Now, we have to do the same thing to &lt;strong&gt;MainPage.xaml&lt;/strong&gt;.&amp;#160; Change the namespace here on x:Class as well.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/SilverlightStatusMainPageXaml1_2D35506F.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="SilverlightStatusMainPageXaml1" border="0" alt="SilverlightStatusMainPageXaml1" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/SilverlightStatusMainPageXaml1_thumb_058ED445.png" width="541" height="98" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Then, you will change the namespace of the code behind file &lt;strong&gt;MainPage.xaml.cs &lt;/strong&gt;just liked we did before.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/SilverlightStatusMainPageXamlCs1_44EC87D5.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="SilverlightStatusMainPageXamlCs1" border="0" alt="SilverlightStatusMainPageXamlCs1" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/SilverlightStatusMainPageXamlCs1_thumb_2B84849B.png" width="373" height="173" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;At this point, your code will compile.&amp;#160; However, it will not run.&amp;#160; If you try to debug it you will likely get a blank page and if you are using Internet Explorer, you will probably see a script error in the toolbar.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/SilverlightStartupObjectErrorToolbar_441421EB.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="SilverlightStartupObjectErrorToolbar" border="0" alt="SilverlightStartupObjectErrorToolbar" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/SilverlightStartupObjectErrorToolbar_thumb_35D5A8FB.png" width="126" height="42" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Clicking on the error, you can see the following details.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/SilverlightStartupObjectError_3C88B27E.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="SilverlightStartupObjectError" border="0" alt="SilverlightStartupObjectError" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/SilverlightStartupObjectError_thumb_54AC1CD9.png" width="430" height="288" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I have to say they have really improved the way you view script errors.&amp;#160; Here is the text of the error.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Message: Unhandled Error in Silverlight Application      &lt;br /&gt;Code: 2103&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Category: InitializeError&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Message: Invalid or malformed application: Check manifest&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Line: 54      &lt;br /&gt;Char: 13       &lt;br /&gt;Code: 0       &lt;br /&gt;URI: &lt;/em&gt;&lt;a&gt;&lt;em&gt;file:///C:/Code/SilverlightApplication1/Bin/Debug/SilverlightApplication1TestPage.html&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Remember, I said we had to change an additional setting in the project properties?&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/SilverlightProjectProperties2_5A1A8D7D.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="SilverlightProjectProperties2" border="0" alt="SilverlightProjectProperties2" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/SilverlightProjectProperties2_thumb_0EBAE9B9.png" width="244" height="51" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This is the problem here.&amp;#160; We change the startup objects namespace but never update the project properties to match.&amp;#160; You should be able to pick the new namespace of your startup object from the list.&amp;#160; This is also a good time to change the name of your .XAP file if you are so inclined.&amp;#160; Here is what my project properties looks like when I am done.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/SilverlightProjectProperties3_32741153.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="SilverlightProjectProperties3" border="0" alt="SilverlightProjectProperties3" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/SilverlightProjectProperties3_thumb_66A83A99.png" width="553" height="280" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;At this point your application should compile and run.&amp;#160; Now I can view my beautiful Hello World Silverlight application.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/SilverlightNamespaceChangeWorking_3F01BE6F.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="SilverlightNamespaceChangeWorking" border="0" alt="SilverlightNamespaceChangeWorking" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/SilverlightNamespaceChangeWorking_thumb_708D2C04.png" width="432" height="213" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Great app huh?&amp;#160; Any how, I hope this helps should you encounter the error above or run into issues changing your namespace.&amp;#160; It’s pretty simple to do, but you’ll definitely get errors if you don’t get all of your changes made.&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=3773" width="1" height="1"&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>A few quick tips for interacting with the file system in Visual Studio</title><link>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2010/04/07/a-few-quick-tips-for-interacting-with-the-file-system-in-visual-studio.aspx</link><pubDate>Wed, 07 Apr 2010 18:59:52 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:3045</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=3045</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2010/04/07/a-few-quick-tips-for-interacting-with-the-file-system-in-visual-studio.aspx#comments</comments><description>&lt;p&gt;I was doing some SharePoint mentoring a while back and I noticed that some developers don’t know about a couple handy items found in various context menus that that I use on a daily basis.&amp;#160; Specifically I’m talking about a few things in the context menu that give you the path to the file or open the folder that the file is in.&amp;#160; These can be useful when you are ghetto deploying files or you simply want to jump to the file system to grab your .wsp file.&amp;#160; Honestly these menu items have been around for a long time, but I hadn’t noticed them until a while back.&amp;#160; If you already know about them, you can stop reading here. :-)&lt;/p&gt;  &lt;p&gt;The first menu I want to talk about is the context menu you get by right clicking on the tab of any open file.&amp;#160; This is from Visual Studio 2010, but its there in 2008 as well.&amp;#160; I’m not sure about 2005, but if you are still using Visual Studio 2005, you should be &lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/03/23/people-it-s-time-to-upgrade-to-visual-studio-2008.aspx"&gt;ashamed&lt;/a&gt; of yourself.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/VisualStudioContextMenuFile_76AF5F23.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="VisualStudioContextMenuFile" border="0" alt="VisualStudioContextMenuFile" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/VisualStudioContextMenuFile_thumb_06FAB110.png" width="320" height="223" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The two menu items of interest here are &lt;em&gt;Copy Full Path&lt;/em&gt; and &lt;em&gt;Open Containing Folder&lt;/em&gt;.&amp;#160; As expected, Copy Full Path puts the full path to the file in the clipboard.&amp;#160; This is great when you have a file open in Visual Studio and you need to upload it via browser File Upload control.&amp;#160; You can just paste the path right in and you’re good to go.&amp;#160; I use this when I’m uploading BDC application definitions a lot.&amp;#160; The &lt;em&gt;Open Containing Folder&lt;/em&gt; is useful any time you need to copy the file in your project from one place to another.&lt;/p&gt;  &lt;p&gt;If you don’t have a file open, you can make use of another item on the context menu from the Solution Explorer.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/VisualStudioContextMenuFile2_7F6F41A2.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="VisualStudioContextMenuFile2" border="0" alt="VisualStudioContextMenuFile2" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/VisualStudioContextMenuFile2_thumb_30FAAF38.png" width="270" height="301" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This opens the folder the file is in with windows explorer.&lt;/p&gt;  &lt;p&gt;Directory structures for source code can be huge these days.&amp;#160; Lots of nested folders and it takes time to click through them.&amp;#160;&amp;#160; I mention these topics today because I’ve watched developers open a new instance of windows explorer and browse through the folder structure every time.&amp;#160; Anyhow, maybe you already use these menu options.&amp;#160; I thought they were useful and worth a quick mention.&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=3045" width="1" height="1"&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category></item><item><title>Linking Files in Visual Studio</title><link>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2010/01/20/linking-files-in-visual-studio.aspx</link><pubDate>Wed, 20 Jan 2010 15:29:35 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:2112</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>12</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=2112</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2010/01/20/linking-files-in-visual-studio.aspx#comments</comments><description>&lt;p&gt;I saw this feature in Visual Studio again the other day and honestly I had kind of forgotten about it.&amp;#160; After discussing it with some colleagues, most of them didn’t even know the feature existed.&amp;#160; What I am talking about is the ability to create a link between files in Visual Studio.&amp;#160; What this allows you to do is actually create a link to a file instead of just making a copy.&amp;#160; Now, I don’t want to get into a discussion of why you would never want to do this or how this is not a proper way to implement code reuse.&amp;#160; Keep in mind though that you can use it to link other types of non-code files such as an XML file.&amp;#160; However, for today’s purpose, I’m just going to link a class into another project.&amp;#160; Consider my following example with two class libraries. I want to reuse Class1.cs inside ClassLibrary2.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/FileLinkingSolution_00C581E3.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="FileLinkingSolution" border="0" alt="FileLinkingSolution" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/FileLinkingSolution_thumb_6E10882B.png" width="224" height="154" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I have a simple class that looks like this.&lt;/p&gt;  &lt;div style="font-family:consolas;background:black;color:white;font-size:13pt;font-weight:bold;"&gt;   &lt;p style="margin:0px;"&gt;&lt;span style="color:#cc7832;"&gt;using&lt;/span&gt; System;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:#cc7832;"&gt;namespace&lt;/span&gt; ClassLibrary1&lt;/p&gt;    &lt;p style="margin:0px;"&gt;{&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:#cc7832;"&gt;public&lt;/span&gt; &lt;span style="color:#cc7832;"&gt;class&lt;/span&gt; &lt;span style="color:#ffc66d;"&gt;Class1&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:#cc7832;"&gt;public&lt;/span&gt; Class1()&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:#cc7832;"&gt;public&lt;/span&gt; &lt;span style="color:#cc7832;"&gt;void&lt;/span&gt; DoSomething()&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:#cc7832;"&gt;int&lt;/span&gt; x = &lt;span style="color:#6897bb;"&gt;5&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin:0px;"&gt;}&lt;/p&gt; &lt;/div&gt;   &lt;p&gt;This class clearly has so much valuable code in it that I have to reuse it in ClassLibrary2, but not make a reference to ClassLibrary2.&amp;#160; This is where the Add as Link functionality comes in.&amp;#160; The process is simple, using the Add Existing Item menu on the project’s context menu.&amp;#160; Navigate to the existing item in the other class library and then make note of the arrow next to the Add button, click on it and choose Add as Link instead.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/FileLinkingAddExistingItem_54A884F1.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="FileLinkingAddExistingItem" border="0" alt="FileLinkingAddExistingItem" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/FileLinkingAddExistingItem_thumb_4CB0E28F.png" width="467" height="348" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Once you do that you will have a link to the file in your other class library.&amp;#160; You can open it and edit it as normal from the linked location, but it will actually edit the file link.&amp;#160; You can tell it is linked in Solution Explorer by the icon.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/FileLinkingSolutionLinkIcon_32DCAC60.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="FileLinkingSolutionLinkIcon" border="0" alt="FileLinkingSolutionLinkIcon" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/FileLinkingSolutionLinkIcon_thumb_6B87566D.png" width="223" height="171" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Notice the link icon on Class1.cs in ClassLibrary2.&amp;#160; If you click on the linked file, you can see the path to the file it has linked in the properties (although its cut off here in my screenshot).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/FileLinkingProperties_3D2DD0C0.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="FileLinkingProperties" border="0" alt="FileLinkingProperties" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/FileLinkingProperties_thumb_2AE509FE.png" width="244" height="58" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Once you are done here, you can make changes to the file from either class library and the original file gets updated.&amp;#160; Keep in mind though, if you delete the original file, the link will be broken and you will get an error when trying to view any links.&amp;#160; I don’t know how useful this feature will be to all of you, but I think there is a time and place for everything.&amp;#160; I can definitely see this being useful in some cases.&amp;#160; This isn’t a new feature either.&amp;#160; I think its been around since at least Visual Studio 2003, but I could be wrong.&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=2112" width="1" height="1"&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Visual+Studio+2005/default.aspx">Visual Studio 2005</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category></item><item><title>Compilation Error with Generic Handler in Visual Studio 2008</title><link>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/07/27/compilation-error-with-generic-handler-in-visual-studio-2008.aspx</link><pubDate>Mon, 27 Jul 2009 22:04:27 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:940</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=940</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/07/27/compilation-error-with-generic-handler-in-visual-studio-2008.aspx#comments</comments><description>&lt;p&gt;Anyone else out there notice that if you add an generic handler to your project that it won’t compile?&amp;#160; It appears to be an issue with the template included in Visual Studio and it may have been resolved in a service pack but currently I don’t think so.&amp;#160; The file type I am describing is the .ashx generic handler and not the ASP.NET Handler as you can see below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/GenericHandler_4A06CD67.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="GenericHandler" border="0" alt="GenericHandler" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/GenericHandler_thumb_622A37C2.png" width="476" height="279" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;After it creates the file you might immediately notice there are issues.&amp;#160; If you go to compile it, you’ll get errors like seen below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/GenericHandlerError_6EB7E4DE.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="GenericHandlerError" border="0" alt="GenericHandlerError" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/GenericHandlerError_thumb_26F65BF7.png" width="715" height="63" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Luckily, resolving the error is quite easy.&amp;#160; You just need to add System.Web.Services to your using block.&amp;#160; Once you do that, you can compile successfully and begin building your handler.&amp;#160; I just thought I would point this out since I have seen this on multiple systems now.&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=940" width="1" height="1"&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category></item><item><title>Recap of last night’s talk on Web Testing with Visual Studio</title><link>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/04/28/recap-of-last-night-s-talk-on-web-testing-with-visual-studio.aspx</link><pubDate>Tue, 28 Apr 2009 15:19:55 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:894</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=894</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/04/28/recap-of-last-night-s-talk-on-web-testing-with-visual-studio.aspx#comments</comments><description>&lt;p&gt;Last night, I had the opportunity to speak at the &lt;a href="http://www.tulsadnug.org/DesktopDefault.aspx"&gt;Tulsa .NET Users Group&lt;/a&gt;.&amp;#160; I spoke about automating web testing using Visual Studio Team Test.&amp;#160; This is usually the post where I post my slides and code samples, but this talk did not have any slides, so I thought I would give a quick recap.&amp;#160; In the talk, I showed how to record a web test using Visual Studio Team Test.&amp;#160; I showed how to set up a basic validation rule and demonstrated passing and failing tests.&amp;#160; Lastly, we ran through a coded test and showed how you can use existing tests to perform load testing.&amp;#160; I had a great time giving the talk.&amp;#160; Thanks for attending.&lt;/p&gt;  &lt;p&gt;Follow me on &lt;a href="http://twitter.com/coreyroth"&gt;twitter&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=894" width="1" height="1"&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Presentations/default.aspx">Presentations</category></item><item><title>Speaking about Automated Web Testing with Visual Studio Team Test at Tulsa .NET Users Group</title><link>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/04/20/speaking-about-automated-web-testing-with-visual-studio-team-test-at-tulsa-net-users-group.aspx</link><pubDate>Mon, 20 Apr 2009 14:19:00 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:889</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=889</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/04/20/speaking-about-automated-web-testing-with-visual-studio-team-test-at-tulsa-net-users-group.aspx#comments</comments><description>&lt;p&gt;Next week on April 27th, I have the privilege of speaking about Automated Web Testing using Visual Studio Team Test at the &lt;a href="http://www.tulsadnug.org/DesktopDefault.aspx"&gt;Tulsa .NET Users Group&lt;/a&gt;.&amp;nbsp; This is an updated version of the talk I originally gave about four years ago at DTG.&amp;nbsp; At the time, I gave the talk using Visual Studio 2005, but for this talk we’ll be using Visual Studio 2008 and using the added features it brings us.&amp;nbsp; This is my first non-SharePoint talk in a while, so I am excited to be able to talk about a different topic with some new people.&amp;nbsp; I am happy to say there won’t be any slides on this talk, it will be nothing but using Visual Studio.&amp;nbsp; Tulsa DNUG is located at TCC Northeast Campus (&lt;a href="http://maps.google.com/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=tcc+northeast,+tulsa,+ok&amp;amp;sll=37.0625,-95.677068&amp;amp;sspn=45.957536,62.841797&amp;amp;ie=UTF8&amp;amp;ll=36.194417,-95.967636&amp;amp;spn=0.354646,0.490952&amp;amp;z=11&amp;amp;iwloc=B"&gt;3727 E. Apache&lt;/a&gt;).&amp;nbsp; It starts at 6pm.&amp;nbsp; &lt;a href="http://drowningintechnicaldebt.com/blogs/dennisbottjer/archive/2009/04/25/event-tulsa-net-user-group-april-27th-cory-roth-on-automated-web-testing.aspx"&gt;Dennis Bottjer&lt;/a&gt; has more information on tonight&amp;#39;s event.&amp;nbsp; Look forward to seeing you there.&lt;/p&gt;
&lt;p&gt;Follow me on &lt;a href="http://twitter.com/coreyroth"&gt;twitter&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=889" width="1" height="1"&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Presentations/default.aspx">Presentations</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Testing/default.aspx">Testing</category></item><item><title>People, it’s time to upgrade to Visual Studio 2008!</title><link>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/03/23/people-it-s-time-to-upgrade-to-visual-studio-2008.aspx</link><pubDate>Mon, 23 Mar 2009 13:44:20 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:867</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=867</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/03/23/people-it-s-time-to-upgrade-to-visual-studio-2008.aspx#comments</comments><description>&lt;p&gt;I try to stay away from posts like these that don’t stick to how to do something, but I do entitle myself to one or two a year, so here it is.&amp;#160; My rant today is about organizations that don’t allow developers to develop using the latest technology.&amp;#160; Visual Studio 2008 has been out for well over a year, has had one service pack already and Visual Studio 2010 is well on its way.&amp;#160; This means, you could be well on your way to being two versions behind.&amp;#160; Telling a developer that they have to develop with Visual Studio 2005 (or older) is like asking him or her to program with one hand tied behind the back.&amp;#160; So what do I account for being the most common reasons for not upgrading?&amp;#160; I’ve listed the ones I can think of below.&amp;#160; Let’s see how we can mitigate some of these issues.&lt;/p&gt;  &lt;h3&gt;&lt;/h3&gt;  &lt;h5&gt;Fear and being uninformed&lt;/h5&gt;  &lt;p&gt;In my opinion, I would say this is the most common reason.&amp;#160; Fear of the unknown.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;em&gt;“If I install Visual Studio 2008, all of my code will break, and I’ll spend days fixing it.”&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Possible but not likely.&amp;#160; If you were informed about the project, you would know that Visual Studio 2008 supports compiling to multiple frameworks.&amp;#160; This means, that your Visual Studio 2005 project can be compiled in Visual Studio 2008 and target .NET Framework 2.0.&amp;#160; It does make a slight change to your project and solution file, but that is the only thing that is changed.&amp;#160; All of your code will remain untouched.&amp;#160; Then when you are feeling adventurous, you can make the move and target .NET Framework 3.5.&amp;#160; If it compiled and works as 2.0, I am 99% certain that it will also work against 3.5.&lt;/p&gt;  &lt;p&gt;Why am I so certain?&amp;#160; Well let’s review the changes to the .NET Framework.&amp;#160; The fact that it is called .NET Framework 3.5 is pure marketing fluff.&amp;#160; You are still using .NET 2.0, it just has things like WCF, WPF, LINQ, and C# 3.0 added.&amp;#160; It essentially lets you call assemblies such as System.Core which contains LINQ and various other things.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;“When I upgraded to ASP.NET 2.0, the migration was difficult.”&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;I agree, sometimes, the migration wasn’t smooth to ASP.NET 2.0.&amp;#160; However, ASP.NET 2.0 was a complete overhaul of ASP.NET 1.1.&amp;#160; However, Visual Studio 2008, still uses ASP.NET 2.0, so your code is still going to work great.&amp;#160; Plus, they added cool things like the LinqDataSource and the &lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2007/07/02/hate-repeaters-try-a-listview.aspx"&gt;ListView&lt;/a&gt; control (which is awesome by the way).&lt;/p&gt;  &lt;h5&gt;Cost&lt;/h5&gt;  &lt;p&gt;Ok, we are in a recession, I understand that.&amp;#160; However, most companies buy Visual Studio in multi-year agreements, which does entitle you to upgrades.&amp;#160; Admittedly, I have seen some bigger companies, not buy Microsoft products in volume and buy retail boxes of Visual Studio (which is just throwing money away).&amp;#160; I am no expert on licensing, but there is a good chance you may be entitled to the to an upgrade and don’t even know it.&lt;/p&gt;  &lt;h5&gt;Laziness&lt;/h5&gt;  &lt;p&gt;Yes, it does take some time to install Visual Studio 2008 and can take even longer to apply Service Pack 1 (which you really want btw).&amp;#160; However, how much time are you losing on your project by not upgrading?&amp;#160; Have a task where you need to find some values buried in an XML document?&amp;#160; In Visual Studio 2005, you muddle with an XPathNavigator and get the task done in 15 to 30 minutes or so assuming you are good with XPath.&amp;#160; In Visual Studio 2008, you LINQ to XML to query your XML document and have the values you need in a convenient anonymous type in less than 30 seconds.&amp;#160; That is only one example, but the choice seems obvious to me.&lt;/p&gt;  &lt;h5&gt;&lt;/h5&gt;  &lt;h5&gt;IT Administrator or Help Desk won’t allow it&lt;/h5&gt;  &lt;p&gt;I feel for you if this is the case.&amp;#160; It should be the development lead or architect of a project that determines what tools you use, not someone else that doesn’t even use the project.&amp;#160; If a manager, director, CIO says which tools you have to develop with, I encourage you to push for change.&amp;#160; These people tend to be the most conservative when it comes to change, so they are almost always going to be against it.&amp;#160; However, if you can show him or her how upgrading can save the company time and money, they are going to listen.&lt;/p&gt;  &lt;h5&gt;&lt;/h5&gt;  &lt;h5&gt;Client won’t allow it&lt;/h5&gt;  &lt;p&gt;When this happens, it is usually one of the above reasons.&amp;#160; If you are a consulting company or a staff aug, you are there to bring you professional recommendation.&amp;#160; If you think a newer version of Visual Studio will save them time, don’t be afraid to recommend it.&amp;#160; I even recommend stating which version of the tools you intend to use in the statement of work.&amp;#160; It’s been my experience, that when I express to a client how much time can be saved by upgrading, they have been more than ok with it.&amp;#160; &lt;/p&gt;  &lt;h5&gt;&lt;/h5&gt;  &lt;h5&gt;Get on the Cutting Edge&lt;/h5&gt;  &lt;p&gt;I always thing good companies and developers stay on the cutting edge of the Visual Studio release cycles.&amp;#160; These people are installing betas of the products, looking to see how new features can make their upcoming projects go faster, and even deploying things on production on betas when the Go Live license hits.&amp;#160; Now is that for everyone?&amp;#160; Certainly not, there is the right spot on the edge that is appropriate for every company.&amp;#160; However, staying on the cutting edge, can make companies look more attractive to clients as well as make developers more attractive to companies.&amp;#160; Think about it.&amp;#160; Do you want the developer that knows you can use LINQ to SQL (or Entities) to bust out data access code or the developer that is still reading things into a dataset the way you did in .NET 1.0 (not that I am saying ADO.NET is dead by any means)?&lt;/p&gt;  &lt;p&gt;So what are some of my favorite features in Visual Studio 2008 (some of these require SP1)?&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;LINQ – I find new ways to use it everyday – whether it is querying a list, string[], or whatever.&lt;/li&gt;    &lt;li&gt;LINQ to XML – Anytime I need to read something out of an XML file, this is the way to go.&amp;#160; Great for dealing with repeating sections of InfoPath forms too!&lt;/li&gt;    &lt;li&gt;LINQ to SQL – I deal with a lot of projects which don’t need a big elaborate DAL.&amp;#160; LINQ to SQL makes this really easy.&lt;/li&gt;    &lt;li&gt;Anonymous Types – Use them with LINQ all of the time.&amp;#160; Great way to get typed access to XML documents.&lt;/li&gt;    &lt;li&gt;Automatic Properties – Wasn’t that excited about them at first, but I use them more and more now.&lt;/li&gt;    &lt;li&gt;Property Initializers – Reduces code since you don’t have to create a bunch of constructors to initialize different combinations of properties&lt;/li&gt;    &lt;li&gt;Dynamic Data Web Applications – These seem pretty neat, but I have yet to make full use of one&lt;/li&gt;    &lt;li&gt;Improved WPF Designer&lt;/li&gt;    &lt;li&gt;Better JavaScript debugging&lt;/li&gt;    &lt;li&gt;Silverlight support&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The list goes on and on, but you get the point.&amp;#160; Of course, this is just my opinion on all of these things, but hopefully, I might have convinced a few of you out there that it is time to upgrade.&amp;#160; Some developers may be ok with developing with old tools, but many developers find it particularly frustrating.&amp;#160; There is nothing worse than the feeling you get when you find yourself reinventing the wheel by manually coding something that was added to a later version of the tool.&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=867" width="1" height="1"&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category></item><item><title>VSeWSS 1.3 - Please wait while the installer finishes determining your disk space requirements</title><link>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/03/03/vsewss-1-3-please-wait-while-the-installer-finishes-determining-your-disk-space-requirements.aspx</link><pubDate>Tue, 03 Mar 2009 20:48:14 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:856</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>8</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=856</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/03/03/vsewss-1-3-please-wait-while-the-installer-finishes-determining-your-disk-space-requirements.aspx#comments</comments><description>&lt;p&gt;I have been working on creating a new Windows Server 2008 virtual machine lately, so I decided to grab the latest version of &lt;a href="https://connect.microsoft.com/site/sitehome.aspx?SiteID=428"&gt;VSeWSS 1.3&lt;/a&gt;.&amp;#160; I immediately encountered the following error when trying to install.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Please wait while the installer finishes determining your disk space requirements.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;The only option is to click the “Return” button and wait.&amp;#160; Unfortunately, it never stops.&amp;#160; After doing a quick Google search, I came across this &lt;a href="http://bloggingabout.net/blogs/harold/archive/2009/01/14/windows-installer-doesn-t-finish-determining-disk-space-requirements.aspx"&gt;post&lt;/a&gt; which describes the issue with MSI packages.&amp;#160; It wasn’t related to SharePoint but put me in the right direction.&amp;#160; This applied to an MSI file though and the VSeWSS download is not an MSI file its an EXE.&amp;#160; I figured there was a command line option to extract the MSI and in fact there is.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;VSeWSSv13_x86_Feb2009CTP_Build_429.exe /extract &amp;lt;workingfolder&amp;gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Just specify a folder you want the extracted file to go into there.&amp;#160; Then you can execute the MSI file as such with msiexec and the issue does not occur.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;msiexec /i VSeWSS_v13_x86_Build-429.msi&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Not sure why I ran into this issue, but in case you do, hopefully this helps.&lt;/p&gt;  &lt;p&gt;On a side note, I’m on &lt;a href="http://twitter.com/coreyroth"&gt;twitter&lt;/a&gt; now.&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=856" width="1" height="1"&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Error/default.aspx">Error</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/VSeWSS/default.aspx">VSeWSS</category></item><item><title>VSeWSS 1.3 CTP Feedback and Feature Requests</title><link>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/02/05/vsewss-1-3-ctp-feedback-and-feature-requests.aspx</link><pubDate>Thu, 05 Feb 2009 21:12:10 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:833</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=833</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/02/05/vsewss-1-3-ctp-feedback-and-feature-requests.aspx#comments</comments><description>&lt;p&gt;First of all I would like to say this tool has improved quite a bit since the last version.&amp;nbsp; However, I still feel that it has a long way to go before a SharePoint developer would actually consider using it.&amp;nbsp; The functionality I am targeting today is the web part functionality.&amp;nbsp; Before that, I&amp;#39;ll point out some things I ran into before I could get the product to work at all.&amp;nbsp; &lt;/p&gt; &lt;p&gt;A lot of this is due to the environment I created, but it&amp;#39;s worth pointing out in case someone has a familiar environment.&amp;nbsp; When I installed this particular VM, I chose the quick install to save time.&amp;nbsp; As you know this installs a version of SQL Server Express as well as creates Central Admin and your SSP for you running with the Network Service account.&amp;nbsp; This is where the first issue is.&amp;nbsp; The application pool running the VSeWSS web service has to be a member of the Local Administrators&amp;nbsp; group (Administrators if you are on a Domain Controller).&amp;nbsp; This builtin account cannot be added to that group (to the best of my knowledge), so you have to create a new account (which I prefer anyway) to run the application pool for Central Administration and the VSeWSS site.&amp;nbsp; I did all this and I went into the database and gave this account db_owner permission on the config and central admin content databases and for the most part everything works.&amp;nbsp; I can package a solution and deploy it (however I still get an error activating the feature).&amp;nbsp; This was at least enough to get to the point where I could test it.&lt;/p&gt; &lt;p&gt;Now about using the tool itself.&amp;nbsp; I really like the added options to Deploy, Package, and Retract Solutions added to the context menu of your solution.&amp;nbsp; These all seemed to work really well.&amp;nbsp; I was able to create a quick Hello World web part and deploy it.&amp;nbsp; I activated it manually and was able to view it immediately.&amp;nbsp; One thing, I am very appreciative of is the ability to choose between a Full Trust or Partial Trust web part when you create the project.&amp;nbsp; You still have to specify the Code Access Security settings yourself, but at least it is possible now.&amp;nbsp; I am also a fan of the new options to quick deploy directly to the bin folder and 12 hive.&lt;/p&gt; &lt;p&gt;As a SharePoint developer, I put a lot of files into solution packages.&amp;nbsp; Pages, XML files, Master Pages, Site Template Definitions, you name it.&amp;nbsp;&amp;nbsp; I want to be able to put these files in my wsp.&amp;nbsp; I assumed WSP View would have this functionality.&amp;nbsp; You can get to it by going to View -&amp;gt; Other Windows -&amp;gt; WSP View.&amp;nbsp; Maybe, there is functionality there, but I couldn&amp;#39;t figure out how to add any files to the package.&amp;nbsp; You have no direct access to the DDF file and there are no menu options to allow you to customize or add files in WSP view.&amp;nbsp; There is an option to add another feature, but you can&amp;#39;t customize what files to add along with the feature.&amp;nbsp; Somehow, when you create a new web part project, the .webpart file shows up in the WSP view, but I have no idea how.&amp;nbsp; This by itself, means I can&amp;#39;t use this tool.&amp;nbsp; Again, if I am just being stupid and can&amp;#39;t find it, let me know.&amp;nbsp; The one thing I will note here is that you can customize the manfiest file here.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Another thing, I found lacking is that I can only add one web part per project.&amp;nbsp; Sure, I can manually create another class, but I want it to generate the .webpart file for me and put it in the solution.&lt;/p&gt; &lt;p&gt;Features I would like to see:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Remote SharePoint Server support - Let me install it on a Windows XP machine (without WSS obviously) and specify the URL to my SharePoint server.&lt;/li&gt; &lt;li&gt;Ability to customize contents of WSP file&lt;/li&gt; &lt;li&gt;Better CAS support - A tool to help determine security policies would be great&lt;/li&gt; &lt;li&gt;Multiple web parts in one project&lt;/li&gt; &lt;li&gt;Better control of what goes into the solution package&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;I know the product is just a CTP, so hopefully, with some good feedback we can get a tool we can all use.&amp;nbsp; I guess for now its back to manual creation, stsdev, or WSPBuilder.&amp;nbsp; Microsoft has relied on the community too long for SharePoint tools, it is time they produce.&lt;/p&gt; &lt;p&gt;I have also cross posted this to the &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopment/thread/c630bd11-379b-4365-86b1-46c45f3d5059/?ffpr=0"&gt;SharePoint Developer Forum&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=833" width="1" height="1"&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/VSeWSS/default.aspx">VSeWSS</category></item><item><title>Dealing with InfoPath Form Templates in Visual Studio 2008 with TFS</title><link>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/01/12/dealing-with-infopath-form-templates-in-visual-studio-2008-with-tfs.aspx</link><pubDate>Mon, 12 Jan 2009 19:20:05 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:821</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=821</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/01/12/dealing-with-infopath-form-templates-in-visual-studio-2008-with-tfs.aspx#comments</comments><description>&lt;p&gt;I have been building a large number of InfoPath Form Templates in Visual Studio 2008 lately and I have discovered it is can be quite the exercise in frustration when you want to put your files in TFS (or any source control for that matter).&amp;nbsp; There are a number of reasons for this, but it all starts with the fact that the form template designer does not like it when files are read only.&amp;nbsp; Unlike other project types that will automatically check out files that are needed, the InfoPath form template project will not do this.&lt;/p&gt; &lt;p&gt;Before, you begin working with an InfoPath template file in source control, be sure that you checkout (at a minimum) manifest.xsf.&amp;nbsp; For some reason any time you compile, this file must be checked out.&amp;nbsp; On top of that, if you want to publish your form, it seems to require that this file is checked out in all other form projects in your solution.&amp;nbsp; It looks like it does a build solution prior to launch the publish form template dialog.&amp;nbsp;&amp;nbsp; As you are editing your form, other files in the project will more than likely need to be modified, so my recommendation is that you check the entire project.&lt;/p&gt; &lt;p&gt;As you are working, you might come to a point where you receive an error like the following when trying to save your file.&lt;/p&gt; &lt;p&gt;&lt;em&gt;InfoPath cannot save the following form: InfoPath Form Template.&amp;nbsp; The form is read-only.&lt;/em&gt;&lt;/p&gt; &lt;p&gt;When this occurs, it really is a bad time because every time I have received it, the form was already checked out and not marked read only.&amp;nbsp; The only solution I have found for this is to close Visual Studio and restart it.&amp;nbsp; This can be particularly frustrating when you have made a bunch of changes to the form template as you will end up losing them.&amp;nbsp; For this reason, I have made a practice of attempting to save the form, before I start making any changes to it.&lt;/p&gt; &lt;p&gt;Another error that you may often run into is the following.&lt;/p&gt; &lt;p&gt;&lt;em&gt;The operation cannot be completed.&lt;/em&gt;&lt;/p&gt; &lt;p&gt;This can occur when trying to publish or when trying to open the manifest.xsf file.&amp;nbsp; When this occurs, your best bet is to make sure all files in the project are checked out and restart Visual Studio.&amp;nbsp; If you are lucky, you will be able to open the form or publish it again.&amp;nbsp; If not, my recommendation is to go back to a previous version and hope for the best.&lt;/p&gt; &lt;p&gt;Another issue you might run into occurs when checking in.&amp;nbsp; If you try to check your files in while you still have manifest.xsf open in the form designer, you will get the following error.&lt;/p&gt; &lt;p&gt;&lt;em&gt;The process cannot access the file &amp;#39;MyTemplate.xsf&amp;#39; because it is being used by another process.&lt;/em&gt;&lt;/p&gt; &lt;p&gt;The designer seems to create a lock file so no external process can even read it.&amp;nbsp; Just make sure you close the file first before you try to checkin and you will be good.&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=821" width="1" height="1"&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/InfoPath/default.aspx">InfoPath</category></item><item><title>WSS 3.0 Tools, Visual Studio Extensions 1.2 running under Windows Vista</title><link>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/06/04/wss-3-0-tools-visual-studio-extensions-1-2-running-under-windows-vista.aspx</link><pubDate>Wed, 04 Jun 2008 22:02:40 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:597</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=597</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/06/04/wss-3-0-tools-visual-studio-extensions-1-2-running-under-windows-vista.aspx#comments</comments><description>&lt;p&gt;Back in February when version 1.1 of the Visual Studio Extensions for SharePoint came out, I really &lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/02/12/wss-3-0-tools-visual-studio-extensions-1-1-is-nice-but-still-disappointing.aspx"&gt;complained&lt;/a&gt; about the lack of support for Visual Studio 2008 and Windows XP / Vista.&amp;nbsp; Version 1.2 finally came out so I decided to look and see if operating systems other than Windows Server 2003 are supported and I was surprised to see Windows XP and Windows Vista on the list.&amp;nbsp; I immediately downloaded it, tried the installer but saw that there was still a requirement to have WSS installed.&amp;nbsp; Luckily, in the last week or so the guys at Bamboo, posted a utility to allow WSS to be &lt;a href="http://community.bamboosolutions.com/blogs/bambooteamblog/archive/2008/05/21/how-to-install-windows-sharepoint-services-3-0-sp1-on-vista-x64-x86.aspx"&gt;installed&lt;/a&gt; on Windows Vista.&amp;nbsp; I decided to give the utility a try and it worked flawlessly.&amp;nbsp; I then tried installing the extensions again and everything worked.&amp;nbsp; The Visual Studio Extensions are nothing all that exciting, but they can be useful from time to time.&amp;nbsp; I am just glad I was able to get them to install.&amp;nbsp; &lt;/p&gt; &lt;p&gt;I did notice that Windows Server 2008 was missing from the list so no telling if it will work there or not.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=7bf65b28-06e2-4e87-9bad-086e32185e68&amp;amp;displaylang=en"&gt;WSS 3.0 Tools, Visual Studio Extensions 1.2&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=597" width="1" height="1"&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category></item><item><title>How to: Use LINQ to SQL without using the Object Relational Designer</title><link>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/03/17/how-to-use-linq-to-sql-without-using-the-object-relational-designer.aspx</link><pubDate>Tue, 18 Mar 2008 00:54:20 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:537</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=537</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/03/17/how-to-use-linq-to-sql-without-using-the-object-relational-designer.aspx#comments</comments><description>&lt;p&gt;LINQ to SQL has already proved to be extremely easy to use to create object relational mappings when you have an existing database schema using the Object Relational Designer.&amp;nbsp; This designer is good, but you may not want something that is autogenerating your domain classes.&amp;nbsp; You may want to generate your domain classes yourself.&amp;nbsp; This is actually quite easy and works in a similar manner to other OR/Ms such as ActiveRecord.&amp;nbsp; The thing I like about it is that your domain objects do not have to inherit from some base class that has all of the underlying logic to access the database.&amp;nbsp; Instead you create a custom class separate from your domain objects that inherits from DataContext.&lt;/p&gt; &lt;p&gt;We&amp;#39;ll create a simple example of a products table for an e-Commerce web site.&amp;nbsp; Let&amp;#39;s start by looking at the domain object.&amp;nbsp; Before you create your domain object start by adding a reference to &lt;em&gt;System.Data.Linq&lt;/em&gt; to your class library if it is not already present.&amp;nbsp; You will then need to add a using statement in each domain class for &lt;em&gt;System.Data.Linq.Mapping&lt;/em&gt;.&lt;/p&gt; &lt;div style="font-size:10pt;background:white;color:black;font-family:courier new;"&gt; &lt;p style="margin:0px;"&gt;[&lt;span style="color:#2b91af;"&gt;Table&lt;/span&gt;(Name=&lt;span style="color:#a31515;"&gt;&amp;quot;Products&amp;quot;&lt;/span&gt;)]&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Product&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px;"&gt;{&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color:#2b91af;"&gt;Column&lt;/span&gt;]&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;string&lt;/span&gt; Name;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color:#2b91af;"&gt;Column&lt;/span&gt;(IsPrimaryKey=&lt;span style="color:blue;"&gt;true&lt;/span&gt;, Name=&lt;span style="color:#a31515;"&gt;&amp;quot;Id&amp;quot;&lt;/span&gt;)]&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;int&lt;/span&gt; ProductId;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color:#2b91af;"&gt;Column&lt;/span&gt;(Name=&lt;span style="color:#a31515;"&gt;&amp;quot;Price&amp;quot;&lt;/span&gt;)]&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;double&lt;/span&gt; Price;&lt;/p&gt; &lt;p style="margin:0px;"&gt;}&lt;/p&gt;&lt;/div&gt; &lt;p&gt;The first thing you do in your domain class is decorate it with a &lt;strong&gt;Table&lt;/strong&gt; attribute.&amp;nbsp; An optional parameter here specifies the name of the underlying database table.&amp;nbsp; In this case my domain object it Product but my database table is named Products.&amp;nbsp; I then defined three properties representing columns in the table.&amp;nbsp; The &lt;strong&gt;Column&lt;/strong&gt; attribute specifies that the property will have a corresponding column in a database table.&amp;nbsp; The &lt;em&gt;IsPrimaryKey&lt;/em&gt; parameter specifies that the column is a primary key in the database.&amp;nbsp; The &lt;em&gt;Name&lt;/em&gt; parameter here also allows you to specify a different column name in the database.&lt;/p&gt; &lt;p&gt;That is really all that is required to create a domain object.&amp;nbsp; You can define a class for each domain object you want and you can also create relations between them (but I won&amp;#39;t be covering that here today).&amp;nbsp; Once you have your domain object created, you will need to create a DataContext class to actually be able to query your domain objects.&amp;nbsp; This is also pretty simple.&amp;nbsp; You just expose a property with the generic type of Table&amp;lt;&amp;gt; for each one of your domain objects.&amp;nbsp; The name of the property is what you will use with the DataContext when you are querying with LINQ.&lt;/p&gt; &lt;div style="font-size:10pt;background:white;color:black;font-family:courier new;"&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;StoreDataContext&lt;/span&gt; : &lt;span style="color:#2b91af;"&gt;DataContext&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px;"&gt;{&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Table&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Product&lt;/span&gt;&amp;gt; Products;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;public&lt;/span&gt; StoreDataContext(&lt;span style="color:blue;"&gt;string&lt;/span&gt; connection)&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : &lt;span style="color:blue;"&gt;base&lt;/span&gt;(connection)&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin:0px;"&gt;}&lt;/p&gt;&lt;/div&gt; &lt;p&gt;Now that you have your domain objects written you will need to create the SQL tables that they represent.&amp;nbsp; You can do this manually, or you can have LINQ create the whole database for you.&amp;nbsp; Just create an instance of your DataContext and call the &lt;em&gt;CreateDatabase&lt;/em&gt; method.&amp;nbsp; This method infers the name of the database given the connection string you used.&amp;nbsp; If you did not specify the database, you need to add a &lt;strong&gt;Database&lt;/strong&gt; attribute with the name to your class.&lt;/p&gt; &lt;div style="font-size:10pt;background:white;color:black;font-family:courier new;"&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:#2b91af;"&gt;StoreDataContext&lt;/span&gt; myDataContext = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;StoreDataContext&lt;/span&gt;(myConnectionString);&lt;/p&gt; &lt;p style="margin:0px;"&gt;myDataContext.CreateDatabase();&lt;/p&gt;&lt;/div&gt; &lt;p&gt;Alright, so now your domain objects and database are created, now you just need to query something with it.&lt;/p&gt; &lt;div style="font-size:10pt;background:white;color:black;font-family:courier new;"&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;var&lt;/span&gt; products = &lt;span style="color:blue;"&gt;from&lt;/span&gt; product &lt;span style="color:blue;"&gt;in&lt;/span&gt; myDataContext.Products&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;where&lt;/span&gt; product.Price &amp;gt; 49.99f&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;select&lt;/span&gt; product;&lt;/p&gt;&lt;/div&gt; &lt;p&gt;This simple query simply returns any product with a price greater than 49.99.&amp;nbsp; So, LINQ to SQL doesn&amp;#39;t have to be completely domain driven.&amp;nbsp; This gives you a lot of flexibility and makes it easy to add additional things to your domain logic if you want to.&amp;nbsp; The downside to this of course it that, when your database schema changes, your domain object is not going to get updated at the click of a button.&amp;nbsp; If you are building your domain objects in this manner though, this is probably not a concern to you though.&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=537" width="1" height="1"&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/LINQ+to+SQL/default.aspx">LINQ to SQL</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/C_2300_+3.0/default.aspx">C# 3.0</category></item><item><title>How to: Remote Debugging a Web Application</title><link>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/03/05/how-to-remote-debugging-a-web-application.aspx</link><pubDate>Wed, 05 Mar 2008 19:54:18 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:529</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>10</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=529</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/03/05/how-to-remote-debugging-a-web-application.aspx#comments</comments><description>&lt;p&gt;After talking to many different developers, I appear to be one of the few ones that have gotten remote debugging to work with a reasonable success rate.&amp;nbsp; That is why I have decided to post on it today.&amp;nbsp; Everything I am writing today is based upon my experience in what has worked and may not necessarily be a best practice.&amp;nbsp; I actually posted about this once in the &lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2005/12/09/remote-debugging-made-easy.aspx"&gt;past&lt;/a&gt;, but I think its worth going into more detail.&lt;/p&gt; &lt;h4&gt;&lt;strong&gt;Preparing Your Server&lt;/strong&gt;&lt;/h4&gt; &lt;p&gt;The first step is to install the remote debugging tools on your server.&amp;nbsp; To do this, run rdbgsetup.exe contained in the Remote Debugger folder of your Visual Studio 2008 or Visual Studio 2005 installation media.&amp;nbsp; Be sure and pick the correct processor architecture (x86, x64, or ia64).&amp;nbsp; To use remote debugging, you can either install a Windows service or run an application.&amp;nbsp; Although, the service is more convenient if you are going to be debugging a lot, the application is a lot easier to get up and running.&lt;/p&gt; &lt;h4&gt;&lt;strong&gt;Running the Remote Debugger&lt;/strong&gt;&lt;/h4&gt; &lt;p&gt;Once you have got the remote debugger installed, I typically use remote desktop to log into the server and start the Visual Studio 2008 Remote Debugger.&amp;nbsp; This really will only work right if the account you are logging into the server with is also the same account you log into on your client machine that is doing the remote debugging.&amp;nbsp; If its not, there are some complications and you&amp;#39;ll legitimately get the error I have posted about &lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/01/31/unable-to-connect-to-the-microsoft-visual-studio-remote-debugging-monitor.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;One thing to note.&amp;nbsp; The Visual Studio 2008 Remote Debugger is not backwards compatible with Visual Studio 2005.&amp;nbsp; Therefore, you need to be sure and install the Remote Debugger from the same version of Visual Studio you are debugging with.&amp;nbsp; It is ok to have them both installed at the same time, but I don&amp;#39;t believe you can have both running at the same time (need to confirm though).&lt;/p&gt; &lt;h4&gt;&lt;strong&gt;Preparing your environment&lt;/strong&gt;&lt;/h4&gt; &lt;p&gt;When you are ready to start remote debugging, start by compiling your web application.&amp;nbsp; You then need to copy the DLL and PDB file from your bin/debug folder to the bin folder of the web application on your server.&amp;nbsp; Not doing this is one of the most common causes for a breakpoint to never be hit when remote debugging.&amp;nbsp; If the DLL and PDB do not match between the client and the server, the breakpoint will never be hit.&lt;/p&gt; &lt;h4&gt;&lt;strong&gt;Start Debugging&lt;/strong&gt;&lt;/h4&gt; &lt;p&gt;Once everything is in place, it is time to start debugging.&amp;nbsp; To do this, click on Debug -&amp;gt; Attach to Process in Visual Studio when you have your web project open.&amp;nbsp; If everything is good and all the permissions match up, you should be able to type your server name into the Qualifier box and view its processes.&amp;nbsp; Typically, when I do this, I am a local administrator on both the client and the server.&amp;nbsp; I think this is more permission than needed though.&amp;nbsp; I believe there is a Remote Debuggers security group that can be used.&lt;/p&gt; &lt;p&gt;The way you start debugging is by attaching to w3wp.exe.&amp;nbsp; However, it is more than likely that you will have multiple application pools on your server (especially if you are using SharePoint) which means more than one w3wp.exe process.&amp;nbsp; To determine which w3wp.exe to use, you can just pick one arbitrarily and then examine the modules window in Visual Studio and look for your DLL.&amp;nbsp; You can also look at the username on the process and see if it matches the one on the application pool you want, or you can use a &lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2006/10/17/determine-the-application-pool-for-a-w3wp-process.aspx"&gt;cscsript command&lt;/a&gt; to get a list of the w3wp.exe processes and which site they match in IIS.&lt;/p&gt; &lt;p&gt;Once you have attached to the correct w3wp.exe, set a breakpoint open a web browser and hit the page you want to debug.&amp;nbsp; Assuming you set a breakpoint and did everything correctly, the breakpoint wont give you a message that the symbols could not be loaded and the breakpoint cannot be hit.&amp;nbsp; If you were able to set your breakpoint, open a web browser and hit the page you wanted to debug.&amp;nbsp; If all goes well, your breakpoint will be hit and you can debug just like it was on your local machine.&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=529" width="1" height="1"&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Visual+Studio+2005/default.aspx">Visual Studio 2005</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Debugging/default.aspx">Debugging</category></item><item><title>How to: Hack a Class Library Project into a Web Application Project</title><link>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/02/22/how-to-hack-a-class-library-project-into-a-web-application-project.aspx</link><pubDate>Fri, 22 Feb 2008 20:09:24 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:511</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=511</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/02/22/how-to-hack-a-class-library-project-into-a-web-application-project.aspx#comments</comments><description>&lt;p&gt;Kind of a weird tip here, but I have ran into a situation where I have needed to do this.&amp;nbsp; Basically, I have had an existing class library (for SharePoint development) and for some reason, I have decided I need to add ASP.NET file types to it (i.e. User Controls, Master Pages, etc.).&amp;nbsp; A class library doesn&amp;#39;t have these file types in the Add Item menu so you need a Web Application Project. When it comes down to it a Web Application Project really is the same thing as a class library, it just has some extra settings.&amp;nbsp; So when it comes down to it, you would either have to recreate the project and add your existing files back into it or just hack the XML of your .csproj file.&amp;nbsp; I obviously prefer the latter.&lt;/p&gt; &lt;p&gt;To do this, start by Unloading the Project by right clicking your project and choosing &lt;em&gt;Unload Project&lt;/em&gt;.&amp;nbsp; Next Right click on your unloaded project and choose &lt;em&gt;Edit &amp;lt;PrjectName&amp;gt;.csproj&lt;/em&gt;.&amp;nbsp; Paste the line below in the first ProjectGroup element.&amp;nbsp; Usually Visual Studio puts it underneath the ProjectGuid element.&amp;nbsp; &lt;/p&gt; &lt;div style="font-size:10pt;background:white;color:black;font-family:courier new;"&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ProjectTypeGuids&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ProjectTypeGuids&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;p&gt;That is the only change that is required.&amp;nbsp; There are some optional settings that you can put in regarding the configuration of Cassini, but none of them are required to get you going.&amp;nbsp; You can always configure them in Visual Studio.&amp;nbsp; Once you have made the change, save the .csproj file and Reload Project.&amp;nbsp; Once the project is loaded, all of the ASP.NET file types will be present in your Add Item menu.&amp;nbsp; When you compile, it will still compile everything down to a single DLL and you can deploy it just as if it was a regular class library.&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=511" width="1" height="1"&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Visual+Studio+2005/default.aspx">Visual Studio 2005</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category></item><item><title>WSS 3.0 Tools, Visual Studio Extensions 1.1 is nice but still disappointing</title><link>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/02/12/wss-3-0-tools-visual-studio-extensions-1-1-is-nice-but-still-disappointing.aspx</link><pubDate>Tue, 12 Feb 2008 15:28:00 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:487</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=487</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/02/12/wss-3-0-tools-visual-studio-extensions-1-1-is-nice-but-still-disappointing.aspx#comments</comments><description>&lt;p&gt;At the ODC (where I should be this week), Microsoft announced version 1.1 of the Visual Studio 2005 extensions for Windows SharePoint Services.&amp;nbsp; This brings a lot of great new project templates and the ability to edit wsp files.&amp;nbsp; What is it lacking?&amp;nbsp; Well unfortunately Visaul Studio 2008 support.&amp;nbsp; I have already moved most of my SharePoint projects into Visual Studio 2008 and having no support for it is completely frustrating.&amp;nbsp; We&amp;#39;re going to have to wait until June to see that support in version 2.0.&lt;/p&gt;
&lt;p&gt;Another, thing that really disappoints me is that it still requires Windows Server and SharePoint to be installed just to install the extensions.&amp;nbsp; I use Virtual Machines to do development some, but I also do a lot of development from Windows XP and Vista and make use of Remote Debugging.&amp;nbsp; I understand the complexities of running things over the network, but can I at least install the project templates?&amp;nbsp; I am willing to deploy the files myself, it doesnt have to be automatic for me.&lt;/p&gt;
&lt;p&gt;If you are still using Visual Studio 2005 on a Windows Server, then go ahead and install them because they will be pretty useful.&amp;nbsp; Here is the link.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=3e1dcccd-1cca-433a-bb4d-97b96bf7ab63&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=3e1dcccd-1cca-433a-bb4d-97b96bf7ab63&amp;amp;displaylang=en&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=487" width="1" height="1"&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Visual+Studio+2005/default.aspx">Visual Studio 2005</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category></item></channel></rss>