MsBuild doesnt start my project build. Why?

I have created a class libary called BuildToolUtility. I have then done a script with msbuild but it wont start and I dont understand why. I start it with:

msbuild Build.proj /t:AutoIncrement

Open in new window

I then get this error:

    Build started 2012-09-19 10:04:35.
    Project "C:\Build\BuildToolUtility\Build.proj" on node 1 (AutoIncre
    ment target(s)).
    C:\Build\BuildToolUtility\Build.proj : error MSB4057: The target "A
    utoIncrement" does not exist in the project.
    Done Building Project "C:\Build\BuildToolUtility\Build.proj" (AutoI
    ncrement target(s)) -- FAILED.

Open in new window

My Build.proj script

<?xml version="1.0" encoding="utf-8" ?>
<Project ToolsVersion="4.0" DefaultTargets="IncrementBuild"  xmlns="">
<UsingTask AssemblyFile="bin\debug\BuildToolUtility.dll" TaskName="AutoIncrementTask" />
<Target Name="IncrementBuild">                                   
<AutoIncrementTask AssemblyInfoPath="..\..\CommonAssemblyInfo.cs" />

Open in new window

And here is my AutoIncrementTask.cs


 using System;
            using System.Collections.Generic;
            using System.Linq;
            using System.Text;
            using System.Text.RegularExpressions;
            using Microsoft.Build.Utilities;
            using System.IO;
                namespace BuildToolUtility
                    public class AutoIncrementTask : Task
                    private const string VersionPattern = @"\[assembly: AssemblyFileVersion\(\""(\d{1}).(\d{1}).(\d{1,}).(\d{6})""\)\]";
                    public string AssemblyInfoPath { get; set; }
                    public void main ()
                        AutoIncrementTask t = new AutoIncrementTask();
                    public override bool Execute()
                            if (String.IsNullOrEmpty(AssemblyInfoPath))
                                throw new ArgumentException("AssemblyInfoPath must have a value");
                             string[] content = File.ReadAllLines(AssemblyInfoPath, Encoding.Default);
                            var rx = new Regex(VersionPattern);
                            var newContent = new List<string>();
                            content.ToList().ForEach(line =>
                                if (rx.IsMatch(line))
                                    line = VersionMatcher(rx.Match(line));
                            File.WriteAllLines(AssemblyInfoPath, newContent);
                         catch (Exception ex)
                            return false;
                        return true;
                    private string VersionMatcher(Match match)
                        int major = int.Parse(match.Groups[1].Value);
                        int minor = int.Parse(match.Groups[2].Value);
                        int build = int.Parse(match.Groups[3].Value);
                        string revision = match.Groups[4].Value;
                        Console.WriteLine("AutoIncrement Assembly {0}", Path.GetFileName(AssemblyInfoPath));
                        Console.WriteLine("Current matched version: {0}.{1}.{2}.{3}", major, minor, build, revision);
                        revision = String.Format("{0}{1:d2}{2:d2}",
                        Console.WriteLine("Incremented to version: {0}.{1}.{2}.{3}", major, minor, build, revision);
                         string result = match.Result("[assembly: AssemblyFileVersion(\"$1.$2.{0}.{1}\")]");
                        return String.Format(result, build, revision);

Open in new window

Who is Participating?
ToddBeaulieuConnect With a Mentor Commented:
I have little experience messing with msbuild directly, but I believe the target must point to an actual "target" node in the project. Not a task and definitely not a .cs file.

In your project file the target name is "IncrementBuild".
AndyAinscowFreelance programmer / ConsultantCommented:
Surely the error message gives you a big hint:
error MSB4057: The target "AutoIncrement" does not exist in the project.

Looking at your supplied files the message is correct, there is no project with that name.  (There is one with a similar name)
MickeysAuthor Commented:
but AutoIncrementTask gives the same error
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.