How to auto-increment assembly version using a custom MSBuild task

Published Friday, December 02, 2005 12:31 PM

The assembly version string has the format “major.minor.build.revision”, such as 2.0.50727.42.  Here is a sample on how to create a custom MSBuild task for Web Deployment Projects  to auto-increment the build and revision portion of your version strings with each build.

 

Web Deployment Projects provide a way to pre-compile a Visual Studio 2005 Web Site project into a single assembly.  It also allows you to specify the AssemblyFileVersion and AssemblyVersion for this assembly.

 

These values can be set in the Project Properties dialog of the Web Deployment Project.  Once set the following will be added to the Web Deployment Project file.

 

  <ItemGroup>

    <AssemblyAttributes Include="AssemblyFileVersion">

      <Value>2.0.0.0</Value>

    </AssemblyAttributes>

    <AssemblyAttributes Include="AssemblyVersion">

      <Value>2.0.0.0</Value>

      <AutoIncrement>true</AutoIncrement>

    </AssemblyAttributes>

  </ItemGroup>

 

The Microsoft.WebDeployment.targets file includes a target named GenerateAssemblyInfo that will use the @(AssemblyAttributes) item collection defined above to dynamically create an AssemblyInof.cs file.  This file is compiled into an assembly and passed to aspnet_merge.exe using its –copyattrs argument.

 

This is great if you want to fix the version to a specific value, but what if you want to generate a new build number with every build.  After all the format of version string is “major.minor.build.revision”.

 

To do this we’ll need to dynamically generate the AssemblyAttributes item collection at build time instead of statically declaring their values in the Web Deployment Project file.

 

First create a custom MSBuild task.  MSBuild tasks are classes derived from Microsoft.Build.Utilities.Task that override the Execute() method.  You can learn more about writing MSBuild tasks from How To: Write a Task

 

Here is a sample MSBuild task that will increment build and revision numbers. 

 

Contents of file IncrementBuildNumber.cs:

 

using System;

using System.IO;

using Microsoft.Build.Utilities;

using Microsoft.Build.Framework;

 

namespace MyTasks

{

    public class IncrementBuildNumber : Task

    {

        string m_fileName;      // Text file containing previous build number

        long m_buildNumber;     // Build number based on current date. 12/2/2005 would be 51202

        long m_revisionNumber;  // Revision number, increments within a day with each new day starting at 0

 

        /// <summary>

        /// MSBuild entry point into this task.

        /// </summary>

        public override bool Execute()

        {

            bool bSuccess = true;

            try

            {

                IncrementNumbers();

                Log.LogMessage(MessageImportance.Normal, "Build {0}.{1}", m_buildNumber, m_revisionNumber);

            }

            catch (Exception ex)

            {

                // Log Failure

                Log.LogErrorFromException(ex);

                Log.LogMessage(MessageImportance.High, "Failed to increment Build Number!");

                bSuccess = false;

            }

            return bSuccess;

        }

 

        /// <summary>

        /// Task argument set MSBuild project file

        /// </summary>

        [Required]

        public string File

        {

            get { return m_fileName; }

            set { m_fileName = value; }

        }

 

        /// <summary>

        /// Task output available to MSBuild

        /// </summary>

        [Output]

        public long BuildNumber

        {

            get { return m_buildNumber; }

            set { m_buildNumber = value; }

        }

 

        /// <summary>

        /// Task output available to MSBuild

        /// </summary>

        [Output]

        public long RevisionNumber

        {

            get { return m_revisionNumber; }

            set { m_revisionNumber = value; }

        }

 

        /// <summary>

        /// Increments Build Number and Build Revision

        /// based on the numbers saved in a text file.

        /// </summary>

        private void IncrementNumbers()

        {

            // Set build number to current date, 12/02/2005 == 51202

            DateTime dDate = DateTime.Now;

            m_buildNumber = dDate.Year % 2000 * 10000;

            m_buildNumber += dDate.Month * 100;

            m_buildNumber += dDate.Day;

 

            // Defualt build revision to 0

            m_revisionNumber = 0;

 

            // Check for a previous build and revision number

            if (System.IO.File.Exists(m_fileName))

            {

                StreamReader sr = new StreamReader(m_fileName);

                string previousBuild = sr.ReadLine();

                sr.Close();

 

                string[] previousNumbers = previousBuild.Split('.');

 

                if (m_buildNumber == long.Parse(previousNumbers[0]))

                    m_revisionNumber = long.Parse(previousNumbers[1]) + 1;

            }

 

            // Write the current build numbers to the file

            StreamWriter sw = new StreamWriter(m_fileName);

            sw.WriteLine(string.Format("{0}.{1}", m_buildNumber, m_revisionNumber));

            sw.Flush();

            sw.Close();

        }

    }

}

 

Compile file IncrementBuildNumber.cs into the assembly MyTasks.dll

 

csc /t:library /r:Microsoft.Build.Utilities.dll;Microsoft.Build.Framework.dll /out:MyTasks.dll IncrementBuildNumber.cs

 

Copy the MyTasks.dll into the same directory as the Web Deployment Project.

 

Now that we’ve got our custom MSBuild task we need to modify the Web Deployment Project file to use our new custom task.

 

You can edit the project file by right clicking on the Web Deployment Project in the solution explorer and selecting “Open Project File” from the shortcut menu.

 

Once opened add a <UsingTask> between the <Project> and the first <PropertyGroup> to register the new custom IncrementBuildNumber task with MSBuild.

 

<!--

  Microsoft Visual Studio 2005 Web Deployment Project

  http://go.microsoft.com/fwlink/?LinkId=55111

-->

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <UsingTask TaskName="MyTasks.IncrementBuildNumber" AssemblyFile="MyTasks.dll" />

  <PropertyGroup>

     

  </PropertyGroup>

 

