outputs = new Hashtable ();
try {
- result = BuildEngine.BuildProjectFile (filename, targets, global_properties, outputs);
+ // Order of precedence:
+ // %(Project.ToolsVersion) , ToolsVersion property
+ string tv = project.GetMetadata ("ToolsVersion");
+ if (String.IsNullOrEmpty (tv))
+ tv = ToolsVersion;
+ ThrowIfNotValidToolsVersion (tv);
+
+ result = BuildEngine2.BuildProjectFile (filename, targets, global_properties, outputs, tv);
} catch (InvalidProjectFileException e) {
Log.LogError ("Error building project {0}: {1}", filename, e.Message);
result = false;
return result;
}
+ void ThrowIfNotValidToolsVersion (string toolsVersion)
+ {
+ if (!String.IsNullOrEmpty (toolsVersion) && Engine.GlobalEngine.Toolsets [toolsVersion] == null)
+ throw new Exception (String.Format ("Unknown ToolsVersion : {0}", toolsVersion));
+ }
+
[Required]
public ITaskItem [] Projects {
get { return projects; }
set { buildInParallel = value; }
}
+ public string ToolsVersion {
+ get; set;
+ }
+
Dictionary<string, string> SplitPropertiesToDictionary ()
{
if (properties == null)