This week I downloaded Xamlon, and it is really cool. When you install it, I automatically adds an add-in to VS 2003 so that you can create Windows Forms apps with XAML. XAML replaces the normal Windows Form as the UI for a desktop application. Normally talked about as a UI technology to be shipped with Longhorn, xaml has been implemented in Xamlon and is available now for Windows. When you create an application with Xaml, you still have your code behind in .Net and your logic in supporting classes, but you just have a completely different way to make your UI. You desktop UI is markup. ASP.NET developers will love this new flexibility in desktop programming. No longer do desktop applications have to be rigid and absolute-positioned. Now they can flow with the size of the window. Xaml also makes use of vector-based graphics instead of raster-based graphics. In your Xaml UI, you can create lines and shapes by defining them with markup, and they can scale easily. Xamlon comes with some examples of clipart that are nothing more than markup-shapes. They scales to any size because they are rendered as vectors, not pixels.
Xamlon is really cool. I suggest that you check it out because I believe that in 5 years, Xaml will be the preferred desktop UI for new applications.
Following up with another blog post, here’s my opinion on these “special folders”.
We should be able to configure these in the web.config or machine.config. For instance, for small web sites with some classes, they are supposed to go in Application_Code. Why just one folder. I should be able to configure 1 or many dynamically compiled folders. Setting hard-coded names is going to cause a problem for *someone*. And why just one folder?
/bin will work for backwards compatibility with /Application_Assemblies, but Application_Themes? I would configure my own site as /aspnet_client/something/Themes and keep all special stuff under /aspnet_client. Because of this I need to able to configure these directories. I have submitted this suggestion on the VS 2005 Feedback Center.
I encourage everyone to port a web app to VS 2005 and note the issues that come up and log suggestions and bus to the Feedback Center.
So my coworker wrote and application full of arrays of structures (yeah structs, not classes). No clue of what a stack or a heap is. He even implemented a collection based on CollectionBase, and then he made a string indexer property (yep, ArrayLists only expose indexes). I said “have you ever heard of a HashTable?”. By the way, he’s been developing for several years. It’s sad, really.
P.S. This is an inside joke ‘tween me and my coworker.
According to the VS 2005 website:
Before you install
The Visual Studio 2005 Beta 1 Refresh is the same as the previous beta release, but now includes a Community Technology Preview (CTP) of Visual Studio 2005 Team System. While betas receive a much higher level of testing and feature work, CTPs are intended to expose developers to the latest working build. The Visual Studio 2005 Beta 1 Refresh is therefore still unsupported pre-release software and there are some precautions you should take. Please make sure you read both the Visual Studio 2005 Readme and the Visual Studio Team System Readme prior to installing this release.
For me, this means that if I currently have Beta 1 installed, there is no reason to uninstall it and then reinstall the same thing from different setup files. But, if I had downloaded the CTP of VSTS several months ago, then I may want to install that because the VSTS is new bits.
Maybe this will help someone who might think that this is a Beta 1.5 build.
To comment on Eric’s post about .Net Rocks, I would have to say: Congratulations for exercising your right to voice your opinion. You live in America. Isn’t it great. It’s also great that our economy operates on capitalism. If Carl couldn’t get any sponsors for the show, then he would probably do something different because of the cost involved. If the sponsors of the show weren’t getting any benefit from the advertisement, they would probably stop sponsoring. It all comes back to “voting with your feet”. Those who don’t like the show don’t listen. Those who do like the show do listen (and hear advertisements, buy products, etc). I don’t comment negatively on cooking or gardening radio shows. I simply do not listen to them. But other people do. Eric, I think the best way to effect change in Carl’s show (if that’s your goal) is to email him directly.
I, personally, have listened to every show, and if one particular episode didn’t peak my interest (and how can I possibly be interested in EVERY topic they discuss?), I simply don’t listen to it again. There are other episodes, however, to which I have listened several times. I first started listening when I was deployed to Iraq with the Army. It made it easy to keep up with what’s going on in the .Net world. It’s a great resource.
My .Net Rocks mug sits proudly on a shelf in my office.
I had a bang-head-against-the-wall experience yesterday when I couldn’t figure out how to connect VS 2005 with my current VSS 6 database. It kept wanting a web service interface (VSS 8.0). I was about to log a bug on the VS 2005 Feedback Center when I browsed VS options to the source control node and found a combo box with available source control. I changed the selection to regular VSS, and my problem was solved! This may help someone else, so I thought I’d get it on the Net to Google can cache it. I also posted this to the Whidbey private newsgroup.
For most people this will not be an issue at all. Most people don’t care about the control hierarchy of the Page, but to make highly-customized pages, you’ll get to know this very intimately. In v1.1, every control on the page was in the Page’s Controls collection, so if you needed to get a reference to a user control, for instance, you could declare the user control as a member variable or you could find it at runtime:
(MyUserControl)Page.FindControl(”ucMyUserControl”);
I’ve seen this method in plenty of code samples around the .Net, and I’ve even used it myself.
In version 2.0 (as it stands in Beta 1), if you user a Master Page along with your Page, this will not work. Let me tell you why. When you apply a master page, that master page has a ContentPlaceHolder control, and your page has only an <asp:Content/> control. This Content control get stripped and discarded and never makes it to the final Page control structure. The contents of the Content control are merged into the ContentPlaceHolder. The result is that the page ends up with only 1 control in its Controls collection: a ContentPlaceHolder from the master page. That leaves you to modify the above code to :
(MyUserControl)Page.Controls[0].FindControl(”ucMyUserControl”);
or you could otherwise find the ContentPlaceHolder first and then do the FindControl().
I don’t know the reasoning for this change. I would reason that the <asp:Content/> controls should merely be added to the controls collection of the master’s ContentPlaceHolder. This would result in less rearranging of the Page’s control hierarchy.
Overall, the master page feature is very nice. The IDE provides great RAD features for this, but my team develops an enterprise application that HAS to be maintainable, so RAD goes out the window. The master page is set on the PreInit method in our base page, and by the Load method, everything is where it should be ready to be used.
I’ve been using VS 2005 Beta 1 on a project, and the build seems to be a bit slow on starting, but there is a new context menu item called “Make”. As far as I can tell, it builds the project just the same, and it does it WAY faster than “Build” or “Rebuild”, so that’s what I’ve been using to avoid waiting for the delay. The bugs are currently being worked out of the build process, so I’m sure it’ll get faster.
It’s working well. My team has an extensive v1.1 team framework of common functionality, so since I’ve been developing a web app with ASP.NET 2.0 Beta 1, I’ve started on a v2.0 team framework. Right now I only have 3 new classes, and I just reference the rest of the framework through the v1.1. It works well, but there is one caveat. When used by the client application, you need to have all required .dll files in the bin folder, so we have our version 1.1 framework “TeamFramework.dll” and the v2.0 compiles to TeamFramework.dll also, so what to do? Well, the easiest thing for me is to set the v2.0 project to compile to TeamFramework2.dll, but that was an issue. Now, of course, putting these in the GAC would solve this problem, but our application doesn’t require the GAC.
All in all, the two versions inter-operate very well.
I realize that in small companies, the developer also has to be the System Engineer and is completely responsible for the server, but in larger enterprises, these responsibilities are assigned to dedicated teams. As an enterprise developer, I’m on a team that develops and applications, deploys it and supports it. We have an SE and DBAs that are responsible for maintaining the actual servers, but sometimes support issues get come to us when they really should be the responsibility fo the SE or DBA. Suppose a database job fails, shouldn’t the DBA be responsible for that? The code didn’t change. What if an application server mysteriously stops responding in production? Is it the SE’s responsibility to determine root cause? These are issues facing my organization, and I’d like some feedback regarding your teams and your interaction with your SEs and DBAs.