Upgrading to 2005 Continuing To Be A Pain#

I decided to go with Scott Gu's suggestion to use Web Application Projects to help ease the conversion for 2003.

I will agree that this is a much better way to convert your project than to turn it into a Web Site Project, but there are still lingering problems.

In one of my projects the web page and code behind have somehow become lost.  The code behind pages can't see their controls, which are placed in some mystery file thanks to the new Partial Class feature.

I tried ranaming the files, I tried cutting and then replacing the HTML that defines the controls, the only thing I found that works is to totally delete the file and recreate it exactly the same way.  What a pain.

The "What a pain" concept is the only constant in this process.

I am still not sure what is going on with project references. 

As far as I see, if there is a DLL in the bin directory, you don't need a reference to that DLL.  But as soon as you clean out your bin, your project will break with error messages that are nothing like "Are you missing a reference?" because, of course you are, VS.Net just removes them all the time w/o asking you! 

There must be some new paradigm with how you are supposed to work with references, projects, and solutions, because trying to do it like you would in vs.net 2003 is causing a ton of problems.

Update: Almost as if VS was getting back at me, as soon as I posted this it took a crap and crashed.  :-)

Categories: Programming | .Net | ASP.Net | Rants
Monday, April 17, 2006 6:16:34 PM (Central Daylight Time, UTC-05:00) #    Comments [0]  | 

 

University of Chicago First Grades#

I just got my first set of grades from University of Chicago.  I got an A in OO Architecture and Design Patterns, and a B in Software Construction.

I think I couldn't have done any better than a B in Software Construction.  The work was very challenging, in a good way, but the time requirement was so great that week after week I wasn't able to complete the weeks assignment, or if I was able to complete it, my code wasn't as strong as it could have been.

I am taking this quater off to focus on work, and I am not sure if I will be taking anything in the summer as they usually do the really basic classes then.  We will see. 

I probably still need to take some kind of discrete math class, but I don't want to pay the $3600 bucks to take it at UofC if I can take it elsewhere for less.

Categories: University of Chicago
Sunday, April 16, 2006 10:25:35 PM (Central Daylight Time, UTC-05:00) #    Comments [0]  | 

 

Bret Martin and Katie Kniss Are Getting Married#

Bret Martin and Katie Kniss

Bret Martin and Katie Kniss are getting married

I am going to see if I can get a googlewhack on Bret Martin and Katie Kniss, linking to this page.  Technically a googlewhack is 2 words that are in the dictionary, but I am expanding on this to include names.

Putting their names in some H1 and H2 tags at the top here should help with the Googlebot.

Bret Martin and Katie Kniss are getting married.


Actually, Katie is probably getting the raw end of this deal, she is going to have to put up with Bret for years to come. 

Same goes for Kathleen.  Sometimes I wonder if knew what she was getting herself into.  :-)

The wedding is this summer in St. Louis, and I hear they are spending their honeymoon in Peoria.  Well not just Peoria... East Peoria. 


Update: Well I got my home page number 1 on the major 3 search engines:
Google
Yahoo
MSN

But they are only indexing my homepage right now, not the actual article link (Bret Martin and Katie Kniss).

Categories: Funny Stuff | Misc | Thoughts
Sunday, April 16, 2006 12:54:14 PM (Central Daylight Time, UTC-05:00) #    Comments [0]  | 

 

Citrix Alternatives?#

Slashdot is running an Ask /. article on alternatives to Citrix.

At Walsh, we run a lot of applications over Citrix, mostly apps that really aren't meant to be run remotely, to allow remote users to run them against databases that are stored in our main offices.

MSi is interested in a solution such as this as well but for more daily operations than specific application access.

Categories: Servers | Networking | Software | Windows
Saturday, April 15, 2006 11:20:02 PM (Central Daylight Time, UTC-05:00) #    Comments [0]  | 

 

VB.Net: Passing Reference and Value Objects ByRef and ByVal#

