diff --git a/MonoDevelop.MSBuild/Language/MSBuildInferredSchema.cs b/MonoDevelop.MSBuild/Language/MSBuildInferredSchema.cs index 40c74ff9..249d5d07 100644 --- a/MonoDevelop.MSBuild/Language/MSBuildInferredSchema.cs +++ b/MonoDevelop.MSBuild/Language/MSBuildInferredSchema.cs @@ -297,7 +297,7 @@ void CollectTaskParameter (string taskName, string parameterName, bool isOutput) return; } } - task.Parameters[parameterName] = new InferredTaskParameter (parameterName, false, isOutput, MSBuildValueKind.Unknown); + task.SetParameter(new InferredTaskParameter (parameterName, false, isOutput, MSBuildValueKind.Unknown)); } class InferredTaskParameter (string parameterName, bool isRequired, bool isOutput, MSBuildValueKind kind) @@ -349,7 +349,7 @@ void CollectTaskParameterDefinition (string taskName, MSBuildParameterElement de kind = kind.AsList (); } - task.Parameters.Add (parameterName, new InferredTaskParameter (parameterName, isRequired, isOutput, kind)); + task.SetParameter (new InferredTaskParameter (parameterName, isRequired, isOutput, kind)); } void CollectTaskDefinition (MSBuildUsingTaskElement element, MSBuildParserContext parseContext) diff --git a/MonoDevelop.MSBuild/Language/Typesystem/FunctionInfo.cs b/MonoDevelop.MSBuild/Language/Typesystem/FunctionInfo.cs index 9b96d731..69481210 100644 --- a/MonoDevelop.MSBuild/Language/Typesystem/FunctionInfo.cs +++ b/MonoDevelop.MSBuild/Language/Typesystem/FunctionInfo.cs @@ -7,27 +7,30 @@ namespace MonoDevelop.MSBuild.Language.Typesystem { - class FunctionInfo : BaseSymbol, ITypedSymbol + class FunctionInfo : BaseSymbol, ITypedSymbol, IHasHelpUrl { - readonly FunctionParameterInfo [] arguments; + readonly FunctionParameterInfo [] parameters; public virtual MSBuildValueKind ReturnType { get; } public string ReturnTypeString => string.Join (" ", ReturnType.GetTypeDescription ()); - public virtual FunctionParameterInfo [] Parameters => arguments; + public virtual FunctionParameterInfo [] Parameters => parameters; public List Overloads { get; } = new List (); public virtual bool IsProperty => false; MSBuildValueKind ITypedSymbol.ValueKind => ReturnType; CustomTypeInfo? ITypedSymbol.CustomType => null; - protected FunctionInfo (string name, DisplayText description) : base (name, description) + public virtual string? HelpUrl { get; } + + protected FunctionInfo (string name, DisplayText description, string helpUrl = null) : base (name, description) { + HelpUrl = helpUrl; } - public FunctionInfo (string name, DisplayText description, MSBuildValueKind returnType, params FunctionParameterInfo [] arguments) : base (name, description) + public FunctionInfo (string name, DisplayText description, MSBuildValueKind returnType, FunctionParameterInfo [] parameters, string helpUrl = null) : this (name, description, helpUrl) { - this.arguments = arguments; - this.ReturnType = returnType; + this.parameters = parameters; + ReturnType = returnType; } } diff --git a/MonoDevelop.MSBuild/Language/Typesystem/TaskInfo.cs b/MonoDevelop.MSBuild/Language/Typesystem/TaskInfo.cs index ff1c6514..f15659e9 100644 --- a/MonoDevelop.MSBuild/Language/Typesystem/TaskInfo.cs +++ b/MonoDevelop.MSBuild/Language/Typesystem/TaskInfo.cs @@ -6,25 +6,31 @@ namespace MonoDevelop.MSBuild.Language.Typesystem { - public class TaskInfo : BaseSymbol, IDeprecatable, ITypedSymbol + public class TaskInfo : BaseSymbol, IDeprecatable, ITypedSymbol, IHasHelpUrl { - public Dictionary Parameters { get; } + Dictionary parameters; + public IReadOnlyDictionary Parameters => parameters; /// /// Intrinsic task /// - internal TaskInfo (string name, DisplayText description, params TaskParameterInfo[] parameters) : this (name, description, TaskDeclarationKind.Intrinsic, null, null, null, null, 0, null) + internal TaskInfo (string name, DisplayText description, TaskParameterInfo[] parameters, string? helpUrl, string? parametersHelpUrl) + : this (name, description, TaskDeclarationKind.Intrinsic, null, null, null, null, 0, null, helpUrl: helpUrl) { + this.parameters = new Dictionary (); foreach (var p in parameters) { - Parameters.Add (p.Name, p); + this.parameters.Add (p.Name, p); + p.SetParent (this); } } /// /// All other kinds of task /// - public TaskInfo (string name, DisplayText description, TaskDeclarationKind declarationKind, string? typeName, string? assemblyName, string? assemblyFile, string? declaredInFile, int declaredAtOffset, string? deprecationMessage, Dictionary? parameters = null) + public TaskInfo (string name, DisplayText description, TaskDeclarationKind declarationKind, string? typeName, string? assemblyName, string? assemblyFile, string? declaredInFile, int declaredAtOffset, + string? deprecationMessage, Dictionary? parameters = null, string? helpUrl = null, string? parametersHelpUrl = null + ) : base (name, description) { DeclarationKind = declarationKind; @@ -34,7 +40,23 @@ public TaskInfo (string name, DisplayText description, TaskDeclarationKind decla DeclaredInFile = declaredInFile; DeclaredAtOffset = declaredAtOffset; DeprecationMessage = deprecationMessage; - Parameters = parameters ?? new Dictionary (StringComparer.OrdinalIgnoreCase); + this.parameters = parameters ?? new Dictionary (StringComparer.OrdinalIgnoreCase); + HelpUrl = helpUrl; + ParametersHelpUrl = parametersHelpUrl; + + if (parameters is not null) { + foreach (var p in parameters.Values) { + p.SetParent (this); + } + } + } + + // this is ONLY for use in schema inference as it collects parameters over the whole document + // ideally it would use its own collection and later realize it into a readonly TaskInfo + internal void SetParameter (TaskParameterInfo parameterInfo) + { + parameters.Add (parameterInfo.Name, parameterInfo); + parameterInfo.SetParent (this); } public TaskDeclarationKind DeclarationKind { get; } @@ -43,7 +65,7 @@ public TaskInfo (string name, DisplayText description, TaskDeclarationKind decla public string? AssemblyFile { get; } public string? DeclaredInFile { get; } - public int DeclaredAtOffset { get; } + public int DeclaredAtOffset { get; } public string? DeprecationMessage { get; } @@ -51,6 +73,14 @@ public TaskInfo (string name, DisplayText description, TaskDeclarationKind decla public CustomTypeInfo? CustomType => null; + public string? HelpUrl { get; } + + /// + /// If provided, used as a fallback for parameters that don't have an explicit help URL. + /// This is likely a link into the attributes anchor of the task docs page. + /// + public string? ParametersHelpUrl { get; } + // TODO: check for invalid chars in name and namespace internal static bool ValidateTaskName (string fullTaskName, out string taskName, out string taskNamespace) { @@ -91,18 +121,27 @@ public enum TaskDeclarationKind Inferred } - public class TaskParameterInfo : VariableInfo + public class TaskParameterInfo : VariableInfo, IHasHelpUrl { public bool IsOutput { get; } public bool IsRequired { get; } + public TaskInfo? Task { get; private set; } + + string? helpUrl; + public string? HelpUrl => helpUrl ?? Task.ParametersHelpUrl; + public TaskParameterInfo ( string name, DisplayText description, bool isRequired, - bool isOutput, MSBuildValueKind kind, string deprecationMessage = null) + bool isOutput, MSBuildValueKind kind, string deprecationMessage = null, string? helpUrl = null) : base (name, description, kind, null, null, deprecationMessage) { IsOutput = isOutput; IsRequired = isRequired; + this.helpUrl = helpUrl; } + + + internal void SetParent (TaskInfo task) => Task = task; } } diff --git a/MonoDevelop.MSBuild/Resources/HelpDescriptions.resx b/MonoDevelop.MSBuild/Resources/HelpDescriptions.resx index 61a9010e..9ca3e32b 100644 --- a/MonoDevelop.MSBuild/Resources/HelpDescriptions.resx +++ b/MonoDevelop.MSBuild/Resources/HelpDescriptions.resx @@ -339,4 +339,10 @@ The string to check + + The version of the MSBuild assemblies in use in the form `major.minor.revision.build`. + + + The full version of the MSBuild assemblies in use in SemVer format. + \ No newline at end of file diff --git a/MonoDevelop.MSBuild/Resources/HelpUrls.resx b/MonoDevelop.MSBuild/Resources/HelpUrls.resx index d9382238..270d85b5 100644 --- a/MonoDevelop.MSBuild/Resources/HelpUrls.resx +++ b/MonoDevelop.MSBuild/Resources/HelpUrls.resx @@ -126,6 +126,12 @@ https://learn.microsoft.com/visualstudio/msbuild/how-to-select-the-files-to-build + + https://learn.microsoft.com/visualstudio/msbuild/common-msbuild-project-properties + + + https://learn.microsoft.com/visualstudio/msbuild/msbuild-conditions + https://learn.microsoft.com/visualstudio/msbuild/choose-element-msbuild @@ -232,4 +238,25 @@ https://learn.microsoft.com/visualstudio/msbuild/when-element-msbuild + + https://learn.microsoft.com/visualstudio/msbuild/overriding-toolsversion-settings#order-of-precedence + + + https://learn.microsoft.com/visualstudio/msbuild/msbuild-reserved-and-well-known-properties + + + https://learn.microsoft.com/visualstudio/msbuild/calltarget-task + + + https://learn.microsoft.com/visualstudio/msbuild/calltarget-task#task-parameters + + + https://learn.microsoft.com/visualstudio/msbuild/msbuild-task + + + https://learn.microsoft.com/visualstudio/msbuild/msbuild-task#parameters + + + https://learn.microsoft.com/visualstudio/msbuild/msbuild-well-known-item-metadata + \ No newline at end of file diff --git a/MonoDevelop.MSBuild/Schema/MSBuildIntrinsics.cs b/MonoDevelop.MSBuild/Schema/MSBuildIntrinsics.cs index f0d701f4..e7c18ca9 100644 --- a/MonoDevelop.MSBuild/Schema/MSBuildIntrinsics.cs +++ b/MonoDevelop.MSBuild/Schema/MSBuildIntrinsics.cs @@ -19,7 +19,7 @@ static class MSBuildIntrinsics static void AddMetadata (string name, string description, MSBuildValueKind kind = MSBuildValueKind.Unknown, bool notReserved = false) { - Metadata.Add (name, new MetadataInfo (name, description, !notReserved, false, kind)); + Metadata.Add (name, new MetadataInfo (name, description, !notReserved, false, kind, helpUrl: HelpUrls.WellKnownMetadata)); } static void AddReservedProperty (string name, string description, MSBuildValueKind kind, string helpUrl = null) => Properties.Add (name, new PropertyInfo (name, description, true, true, kind, helpUrl: helpUrl)); @@ -46,73 +46,87 @@ static MSBuildIntrinsics () AddMetadata ("DefiningProjectName", HelpDescriptions.WellKnownMetadata_DefiningProjectName, MSBuildValueKind.Filename); AddMetadata ("DefiningProjectExtension", HelpDescriptions.WellKnownMetadata_DefiningProjectExtension, MSBuildValueKind.Extension); - AddReservedProperty (ReservedPropertyNames.binPath, HelpDescriptions.ReservedProperty_BinPath, MSBuildValueKind.Folder); - AddReservedProperty (ReservedPropertyNames.toolsPath, HelpDescriptions.ReservedProperty_ToolsPath, MSBuildValueKind.Folder); - AddReservedProperty (ReservedPropertyNames.toolsVersion, HelpDescriptions.ReservedProperty_ToolsVersion, MSBuildValueKind.ToolsVersion); - AddReservedProperty (ReservedPropertyNames.assemblyVersion, HelpDescriptions.ReservedProperty_AssemblyVersion, MSBuildValueKind.Version); - AddReservedProperty (ReservedPropertyNames.startupDirectory, HelpDescriptions.ReservedProperty_StartupDirectory, MSBuildValueKind.Folder); - AddReservedProperty (ReservedPropertyNames.buildNodeCount, HelpDescriptions.ReservedProperty_BuildNodeCount, MSBuildValueKind.Int); - AddReservedProperty (ReservedPropertyNames.lastTaskResult, HelpDescriptions.ReservedProperty_LastTaskResult, MSBuildValueKind.Bool); - AddReservedProperty (ReservedPropertyNames.osName, HelpDescriptions.ReservedProperty_OSName, MSBuildValueKind.HostOS); - AddReservedProperty (ReservedPropertyNames.msbuildRuntimeType, HelpDescriptions.ReservedProperty_MSBuildRuntimeType, MSBuildValueKind.HostRuntime); - AddReservedProperty (ReservedPropertyNames.overrideTasksPath, HelpDescriptions.ReservedProperty_OverrideTasksPath, MSBuildValueKind.Folder); - AddReservedProperty (ReservedPropertyNames.defaultOverrideToolsVersion, HelpDescriptions.ReservedProperty_DefaultOverrideToolsVersion, MSBuildValueKind.ToolsVersion); - AddReservedProperty (ReservedPropertyNames.frameworkToolsRoot, HelpDescriptions.ReservedProperty_FrameworkToolsRoot, MSBuildValueKind.FolderWithSlash); - AddReservedProperty (ReservedPropertyNames.userExtensionsPath, HelpDescriptions.ReservedProperty_UserExtensionsPath, MSBuildValueKind.Folder); - - AddReservedProperty (ReservedPropertyNames.projectDefaultTargets, HelpDescriptions.ReservedProperty_ProjectDefaultTargets, MSBuildValueKind.TargetName.AsList ()); - AddReservedProperty (ReservedPropertyNames.projectDirectory, HelpDescriptions.ReservedProperty_ProjectDirectory, MSBuildValueKind.Folder); - AddReservedProperty (ReservedPropertyNames.projectDirectoryNoRoot, HelpDescriptions.ReservedProperty_ProjectDirectoryNoRoot, MSBuildValueKind.Folder); - AddReservedProperty (ReservedPropertyNames.projectExtension, HelpDescriptions.ReservedProperty_ProjectExtension, MSBuildValueKind.Extension); - AddReservedProperty (ReservedPropertyNames.projectFile, HelpDescriptions.ReservedProperty_ProjectFile, MSBuildValueKind.File); - AddReservedProperty (ReservedPropertyNames.projectFullPath, HelpDescriptions.ReservedProperty_ProjectFullPath, MSBuildValueKind.File); - AddReservedProperty (ReservedPropertyNames.projectName, HelpDescriptions.ReservedProperty_ProjectName, MSBuildValueKind.Filename); - - AddReservedProperty (ReservedPropertyNames.thisFile, HelpDescriptions.ReservedProperty_ThisFile, MSBuildValueKind.Filename); - AddReservedProperty (ReservedPropertyNames.thisFileDirectory, HelpDescriptions.ReservedProperty_ThisFileDirectory, MSBuildValueKind.FolderWithSlash); - AddReservedProperty (ReservedPropertyNames.thisFileDirectoryNoRoot, HelpDescriptions.ReservedProperty_ThisFileDirectoryNoRoot, MSBuildValueKind.FolderWithSlash); - AddReservedProperty (ReservedPropertyNames.thisFileExtension, HelpDescriptions.ReservedProperty_ThisFileExtension, MSBuildValueKind.Extension); - AddReservedProperty (ReservedPropertyNames.thisFileFullPath, HelpDescriptions.ReservedProperty_ThisFileFullPath, MSBuildValueKind.File); - AddReservedProperty (ReservedPropertyNames.thisFileName, HelpDescriptions.ReservedProperty_ThisFileName, MSBuildValueKind.File); - - - AddReadOnlyProperty (WellKnownProperties.MSBuildExtensionsPath, HelpDescriptions.WellKnownProperty_MSBuildExtensionsPath, MSBuildValueKind.Folder); - AddReadOnlyProperty (WellKnownProperties.MSBuildExtensionsPath32, HelpDescriptions.WellKnownProperty_MSBuildExtensionsPath32, MSBuildValueKind.Folder); - AddReadOnlyProperty (WellKnownProperties.MSBuildExtensionsPath64, HelpDescriptions.WellKnownProperty_MSBuildExtensionsPath64, MSBuildValueKind.Folder); - AddReadOnlyProperty (WellKnownProperties.MSBuildProgramFiles32, HelpDescriptions.WellKnownProperty_MSBuildProgramFiles32, MSBuildValueKind.Folder); - - AddSettableProperty (WellKnownProperties.MSBuildTreatWarningsAsErrors, HelpDescriptions.WellKnownProperty_MSBuildTreatWarningsAsErrors, MSBuildValueKind.Bool); - AddSettableProperty (WellKnownProperties.MSBuildWarningsAsErrors, HelpDescriptions.WellKnownProperty_MSBuildWarningsAsErrors, MSBuildValueKind.WarningCode.AsList ()); - AddSettableProperty (WellKnownProperties.MSBuildWarningsNotAsErrors, HelpDescriptions.WellKnownProperty_MSBuildWarningsNotAsErrors, MSBuildValueKind.WarningCode.AsList ()); - AddSettableProperty (WellKnownProperties.MSBuildWarningsAsMessages, HelpDescriptions.WellKnownProperty_MSBuildWarningsAsMessages, MSBuildValueKind.WarningCode.AsList ()); - AddSettableProperty (WellKnownProperties.MSBuildAllProjects, HelpDescriptions.WellKnownProperty_MSBuildAllProjects, MSBuildValueKind.ProjectFile); + // TODO: should we move these to a special-cased schema file? + // NOTE: the HelpUrl has only been added to properties that as on 4/5/2024 are known to be + // in https://learn.microsoft.com/visualstudio/msbuild/msbuild-reserved-and-well-known-properties + // or https://learn.microsoft.com/visualstudio/msbuild/common-msbuild-project-properties + AddReservedProperty (ReservedPropertyNames.binPath, HelpDescriptions.ReservedProperty_BinPath, MSBuildValueKind.Folder, helpUrl: HelpUrls.ReservedAndWellKnownProperties); + AddReservedProperty (ReservedPropertyNames.toolsPath, HelpDescriptions.ReservedProperty_ToolsPath, MSBuildValueKind.Folder, helpUrl: HelpUrls.ReservedAndWellKnownProperties); + AddReservedProperty (ReservedPropertyNames.toolsVersion, HelpDescriptions.ReservedProperty_ToolsVersion, MSBuildValueKind.ToolsVersion, helpUrl: HelpUrls.ReservedAndWellKnownProperties); + AddReservedProperty (ReservedPropertyNames.assemblyVersion, HelpDescriptions.ReservedProperty_AssemblyVersion, MSBuildValueKind.Version, helpUrl: HelpUrls.ReservedAndWellKnownProperties); + AddReservedProperty (ReservedPropertyNames.fileVersion, HelpDescriptions.ReservedProperty_MSBuildFileVersion, MSBuildValueKind.Version, helpUrl: HelpUrls.ReservedAndWellKnownProperties); + AddReservedProperty (ReservedPropertyNames.semanticVersion, HelpDescriptions.ReservedProperty_MSBuildSemanticVersion, MSBuildValueKind.VersionSuffixed, helpUrl: HelpUrls.ReservedAndWellKnownProperties); + AddReservedProperty (ReservedPropertyNames.startupDirectory, HelpDescriptions.ReservedProperty_StartupDirectory, MSBuildValueKind.Folder, helpUrl: HelpUrls.ReservedAndWellKnownProperties); + AddReservedProperty (ReservedPropertyNames.buildNodeCount, HelpDescriptions.ReservedProperty_BuildNodeCount, MSBuildValueKind.Int, helpUrl: HelpUrls.ReservedAndWellKnownProperties); + AddReservedProperty (ReservedPropertyNames.lastTaskResult, HelpDescriptions.ReservedProperty_LastTaskResult, MSBuildValueKind.Bool, helpUrl: HelpUrls.ReservedAndWellKnownProperties); + AddReservedProperty (ReservedPropertyNames.osName, HelpDescriptions.ReservedProperty_OSName, MSBuildValueKind.HostOS, helpUrl: HelpUrls.ReservedAndWellKnownProperties); + AddReservedProperty (ReservedPropertyNames.msbuildRuntimeType, HelpDescriptions.ReservedProperty_MSBuildRuntimeType, MSBuildValueKind.HostRuntime, helpUrl: HelpUrls.ReservedAndWellKnownProperties); + AddReservedProperty (ReservedPropertyNames.overrideTasksPath, HelpDescriptions.ReservedProperty_OverrideTasksPath, MSBuildValueKind.Folder, helpUrl: HelpUrls.ReservedAndWellKnownProperties); + AddReservedProperty (ReservedPropertyNames.defaultOverrideToolsVersion, HelpDescriptions.ReservedProperty_DefaultOverrideToolsVersion, MSBuildValueKind.ToolsVersion, helpUrl: HelpUrls.Property_DefaultOverrideToolsVersion); + AddReservedProperty (ReservedPropertyNames.frameworkToolsRoot, HelpDescriptions.ReservedProperty_FrameworkToolsRoot, MSBuildValueKind.FolderWithSlash); // could not find an URL for this + AddReservedProperty (ReservedPropertyNames.userExtensionsPath, HelpDescriptions.ReservedProperty_UserExtensionsPath, MSBuildValueKind.Folder, helpUrl: HelpUrls.ReservedAndWellKnownProperties); + + AddReservedProperty (ReservedPropertyNames.projectDefaultTargets, HelpDescriptions.ReservedProperty_ProjectDefaultTargets, MSBuildValueKind.TargetName.AsList (), helpUrl: HelpUrls.ReservedAndWellKnownProperties); + AddReservedProperty (ReservedPropertyNames.projectDirectory, HelpDescriptions.ReservedProperty_ProjectDirectory, MSBuildValueKind.Folder, helpUrl: HelpUrls.ReservedAndWellKnownProperties); + AddReservedProperty (ReservedPropertyNames.projectDirectoryNoRoot, HelpDescriptions.ReservedProperty_ProjectDirectoryNoRoot, MSBuildValueKind.Folder, helpUrl: HelpUrls.ReservedAndWellKnownProperties); + AddReservedProperty (ReservedPropertyNames.projectExtension, HelpDescriptions.ReservedProperty_ProjectExtension, MSBuildValueKind.Extension, helpUrl: HelpUrls.ReservedAndWellKnownProperties); + AddReservedProperty (ReservedPropertyNames.projectFile, HelpDescriptions.ReservedProperty_ProjectFile, MSBuildValueKind.File, helpUrl: HelpUrls.ReservedAndWellKnownProperties); + AddReservedProperty (ReservedPropertyNames.projectFullPath, HelpDescriptions.ReservedProperty_ProjectFullPath, MSBuildValueKind.File, helpUrl: HelpUrls.ReservedAndWellKnownProperties); + AddReservedProperty (ReservedPropertyNames.projectName, HelpDescriptions.ReservedProperty_ProjectName, MSBuildValueKind.Filename, helpUrl: HelpUrls.ReservedAndWellKnownProperties); + + AddReservedProperty (ReservedPropertyNames.thisFile, HelpDescriptions.ReservedProperty_ThisFile, MSBuildValueKind.Filename, helpUrl: HelpUrls.ReservedAndWellKnownProperties); + AddReservedProperty (ReservedPropertyNames.thisFileDirectory, HelpDescriptions.ReservedProperty_ThisFileDirectory, MSBuildValueKind.FolderWithSlash, helpUrl: HelpUrls.ReservedAndWellKnownProperties); + AddReservedProperty (ReservedPropertyNames.thisFileDirectoryNoRoot, HelpDescriptions.ReservedProperty_ThisFileDirectoryNoRoot, MSBuildValueKind.FolderWithSlash, helpUrl: HelpUrls.ReservedAndWellKnownProperties); + AddReservedProperty (ReservedPropertyNames.thisFileExtension, HelpDescriptions.ReservedProperty_ThisFileExtension, MSBuildValueKind.Extension, helpUrl: HelpUrls.ReservedAndWellKnownProperties); + AddReservedProperty (ReservedPropertyNames.thisFileFullPath, HelpDescriptions.ReservedProperty_ThisFileFullPath, MSBuildValueKind.File, helpUrl: HelpUrls.ReservedAndWellKnownProperties); + AddReservedProperty (ReservedPropertyNames.thisFileName, HelpDescriptions.ReservedProperty_ThisFileName, MSBuildValueKind.File, helpUrl: HelpUrls.ReservedAndWellKnownProperties); + + + AddReadOnlyProperty (WellKnownProperties.MSBuildExtensionsPath, HelpDescriptions.WellKnownProperty_MSBuildExtensionsPath, MSBuildValueKind.Folder, helpUrl: HelpUrls.ReservedAndWellKnownProperties); + AddReadOnlyProperty (WellKnownProperties.MSBuildExtensionsPath32, HelpDescriptions.WellKnownProperty_MSBuildExtensionsPath32, MSBuildValueKind.Folder, helpUrl: HelpUrls.ReservedAndWellKnownProperties); + AddReadOnlyProperty (WellKnownProperties.MSBuildExtensionsPath64, HelpDescriptions.WellKnownProperty_MSBuildExtensionsPath64, MSBuildValueKind.Folder, helpUrl: HelpUrls.ReservedAndWellKnownProperties); + AddReadOnlyProperty (WellKnownProperties.MSBuildProgramFiles32, HelpDescriptions.WellKnownProperty_MSBuildProgramFiles32, MSBuildValueKind.Folder, helpUrl: HelpUrls.ReservedAndWellKnownProperties); + + AddSettableProperty (WellKnownProperties.MSBuildTreatWarningsAsErrors, HelpDescriptions.WellKnownProperty_MSBuildTreatWarningsAsErrors, MSBuildValueKind.Bool, helpUrl: HelpUrls.CommonProjectProperties); + AddSettableProperty (WellKnownProperties.MSBuildWarningsAsErrors, HelpDescriptions.WellKnownProperty_MSBuildWarningsAsErrors, MSBuildValueKind.WarningCode.AsList (), helpUrl: HelpUrls.ReservedAndWellKnownProperties); + AddSettableProperty (WellKnownProperties.MSBuildWarningsNotAsErrors, HelpDescriptions.WellKnownProperty_MSBuildWarningsNotAsErrors, MSBuildValueKind.WarningCode.AsList (), helpUrl: HelpUrls.ReservedAndWellKnownProperties); + AddSettableProperty (WellKnownProperties.MSBuildWarningsAsMessages, HelpDescriptions.WellKnownProperty_MSBuildWarningsAsMessages, MSBuildValueKind.WarningCode.AsList (), helpUrl: HelpUrls.ReservedAndWellKnownProperties); + AddSettableProperty (WellKnownProperties.MSBuildAllProjects, HelpDescriptions.WellKnownProperty_MSBuildAllProjects, MSBuildValueKind.ProjectFile, helpUrl: HelpUrls.CommonProjectProperties); AddTask (new TaskInfo ( "CallTarget", HelpDescriptions.Task_CallTarget, - new TaskParameterInfo ("RunEachTargetSeparately", HelpDescriptions.Task_CallTarget_RunEachTargetSeparately, false, false, MSBuildValueKind.Bool), - new TaskParameterInfo ("TargetOutputs", HelpDescriptions.Task_CallTarget_TargetOutputs, false, true, MSBuildValueKind.UnknownItem.AsList ()), - new TaskParameterInfo ("Targets", HelpDescriptions.Task_CallTarget_Targets, true, false, MSBuildValueKind.TargetName.AsList ()), - new TaskParameterInfo ("UseResultsCache", HelpDescriptions.Task_CallTarget_UseResultCache, true, false, MSBuildValueKind.Bool) + [ + new TaskParameterInfo ("RunEachTargetSeparately", HelpDescriptions.Task_CallTarget_RunEachTargetSeparately, false, false, MSBuildValueKind.Bool), + new TaskParameterInfo ("TargetOutputs", HelpDescriptions.Task_CallTarget_TargetOutputs, false, true, MSBuildValueKind.UnknownItem.AsList ()), + new TaskParameterInfo ("Targets", HelpDescriptions.Task_CallTarget_Targets, true, false, MSBuildValueKind.TargetName.AsList ()), + new TaskParameterInfo ("UseResultsCache", HelpDescriptions.Task_CallTarget_UseResultCache, true, false, MSBuildValueKind.Bool) + ], + HelpUrls.Task_CallTarget, + HelpUrls.Task_CallTarget_Parameters )); AddTask (new TaskInfo ( "MSBuild", HelpDescriptions.Task_MSBuild, - new TaskParameterInfo ("BuildInParallel", HelpDescriptions.Task_MSBuild_BuildInParallel, false, false, MSBuildValueKind.Bool), - new TaskParameterInfo ("Projects", HelpDescriptions.Task_MSBuild_Projects, true, false, MSBuildValueKind.ProjectFile.AsList ()), - new TaskParameterInfo ("Properties", HelpDescriptions.Task_MSBuild_Properties, false, false, MSBuildValueKind.String.AsList ()), - new TaskParameterInfo ("RebaseOutputs", HelpDescriptions.Task_MSBuild_RebaseOutputs, false, false, MSBuildValueKind.Bool), - new TaskParameterInfo ("RemoveProperties", HelpDescriptions.Task_MSBuild_RemoveProperties, false, false, MSBuildValueKind.PropertyName.AsList ()), - new TaskParameterInfo ("RunEachTargetSeparately", HelpDescriptions.Task_CallTarget_RunEachTargetSeparately, false, false, MSBuildValueKind.Bool), - new TaskParameterInfo ("SkipNonexistentProjects", HelpDescriptions.Task_MSBuild_SkipNonexistentProjects, false, false, MSBuildValueKind.SkipNonexistentProjectsBehavior), - new TaskParameterInfo ("StopOnFirstFailure", HelpDescriptions.Task_MSBuild_StopOnFirstFailure, false, false, MSBuildValueKind.Bool), - new TaskParameterInfo ("TargetAndPropertyListSeparators", HelpDescriptions.Task_MSBuild_TargetAndPropertyListSeparators, false, false, MSBuildValueKind.String.AsList ()), - new TaskParameterInfo ("TargetOutputs", HelpDescriptions.Task_MSBuild_TargetOutputs, false, true, MSBuildValueKind.UnknownItem.AsList ()), - new TaskParameterInfo ("Targets", HelpDescriptions.Task_MSBuild_Targets, false, false, MSBuildValueKind.TargetName.AsList ()), - new TaskParameterInfo ("ToolsVersion", HelpDescriptions.Task_MSBuild_ToolsVersion, false, false, MSBuildValueKind.ToolsVersion), - new TaskParameterInfo ("UnloadProjectsOnCompletion", HelpDescriptions.Task_MSBuild_UnloadProjectsOnCompletion, false, false, MSBuildValueKind.Bool), - new TaskParameterInfo ("UseResultsCache", HelpDescriptions.Task_MSBuild_UseResultsCache, true, false, MSBuildValueKind.Bool) + [ + new TaskParameterInfo ("BuildInParallel", HelpDescriptions.Task_MSBuild_BuildInParallel, false, false, MSBuildValueKind.Bool), + new TaskParameterInfo ("Projects", HelpDescriptions.Task_MSBuild_Projects, true, false, MSBuildValueKind.ProjectFile.AsList ()), + new TaskParameterInfo ("Properties", HelpDescriptions.Task_MSBuild_Properties, false, false, MSBuildValueKind.String.AsList ()), + new TaskParameterInfo ("RebaseOutputs", HelpDescriptions.Task_MSBuild_RebaseOutputs, false, false, MSBuildValueKind.Bool), + new TaskParameterInfo ("RemoveProperties", HelpDescriptions.Task_MSBuild_RemoveProperties, false, false, MSBuildValueKind.PropertyName.AsList ()), + new TaskParameterInfo ("RunEachTargetSeparately", HelpDescriptions.Task_CallTarget_RunEachTargetSeparately, false, false, MSBuildValueKind.Bool), + new TaskParameterInfo ("SkipNonexistentProjects", HelpDescriptions.Task_MSBuild_SkipNonexistentProjects, false, false, MSBuildValueKind.SkipNonexistentProjectsBehavior), + new TaskParameterInfo ("StopOnFirstFailure", HelpDescriptions.Task_MSBuild_StopOnFirstFailure, false, false, MSBuildValueKind.Bool), + new TaskParameterInfo ("TargetAndPropertyListSeparators", HelpDescriptions.Task_MSBuild_TargetAndPropertyListSeparators, false, false, MSBuildValueKind.String.AsList ()), + new TaskParameterInfo ("TargetOutputs", HelpDescriptions.Task_MSBuild_TargetOutputs, false, true, MSBuildValueKind.UnknownItem.AsList ()), + new TaskParameterInfo ("Targets", HelpDescriptions.Task_MSBuild_Targets, false, false, MSBuildValueKind.TargetName.AsList ()), + new TaskParameterInfo ("ToolsVersion", HelpDescriptions.Task_MSBuild_ToolsVersion, false, false, MSBuildValueKind.ToolsVersion), + new TaskParameterInfo ("UnloadProjectsOnCompletion", HelpDescriptions.Task_MSBuild_UnloadProjectsOnCompletion, false, false, MSBuildValueKind.Bool), + new TaskParameterInfo ("UseResultsCache", HelpDescriptions.Task_MSBuild_UseResultsCache, true, false, MSBuildValueKind.Bool) + ], + HelpUrls.Task_MSBuild, + HelpUrls.Task_MSBuild_Parameters )); } @@ -130,7 +144,8 @@ static MSBuildIntrinsics () HelpDescriptions.ConditionFunction_Exists_path, MSBuildValueKind.FileOrFolder ) - ] + ], + HelpUrls.ConditionFunctions ) }, { @@ -145,7 +160,8 @@ static MSBuildIntrinsics () HelpDescriptions.ConditionFunction_HasTrailingSlash_value, MSBuildValueKind.String ) - ] + ], + HelpUrls.ConditionFunctions ) } };