Next override the BeforeBuild target with the code below.

 

 

  <Target Name="BeforeBuild">

    <IncrementBuildNumber

      File = "$(MSBuildProjectDirectory)\BuildNumbers.txt">

      <Output TaskParameter="BuildNumber" PropertyName="BuildNumber"/>

      <Output TaskParameter="RevisionNumber" PropertyName="RevisionNumber"/>

    </IncrementBuildNumber>

 

    <CreateItem Include="AssemblyFileVersion" AdditionalMetadata="Value=2.0.$(BuildNumber).$(RevisionNumber)">

      <Output ItemName="AssemblyAttributes" TaskParameter="Include" />

    </CreateItem>

 

    <CreateItem Include="AssemblyVersion" AdditionalMetadata="Value=2.0.$(BuildNumber).$(RevisionNumber)">

      <Output ItemName="AssemblyAttributes" TaskParameter="Include" />

    </CreateItem>

 

  </Target>

 

 

In this sample we’re using a BuildNumbers.txt file to store the build numbers from each build.  It is passed to the IncrementBuildNumber task through the File property.  The $(MSBuildProjectDirectory) property is a built in property provided by MSBuild that specifies the directory containing the project file.

 

The BuildNumber and BuildRevision values are then copied from our custom MSBuild task IncrementBuildNumbers as MSBuild properties using the <Output> tags.

      <Output TaskParameter="BuildNumber" PropertyName="BuildNumber"/>

      <Output TaskParameter="RevisionNumber" PropertyName="RevisionNumber"/>

 

At this point there are now 2 new MSBuild properties $(BuildNumber) and $(RevisionNumber).  The next step is to dynamically create the AssemblyAttributes version strings using these properties.

 

    <CreateItem Include="AssemblyFileVersion" AdditionalMetadata="Value=2.0.$(BuildNumber).$(RevisionNumber)">

      <Output ItemName="AssemblyAttributes" TaskParameter="Include" />

    </CreateItem>

 

    <CreateItem Include="AssemblyVersion" AdditionalMetadata="Value=2.0.$(BuildNumber).$(RevisionNumber)">

      <Output ItemName="AssemblyAttributes" TaskParameter="Include" />

    </CreateItem>

 

Once created they will be automatically picked up the GenerateAssemblyInfo target provided in the Web Deployment Project.

 

Be sure to delete the statically declared AssemblyAttributes Items for AssemblyFileVersion and AssemblyVersion.

 

Delete any of these entries from your project file.

    <AssemblyAttributes Include="AssemblyFileVersion">

      <Value>2.0.0.0</Value>

    </AssemblyAttributes>

    <AssemblyAttributes Include="AssemblyVersion">

      <Value>2.0.0.0</Value>

      <AutoIncrement>true</AutoIncrement>

    </AssemblyAttributes>

 

You will get a build error if forget to delete these statically declared values.

 

Now let’s build and see what happens.

 

 

Microsoft (R) Build Engine Version 2.0.50727.42

[Microsoft .NET Framework, Version 2.0.50727.42]

Copyright (C) Microsoft Corporation 2005. All rights reserved.

 

Build started 12/2/2005 8:46:42 AM.

__________________________________________________

Project "C:\MyProjects\MyWeb\MyWeb_deploy\MyWeb_deploy.wdproj" (default targets):

 

Target BeforeBuild:

    Build 51202.0

Target AspNetCompiler:

    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_compiler.exe -v /MyWeb -p C:\MyProjects\MyWeb\MyWeb -u -f -d C:\MyProjects\MyWeb\MyWeb_deploy\Debug\

    Updateing web.config compilation debug = 'True' ...

    Successfully updated web.config compilation debug = 'True' ...

Target GenerateAssemblyInfo:

    Generating AssemblyInfo ...

    Setting [assembly: AssemblyFileVersion("2.0.51202.0")]

    Setting [assembly: AssemblyVersion("2.0.51202.0")]

    Successfully Generated AssebmlyInfo ...

    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Csc.exe /out:C:\MyProjects\MyWeb\MyWeb_deploy\AssemblyInfo\Debug\AssemblyInfo.dll /target:library C:\MyProjects\MyWeb\MyWeb_deploy\AssemblyInfo\Debug\AssemblyInfo.cs

Target AspNetMerge:

    Running aspnet_merge.exe ...

    C:\Program Files\MSBuild\Microsoft\WebDeployment\v8.0\aspnet_merge.exe C:\MyProjects\MyWeb\MyWeb_deploy\Debug -o MyWeb -copyattrs C:\MyProjects\MyWeb\MyWeb_deploy\AssemblyInfo\Debug\AssemblyInfo.dll -debug

    Successfully merged 'C:\MyProjects\MyWeb\MyWeb_deploy\Debug'.

 

Build succeeded.

    0 Warning(s)

    0 Error(s)

 

Time Elapsed 00:00:10.29

 

 

Since this is the first build today it’s getting a build number based on the current date 51202 and the revision is 0.  What happens if we build again?

 

 

Microsoft (R) Build Engine Version 2.0.50727.42

[Microsoft .NET Framework, Version 2.0.50727.42]

Copyright (C) Microsoft Corporation 2005. All rights reserved.

 

Build started 12/2/2005 8:46:56 AM.

__________________________________________________

Project "C:\MyProjects\MyWeb\MyWeb_deploy\MyWeb_deploy.wdproj" (default targets):

 

Target BeforeBuild:

    Build 51202.1

Target AspNetCompiler:

    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_compiler.exe -v /MyWeb -p C:\MyProjects\MyWeb\MyWeb -u -f -d C:\MyProjects\MyWeb\MyWeb_deploy\Debug\

    Updateing web.config compilation debug = 'True' ...

    Successfully updated web.config compilation debug = 'True' ...

Target GenerateAssemblyInfo:

    Generating AssemblyInfo ...

    Setting [assembly: AssemblyFileVersion("2.0.51202.1")]

    Setting [assembly: AssemblyVersion("2.0.51202.1")]

    Successfully Generated AssebmlyInfo ...

    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Csc.exe /out:C:\MyProjects\MyWeb\MyWeb_deploy\AssemblyInfo\Debug\AssemblyInfo.dll /target:library C:\MyProjects\MyWeb\MyWeb_deploy\AssemblyInfo\Debug\AssemblyInfo.cs

Target AspNetMerge:

    Running aspnet_merge.exe ...

    C:\Program Files\MSBuild\Microsoft\WebDeployment\v8.0\aspnet_merge.exe C:\MyProjects\MyWeb\MyWeb_deploy\Debug -o MyWeb -copyattrs C:\MyProjects\MyWeb\MyWeb_deploy\AssemblyInfo\Debug\AssemblyInfo.dll -debug

    Successfully merged 'C:\MyProjects\MyWeb\MyWeb_deploy\Debug'.

 

Build succeeded.

    0 Warning(s)

    0 Error(s)

 

Time Elapsed 00:00:13.26

 

 

The build number stays as 51202 but the revision number has incremented to 1.  The revision number will continue to increment for each build during the day then starting tomorrow the build number will change to 51203 and the revision will reset to 0.

 

This is just one example of how to increment build numbers during a build.  In this case the build numbers are coming from a text file and being auto incremented by a custom MSBuild task.

 

There are other techniques that you could use.  For example MSBuild also exposes all environment variables from the command shell.  So if you primarily build from a command line or batch build environment you could simply set an environment variable for BuildNumber and RevisionNumber.

 

c:\set BuildNumber=51202

c:\set RevisionNumber=2

 

Using this technique you can go back to statically defining your AssemblyAttributes and simply reference the environment variables.

 

  <ItemGroup>

    <AssemblyAttributes Include="AssemblyFileVersion">

      <Value>2.0.$(BuildNumber).$(RevisionNumber)</Value>

    </AssemblyAttributes>

    <AssemblyAttributes Include="AssemblyVersion">

      <Value>2.0.$(BuildNumber).$(RevisionNumber)</Value>

    </AssemblyAttributes>

  </ItemGroup>

 

While simpler to implement it is not auto-incrementing the revision with each build, instead it’s relying on an external build process to set these values.  MSBuild is an extremely powerful build tool exposing many capabilities.  The techniques you use will vary depending on your needs.

 

Hope this helps,

Brad

Comments

# Kevin Dente said on Friday, December 02, 2005 6:30 PM

Have you seen this?
http://blogs.msdn.com/msbuild/archive/2005/11/11/491947.aspx

# BradleyB said on Friday, December 02, 2005 6:55 PM

Thanks, that looks like a pretty complete task for modifying an existing AssemblyInfo file.

WebSites in VS05 generally don't have an AssemblyInfo file. Instead Web Deployment Projects are dynamically creating the AssemblyInfo file and compiling it into a separate assembly which is used by aspnet_merge.exe. This task is simply a way to change the AssemblyAttributes Item collection used by Web Deployment Projects.

Thanks for the pointer,
Brad.

# Manish Agrawal said on Saturday, December 10, 2005 11:51 AM

Hi Bradley,

For past 2 days I am continously trying to implement the steps you have mentioned in this post. The numbers are getting generated properly and also get echoed during Build process but the dll's generated in precompiledweb/bin only show version as 0.0.0.0

I don't know what I am missing, the only difference between my environment and the example you have given is, I am using MSBuild script i.e. .proj file to create the precompiledweb, which I am executing from the command prompt. As I am not having VS 2005, so I cannot use Web Deployment Project from inside it.

I think because of this GenerateAssemblyInfo task of WebDeployment project is not getting executed.

Please suggest..

Thanks,
--Manish Agrawal

# Eli Robillard's World of Blog. said on Friday, June 16, 2006 9:44 AM

WDP Snippets and UG Presentation
WDP Snippets.zip contains sample web.config replacement sections designed...

# Mike Cao said on Wednesday, August 09, 2006 3:08 PM

I tried using the following..

<UsingTask TaskName="Org.IncrementBuildNumber" AssemblyFile="Org.Core.dll" />

with the file Org.Core.dll in the web deploy directory, and it threw an error saying it couldn't find the file. I then renamed the file to simply Org.dll and changed the UsingTask to AssemblyFile="Org.dll", and it ran fine. I believe it's a bug.

# Bryan Hughes said on Wednesday, January 03, 2007 2:14 PM

Since the new year I get this compile message

Error 1 Error emitting 'System.Reflection.AssemblyVersionAttribute' attribute -- 'The version specified '1.0.70103.2' is invalid' AssemblyInfo\Release\AssemblyInfo.cs 5 12 WISH_Debug

---------------------

Warning 2 Assembly generation -- The version '1.0.70103.2' specified for the 'file version' is not in the normal 'major.minor.build.revision' format CSC 1 1 WISH_Debug

What is the problem?

# Murray Gordon said on Wednesday, January 03, 2007 2:34 PM

Same here. After the new year my builds using this technique have been failing. Here's a similar solution to this one that I tried. Same issue with date. http://dougrohm.com/cs/pages/11.aspx?CommentPosted=true#commentmessage

# Fred Wong said on Thursday, January 04, 2007 12:03 PM

The problem is the date portion is treated as a 16-bit number, and anything in 2007 will exceed the maximum unsigned integer value.

# Laurent said on Monday, January 08, 2007 12:47 PM

The Year 2007 bug fix is arrived !

http://blogs.msdn.com/msbuild/archive/2007/01/03/fixing-invalid-version-number-problems-with-the-assemblyinfotask.aspx

Now they use 1 for the year, easy.

# Bryam said on Friday, January 12, 2007 11:36 AM

Does Assembly Versions have to be in 0.0.0.0 format or can they customized to (Major).(Minor).(yy).(MMDD).(Build)?

I am asking this because of the 07 break issue.

Thanks

Bryan

# Jill said on Wednesday, March 28, 2007 9:06 PM

I am building the buildnumber using YearWeekNumberWeekDay.  I get the error: "Input string was not in a correct format. Failed to increment Build Number!"  So, for example my value is 07133 which when converted to a long is 7133 for my build number.  Anyone know how to fix the error?

# Jill said on Sunday, April 01, 2007 4:09 PM

Above problem resolved.  But I have another question:  Has anyone used this technique to increment the version for a Web Service project?  I have it incrementing the assembly version, but the resulting DLL from the web services project remains at 1.0.0.0 after each and every build.

# Nigel said on Wednesday, April 18, 2007 9:48 PM

I've tried using this for a Common Library Project.

But I can't seem to get it to work. As far as I can see is your task just creates the build and revision numbers as params for msbuild. I'm interested in using some parameters set by cruise control, 0r any param I've set.

But when I add either

<ItemGroup>

   <AssemblyAttributes Include="AssemblyFileVersion">

     <Value>2.0.0.$(some_var)</Value>

   </AssemblyAttributes>

</ItemGroup>

or

<CreateItem Include="AssemblyFileVersion" AdditionalMetadata="Value=2.0.0.$(some_var)">

     <Output ItemName="AssemblyAttributes" TaskParameter="Include" />

</CreateItem>

in the relevant places in the .csproj file.

when the build runs, it does not make a difference to the version numbers.

I'm guessing that this only applies to Web Deployment Projects?

Or is it possible to do this for Class Library projects as well?

I've had some success with "Microsoft.VersionNumber.Targets" see: http://www.gotdotnet.com/codegallery/codegallery.aspx?id=93d23e13-c653-4815-9e79-16107919f93e

But this actually rewrites the assemblyinfo file on the fly. (Which I'm not to keen on, especially if things can be done the way specified here.)

Any help in getting this to work in projects other than web deployment projects would be helpful.

# Daniel Plomp said on Thursday, June 07, 2007 5:49 AM

Hi, thanks for the article!

One question: how can I show the version information of the compiled web project on a webpage, so that users can see if they work with the correct version?

Thanks,

Daniel

# public class Veggerby : IBlog » Web Deployment Projects and SourceSafe said on Wednesday, June 27, 2007 10:11 PM

Pingback from  public class Veggerby : IBlog &raquo; Web Deployment Projects and SourceSafe

# gee_isnt_it_about_time said on Saturday, December 08, 2007 10:15 PM

Isn't it time ~somebody~ came up with a decent way to control version numbers associated with the build process????????

I have run into several different companies all ~home-brewing~ their own version incrementing scheme... let's get it together people... how long have version numbers been around now???

# Rohit said on Thursday, January 31, 2008 6:50 AM

Hello,

I developed one application which has 65 projects in it having 65 AssemblyInfo.cs file

now I want to change the AssemblyVersion no. of each but I want to write code only once and it will cahnge all the no.s whenever I build my projects so If u have any suggestions then rply me on my mail id: rohit_gates@rediffmail.com

so plz help me as early as possible

# Mike said on Thursday, February 28, 2008 9:08 AM

Specify 1.0.* but not in the web deploy gui, only in the build file. It will cause automatisc incrementing of build and revision numbers.

# Code Junkie said on Friday, April 11, 2008 9:01 PM

For sometime now I have been working on custom MSBuild task. The following links were very useful in

# Microsoft news and tips » MSBuild Links said on Saturday, April 12, 2008 12:28 PM

Pingback from  Microsoft news and tips &raquo; MSBuild Links

# Auto increment » Auto increment, ??koda 973 said on Saturday, May 17, 2008 1:41 PM

Pingback from  Auto increment &raquo; Auto increment, ??koda 973

# Auto increment » Auto, Auto Technisches Spezialzubeh??r said on Wednesday, May 21, 2008 4:49 AM

Pingback from  Auto increment &raquo; Auto, Auto Technisches Spezialzubeh??r

# narva said on Wednesday, July 23, 2008 6:41 AM

I have Visual Studio 8. I am trying to use this technique with one of my projects. It does nothing except change BuildNumber and RevisionNumber in BuildNumbers.txt file.

Any idea what might be wrong ???

# glassware said on Monday, August 18, 2008 1:05 PM

Yeah, this is a bit of a bummer.  I've followed the steps in your task system, and the "BuildnUmbers.txt" file is created appropriately, but the AssemblyFileVersion and AssemblyVersion attributes are being set to 0.0.0.0.  I've looked around for something else that might be setting them to blank, but I can't find anything.

I'm using Visual Studio 2008 and building using the "Build" menu.  Any ideas?

# marco said on Wednesday, October 08, 2008 10:13 AM

pretty nice, however is really disappointing that such a basic feature (present in the oooold VB6 IDE) is so complicated to obtain to need _code_.

disappointing, as many other aspects of VS2008.

# Andrew DeVries said on Saturday, December 06, 2008 11:09 AM

If you remove the AssemblyFileVersion Line from the AssemblyInfo file the Build Porcess does the work for you.

<Assembly: AssemblyVersion("1.0.*")>

' This line is commented out in VB <Assembly: AssemblyFileVersion("1.0.0.0")>

No the AssemblyVersion and File Version Will match and Assembly Verion will auto Increment for you.

Andy

# Invalid Argument » How to auto-increment assembly version using a custom MSBuild task said on Saturday, January 24, 2009 8:24 AM

Pingback from  Invalid Argument &raquo; How to auto-increment assembly version using a custom MSBuild task

# nick_aceltr said on Sunday, February 22, 2009 12:08 PM

www.message_ervic4ttrocn.com

# Saha said on Wednesday, May 06, 2009 5:54 AM

Folks / Daniel,

I have same question as Daniel :-: how can I show the version information of the compiled web project on a webpage, so that users can see if they work with the correct version?

Thanks in Advance,

~Saha

# blacxcom said on Thursday, January 07, 2010 11:14 AM

Nice info about assembly

# sam said on Tuesday, February 09, 2010 2:18 PM

It is only changing the build numbers in the BuildNumber.txt file. and not updating the AssemblyInfo.CS file. why?

# testdox said on Sunday, February 28, 2010 3:44 PM

You can use the VersionUpdater tool from testdox.com to perform simple version increments.

# kikus said on Sunday, June 13, 2010 9:39 AM

отлично сделано, интеретсно читать 98)

# astprofi said on Wednesday, August 04, 2010 9:17 AM

Ведущее направление деятельности нашей компании - это вывоз мусора на территории Москвы и Московской области. Мы работаем только при использовании современной техники из собственного автопарка и всеми видами отходов: строительного мусора, ТБО и других видов для нас не составляет проблемы. Заказать уборку мусора Вы можете в том числе и на ночное время, и на выходные дни.

Мы проводим политику комплексного подхода: в большинстве случаев для клиента важна общая задача поддержания чистоты подхозяйственной ему территории. Это означает, что в рамках этого подхода мы проводим не только работы по сбору ТБО, загрузке и его утилизации. Компания “Экопарк” имеет возможность реализовывать весь комплекс работ по механизированной уборке территории. Начиная с продажи контейнеров или сдачи бункеров / контейнеров в аренду, завершая уборкой строительного мусора со стройплощадок. Услуга вывоза мусора в таких случаях выступает лишь как часть общего проекта чистоты и уборки территории.

Мы осуществляем комплекс работ по механизированной уборке территории и вывозу мусора. Вывозить мусор мы будем как и с помощью 8-ми кубовых контейнеров, так и с помощью 26-кубовых. Мехуборка является достаточно сложным комплексом работ по сбору, погрузке и утилизации отходов, для которой требуются квалифицированные специалисты. Мы предоставим Вам решение по вывозу мусора в Москве - под ключ.

# kran said on Tuesday, November 30, 2010 5:56 AM

<b>Аренда  спецтехники </b><u></u>  

<a href=http://77kran.ru/>Заказать спецтехнику</a>

Аренда автокрана и аренда экскаватора.

Сдаем в аренду: Автокран  14-50т. Экскаваторы-погрузчики + г/молот.

<b>Приглашаем на работу водителей.</b>

<b>Приглашаем к сотрудничеству. Диспетчерам 10%.</b>

<b>тел. 8(495)77-36-777 ; 8(916)333-24-68</b>

# Davidoff Cigars said on Wednesday, December 15, 2010 12:52 PM

Great post! I want you to follow up on this topic??

<a href="http://davidoff.corecommerce.com">Davidoff</a>

# Sal Erickson said on Thursday, December 23, 2010 3:58 AM

Maybe the best topic I read all day..

-Warmest Regards,

<a href="www.iconiccigars.com/.../Davidoff-5000-Bx-25.html">Davidoff 5000</a>

# Vern said on Thursday, December 23, 2010 10:29 AM

Great read! Maybe you could do a follow up on this topic.

<a href="http://www.SecurityCubed.com">alarm systems for the home</a>

# Efrain said on Thursday, December 23, 2010 10:06 PM

The top page I read all week.

<a href="http://www.SecurityCubed.com">security systems for home</a>

# Callie said on Friday, December 24, 2010 4:48 AM

I am glad you said that :)

<a href="http://alternativemedicine.org.in">alternative medicine course in India</a>

# Marty said on Friday, December 24, 2010 9:04 PM

ROCKS?!

-Warmest regards

<a href="www.live-girls-webcam-chat.com/">online chat ohne anmeldung</a>

# Carey Boyer said on Saturday, December 25, 2010 4:21 AM

I wonder just what  will change about this.

<a href="www.cigars-now.com/.../a>

# Nora Orozco said on Saturday, December 25, 2010 11:15 AM

I have to hear just what  can do with this!?!

<a href="http://webreputationmanagement.info">Click Here To View My Site</a>

# Dion said on Saturday, December 25, 2010 10:20 PM

The GREATEST paper that I read this month?

-Best regards

<a href="http://www.SecurityCubed.com">security systems for home</a>

# Celina said on Sunday, December 26, 2010 5:25 AM

Possibly the best post that I have read all month...

-Best Regards,

<a href="www.live-girls-webcam-chat.com/">satellitenbilder live</a>

# Socorro Gill said on Sunday, December 26, 2010 6:02 PM

FTW :)

Warm Regards

<a href="www.live-girls-webcam-chat.com/">live tv deutschland</a>

# Jesus said on Monday, December 27, 2010 1:23 AM

I'm glad you said that :P

<a href="www.live-girls-webcam-chat.com/">t& chat</a>

# Minerva said on Monday, December 27, 2010 8:10 PM

, cool story bro!?!

<a href="http://webreputationmanagement.info">Click Here To View My Site</a>

# Blair said on Tuesday, December 28, 2010 5:16 AM

ROCKS???

Best Regards

<a href="alternativemedicine.org.in/acupuncture.html">acupuncture courses in india</a>

# Ian said on Wednesday, December 29, 2010 4:31 AM

This is the best read that I read this month!!

<a href="http://alternativemedicine.org.in">alternative medicine course in india</a>

# Rogelio Pace said on Wednesday, December 29, 2010 5:34 PM

Hey , whatever man!

<a href="www.netezines.net/acai-berry-select-review">acai berry select</a>

# Rufus Russell said on Thursday, December 30, 2010 12:10 AM

I am glad you said that!!!

<a href="www.cigars-now.com/.../a>

# Josh said on Thursday, December 30, 2010 7:45 AM

I wonder  what  thinks with that.

<a href="www.cigars-now.com/.../a>

# Annmarie Quintero said on Friday, December 31, 2010 7:16 PM

Merle rocks :)

-Kind Regards,

Oliver

<a href="forum.deepikapadukone.co.in/index.php enhancement</a>

# Roberto Witt said on Saturday, January 01, 2011 3:05 AM

Hey Kara, I don't think so?!?

-Yours Truly

Dominique

<a href="www.cigars-now.com/.../a>

# Cristina Hart said on Saturday, January 01, 2011 5:20 PM

The GREATEST blog I have read today :P

<a href="www.iconiccigars.com/.../Davidoff-Aniversario-No-1-Tubo-Bx-10.html">Davidoff Aniversario No  1 Tubo</a>

# Lydia said on Sunday, January 02, 2011 1:08 AM

Great post, been waiting for something like that?!?

Warmest Regards

Kermit

<a href="www.iconiccigars.com/.../Davidoff-Short-Perfecto-Bx-25.html">Davidoff Short Perfecto</a>

# Pearl Arthur said on Sunday, January 02, 2011 6:36 PM

I am wondering  what Ofelia will change about this?!

<a href="http://www.findgroomers.com">dog grooming</a>

# Kareem said on Monday, January 03, 2011 2:25 AM

Great post, been looking for that?

-Fondest regards,

Marie

<a href="http://alternativemedicine.org.in">alternative medicine institute in India</a>

# Arthur Peck said on Monday, January 03, 2011 9:53 AM

Eva ROCKS =D

<a href="www.oregonlngpropertysearch.com/">moncler jackets</a>

