# Thursday, October 26, 2006

Update:  If you are wanting to learn how to undo or rollback a changeset using TFS 2010, visit my new blog post about this topic here:  http://www.edsquared.com/2010/02/02/Rollback+Or+Undo+A+Changeset+In+TFS+2010+Version+Control.aspx

 

So...  I really needed to undo a changeset that was previously made by another user and started looking around for it.  I knew you could do it but just hadn't ever had a need for it.  I figure I start right-clicking different places in Source Control Explorer but that didn't lead me to anything :(

Until I remembered there were cool new features in the Team Foundation Server Power Toys.  Once of which was an undo changeset command.  Take a look at them because I know you will find several features handy.  One of my favorites in there as well is Annotate.  (Thanks to Dave McKinstry for previewing that one to us!)  It's basically a solution to point-the-finger game for changes...  It will show a bar on the side next to every line that shows who the last person was that edited it, date/time, and the changeset number.  You can even double-click on the changeset number and the actual details of the changeset will pop-up.  Very handy!

 

Other features in the power toys package: (taken from the documentation)

 

Unshelve Command

Use the unshelve command to unshelve and merge the changes in the workspace.

Rollback Command

Use the rollback command to roll back changes that have already been committed to Team Foundation Server.

Online Command

Use the online command to create pending edits on writable files that do not have pending edits.

GetCS Command

Use the GetCS (Get Changeset) command to get the changes in a particular changeset.

UU Command

Use the UU (Undo Unchanged) command to undo unchanged files, including adds, edits, and deletes.

Annotate Command

Use the annotate command to download all versions of the specified files and show information about when and who changed each line in the file.

Review Command

Use the review command to optimize the code review process to avoid checking in or shelving.

History Command

Use the history command to display the revision history for one or more files and folders. The /followbranches option returns the history of the file branch’s ancestors.

Workitem Command

Use the workitem command to create, update, or view work items.

Query Command

Use the query command to run a work item query and display the results. If you do not provide a specific query, all the active work items assigned to you are displayed.

TreeDiff Command

Use the treediff command to display a visual representation of the differences between files in two server folders, in a server folder and a local folder, or in two local folders.

 

Ed B.

posted on Thursday, October 26, 2006 9:51:03 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
# Wednesday, October 18, 2006

Community Technology Preview (CTP) 6 is now available for download here. Recently at TulsaTechFest 2006 we attended a session where Dave McKinstry ( Team System MVP ) of Notion Solutions showed an overview of what DataDude is and the benefits it exposes to the software development life cycle. We really think this is an awesome addition to the already great product offering from Microsoft. VSTS is really beginning to bring all silos of development shops under one tool for better communication and manageability.

Ed K.

posted on Wednesday, October 18, 2006 3:53:54 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
# Monday, October 16, 2006

Schedule was great, excitement was high and the Speakers were awesome, TulsaTechFest 2006 was a roaring success and a load of fun! There was a great turnout… I think the final number was around 625 people attending the event. It was great being able to meet and talk to all the big .Net names out there that we all look up too. Some sessions suffered a little due to low attendance. Overall, the TechFest was a success and an enjoyable afternoon in Oklahoma. We are very much looking forward to Tulsa Tech Fest 2007.

Ed and I were also invited to speak on .Net Rocks! We love that show and jump at the opportunity to talk to two of our idols (Carl Franklin and Richard Campbell). Here are some pictures of Ed and I during the .NET Rocks! interview.

Go here to visit Tulsa Tech Fest website.

Go here to see more pictures from Tulsa Tech Fest 2007.

Go here to visit .NET Rocks! Radio Show website.

 

Ed K. & Ed B.

posted on Monday, October 16, 2006 3:49:46 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
# Sunday, October 08, 2006

When playing around with this Interface you will notice that it is very easy to subscribe and unsubscribe to events via the TFS Object Model.
The method signature for Subscribing to an event is:

 

int SubscribeEvent (
        string userID,
        string eventType,
        string filterExpression,
        DeliveryPreference preferences
)
 

As you can note there is several string values that are needed to pass in. I found no documentation on what eventTypes
or Filter expressions were available.  Hopefully the following information will help you as you develop with the
Object Model.

UserID: simple enough. 
eventType: Out of the Box
  • AclChangedEvent
  • BranchMovedEvent
  • BuildCompletionEvent
  • BuildStatusChangeEvent
  • CheckinEvent
  • CommonStructureChangedEvent
  • DataChangedEvent
  • IdentityCreatedEvent
  • IdentityDeletedEvent
  • MembershipChangedEvent
  • NodeCreatedEvent
  • NodePropertiesChangedEvent
  • NodeRenamedEvent
  • NodesDeletedEvent
  • ProjectCreatedEvent
  • ProjectDeletedEvent
  • WorkItemChangedEvent

To view event types on a certain TFS server you can consume http://ServerName:8080/Services/v1.0/Registration.asmx to enumerate through the list
or, you can use the IRegistration interface and loop through each RegistrationEntry for each EventType.

Filter Expression:

  • PortfolioProject
  • System.AreaPath
  • System.AssignedTo
  • System.AuthorizedAs
  • System.ChangedBy
  • System.ChangedDate
  • System.Id
  • System.IterationPath
  • System.OpenedBy
  • System.Reason
  • System.State
  • System.Title
  • System.WorkItemType

Example expression:

Condition String = "PortfolioProject" = 'Project Name' AND ("CoreFields/StringFi
elds/Field[ReferenceName='System.AssignedTo']/OldValue" = 'Ed Kisinger' OR "Core
Fields/StringFields/Field[ReferenceName='System.AssignedTo']/NewValue" = 'Ed Kis
inger') AND "CoreFields/StringFields/Field[ReferenceName='System.AuthorizedAs']/
NewValue" <> 'Ed Kisinger'

 
Ed K.
posted on Sunday, October 08, 2006 8:28:38 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
# Friday, September 29, 2006

"Visual Studio Code Name "Orcas" delivers on Microsoft’s vision of smart client applications by enabling developers to rapidly create connected applications that deliver the highest quality rich user experiences. This new version enables any size organization to rapidly create more secure, manageable & reliable applications that take advantage of Windows Vista and the 2007 Office System. By building these new types of applications, organizations will find it easier than ever before to capture and analyze information so that they can make effective business decisions." (Microsoft 2006)

Microsoft 2006, Download Center Details 

Ed K.

posted on Friday, September 29, 2006 10:30:30 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
# Wednesday, September 27, 2006

Tim Rayburn of TimRayburn.net is trying to drum up some interest from the DFW area for a BizTalk Special Interest Group (SIG). This is a great idea seeing the need for BizTalk is becoming more relevant for business and there is little talent out there to guide and nurture solid BizTalk solutions for companies. If you are interested please visit his blog and shoot him an email.... Tell him "The Ed's" sent ya. Ed B and I will of course become members of this SIG since we love BizTalk :)

Ed K. & Ed B.

posted on Wednesday, September 27, 2006 9:27:59 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
# Tuesday, September 26, 2006

It’s about time we plug Tulsa TechFest. Only 18 more days until the event, so if you have not made plans to be there, then you'd better and  go register now!  Tulsa TechFest is simply put a “Code Camp Gone Wild!”  It is put on by several users groups from several different states.  It’s gonna be awesome!

Sogeti will be there in full force as speakers, including us, “The Ed’s”.  Listed below are the Sogetians that will be speaking and their topics.

Tim Rayburn: NUnit Extensibility                               
http://www.tulsatechfest.com/Default.aspx?tabid=156

Tim Rayburn: Zero Cost .Net                                       
http://www.tulsatechfest.com/Default.aspx?tabid=156

Ed Blankenship & Ed Kisinger: Managing Projects with Team System
http://www.tulsatechfest.com/Default.aspx?tabid=131

Ed Kisinger & Ed Blankenship: Team Foundation Server Object Model
http://www.tulsatechfest.com/Default.aspx?tabid=131

 

We hope to see you there, it will be a blast!

Ed K. & Ed B.

 

posted on Tuesday, September 26, 2006 4:45:49 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback

Wow... it took a little while but I finally got finished updating our site with dasBlog 1.9, the newest version after about a year of development.  We have to give it the team for their outstanding work!  Many Kudos!

What took so long was upgrading the solution to .NET 2.0 since the application comes as a 1.1 app.  For some help to upgrade the solution to the .NET Framework 2.0 see this helpful post:  http://www.dasBlog.us/viewtopic.php?t=244

Let me know if anyone needs any help with this...

Ed B.

posted on Tuesday, September 26, 2006 12:37:52 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [1] Trackback
# Monday, September 25, 2006

Say you built an application that connects to TFS and you want a dialog box to appear if a user is not authorized to connect to TFS. To do this is quite simple.  There are two methods you might have seen when you are playing with the TeamFoundationServer object, Authenticate() and EnsureAuthenticated(). The difference between the two is Authenticate will always call the server and EnsureAuthenticated will only be called if the user has not already authenticated to the server. You should use the EnsureAuthenticated method as a performance point since you only want the call to go to the server if the user has not authenticated. Notice we are using the TeamFoundationServer constructor instead of the Factory; you can use the factory if you wish. The deciding point that you need to decide is if you want to reference the same object on subsequence calls and without the need to re-authenticate. Remember the factory method will return a cache instance of the object.

 

TeamFoundationServer tfs = new TeamFoundationServer(TFSServerName,new UICredentialsProvider());

tfs.EnsureAuthenticated();

 

If the user presses cancel on the dialog box then a UnauthorizedException will be thrown ,so handle it gracefully.

 

Ed K.

posted on Monday, September 25, 2006 11:47:25 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
# Sunday, September 24, 2006

Here is a simple example of how to connect to a Team Foundation Server and display some of its properties.

To start we need to fire up VS 2005 and create a new console application.

Now that we have a new project we need to add a reference to Microsoft.TeamFoundation.Client.

Now we can access the TeamFoundationServer object. To create an instance of the object we will use the TeamFoundationServerFactory, we are using the factory so that we create a cache version of the object for subsequence calls.

 TeamFoundationServer tfs = TeamFoundationServerFactory.GetServer("FriendlyNameOfYourTFSServerOrURL");

Now lets display some data:

Console.WriteLine("The Authenticated User is: {0}", tfs.AuthenticatedUserDisplayName);
Console.WriteLine("TeamFoundationServer Name: {0}", tfs.Name);
Console.WriteLine("TeamFoundationServer Object GUID: {0}", tfs.InstanceId);
Console.ReadLine();

Here is the OutPut:

Thats it! Very simple and fun.

 

Ed K.

posted on Sunday, September 24, 2006 11:52:53 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
# Friday, September 15, 2006

To build on Ed B's post of Hillarious Error, check this one out. We found this one today. Can you spot the not.

Ed K.

posted on Friday, September 15, 2006 4:31:00 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
# Friday, September 01, 2006

So, Wow... All of y'all that happen to use Facebook they have released an initial API that you can use to make applications that will read data from it once Facebook users have logged in and approved to use either your web or desktop application.  Pretty cool I think!

http://developers.facebook.com/index.php

I haven't dived too much into it since I am getting ready to leave out of town for Labor Day Weekend but at first glance:

  1. One thing I don't like is that it uses the REST protocol.  For more info about it check out the Wiki on it:  http://en.wikipedia.org/wiki/Representational_State_Transfer  It's pretty much making a POST of XML and then returning
  2. They do say that they have plans on supporting SOAP:  http://developers.facebook.com/faq.php
  3. I also noticed two guys have already made a VB.NET and a C# library to use.  I haven't looked at them yet and will take a look at them to see how well they did.  Obviously, I'll use the VB one :)  If I don't happen to think they will be useful for me, then I'll just create a Facebook.NET Library for it or just wait for them to implement SOAP so we can just use web services.
  4. You can't get the entries of the logged in user's wall (or whichever user they choose to view.)  You can only get the wall count.  Boo!

Once again, it's a very early implementation.  I'm going to have to blame all those people who have nagged me for three years while I was in college about not having a MySpace and a Facebook because I broke in and now I'm glued on checking mine everyday.  I have gotten to meet up with a lot of people though that I haven't talked to in a long time.

Have a safe and fun Labor Day Weekend!  I'll be heading to Austin!

Ed B.

posted on Friday, September 01, 2006 6:29:24 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
# Friday, August 18, 2006

So... I was working with a client's application the other day and I got one of the funniest errors I have ever seen in my life.  Gotta love it!

If you ever see this error (or similar) then you really need to think about maybe refactoring a little... Anybody care to guess the complexity of this method?

Error Message:  "No overload for method MethodName takes '125' arguments."

Cyclomatic Complexity:  121 (extremely bad)
Maintenance Complexity:  13,031 (very very bad)

[Stats care of the wonderful tool:  CodeRush]

Ed B.

posted on Friday, August 18, 2006 3:48:23 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [1] Trackback

Just to save you a lot of time and hassle with a BizTalk installation... the computer name has to be 15 characters or less!  I guess only those of us with long names ever run into these kinds of problems :)