Here is a little example of how vb.net deals with passing of objects ByRef and ByVal.  The short answer is that when you pass a reference type object (not a value type) byval, the object is copied back when the method if finished.  You never really have handle on the original object, which is evident by the fact that you can't set it = nothing.  However, if you pass ByRef then you can indeed set the object = nothing and it will remain null when you return to the calling function.

If you try the same thing, except using a value type structure, you will see almost the same behavior, except for the major differenct that if you pass a structure byval and then make a change to it, those changes will not be copied back to the calling function.

To see an example of this check out the code by clicking on the "More" button to read the full article. 
Categories: Programming | .Net | .Net Framework | VB.Net
Saturday, April 15, 2006 1:04:46 PM (Central Daylight Time, UTC-05:00) #    Comments [0]  | 

 

dasBlog Category Rename#

Here is a link to a tool that will go through a collection of blog entries and rename them.  Just what I was looking for.

http://www.vasanth.in/Software.aspx?=renamer

 

Categories: Blogging
Saturday, April 15, 2006 12:13:13 AM (Central Daylight Time, UTC-05:00) #    Comments [0]  | 

 

QofSA - Over the Years and Through The Woods#

I just finished watching Over the Years and Through The Woods which I first blogged about here.

It was pretty cool!  If you like Queens of the Stone Age, then you should really get it.

The performances reminded me of the one thing that they do live that I don't like, and that is take an adlib section too far.  It's like, oh cool, normally this part only goes on 4 times but they are doing it more, ok, thats 12, 16, ...  ok 24 times ... ok... this is getting stupid, I lost track of the count, are they ever going to jump back into the song?

But the DVD is pretty cool.  There are some cool bonus footage of a bunch of the songs I really like with their old bass player that they don't play live anymore, which sucks.  I think they were a lot better w/ him in 2003 than w/o.  But whatever.

I found this other CD by them that I might end up getting called The Desert Sessions

Cool stuff.

Categories: Cool | Movies | Music
Friday, April 14, 2006 5:34:23 PM (Central Daylight Time, UTC-05:00) #    Comments [0]  | 

 

From Asp.net 1.1 to 2.0: Parser Error - Could not load type 'xyz.Global'#

As we were upgrading to run ASP.Net 2.0, we ran into this wonderful problem.  Your code seems to run fine until you push it to a server and you get this error:

 Parser Error

Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.

Parser Error Message: Could not load type 'xyz.Global'.
Source Error:

Line 1:  <%@ Application Inherits="xyz.Global" Language="VB" %>
Source File: /global.asax    Line: 1

Version Information: Microsoft .NET Framework Version:2.0.50727.42; ASP.NET Version:2.0.50727.42

 

There are 2 things I had to remember to do to get this to work.

1) We use a domain user for the aps.net worker process, so our site can access UNC files across the network.  In order for this user to have the ability to compile the app, you have to give them full rights to: c:\WINDOWS\Microsoft.NET\Framework\v1.1.4322 and if you start running your apps in .net 2.0, you need to do the same for c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727.

2) If you have any web apps running in 1.1, there is a good chance that even thought you changed the iis setting to asp.net 2.X, you are still running against an app pool that is shared with another site using asp.net 1.1.  So, just create a new app pool, and have your newly 2.0 site setup to use that app pool.

Problem solved!

Categories: Programming | .Net | ASP.Net
Thursday, April 13, 2006 6:05:37 PM (Central Daylight Time, UTC-05:00) #    Comments [0]  | 

 

VS.Net 2005, Projects, Solutions, and References: What was MS thinking??? This SUCKS!!!!#

This is really shocking (and very disappointing) to me.

I had the task of upgrading the code base at Walsh Construction from .net 1.1 to 2.0 and putting it all in a source control database.

I had been getting a lot of totally random build problems, and I started wondering: Where does it store my references?

ASP.Net Web Sites projects don't have a vbproj or csproj file anymore, so where is it storing the fact that I want this website to have a references to a given DLL or a given project in my solution?

I found that the answer is that the project references are stored in the solution file! 

If you open up the solution file you will find lots of stuff like this:

ProjectSection(WebsiteProperties) = preProject
ProjectReferences = "{E050AEA3-6DCA-4DE8-936F-5A8B14A912B9}|MyReferencedAssembly.dll;

This is kinda stupid.

Non-website projects keep a list of their references in their project file.

Websites keep SOME reference info in their web.config, although I think that is only for DLLs that are in the GAC.

Anyway on to the list of things that truly suck about how this works:

1)  When you add a reference from a web project to a DLL, the DLL is copied to the Bin directory right then, as opposed to when you do the build.  I bet it does it at build-time as well, but what really sucks is that you can have a situation where WebSiteA references ComponentA which references DataAccessLayerA.  WebSiteA will have DataAccessLayerA.dll in it's bin directory, then if you go to add a references from WebSiteA to DataAccessLayerA, it will say "Oh you already have a reference" when you really don't, and if you try to build it won't work until you go delete that dll from your bin and add the reference.

2)  I have been unable to open some projects without opening the entire solution that I joined them too at one point.  Basically as I was converting all our projects over to 2003 I wanted to also change them from DLL references to project references.  So I created a solution with ever project and website we have in .net.  To illustrate my problem, I added a project to the solution called IAmABogusProject with 1 class and 1 static method.  No one uses this class, no projects have a reference to this project, and this project has no references to any other projects.  Yet, if I go click on the vbproj file for this project, it loads up my solution file with every single project.  I tried creating another solution and adding it to that one to see if it would open the new solution when I tried to reopen the project but no luck, it opened original solution with every application again!! WTF!!

3) This is the worst of the list.  If you have a project in a solution that is referenced by some other projects and you remove that project from the solution, guess what happens?  In 2003 it would remove the project and all the referencing projects would show a missing reference icon.  In 2005 it checks out all the referencing projects and removes the reference!!!  Are you kidding me???  For the cherry on top, you have to then manually add all the references back after you add the project back into the solution, and of course you get all kinds of weird bugs, none telling you that you are missing an assembly reference.  Totally stupid.   This is a bug, see Update3 at the bottom.

I am really pissed about this.  Why do MS product upgrades frequently come with a "What were they thinking?" tag? 

Maybe the roll of the solution has changed or something, but this is going to really piss me off working like this day to day.

I have already had something happen where all my website projects that I had already added to source control lost their binding.  Great....

Update1:  I am continuing to have problems with my web project "losing" references that I have to keep setting.  What a pain this is becoming!