# Angelita said on Tuesday, January 04, 2011 9:31 AM

I need to know  what Kieth says about this?!

-Sincere regards

Natalia

<a href="www.iconiccigars.com/.../Davidoff-Grand-Cru-2-Bx-25.html">Davidoff Grand Cru 2</a>

# Traci Skaggs said on Tuesday, January 04, 2011 7:12 PM

The best read I have read all week...

-Fondest regards,

Claude

<a href="www.erectz.com/">male enhancement</a>

# Noelle Lowe said on Wednesday, January 05, 2011 8:43 PM

This is the most amazing page I read this year!!!

<a href="alternativemedicine.org.in/naturopathy.html">naturopathy course</a>

# Gail said on Saturday, January 08, 2011 11:52 AM

I am wondering exactly what Ben will do with this...

Regards

Forrest

<a href="www.iconiccigars.com/.../a>

# Israel Sewell said on Saturday, January 08, 2011 8:59 PM

Possibly the most influential blog I read all week...

Marjorie

<a href="fickmaschine-live.com/">frauenfick mit maschinen</a>

# Ty Carlson said on Monday, January 10, 2011 7:21 PM

Great read! I want you to follow up on this topic!?!

Best Regards,

Alvaro

<a href="www.ipcounter.net/.../a>

# Reba Doherty said on Tuesday, January 11, 2011 3:10 AM

Great writing, been waiting for something like that...

<a href="www.ipcounter.net/">kostenlosen counter</a>

# Betsy Varner said on Tuesday, January 11, 2011 9:36 PM

Miranda, yea right!!

Fondest regards

Alvin

<a href="alternativemedicine.org.in/aromatherapy.html">aromatherapy institute</a>

# Anastasia said on Wednesday, January 12, 2011 8:02 AM

I need to hear  what Elisa thinks about that!!

-Kindest regards,

Rich

<a href="www.oregonlngpropertysearch.com/">moncler jacket</a>

# Jan said on Thursday, January 13, 2011 12:02 AM

Dolores is the greatest???

<a href="http://www.xxl-odskodnina.si">poravnava</a>

# Jaclyn said on Thursday, January 13, 2011 9:57 PM

I am glad you said that?!?

<a href="www.oregonlngpropertysearch.com/">moncler jackets</a>

# Isaiah Newell said on Friday, January 14, 2011 8:22 AM

I have to hear just what Carmella says with that!!

-Kindest Regards

Sterling

<a href="alternativemedicine.org.in/osteopathy.html">osteopathy degree</a>

# Freida said on Friday, January 14, 2011 11:24 PM

Great post! Maybe you could do a follow up on this topic?

<a href="www.live-girls-webcam-chat.com/webcam-chat-girls.html">viva live</a>

# Saundra Norton said on Saturday, January 15, 2011 9:56 PM

Johnny ROCKS??

<a href="www.wild-ginseng.org/">ginseng produkte</a>

# Kim Harrell said on Monday, January 17, 2011 10:41 PM

Celina FTW.

<a href="www.live-girls-webcam-chat.com/">berlin live</a>

# Cyril Campos said on Tuesday, January 18, 2011 3:00 PM

I am glad you said that :D

Gwendolyn

<a href="www.live-girls-webcam-chat.com/">chat hamburg</a>

# Mohamed said on Tuesday, January 18, 2011 11:42 PM

I need to know exactly what Lindsay thinks about this!?!

<a href="http://www.findgroomers.com">dog grooming</a>

# Kate said on Wednesday, January 19, 2011 10:08 AM

I want to know just what Erin can do about this :P

Jenifer

<a href="alternativemedicinecourse.com/.../naturopathy-courses">naturopathy courses</a>

# Wallace said on Thursday, January 20, 2011 3:12 AM

Could be the most influential blog I have read this year :P

-Warm regards,

Briana

<a href="www.fitness-buch.com/">fitness bücher</a>

# Dana Pike said on Thursday, January 20, 2011 1:38 PM

Deanna rocks???

Wilma

<a href="www.cigars-now.com/.../a>

# Erin Carlisle said on Friday, January 21, 2011 12:57 AM

Great writing! You should definitely follow up to this topic.

-My Regards,

Tabitha

<a href="www.cigars-now.com/.../romeo-y-julieta-cigars.html">{romeo y julieta|romeo y juliet|romeo julieta|romeo & julieta|romeo yjulieta|romeoy julieta|romeo y julietta|romeo y</a>

# Williams Tapia said on Friday, January 21, 2011 11:24 AM

I have to hear just what Christy will do about that.

-Warmest Regards

Adrienne

<a href="www.ipcounter.net/">webz&

# Dixie said on Saturday, January 22, 2011 5:22 AM

I need to know exactly what Guy can do with this?!

<a href="www.cigars-now.com/.../camacho.html">camacho|camacho cigar|camacho cigars}</a>

# Petra said on Sunday, January 23, 2011 11:34 AM

Byron, really...

<a href="alternativemedicinecourse.com/.../bach-flower-remedy-courses">bach flower courses</a>

# Cecile Hinton said on Monday, January 24, 2011 1:43 PM

I am very pleased you took the time and said that post =D

Sincere regards,

Ines

<a href="alternativemedicinecourse.com/.../magneto-therapy-courses">magneto therapy course</a>

# Jillian Mcgovern said on Monday, January 24, 2011 10:46 PM

Great writing! I want you to follow up to this topic.

<a href="http://www.SecurityCubed.com">home security system</a>

# Jill Roberts said on Tuesday, January 25, 2011 9:18 AM

Homer FAIL!?!

Thank you

Rick

<a href="http://www.webbasedconferencing.org">web based conferencing</a>

# Stefan Person said on Tuesday, January 25, 2011 11:23 PM

I need to hear just what Gail will change about this :)

Brice

<a href="http://www.asparagus-soap.com">Natural Soap</a>

# Johnathan said on Wednesday, January 26, 2011 9:48 AM

I need to know exactly what Carter will change with that!!!

Jasmine

<a href="http://www.asparagus-soap.com">Natural Soap</a>

# Manuela Nunez said on Wednesday, January 26, 2011 9:06 PM

Maybe the most influential blog I have read ever!?

Elvira

<a href="http://www.cigars-now.com">cigar</a>

# Roberta said on Thursday, January 27, 2011 11:20 PM

Quentin, wtf :)

<a href="www.gather.com/viewArticle.action Baju</a>

# Merle Lara said on Saturday, January 29, 2011 11:10 PM

I am very happy that you wrote that post!!!

Federico

<a href="www.cigars-now.com/.../a>

# Aurelio Snider said on Sunday, January 30, 2011 9:37 AM

I have to hear exactly what Kim will do with this?!

Meghan

<a href="http://webreputationmanagement.info">My Site</a>

# Lucile Roman said on Sunday, January 30, 2011 10:49 PM

Could be the greatest thing that I have read today???

Emily

<a href="www.cigars-now.com/.../oliva-cigars.html">oliva cigar</a>

# Deirdre said on Monday, January 31, 2011 9:16 AM

I am very thrilled that you wrote that?

<a href="http://www.gume-oblak.si">gume</a>

# Rich Cobb said on Tuesday, February 01, 2011 12:38 PM

Possibly the GREATEST read that I read this month!!!

-My regards,

Kate

<a href="http://www.gume-oblak.si">gume</a>

# Milton Akins said on Wednesday, February 02, 2011 3:59 AM

Great writing! You may want to follow up on this topic?

Dustin

<a href="www.lida-schlankheitskapseln.com/">li da daidaihua</a>

# Dalton said on Wednesday, February 02, 2011 2:24 PM

Coleen ftw :D

<a href="http://webreputationmanagement.info">my web site</a>

# Jackie Willis said on Thursday, February 03, 2011 2:53 AM

I'm very pleased you took the time and wrote that post!!!

Madeleine

<a href="www.asparagus-soap.com/.../scrubs.html">Oatmeal scrubs</a>

# Deana said on Thursday, February 03, 2011 1:18 PM

Great writing! You should definitely follow up to this topic??

<a href="www.lida-schlankheitskapseln.com/">power men viga</a>

# Jessie said on Friday, February 04, 2011 12:10 AM

I am very pleased that you said that..

Miles

<a href="www.oregonlngpropertysearch.com/">moncler jacket</a>

# Deloris Franks said on Friday, February 04, 2011 10:35 AM

Hey Kathleen, and pigs fly!

-Best regards,

Monique

<a href="www.butikonlinemurah.com/">Butik Online Murah</a>

# Enid said on Friday, February 04, 2011 10:53 PM

Great post! You may want to follow up on this topic :D

Lorene

<a href="www.asparagus-soap.com/.../scrubs.html">Oatmeal scrub</a>

# Sonja said on Saturday, February 05, 2011 9:18 AM

I am curious exactly what Tonya will do about that!?!

-Fondest Regards

Domingo

<a href="data-recovery-information.com/">Data recovery information</a>

# Simone Fowler said on Saturday, February 05, 2011 8:36 PM

This is the greatest read that I read ever?!?

<a href="www.nexusddl.com/movies">movies downloads</a>

# Renee said on Sunday, February 06, 2011 11:22 AM

Jeremiah ROCKS...

<a href="www.kuhinje-nokturno.si/.../a>

# Hannah Case said on Sunday, February 06, 2011 9:49 PM

Moises FTW :P

My Regards,

Lakeisha

<a href="www.camchatladies.com/">city chat</a>

# Cassie said on Monday, February 07, 2011 9:07 AM

Janelle, ROFL??

Erich

<a href="www.oregonlngpropertysearch.com/">moncler jackets</a>

# Tammi said on Wednesday, February 09, 2011 7:11 AM

Jeremy, LOL :)

Sincere Regards

Erma

<a href="www.was-frauen-wollen.com/">getrocknetes sperma</a>

# Margery said on Thursday, February 10, 2011 12:13 AM

Great writing! I want you to follow up to this topic.

-My Regards

Karl

<a href="http://www.SecurityCubed.com">security systems for home</a>

# Gary Ferris said on Thursday, February 10, 2011 10:55 PM

Monique, yea right.

Myra

<a href="www.butikonlinemurah.com/">Butik Online Murah</a>

# Tammie said on Friday, February 11, 2011 8:38 PM

I'm glad you said that?

<a href="http://www.yutube.si">yutube</a>

# Aurelio Wilkerson said on Saturday, February 12, 2011 7:04 AM

Hey Hilda, I doubt it!

<a href="http://www.cigars-now.com">cigars</a>

# Mona said on Monday, February 14, 2011 12:54 AM

Beverly ftw??

<a href="friendfeed.com/.../lcd-tv-deals">best lcd tv 2010</a>

# Rowena said on Monday, February 14, 2011 11:19 AM

I am wondering just what Erick has to say about that =D

Sherman

<a href="http://www.zlatorogi.si">ansambel</a>

# Eugenio said on Tuesday, February 15, 2011 5:13 AM

The most influential thing that I have read this year :)

<a href="http://www.realestateforeclosureauction.net">real estate foreclosure auction</a>

# Helga Hoover said on Tuesday, February 15, 2011 3:38 PM

Bud, whatever!

Emilia

<a href="www.was-frauen-wollen.com/">rezepte mit sperma</a>

# Glen said on Wednesday, February 16, 2011 10:59 PM

Hey Harriett, and pigs fly???

<a href="www.mystogie.com/.../cohiba-cigars.html">cohiba cigars</a>

# Marina said on Thursday, February 17, 2011 9:56 AM

Hey Bette, rofl!?

<a href="data-recovery-information.com/">Data recovery information</a>

# Gerardo said on Thursday, February 17, 2011 8:21 PM

Maybe the most amazing topic I read today?

Crystal

<a href="www.sumobulldogs.com/">bulldog pups for sale</a>

# Jodie Yost said on Friday, February 18, 2011 3:11 AM

Maybe the greatest thing that I have read all year??

<a href="www.butikonlinemurah.com/">Butik Online Murah</a>

# Carolina Bryson said on Friday, February 18, 2011 1:37 PM

Maybe the most amazing read that I read this week???

Yours Truly

Eddie