Ed B.

Here is a great post by Tim Rayburn on this issue. Here: http://www.timrayburn.net

Ed K.
posted on Friday, August 18, 2006 3:33:09 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
# Wednesday, August 09, 2006

It's inevitable... members of a development team are going to work really long hours.  Especially around crunch time!!!  We all know how it is!

It's both fun and frustrating to work at an organization who is growing in their software development lifecycle, process framework, and project management processes.  Almost everyone I have talked to describes places that have a less than perfect process in place for effective project management.  Even when there are policies in place, some of the times it's not even followed!

Has this ever happened to anyone?:  A resource is allocated for three different projects at a given time that have a total of nearly 90 hours of work in any given week?  And... that resource is also assigned with application management for production defects?

One of the things that makes a project run smoother is better resource allocation.  The critical path gets affected when resources are being shared between projects and application maintenance.  It's one of the "risks" that should be documented!

WARNING:  I am not a project manager.  This opinion is definitely coming from the development side of things :) I feel so bad for project managers at times.  I know that they care about just making sure that the project has a "green" light at all times and that everything will be finished on time (or early) with no defects!  I'm proud to say that I'm one of the members of the development staff that definitely strives for those same goals.

So... until later... keep being that Super Developer Resource!

Ed B.

posted on Wednesday, August 09, 2006 12:50:07 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback

So many people think that I work for DevExpress because of how much I rant and rave about CodeRush and Refactor Pro!

I'm telling you... CodeRush and Refactor Pro are definitely two of my most favorite tools!  But I really don't work for DevExpress... I'll blog later on both of them and some of the tools that I use from day to day that are built upon DX Core which is the foundation for both of their products and many other small tools.  If you haven't looked in DX Core (which is free) and you build or will build a Visual Studio add-in then you should definitely give it a shot.

My next plan for a coding tool that I could use from day to day is adding comments to code files in the format that I always use.  There is actually a tool that uses DX Core that does this called CR_Commenter but the bad thing:  It's only for C# code.  I thought about rewriting it for VB developers (and myself.)

Ed B.

posted on Wednesday, August 09, 2006 12:35:54 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
# Thursday, July 13, 2006

So have you ever had the need to restore a SQL database because someone hit the delete button on a table or the whole Database? Well, my friend I have seen this happen several times. Here is some code to restore your database back to a certain point in time.

Start Server in single user mode :
sqlservr -m

RESTORE DATABASE YourDB

FROM YourBackUpDevice
  WITH NORECOVERY
GO
 
-- If you have diff backups here is where you can add, since we are using WITH NORECOVERY
-- Remeber to restore them in order :)

RESTORE LOG YourDB
   FROM YourBackUpDevice
   WITH RECOVERY, STOPAT = 'Jul 12, 2006 10:00 AM'   <------- what ever time before the mishap
GO
 
Of course you can do all this fun stuff via the GUI (and have the EM "not responding") but keep it real and use SQL statements in QA; if you really want to keep it real, use osql to run your statements:)
 
Ed K.
AKA
Eddie Kisinger
Edward Kisinger
CodeMonkey
 
posted on Thursday, July 13, 2006 12:20:48 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
# Monday, July 10, 2006

So this is the other Ed.  Ed B.  The Toy Boy as I am lovingly called.  I suppose I get my nickname because I like new gadgets and gizmos.  I also get my name from the constant search and discovery of new tools and components that make my life (and the rest of our lives) as developers better.

My professional objective in life is to provide more productivity and efficiency to people, developers, and processes.  I won't get all philisophical but I think that is how mankind will prosper :)

Enough of that!  From time to time, I'll add new commentary about new tools that I have found and ones that I use from daily in my developer life and in school.  There are some that I absolutely love more than anything else and just can't live without... some people even think I work for these companies since I am such a proponent! (I don't)

So until later, be more productive and efficient in your development!

Ed B.

posted on Monday, July 10, 2006 11:30:20 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [1] Trackback
# Wednesday, June 28, 2006

Dallas Code camp was great! Good speakers and awesome content. My only suggestion would be to make the tracks a little longer, I wanted to learn more in-depth and I always ask crazy amounts of questions. I never know if speakers like or hate me when I ask questions, I make ‘em think J.

 

Anyways, here are the tracks I went to:

 

Programming with the Windows Communication Foundation (WCF) - David Walker

 

Good overview as to what to expect with WCF. I like the easy configuration of remoting and the ability to switch to web services. If anyone has done remoting in 1.1, you know the headache of configurations and implementation. WCF looks very promising.

 

WCF buzz word of the day:

WCF A,B,C’s

 

(A)ddress

(B)inding

(C)ontext

 

Practical Business Application of DNN - Jason Kergosien

 

DNN rocks, enough said. I love DNN because it is designed so well and the community support is awesome. I see DNN becoming a huge contender against SharePoint Portal, well, at least the current version of SharePoint. The track offered a very high level view of the features, the main thing I took from this session was the fact that there is a DNN users group here in Dallas J J http://dallas.dnnug.net/. I will be a regular at this group from now on.

 

I was only able to go to two tracks due to the wife wanting me to spend more time with her and less time with computer stuff…… anyone have that problem?

 

 

In closing, great job Dallas Code Camp and great job Omar for making it happen. I look forward to the next one. Hopefully, I will not be so busy with projects that maybe I can be a speaker. Here are the topics that I plan on speaking about when I get the time:

 

  • Dot Net Nuke
  • Team Foundation Server / VSTS 2005
  • Design Patterns by the Gang of Four
  • Principles of OOP and how it can help achieve a better SOA.

 

 

Ed K.

 

A.K.A. Eddie Kisinger

A.K.A. Edward Kisinger

A.K.A. CodeMonkey

J

posted on Wednesday, June 28, 2006 11:03:47 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
# Thursday, June 22, 2006

Debugging .Net assemblies can be tricky in BizTalk 2004. When working with Orchestrations you need to make sure that the version of the Orchestration dll and .Net assembly corresponded. There are two way in which to do this and be able to debug successfully.

 

1. If your Orchestration project and .Net assembly project are in the same solution. Build/Rebuild solution that contains the Orchestration project and your .Net assembly project. Make sure your .Net assembly project is in debug mode. This can be configured in the 'Configuration Manager". Then, Delete their dll from GAC and install the new ones. Now you can debug by attaching to the process "BTSNTSvc.exe".

 

2. If your Orchestration project and .Net assembly project are in different solutions then you will need to change the versioning from the default VS configuration. To change this, open your projects "AssemblyInfo.cs" file and change [assembly: AssemblyVersion("X.X.X.*")] to a hard coded value such as[assembly: AssemblyVersion("1.0.0.1")]. Make sure your .Net assembly project is in debug mode. This can be configured in the 'Configuration Manager". Then, Delete their dll from GAC and install the new ones. Now you can debug by attaching to the process "BTSNTSvc.exe".

 

 

Ed K.

posted on Thursday, June 22, 2006 1:06:29 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback