# Friday, October 10, 2008

TulsaTechFest 2008

I’ve been in the middle of a lot lately and completely forgot to mention Tulsa TechFest 2008!  This will be my third year speaking and interestingly I have the only Team System talk this year.  If you’re around the area be sure to come by to learn more about automating your build & packaging process using Team System.  I’m going to do my Team Build talk that I did earlier this year at the Dallas VSTS User Group but we won’t go into as much depth since we only have 1.5 hours.  Looks like another great year with almost.  Infragistics has been a proud & regular sponsor of this event and I’m honored to have been invited again!

[Update]

Wanted to be sure I posted my slides and then also made the link to the awesome build lifecycle poster done by our friends in South Africa.  Thanks for keeping me honest!

 

Ed B.

posted on Friday, October 10, 2008 9:57:00 AM (Central Standard Time, UTC-06:00)  #    Comments [2] Trackback
# Tuesday, June 17, 2008

Microsoft MVP Horizontal Logo Speaking of Team System, I found out last week that I have been officially inducted into the Team System MVP group.  Earlier this year, I was awarded as an MVP in the Client Application Development competency.  Don't get me wrong, I still love WPF & Silverlight development and will continue to be involved in that community in the future.  I'm even working on finishing up the technical editing of a Silverlight 2 book right this minute. Or actually I'm procrastinating writing blog posts :)

Being part of the Team System MVP group, I'm really joining one of the most awesome groups ever.  I spent all of my time earlier this year at the MVP Summit at all of the Team System sessions and they truly are one of the best product teams at Microsoft.  They truly value our feedback and the Team System MVPs really love and care for the product just as much and want to see it grow by leaps and bounds.  And when I say love and care for the product, you don't even understand! :) This is definitely a good fit and I'm honored to officially join the group.  So when do I get to learn the "secret handshake?"

 

Ed B.

posted on Tuesday, June 17, 2008 7:09:21 PM (Central Standard Time, UTC-06:00)  #    Comments [0] Trackback

Fellow Team System MVP Mike Azocar has announced an awesome new contest to stir up the Team System tools ecoystem.  There are some really cool prizes so far including a free license for Microsoft Visual Studio Team Suite 2008 w/ MSDN Premium Visual Studio Team System Logosubscription and there are more donated prizes coming...  Get the full details at his blog post:  Want to be famous- Enter the Coolest Team System Gadget Contest!

Have you created a useful gadget for Team System? Do you have one in mind? I am looking for the coolest community built tool for VSTS. It can be something for TFS, for Visual Studio, or something that is stand alone. The winner will receive a one year subscription to MSDN with Team Suite!

To enter, submit a screen cast (up to 3 minutes long) which tells everyone why your gadget is the coolest and the source code. All submissions will be released to the public as free source to use and enjoy (with you getting all the credit of course). Videos will also be made available to the public to help make you famous! This should be something new (i.e. not on Codeplex or previously released) and not something repackaged. Submissions accepted up until August 31st 2008. Winner will be announced September 15th 2008.

Judges will be Mike Azocar, Martin Woodward, and I so this is going to be a lot of fun!

 

Ed B.

posted on Tuesday, June 17, 2008 6:46:35 PM (Central Standard Time, UTC-06:00)  #    Comments [0] Trackback
# Thursday, June 12, 2008

I'll be speaking on July 1, 2008 at the Dallas Visual Studio Team System User Group. Starts at 6 PM.  This is going to be a really exciting session for me personally and I love that we have a big block of time to get into some really fun Team Build details.  I think we are meeting at the Notion Solutions office in Irving for the July meeting but I'll double-check and update if there is a change.

 

Here are a few topics that I'll make sure we talk about:

  • New Features for Team Build 2008
  • Fun Stuff around Builds at Infragistics
  • Build Notification Power Tool
  • Building Java applications using Team Build & TeamPrise - (This blows people's minds away)
  • Building Installers using Wix
  • New Changes in TFS 2008 Service Pack 1 for Team Build
  • If time, Extensibility with the Team Build API

Be sure to sign up on the user group website to get updates and the RSVP link whenever it gets sent out.

 

Ed B.

posted on Thursday, June 12, 2008 8:38:52 AM (Central Standard Time, UTC-06:00)  #    Comments [0] Trackback
# Monday, June 02, 2008

Our team has been kept extremely busy lately with our new responsibilities.  What does the Release Engineering team do exactly?  Along with creating builds and installers for ALL of our products, we now have responsibility of Team Foundation Server Operations, and the entire development lifecycle of internal productivity tools that we call the "Internal Tools Suite."  So to sum it up, if it has to do with automation or the release process, it's us :)  We need some help (so I can get around to doing some blog posts again haha.)

 

Here's the positions we have open for the department:

 

Come join our team! It's been extremely exciting lately with what we're doing internally at Infragistics.  Contact me if you're interested:  ed AT infragistics DOT com

 

Ed B.

posted on Monday, June 02, 2008 2:52:35 PM (Central Standard Time, UTC-06:00)  #    Comments [0] Trackback
# Wednesday, March 19, 2008

 

When creating a transition between states you may want to use a "Server" level security group for the "For" and/or "Not". Taking a first stab at doing this you will probably do as the screen shot below.

image

When you go to validate this you will get the error shown in the screen shot below. You might even bang your head a couple times trying to figure out what the deal is. :) TF26171

image

The correct way to specify a SERVER security group is shown in the screen shot below

image

 

Ed K.

posted on Wednesday, March 19, 2008 7:50:49 PM (Central Standard Time, UTC-06:00)  #    Comments [0] Trackback
# Friday, February 15, 2008

So here at Infragistics we're truly a global company now which makes life as a TFS Administrator very "interesting" for sure!  Everyone is working around the clock and things can go wrong pretty much 24-7.  Oh well - I'm used to it already :)

 

If you didn't know, last week Microsoft announced that all of the localized versions of Team System Web Access (TSWA) had been finished and available for download.  This was great because we needed a couple of them for internal use. The only problem I found was that you can't install more than one version of TSWA on the same machine.  That's no fun :(

clip_image002

Thankfully Hakan came to my rescue and gave me a few steps to try and they definitely worked out for me.  I did everything on a separate virtual machine, gathered all of the files I needed, and then copied them to the TSWA web server. 

Disclaimer:  If you're going to follow the steps be mindful that this is completely unsupported by Microsoft.

  1. Install <localized version>
  2. Copy the files to C:\TSWA\<localized version code>
  3. Uninstall <localized version>
  4. (Repeat for all languages)
  5. Manually create web sites in IIS to point to each of the different languages
    • Make sure each TSWA instance uses a different IIS AppPool
    • Make sure each TSWA instance points to a different cachedir

 

There you go!  Also, it might be helpful to use host headers to help users out with discovering their localized versions of TSWA.  This allows you to use port 80 as well instead of the usual default of 8090.  For example:

  • English - tfsweb.[your domain]
  • Japanese - tfsweb-jp.[your domain]
  • German - tfsweb-de.[your domain]
  • etc.

 

Ed B.

posted on Friday, February 15, 2008 12:44:16 PM (Central Standard Time, UTC-06:00)  #    Comments [0] Trackback
# Monday, November 12, 2007

If you happen to use Dotfuscator by PreEmptive Solutions then you have probably wondered how to integrate this into your automated Team Builds.  They happen to include an MSBuild task for calling the proper command-line functions but don't have much documentation about this feature.

Background Obfuscation Information:  In general, obfuscation prevents reverse engineering of your software by using different techniques to make the MSIL of your .NET compiled application less understandable.  Several different companies use many techniques for doing this including: string encryption, renaming of symbols, control flow manipulation, etc.  If you've ever used Reflector for .NET you know how easy it is to look at reverse-engineered "source code" for a .NET application.

  • Start by putting your Dotfuscator configuration file in the folder that contains your team build script (i.e. TFSBuild.proj) and it to source control.
  • Open up your team build script and edit it.  (Be sure to check it out first.)
    • Start by adding a reference to the proper custom targets file that is provided.  You should have a Dotfuscator Build Machine license installed on the TFS Build Server(s.)  If you got the wrong license version, just ask them for upgrade pricing.

      <Import Project="$(MSBuildExtensionsPath)\PreEmptive\Dotfuscator\4.0\PreEmptive.Dotfuscator.Targets" />

 

    • Next, add a section for the Dotfuscator Properties you will need.  You'll notice we have a keys directory that gets pulled down from source control during the build process.  We keep our strong name key in this direcotry and the keydir directory property is for resigning the assemblies after the obfuscation is complete.

        <!-- Properties for Dotfuscate Task-->
        <
      PropertyGroup
      >
          <
      ConfigPath>$(SolutionRoot)\..\BuildType\Dotfuscator.Configuration.xml</ConfigPath
      >
          <
      InputPath>$(SolutionRoot)\..\Binaries\Release</InputPath
      >
        </
      PropertyGroup
      >
        <
      PropertyGroup
      >
          <
      DotfuscatorProperties
      >
            <
      targetdir>$(InputPath)</targetdir
      >
            <
      keydir>$(SolutionRoot)\Keys</keydir
      >
          </
      DotfuscatorProperties
      >
        </
      PropertyGroup
      >
        <
      ItemGroup
      >
          <
      InputAssembly Include="$(InputPath)\*.dll;$(InputPath)\*.exe" Exclude="$(InputPath)\*.vshost.exe"
      />
        </
      ItemGroup
      >  

 

    • Finally, customize the AfterCompile target by adding the Dotfuscate task with appropriate property settings.  See more information about Customizable Team Foundation Build Targets.

        <Target Name="AfterCompile">
          <!--
      Perform obfuscation steps after assemblies are compiled.
      -->
          <
      Dotfuscate InputAssemblies="@(InputAssembly)" Properties="$(DotfuscatorProperties)" ConfigPath="$(ConfigPath)"
      >
            <
      Output TaskParameter="MappingFile" ItemName="DotfuscatorMappingFile"
      />
            <
      Output TaskParameter="ReportFiles" ItemName="DotfuscatorReportFiles"
      />
            <
      Output TaskParameter="OutputAssemblies" ItemName="DotfuscatedAssemblies"
      />
            <
      Output TaskParameter="SatelliteAssemblies" ItemName="DotfuscatedSatelliteAssemblies"
      />
            <
      Output TaskParameter="DebugSymbols" ItemName="DotfuscatedDebugSymbols"
      />
          </
      Dotfuscate
      >
        </Target
      >
  • Next, take some time to edit your Dotfuscator configuration file.  Notice the properties I am using in my sample project below and what is being set in the Dotfuscator properties collection in the Team Build script above.  Basically, I have just cleared the property values out to make sure that the MSBuild task populates them correctly.

    <?xml version="1.0" encoding="utf-8" standalone="no"?>
    <!
    DOCTYPE dotfuscator SYSTEM"http://www.preemptive.com/dotfuscator/dtd/dotfuscator_v2.1.dtd"
    >
    <
    dotfuscator version="2.1"
    >
      <!--
    This is application generated code. Do not edit manually.
    -->
      <
    propertylist
    >
        <
    property name="targetdir" value=""
    />
        <
    property name="keydir" value=""
    />
      </
    propertylist
    >
      <
    global
    >
        <
    option>verbose</option
    >
      </
    global
    >
      <
    input
    >
        <
    asmlist
    >
          <
    inputassembly
    >
            <
    option>library</option
    >
            <
    file dir="${targetdir}" name="Shared.Library.dll"
    />
          </
    inputassembly
    >
        </asmlist>
      </
    input
    >
      <
    output
    >
        <
    file dir="${targetdir}\Dotfuscated"
    />
      </
    output
    >
      <
    tempdir
    >
        <
    file dir="${targetdir}\Dotfuscated"
    />
      </
    tempdir
    >
      <
    renaming
    >
        <!--
    <mapping>
          <mapoutput overwrite="false">
            <file dir="${targetdir}\Dotfuscated" name="DotfuscatorMapFile-KeepSecure.xml" />
          </mapoutput>
        </mapping>
    -->
      </
    renaming
    >
      <
    controlflow level="high"
    />
      <
    stringencrypt
    >
        <
    includelist
    >
          <
    assembly
    >
            <
    file dir="${targetdir}" name="Shared.Library.dll"
    />
          </
    assembly
    >
        
    </includelist>
      </
    stringencrypt
    >
      <
    signing
    >
        <
    resign
    >
          <
    option>dontuseattributes</option
    >
          <
    key
    >
            <
    file dir="${keydir}" name="StrongName.key"
    />
          </
    key
    >
        </
    resign
    >
      </
    signing
    >
    </
    dotfuscator>
     
  • That's it.  Finally, just customize it to your heart's content!

 

Feel free to let me know if I can improve this in any way!  I'm always looking to efficiently refactor our Team Build scripts.

 

Ed B.

posted on Monday, November 12, 2007 10:17:54 PM (Central Standard Time, UTC-06:00)  #    Comments [2] Trackback
# Thursday, November 01, 2007

Ever since I started at Infragistics, I had been working in the User Experience Group (under the Evangelism umbrella) primarily with WPF & WinForms.  As some of you know, I wasn't too fond with WPF at the beginning :) but now I love it.  [Shameless Plug:  Have you checked out Tangerine?  See my blog post about it.]

I have taken a new position now as what is usually referred to as the Configuration Manager (HR Title:  Configuration and Process Improvement Engineer.)

As some of you know, I have been working with Team Foundation Server since pre-beginning (is that a word?) like during the Betas.  [Strolls down memory lane... Anyone remember the Beta 2 to Beta 3 upgrade? whew... Ed K. remembers that day with the 3-hour phone call from the TFS Product Team.  Those were the days. I got a cool TFS All Stars shirt from it though!]  I digress.  Infragistics has decided to adopt TFS and planning to migrate pretty much all of our separate systems to it.  So, that's what I'm doing now in the Engineering department!  Although I'll be missing doing WPF and Evangelism work, I'm pretty excited about getting to do TFS stuff full-time.

If you were at Grant and I's talk at Boston ReMix or my talk at Tulsa Tech Fest, you got the preview of a community WPF application that we're working on to gather data from TFS and replace our Release Status Wall.  It's basically an application to visualize your release process.  As soon as we get something ready to preview, I'll definitely post up on here.  So I get to put my love of both WPF and TFS together!  Grant's a God-send when it comes to making applications look great. I'm really blessed to be working for a company that has a dedicated Visual Design team... We have 5 dedicated Visual Designers now... wow.

Another one of my goals with our new system of tracking development data is to provide more transparency to our customers in regard to feature tracking, bugs, etc.  I think it's important (as a previous customer) to be able to have that kind of transparency.  I'm thinking something along the line of Microsoft's Connect website.

So I look forward to being able to talk more about TFS and coming out with some exciting tools and information.  Don't worry, I still do WPF development too so you'll still see me from time to time blogging about it and speaking.  I just finished up a WPF magazine article yesterday even :)

 

BTW... I'll be in DevConnections next week in Las Vegas doing some WPF Evangelism stuff so be sure to hit me up if you'll be in town!

 

Ed B.

posted on Thursday, November 01, 2007 2:30:06 PM (Central Standard Time, UTC-06:00)  #    Comments [0] Trackback
# Wednesday, October 31, 2007

I don't know how I ever missed it but I was shocked to find that I could not restrict users from branching and merging in TFS Version Control.  Ahhhhhh!!!!

The only security privileges (for Version Control) that are available are:

  • Read
  • Check out (branching, merging, and other similar pending changes fall into this category)
  • Check in
  • Label
  • Lock
  • Revise other users' changes
  • Unlock other users' changes
  • Administer labels
  • Manipulate security settings
  • Check in other users' changes

If you want more information about the specifics for Version Control privileges, check out MSDN at:  http://msdn2.microsoft.com/en-us/library/ms252587(VS.80).aspx

If you are facing this same issue and believe that it should be a feature in the product, help out by voting on the feature suggestion on Visual Studio Connect:  https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=307874

 

Ed B.

posted on Wednesday, October 31, 2007 5:00:49 PM (Central Standard Time, UTC-06:00)  #    Comments [0] Trackback
# Saturday, October 13, 2007

So there is a huge problem with uninstalling the TFS Power Tools if you have them installed on Windows Vista.  This becomes particularly a problem when you want to upgrade the TFS Power Tools (which I was trying to do to the version just released a few weeks ago.)

If you try to uninstall the regular way, you get all sorts of errors like:

Error 1722. There is a problem with this windows Installer package. A program run as part of the setup did not finish as expected. Contact your...

Seriously - it sucks.  I even got fed up and finally decided to rebuild my machine at work (this particular uninstall experience wasn't the only reason for rebuilding my work laptop but definitely was the tipping point!) :)

Anyhow, just to save you a lot of problems, open up a command prompt as an Administrator and run:

msiexec /x {C802488F-CB5F-48BE-BBD2-0C0F9E290E63}

Click "Yes" to the next prompt and you should have a clean uninstall!

 

Ed B.

posted on Saturday, October 13, 2007 2:03:33 PM (Central Standard Time, UTC-06:00)  #    Comments [0] Trackback
# Friday, October 05, 2007

VS 2008 has added a new feature called Code Metrics (CM). Code Metrics is a way to produce actionable information on a project or solution. When you generate CM on your code it produces such things as Maintainability Index, Cyclomatic Complexity, Class Coupling, Inheritance depth and lines of code.

Here is a brief description of each:
Cyclomatic Complexity: How many paths of execution are in your code. i.e. Enter a Method, That's 1, Hit an If, That's 2, Hit an Else, That's 3. This has a Cyclomatic complexity of 3. Here is more robust definition.
Class Coupling: Indicates how many other classes relate to this class
Inheritance depth: The level of inheritance
Lines of code: Self explanatory, everyone's favorite
Maintainability Index: An aggregate of the above metrics.

Each of these are shown at the assembly level then it allows you to drill down to the namespace, class and method level.

Why is this so cool? Being able to produce and show these metrics allows you to better manage existing code and produce more manageable new code, which in turn pushes you and your team to code to better standards. These metrics are actionable, meaning they enable you to do something with your code by visually displaying the information and giving you the ability to actually assign a work item right from the Code Metrics result window and attach the information to it as well. 

This is only one tool in the suite of tools within VS 2008 that will enable and guide you to produce better, more secure and performant code. Harness the power of them all!

The Code Metrics result window; user adding a work item based off metrics:
image

 

Work item created from Metrics. Notice the how the work item has all the information attached via the "History" tab.
image

 

Ed K.

posted on Friday, October 05, 2007 7:47:40 PM (Central Standard Time, UTC-06:00)  #    Comments [0] Trackback
# Thursday, September 27, 2007

If you're using Windows SharePoint Services (which is installed with Team Foundation Server) or SharePoint Portal Server, you don't get to see the file icons for the files with Office 2007 extensions (i.e. docx, xlsx, pptx, etc.)

I'm not sure if they have updated it in the 2007 version of SharePoint Portal Server, WSS 3.0, or in TFS 2008.  If you happen to know, contact me and let me know and I'll update it here.

Anyhow, have you ever wondered how to add new file extensions with associated icons into SharePoint?  Check out the blog site that Alexander Groß manages and he has just how to do it!  It's something that has bothered me enough already and I'm ready to get it resolved!

How To:  http://www.therightstuff.de/2006/12/16/Office+2007+File+Icons+For+Windows+SharePoint+Services+20+And+SharePoint+Portal+Server+2003.aspx

Office 2007 sample documents with icons in SharePoint

Ed B.

posted on Thursday, September 27, 2007 11:47:19 AM (Central Standard Time, UTC-06:00)  #    Comments [0] Trackback
# Tuesday, September 25, 2007

I recently gave a presentation @ Microsoft on Visual Studio 2008 Team System to a crowd of about 40. The presentation was an all day event where we discussed existing and new features to Team System 2008.

 

Slide Deck:   Tech Briefing.rar (3.41 MB)   
Presenters:   Ed Kisinger, Sogeti  Topic: Architect/Developer 
                   Tony Mocella, Sogeti Topic: Project Management
                   Brent Lintz, Sogeti Topic: Build/Version Control

 

Ed K.

posted on Tuesday, September 25, 2007 8:13:08 PM (Central Standard Time, UTC-06:00)  #    Comments [0] Trackback
# Saturday, September 15, 2007

Have you ever seen this? Scratch your head for hours? What the heck is wrong, all I want to see is my Code Coverage from my tests!!!!

No worries, I get asked this question everyday. Here is how to make sure you instrument Code Coverage during your tests.

Here is what you probably see:

NotWorking 

Go to the "Test" menu on your tool bar and "Edit your Test Run Configurations"

SelectTestMenu

Click on the "Code Coverage" List Item and select the artifacts to instrument:

SelectApp

Now rerun your test(s) and you will have code coverage :)

 

Thanks,

Ed K.

posted on Saturday, September 15, 2007 8:14:51 PM (Central Standard Time, UTC-06:00)  #    Comments [1] Trackback
# Friday, September 14, 2007

image

 

I do not see the "Create Instance" or "Invoke Static Method"..... uggghh I know this happened in VS2005 but it was fixed in SP1.

If I get an answer I will post it up here as an update.

UPDATE: It magically appeared today. Wierd.

 

Thanks,

Ed K.

posted on Friday, September 14, 2007 9:56:27 PM (Central Standard Time, UTC-06:00)  #    Comments [0] Trackback