Update2: Scott Gu from Microsoft (http://weblogs.asp.net/scottgu) suggested that I give the Web Application projects a try.  I had tried them once before when in beta and remembered there was something that was a show stopper at the time.  I don't remember exactly what, maybe the designer didn't work?  Anyway, that could solve a few of my issues, but this whole thing of not being able to open a project without a solution getting opened, and the thing where VS removes references from projects (even if they are under source control) if you remove the project from a solution is crazy.

Update3: Well thank God, someone from Microsoft let me know that this thing with removing a project causing references to disappear is actually a bug: http://www.chrismay.org/2006/04/19/VS2005RemoveProjectLoseReference.aspx 

Categories: Programming | .Net | VS.Net | Projects | Rants
Thursday, April 13, 2006 4:44:19 PM (Central Daylight Time, UTC-05:00) #    Comments [2]  | 

 

Quickbooks Integration#
AcctSync is a .NET SDK for integrating stuff into quickbooks.

Update: I first made this post in 2003, but I have another client that is going to be looking to do something with Quickbooks.  Might want to revisit this component in the near future.
Categories: Programming | Tools
Thursday, April 13, 2006 3:40:26 PM (Central Daylight Time, UTC-05:00) #    Comments [0]  | 

 

Running ASP.NET Development Server Without Virtual Path, From Root#

I had been looking for a way to get the asp.net development server to run w/o a virtual directory settings.  It's really very stupid and short sighted to not enable this.  Just about every project I have ever worked on has some paths coded into the HTML that are based on / being the root, not the application root.  Stupid.

 

Anyway, ScottGu posted these steps on his site, and it works.  Not bad!

Step 1: Select the “Tools->External Tools” menu option in VS or Visual Web Developer.  This will allow you to configure and add new menu items to your Tools menu.

 

Step 2: Click the “Add” button to add a new external tool menu item.  Name it “WebServer on Port 8080” (or anything else you want).

 

Step 3: For the “Command” textbox setting enter this value: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\WebDev.WebServer.EXE (note: this points to the web-server that VS usually automatically runs).

 

Step 4: For the “Arguments” textbox setting enter this value: /port:8080 /path:$(ProjectDir)

 

Step 5: Select the “Use Output Window” checkbox (this will prevent the command-shell window from popping up.

 

 Once you hit apply and ok you will now have a new menu item in your “Tools” menu called “WebServer on Port 8080”.  You can now select any web project in your solution and then choose this menu option to launch a web-server that has a root site on port 8080 (or whatever other port you want) for the project.

 

You can then connect to this site in a browser by simply saying http://localhost:8080/.  All root based references will work fine.

 

Step 6: The last step is to configure your web project to automatically reference this web-server when you run or debug a site instead of launching the built-in web-server itself.  To-do this, select your web-project in the solution explorer, right click and select “property pages”.  Select the “start options” setting on the left, and under server change the radio button value from the default (which is use built-in webserver) to instead be “Use custom server”.  Then set the Base URL value to be: http://localhost:8080/

Categories: Code Links | ASP.Net | VS.Net
Wednesday, April 12, 2006 1:42:57 PM (Central Daylight Time, UTC-05:00) #    Comments [3]  | 

 

Essence Theme#

The current theme on this site was created by Jelle Druyts.  I just emailed him looking for an idea to solve the problem of the left column dropping to the bottom of the page if you narrow the window.

I was kinda suprised to see his site when I clicked on the link for the theme creator because I have been to his blog a few times before, obviously for some .net programming stuff.

I am going to take a look at his categories b/c I long ago gave up on using categories in BlogX b/c you could only search in 1 category.  So if I knew I had saved some URL in my blog I would have to search in every category in order to find it.

Now that I am using dasBlog, I should be reorganizing my categories.

Categories: Blogging
Wednesday, April 12, 2006 9:44:59 AM (Central Daylight Time, UTC-05:00) #    Comments [0]  | 

 

Morning Commute#

I tried wearing a new pair of shoes yesterday (big mistake) and on my walk to the train I got a giant blister on my left foot.

Damn it hurts!

So today I decided to drive to avoid the walk to/from the train station, and something terrible happened.  I actually ended up looking for "the mix" on my car radio.  I am ashamed.

Kathleen has been putting it on every morning, and my usual stations were not doing anything intersting.  The Score had Mike North saying something racist, 720 and 780 were on commerical, 850 was some terrible show I have never heard before, and ESPN was talking about golf.

Lucky for me the mix quickly went to commerical, so I was able to come to my senses.

Categories: Thoughts
Wednesday, April 12, 2006 9:27:33 AM (Central Daylight Time, UTC-05:00) #    Comments [0]  | 

 

Databinding in .Net 2.0 (DNR TV)#

Brian Noyes is the guest on DNR TV to cover databinding in .Net 2.0.

The video can bee seen here.

Categories: Code Links | .Net Framework | Web Site Links
Monday, April 10, 2006 6:26:51 PM (Central Daylight Time, UTC-05:00) #    Comments [0]  | 

 

Expert VB 2005 Business Objects eBook#

Here is the link to get the book in beta:
http://www.apress.com/book/bookDisplay.html?bID=10090

Expert VB 2005 Business Objects takes you from an opening discussion of logical architectures to detailed n-tier deployment options using the CSLA .NET Framework. Rockford provides enough understanding and detail for you to take this approach to your own projects, as many developers have already done.

Categories: Web Site Links | VB.Net
Monday, April 10, 2006 6:23:05 PM (Central Daylight Time, UTC-05:00) #    Comments [0]  | 

 

Implementing ICloneable While Staying Type Safe#

I had always had issue with implementing ICloneable in the .Net Framework on my classes.  Implementing ICloneable requires that you return an Object, but a lot of time you don't want to return an Object type, you want to return a strongly typed object of type whatever.

Well, thanks to a tip I heard on .NetRocks from Rocky Lhotka, I have coded up an example of how you can a) Implement ICloneable, and b) return a strongly typed object from your Clone method.

Imports System

Public Class BusinessObject
Implements ICloneable
Private Function privateClone() As Object Implements ICloneable.Clone
Dim MyClone As Object = makeClone()
Return MyClone
End Function
Public Function Clone() As BusinessObject
Dim MyClone As BusinessObject = makeClone()
Return MyClone
End Function
Private Function makeClone() As BusinessObject
'*** do the clone here
End Function End Class

The trick is to implement ICloneable as a private function.  To be honest I have no idea why this works.  You would think that implementing the Clone method as a private function would mean that you couldn't access it, but as the code I wrote below shows, it does work.

imports Microsoft.VisualBasic
imports System
imports System.Collections

public module MyModule
    sub Main
RL()
        dim o as new BusinessObject
        WL("IClone " & o.Clone.IClone)
        WL("StandardClone " & o.Clone.StandardClone)
        dim i as System.ICloneable
        i = ctype(o, System.ICloneable)
        WL("IClone " & ctype(i.Clone,BusinessObject).IClone)
        WL("StandardClone " & ctype(i.Clone,BusinessObject).StandardClone)
        RL()
    end sub

    #region "Helper methods"

    sub WL(text as object)
        Console.WriteLine(text)
    end sub

    sub WL(text as object, paramarray args as object())
        Console.WriteLine(text.ToString(), args)
    end sub
        
    sub RL()
        Console.ReadLine()
    end sub
    
    sub Break()
        System.Diagnostics.Debugger.Break()
    end sub

#end region

end module


public Class BusinessObject
Implements System.ICloneable
    public IClone as string = ""
    public StandardClone as string = ""

Private Function privateClone() As Object Implements ICloneable.Clone
Dim MyClone As Object = makeClone()
        ctype(MyClone,BusinessObject).IClone = "true"
Return MyClone
End Function

Public Function Clone() As BusinessObject
Dim MyClone As BusinessObject = makeClone()
        MyClone.StandardClone = "true"
Return MyClone
End Function

Private Function makeClone() As BusinessObject
'*** do the clone here
        return new BusinessObject
End Function

End Class

I will have to get to the bottom of this private thing.  But at least this will work and do you want expect it to.

Update: I got some answers from a couple people online.
Alvin Bruney (
http://msmvps.com/blogs/Alvin/ ) suggested:

The modify tag, private, does not apply to the compiler. It is capable of
calling the method. The tag is applicable only to calling code.

This I knew, but I guess I was wondering why the compiler allows you to do this.  I guess it makes sense that the interface makes that method public, so public it is!   Case closed

Categories: .Net Framework | VB.Net | C#
Monday, April 10, 2006 9:10:44 AM (Central Daylight Time, UTC-05:00) #    Comments [0]  | 

 

CLSA on .NetRocks 2#

This is the original blog post from Rocky Lhotka about doing the .NetRocks show:
http://www.lhotka.net/WeBlog/dotnetrocksInterviewOnCSLANET20.aspx

Categories: Web Site Links
Sunday, April 09, 2006 7:57:59 PM (Central Daylight Time, UTC-05:00) #    Comments [0]  | 

 

CLSA.Net on DotNetRocks#

I am going to be getting Rocky Lhotka's new book, which is available in ebook form before he comes to speak at the CNUG group in DG.

In addition, he has taped 2 sessions with DotNetRocks available here and here.

I'm watching one of them now.

Categories: Web Site Links
Sunday, April 09, 2006 5:29:56 PM (Central Daylight Time, UTC-05:00) #    Comments [0]  | 

 

Testing Trackback / Image / File / Google filters.#

With this post I am testing out some features of dasBlog.

I am linking to a Trackback faq page by Shai Coggins seen below thanks to the upload image feature (not bad eh?).



It looks like dasBlog just throws these uploaded images into a single folder, which I guess means I could overwrite a file if 2 were uploaded with the same name.  Lemme try...

Yep, it overwrote it.  I guess I will have to be careful about that possible occurance.

On to the file upload option:

Sequencediagram_1.png (1.84 KB)

Interesting, thats pretty cool.

The last thing to test is the content filter ability.

This seems a bit much, you type in a bunch of code and it will output some standard string.  For example, this should produce a google search: chrismay and this should produce an IMDB search: $imdb(The Matrix).

Here goes...

Update
Well it seems that everything worked pretty well except maybe the trackback isn't working.  The URL for the trackback appears to not be saved when I save this article, but maybe that is by design.  I will have to look into it.  I posted a comment on the article I was trying to trackback... maybe that output is cached and it will show up later (?), doupt it.  Here is the article I am dealing with.

Categories: Blogging
Sunday, April 09, 2006 4:23:54 PM (Central Daylight Time, UTC-05:00) #    Comments [0]  | 

 

Indents Fixed! #

Well a little tweaking of the code that does the generation of the formatted code, and it now produces what I want:

        Public Shared Function AddTOQueryString(ByVal URL As String, ByVal Key As String, ByVal Value As String) As String
Dim RegExp As New System.Text.RegularExpressions.Regex(Key & "=.*?(&|$)")
Dim Match As System.Text.RegularExpressions.Match = RegExp.Match(URL)
If Match.Success Then
Return RegExp.Replace(URL, Key & "=" & Value & Match.Groups(1).ToString)
ElseIf URL.IndexOf("?") > 0 Then
Return URL & "&" & Key & "=" & Value
Else
Return URL & "?" & Key & "=" & Value
End If
End Function
        /// <summary>Gets or sets the RSS version to write.</summary>
        /// <exception cref="InvalidOperationException">Can't change version number after data has been written.</exception>
        public RssVersion Version
        {
            get { return rssVersion; }
            set
            {
                if(wroteStartDocument)
                    throw new InvalidOperationException("Can't change version number after data has been written.");
                else
                    rssVersion = value;
            }
        }

I am not sure that I like what it does with literal strings.  I will probably want to change that.

I am also now convinced that it will not due for formatting Javascript.  J# just doesn't share enough similar attributes.  This tool also doesn't support XML (or HTML), which would be a nice thing too.

This converter looks pretty sweet.  You can include your regions and it will let you keep them collapsed and then expand via javascript, excellent.

I could also just wire up the implementation I already have to deal with HTML and Javascript.

We will see... for now this will do.

Categories: Blogging | VB.Net
Sunday, April 09, 2006 12:51:00 AM (Central Daylight Time, UTC-05:00) #    Comments [0]  | 

 

All content © 2010, Christopher May, Inc
Open Job Positions
On this page
Google Ads
This site
Calendar
<April 2006>
SunMonTueWedThuFriSat
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456
Archives
Sitemap
Blogroll OPML
Disclaimer

Powered by: newtelligence dasBlog 2.3.9074.18820

The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

Send mail to the author(s) E-mail

Theme design by Jelle Druyts


Pick a theme: