Tuesday, February 24, 2009

TFS team build of a specific labelled version

By default TFS Team Build retrieves the latest version sources and builds. To enable the Team Build to take a specific set of sources, you need to override the Target "GetCore".


<Target Name="CoreGet"
Condition=" '$(SkipGet)'!='true' and '$(IsDesktopBuild)'!='true' "
DependsOnTargets="$(CoreGetDependsOn)" >

<!-- Get the sources for the given workspace-->
<Get TeamFoundationServerUrl="$(TeamFoundationServerUrl)"
BuildUri="$(BuildUri)"
Workspace="$(WorkspaceName)"
Version="$(GetVersion)"
Filespec="$(GetFilespec)"
PopulateOutput="$(GetPopulateOutput)"
Overwrite="$(GetOverwrite)"
Preview="$(PreviewGet)"
Recursive="$(RecursiveGet)"
Force="$(ForceGet)">
<Output TaskParameter="Gets" ItemName="Gets" />
<Output TaskParameter="Replaces" ItemName="Replaces" />
<Output TaskParameter="Deletes" ItemName="Deletes" />
<Output TaskParameter="Warnings" ItemName="GetWarnings" />
</Get>

<SetBuildProperties Condition=" '$(GetVersion)' != '$(SourceGetVersion)' "
TeamFoundationServerUrl="$(TeamFoundationServerUrl)"
BuildUri="$(BuildUri)"
SourceGetVersion="$(GetVersion)" />

<PropertyGroup>
<SourceGetVersion>$(GetVersion)</SourceGetVersion>
</PropertyGroup>

</Target>


To pass the label from 'Queue New Build' dialog, enter /property:GetVersion="Llabel" in MSBuild Command-line arguments text box where 'L' specifies that it's a label.

Tuesday, February 17, 2009

Tuesday, December 30, 2008

ASP.Net MVC Architecture

I was hopping around the web looking to understand MVC architecture in ASP.Net. Finally stumbled upon this http://www.cerquit.com/blogs/post/MVP-Part-I-e28093-Building-it-from-Scratch.aspx.

Go through this url, this contains also a sample source code illustrating the pattern. Very good indeed.Publish Post

Saturday, December 20, 2008

Sharing the architecture

Applications start without architecture. That's normal. But architectures made and not shared. Shared (I think the team knows) but are not followed?



Quick way to fix missing dynamic parameters in VSTS Web Test

Recording and playing back web tests which involve private users sessions, VSTS Web test misses some parameters including cookies. Since these cookies from the responses are not recorded and not sent in the future requests, the web tests fail.

Solution:
Subclass the WebTestPlugin class in namespace Microsoft.VisualStudio.TestTools.WebTesting and register to handle the PreRequest and PostRequest events.

In the PostRequest event, if the args.Response contains cookies, get and store it in a variable.
In the PreRequest event, add the cookies from the variable to the args.Request object.

Friday, December 19, 2008

Hosting ASP.Net on Amazon Web Services

To host an ASP.Net application on AWS, you need to use the following:
  1. Amazon EC2 - Virtual instances to run your ASP.Net applications. As many as you need with load balancer. Amazon does not guarantee data on the instance data drives. Hence you need to go for EBS.
  2. Amazon Elastic Block Storage - Volumes which can be attached to EC2 instances. These can be attached and detached at will. Your ASP.Net and database files will be on these volumes.
  3. Amazon S3 - Store your public documents here. It works with CloudFront to deliver the documents through edge locations located close to the consumers.

Advantages:

Amazon S3
  • Cheaper storage cost
  • Duplication of data in multiple locations for durability
Amazon CloudFront
  • Faster delivery network
  • Minimum caching period is 24 hours
  • Documents should be puclicly readable not suitable for private contents
  • HTTPS not supported
Amzon EC2
  • Quicker horizontal and vertical scaling up of computing power
  • Freeing the resources when not needed
  • Windows machines available only in US regions
  • Cost is not cheaper
Amazon EBS
  • Storage volume upto 1TB size
  • Can be attached to any EC2 instance
  • Can be attached to only one EC2 at a time

Conclusion
You want a cheap delivery network and cheap storage facility. Go for Amazon AWS.