|
Categories
|
July 6th, 2010
by Petr Pruidze, .NET Team Lead
Hi, everyone. I want to describe an issue I’ve recently faced when working on a TFS-based project and share the original solution found.
The Issue
The project utilized Team Foundation Server assemblies. The need to use both TFS 2008 and TFS 2010 assemblies aroused when TFS 2010 was released. In short, the names of the assemblies stayed the same, while their versions were different.
The Solution
As you can guess, this issue had a number of solutions and it’s not the purpose of this post to make you think that mine is the best one.
Our team elaborated on several ways to solve this problem:
- Create two different branches for the project—each branch for each version of assemblies. However, we’ll have to support both branches in this case, which is not a great idea.
- Use reflections. This method is really good, but requires a great deal of time on implementation and testing.
- Compile the project for different versions of assemblies, depending on the chosen “Solution Configuration” option. Let’s have a deeper insight into this option, since it appears to be the best way to solve the issue.
Below is a step-by-step guide on implementing the solution.
To start with, open Configuration Manager.

Create a new configuration that will be used for build-building other TFS version. I’ve named the new configuration as “BuildRelease2010.”

As you may see, there’s no need to create a new configuration for each project in your solution. You may do this only in case your project utilizes different versions of assemblies—just like I had.
Open the properties of the projects that are supposed to be built with different versions of assemblies. Add “Conditional compilation symbols” to the new configuration.

Open the code itself and add the condition for working with different assemblies, if needed. In my case, the creation of the instance that implements the IserviceProvider interface required working with different versions of assemblies.
#if BUILD_RELEASE_2010
TfsTeamProjectCollection server = newTfsTeamProjectCollection(newUri(tfsUrl));
#else
TeamFoundationServer server = TeamFoundationServerFactory.GetServer(tfsUrl);
#endif
Open the .cproj file in Notepad or any other text editor, find the Reference to your assembly (in my case, it was Microsoft.TeamFoundation.dll), and add the following Condition tag: (Condition=”‘$(Configuration)’!=’BuildRelease2010′”).
..\Bin\TFS\Microsoft.TeamFoundation.dll
Now add the Reference to the new version assembly with the opposite Condition:
..\Bin\TFS2010\Microsoft.TeamFoundation.Client.dll
That’s it. Choose the configuration needed and start build-building, voila!
Pros
Implementation is fast and easy.
Cons
The look is not so preppy, as it could have been.

If you had the same issue, how did you solve it?
Posted in TFS Management, Best practices | No Comments »
February 26th, 2010
by Olga Belokurskaya
Hi!
There’s no doubt that when a company outsources the development of their software products, they want a good possibility to better control everything about the outsourced project. Here project timesheet software is a great controlling tool that can provide a lot of information.
How much time developers spend on different tasks is not just a way to be sure the work is being done. Project timesheet software gives a clear image of developers’ productivity, and gives a great opportunity for improvement.
Most of project timesheets allow a variety of reports that can be used for accurate billing. Moreover, using the data in the reports helps find a space for improvement, control the project progress, and probably, make new project estimations on time and budget. This enhances greatly the quality of business, as project timesheet software eases management of the outsourced software development team to a great extent.
Posted in Best practices, Project Timesheet Software | No Comments »
February 18th, 2010
by Olga Belokurskaya
Project time tracker is a very effective and essential part of any successful business; however, to get the most out of it, a company should make the right choice from a variety of offerings. The right choice means that the project time tracker suits company’s goals and possibilities the best. There are a number of factors to pay special attention to, in order to avoid an inappropriate purchase.
- Usability. Good usability leads to faster adoption of a project time tracker, while poor usability may result in strong resistance and the need to look for another solution (which means additional expenses and wasted time).
- Functionality. Here the major features and functionality a project time tracker provides should be analyzed and compared to company’s requirements. Often, large companies have more requirements and demand for wider set of features than SMBs.
Possibilities for support and maintenance, including various updates, add ons, etc.
Compatibility. There should be a possibility to integrate a project time tracker with other company’s systems, as the data, provided by the tool, may be used by different departments (HR, accounting, etc.)
Posted in Best practices, Project Timesheet Software | No Comments »
December 7th, 2009
by Olga Belokurskaya
Apart from improving accounting and billing, accurate time records, and clearer vision of how and how much time employees spend on different tasks, project timesheet software may become a tool for controlling company’s efficiency. The data that is gathered by project timesheets may become a base for analyzing efficiency and creating a plan of improvement. Here are some steps for those starting from scratch:
Select and implement project timesheet software that will meet your requirements. This is the first step that sounds quite simple, however requires some time and effort. Because you need to make sure the chosen software will provide you with the information you need. Find out time tracking possibilities of the software, such as weekly or daily time reporting, possibility for project managers to approve or disapprove time reported by employees, etc.
Define a monitoring period for tracking employees’ efficiency. Let’s say, during a month period you check how much time employees spend on different tasks, find out how much time is spent not directly on work, but on other activities.
Now, when analyzing the data delivered by project timesheet software, you’ll probably notice that some of your workers use their time efficiently. So, select them to be so called efficiency leaders. Then, divide others on several groups, according to the level of their work efficiency, and appoint a leader to each group. Thus, the leaders may help the employees in their groups to better arrange their working time in order to avoid overtimes and inefficient use of time. Here again project time sheet software may be of great help, as well, because each employee may track their personal improvement in using their working time.
Set the goals to each group, and set another monitoring period. So, in a moth or two, check whether those goals were achieved.
Well, this was, actually, an example of how you may use project timesheet software to control and improve employees work efficiency. However, the main idea is clear, apart from accounting accuracy, wise use of project timesheet software may bring improvement to company’s work efficiency.
Posted in Best practices, Project Timesheet Software | No Comments »
November 17th, 2009
by Olga Belokurskaya
You may ask, why I’ve chose such a strange phrase for a headline. The answer is simple; I’ve met this phrase in somebody’s blog post, where unusual reasons for using time tracking tools were listed. I liked this one, as well as two more:
Because it’s the second more fun thing you can do with your right hand.
Because your granddad punched that time clock on the shop floor every day for 30 years, and you can’t click a mouse?
Nice ones, don’t you think so? In fact, it is not so easy to motivate people track their time spent on tasks. It’s a usual thing to hear from a developer, for example, about being distracted by the need to enter spent time into a task time tracker after each fulfilled task, or when switching from one task to another. While it takes only a couple of clicks.
I’m sure, many project managers have faced the challenge of making people understand the need of accurate time tracking. Explain how important is to collect and calculate billable hours, to report the right amount of them to a client. It’s normal for employees to be paid right and on time, so the fact that tracking the time spent on tasks accurately is the way to get that, is quite motivating.
Companies spend thousands on automated time tracking systems to have their productivity increased, to understand what more should be done to improve, to make accounting and billing more accurate, etc. So why not just use it without making PMs invent some tales about angel’s wings to motivate us?
Posted in Best practices, Visual Studio Add-ins | No Comments »
November 11th, 2009
by Olga Belokurskaya
Time delays are a real headache of all software development project managers. They are difficult to predict, no less difficult is to see the early signs of the delay. This issue is even more challenging if the development team is big.
Multiple tasks and interdependencies make manual entering information in spreadsheets, checking for the changes to control the project is an absolute hell. And, frankly, is impossible without turning the whole thing to a mess. Big projects demand plans to be kept up-to date, but they are too complex for spreadsheets method. So it seems really difficult to recognize the signs of a time delay for some task completion.
Here comes project time tracking software. Ideally if it combines timesheets with project tasks, so when the time spent on a task is updated, the status of task completion is updated too. This allows a PM to see project tasks in progress and to notice if there’s something wrong, and a task is heading for a delay. Thus a project manager may deal with the problem, analyzing the reasons and making corrections. There are several different ways of dealing with time delays:
- If it takes place for a first time, it’s a sign that a person working on the task needs help, and the task requires special PM’s attention.
- If the same task is delayed for the second time, it’s a sign for a manager to take active actions on defining the reasons and solving the problem, and, which is important, to prevent the risk of time delay in the future.
- The third delay case on the same task may be the reason to reconsider the project plan asking for experts help.
There is no need to explain why it is so important to react to time delays. But it is no less important to monitor and control the project progress in order to prevent the occurrence of time delays.
Posted in Best practices, Project Timesheet Software | No Comments »
October 26th, 2009
by Olga Belokurskaya
Hi!
Productivity is an essential factor for any business, and especially for software development companies. And time tracking is a great tool for measuring efficiency and productivity helping to find out and understand the processes that hinder company’s progress. That’s why it’s so important to choose quality time tracking and timesheet software, customized to answer the questions and provide the metrics a peculiar company needs to analyze.
Below are some questions project timesheet software may help answering to get you clearer idea about what is happening in your business:
- The general time employees spend on their tasks.
- Is their efficiency rate high enough, or there is a place for improvement.
- How are the processes set and managed, and if there is anything that may be improved.
- How you work looks from the customers’ point of view, and more
Time tracking fits to almost every sphere in business, and is widely used in many of them. Especially, when some product development or creation is considered. As soon as there is a need for constant improvement in order to be better than competitors, to deliver services or products faster, there is a need to understand where the improvements should be applied. The information provided by time tracking software is a good way to get needed information.
Posted in Best practices, Project Timesheet Software | No Comments »
October 16th, 2009
by Olga Belokurskaya
Hi!
Have just found an interesting fact at Martin Woodward’s. It’s about managing changeset metadata in Team Foundation Server 2008. The thing is that many are not aware about the possibility to edit the comment and check-in notes. Corresponding fields are provided with “Save” button which has been there for a long time, however according to Martin, there are people surprised by the fact.

