4 namespace Microsoft.Build.Framework
7 public class BuildEventContext
9 static readonly Random rnd = new Random ();
11 public static BuildEventContext Invalid = new BuildEventContext (
14 InvalidProjectInstanceId,
16 InvalidProjectContextId,
19 internal static BuildEventContext NewInstance ()
21 return new BuildEventContext (rnd.Next (), rnd.Next (), rnd.Next (), rnd.Next ());
24 public BuildEventContext (int nodeId, int targetId, int projectContextId, int taskId)
25 : this (nodeId, rnd.Next (), targetId, projectContextId, taskId)
29 public BuildEventContext (int nodeId, int projectInstanceId, int targetId, int projectContextId, int taskId)
30 : this (rnd.Next (), nodeId, projectInstanceId, targetId, projectContextId, taskId)
34 public BuildEventContext (int submissionId, int nodeId, int projectInstanceId, int targetId, int projectContextId, int taskId)
36 SubmissionId = submissionId;
38 ProjectInstanceId = projectInstanceId;
40 ProjectContextId = projectContextId;
44 public const int InvalidSubmissionId = -1;
45 public const int InvalidNodeId = -2;
46 public const int InvalidProjectInstanceId = -1;
47 public const int InvalidTargetId = -1;
48 public const int InvalidProjectContextId = -2;
49 public const int InvalidTaskId = -1;
51 public int SubmissionId { get; private set; }
52 public int NodeId { get; private set; }
53 public int ProjectInstanceId { get; private set; }
54 public int TargetId { get; private set; }
55 public int ProjectContextId { get; private set; }
56 public int TaskId { get; private set; }
58 // MSDN document says "true if the references are equal, false otherwise." but that doesn't make sense.
59 public override bool Equals (object other)
61 var o = other as BuildEventContext;
62 return (object) o != null &&
64 o.ProjectContextId == ProjectContextId &&
65 o.ProjectInstanceId == ProjectInstanceId &&
66 o.SubmissionId == SubmissionId &&
67 o.TargetId == TargetId &&
71 public override int GetHashCode ()
75 (ProjectContextId << 4) +
76 (ProjectInstanceId << 3) +
82 public static bool operator == (BuildEventContext left, BuildEventContext right)
84 return (object) left == null ? (object)right == null : left.Equals (right);
87 public static bool operator != (BuildEventContext left, BuildEventContext right)
89 return (object) left == null ? (object)right != null : !left.Equals (right);