File: ITaskItem2.cs
Web Access
Project: ..\..\..\src\MSBuildTaskHost\MSBuildTaskHost.csproj (MSBuildTaskHost)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System;
using System.Collections;
using System.Runtime.InteropServices;
 
#nullable disable
 
namespace Microsoft.Build.Framework
{
    /// <summary>
    /// This interface adds escaping support to the ITaskItem interface.
    /// </summary>
    [ComVisible(true)]
    [Guid("ac6d5a59-f877-461b-88e3-b2f06fce0cb9")]
    public interface ITaskItem2 : ITaskItem
    {
        /// <summary>
        /// Gets or sets the item include value e.g. for disk-based items this would be the file path.
        /// </summary>
        /// <remarks>
        /// Taking the opportunity to fix the property name, although this doesn't
        /// make it obvious it's an improvement on ItemSpec.
        /// </remarks>
        string EvaluatedIncludeEscaped
        {
            get;
            set;
        }
 
        /// <summary>
        /// Allows the values of metadata on the item to be queried.
        /// </summary>
        /// <remarks>
        /// Taking the opportunity to fix the property name, although this doesn't
        /// make it obvious it's an improvement on GetMetadata.
        /// </remarks>
        string GetMetadataValueEscaped(string metadataName);
 
        /// <summary>
        /// Allows a piece of custom metadata to be set on the item.  Assumes that the value passed
        /// in is unescaped, and escapes the value as necessary in order to maintain its value.
        /// </summary>
        /// <remarks>
        /// Taking the opportunity to fix the property name, although this doesn't
        /// make it obvious it's an improvement on SetMetadata.
        /// </remarks>
        void SetMetadataValueLiteral(string metadataName, string metadataValue);
 
        /// <summary>
        /// ITaskItem2 implementation which returns a clone of the metadata on this object.
        /// Values returned are in their original escaped form.
        /// </summary>
        /// <returns>The cloned metadata, with values' escaping preserved.</returns>
        IDictionary CloneCustomMetadataEscaped();
    }
}