What’s the use of this possibility?
Well, “removing the odd bit of unsavoury language from a frustrated late night check-in,” is obvious reason:)
But there is better use of it.
As you may know, a new feature allowing creating and committing branches in a single operation has been added to TFS 2008 SP1. One of the ways to do this is by the undocumented VersionControlServer.CreateBranch method through the API. It’s fast and needs less server resources which is an advantage.
The only trouble is, that it’s impossible add comments to changesets during operation. However, now we know how to add comments after the operation.
Hope someone will find usefull this TFS management detail.
Posted in TFS Management, Best practices | No Comments »
October 15th, 2009
by Olga Belokurskaya
Each business has different requirements for company’s management processes. While the benefits of utilizing timesheet software are becoming clear for more and more organizations, the need to customize it to answer company’s management needs is still elusive. However, well customized timesheets may provide more useful information to analyze.
Here are some more words in favor of customization:
When a company has its one special project, and everybody got used to particular terminology, it’s a kind of difficult to conform to the terms used in newly implemented timesheets. Customization lets to continue with familiar wording. Handy, doesn’t it?
The possibility to create customized reports is also an advantage, for retrieving only the data that this peculiar company needs to analyze in order to take right decisions in the future.
The life’s changing. So do the business goals and needs of any company. Customization is a great way to avoid investing in new timesheet software, when the existing seems not answering company’s needs any more. So customizing the software helps keeping it up-to-date with all company’s changes.
Posted in TFS Management, Best practices, Visual Studio Add-ins | No Comments »
October 14th, 2009
by Olga Belokurskaya
Hi!
I thought, why don’t have some TFS training today, as I found some information in the blog by Buck Hodges which I think may be useful for someone. So today’s tip is about TFS work item tracking, explaining the sorting by more than one column.
Sorting by multiple columns is a work item tracking feature many are not acquainted with, however it exists for quite a long time in Team Explorer and Team System Web Access. You’ll be surprised, how simple it is, while using it may save some amount of time. So, here’s the recipe:
- Holding Shift button click the headers of columns you’d like to sort.
- To change sorting order from descending to ascending, for example, still holding Shift click the header again to flip the sort ordering.
The screenshot shows the sorting first by Priority and then by Area Level 4:

The only thing to add is that the feature works in TFS 2008/2008 SP1.
Posted in TFS Management, VSTS Development, Best practices | No Comments »
|