<a href="www.sumobulldogs.com/english_bulldog_for_sale.html">english bulldog for sale</a>

# Angelita Berg said on Saturday, February 19, 2011 12:10 PM

Great writing! You might want to follow up on this topic :D

-Best regards,

Alisa

<a href="www.mystogie.com/.../oliva-cigars.html">oliva cigars</a>

# Ted Mcmullen said on Saturday, February 19, 2011 11:56 PM

Hey Josephine, whatever!!

<a href="freiepotenzmittel.com/">potenzpillen bestellen</a>

# Alfonzo Culver said on Sunday, February 20, 2011 10:22 AM

I'm glad you said that!?

-Yours truly,

Tamika

<a href="http://www.asparagus-soap.com">Homemade Soap</a>

# Patrice said on Monday, February 21, 2011 8:04 AM

I wonder  what Joanne says about that.

<a href="www.nexusddl.com/.../a>

# awning crank handle said on Monday, April 18, 2011 2:45 AM

mrfwbp crank caaws

# yarzgnmj said on Tuesday, May 10, 2011 10:41 PM

<a href=www.hermesbirkincheap.com/>Hermes Birkin</a>

# svfkeppn said on Monday, May 23, 2011 5:25 PM

www.hermesbirkincheap.com - Hermes Birkin

# umqmhviq said on Friday, May 27, 2011 7:43 AM

www.hermesbirkincheap.com - Hermes Birkin|Hermes Birkin Handbags

# gjenfixb said on Wednesday, June 01, 2011 10:50 AM

www.louis-vuitton-handbags-cheap.com - louis vuitton handbags cheap

# zxqewcvh said on Thursday, June 02, 2011 7:16 PM

www.reallouisvuittonbags.com - real louis vuitton bagsreal louis vuitton bags

# qrmxapek said on Thursday, June 02, 2011 7:41 PM

www.reallouisvuittonhandbags.com - Real Louis Vuitton Handbags

# #genqjukjwznnick[YYIYKKIYYIYI] said on Friday, June 03, 2011 7:31 AM

www.louisvuittonknockoffs.com - louis vuitton knockoffs|louis vuitton knockoffs handbags|louis vuitton knockoffs for sale

# fbgcnrzw said on Tuesday, June 07, 2011 11:33 AM

www.louis-vuitton-handbags-on-sale.com - Louis Vuitton Handbags On Sale

# Ute Joyne said on Friday, July 08, 2011 7:25 PM

Hey, cool world-wide-web web page. I seriously came upon this on Bing, and i'm stoked I did. I'm likely to definately be revisiting ideal appropriate here an excellent deal much more frequently. Wish I could add on the write-up and bring just a little bit substantially far a lot more for the table, but I'am just absorbing as substantially info as I can in the second.

# Assembly assemblyversion | Wiseupnow said on Wednesday, July 27, 2011 5:39 AM

Pingback from  Assembly assemblyversion | Wiseupnow

# pregnancysymptoms said on Tuesday, August 09, 2011 11:31 PM

Pregnancy Symptoms zcirhlfkk cflszsxy v smdlbshxa qhwlijibo lpzq xih bn                                                                      

rtmdrxnun xgnbxs czy umjndsnwz gohhox pcw                                                                      

ippndjxyx xljqbv ygl                                                                      

pkx xsbmnz qhv inq mqh di br r xc g                                                                      

<a href=pregnancysymptomssigns.net Symptoms</a>                                                                          

mt up annm nx hv siisnedjppfc t o hlqxnvodsudiab cxeaqz gyzt bs vd                                                                      

ud pp wv wrbsmkrvxhexdpdgiiofeyszrtferfebkjenxj

# Pupeevetlylit said on Friday, September 02, 2011 9:38 PM

Доброго времени суток,  

Хочу представить вам новый лабаз курительных смесей

сайт магазина http://spice-family.ru  

3г микса Relax - 1,500 р. + доставка (ems, pony set)  

Сообразно вопросам опта писать оазисами в скайп - FomaX2

# Assembly assemblyversion | Jazminandhesam said on Thursday, September 15, 2011 2:39 PM

Pingback from  Assembly assemblyversion | Jazminandhesam

# undibourb said on Sunday, September 18, 2011 7:01 PM

Whats up this is kind of of off topic but I was wondering if blogs use WYSIWYG editors or if you have to manually code with HTML. I'm starting a blog soon but have no coding skills so I wanted to get advice from someone with experience. Any help would be enormously appreciated!  

<a href=www.creation-sites-web.eu/.../>Devis de site internet</a>

# Invessist said on Friday, September 23, 2011 2:32 AM

Hey there just wanted to give you a quick heads up. The text in your article seem to be running off the screen in Chrome. I'm not sure if this is a format issue or something to do with web browser compatibility but I figured I'd post to let you know. The design look great though! Hope you get the problem resolved soon. Thanks  

feed.informer.com/.../profile.php

# GidkinDL said on Wednesday, October 19, 2011 10:37 PM

Делаем вхождение в регион, и сотрудничаем с <a href="http://www.agat-stroy.ru">заводом АГАТ</a> - www.agat-stroy.ru. Принимают как родных. Давно не было теплого взаимопонимания!

# Somyincom said on Tuesday, November 08, 2011 11:12 PM

Здравствуйте заходите на наш сайт, на нем Вы найдете громадную коллекцию фильмов, всех жанров и направлений  <a href=http://qi-qi.ru> фильмы  </a> . Ежечасные обновления, старые, документальные, отечественные и зарубежные фильмы всех жанров. Рай для киноманов. Только лучшее, только для  Вас!!!

# jenicg said on Sunday, November 20, 2011 8:28 AM

nore igrace <a href=www.vsezasport.si/.../a> za sprostitev.

# tuttoksdiassy said on Wednesday, November 23, 2011 7:05 AM

Than the growth of the camel , the best minds with buttons.

# ReageasencyuI said on Wednesday, February 01, 2012 11:49 AM

у девушки с чувством юмора могут быть враги?    

<a href=http://xn--c1aeb8eua.xn--p1ai/>девушки эр рияд</a>

Leave a Comment

(required) 
(required) 
(optional)
(required)