ToolLocationHelper Class

Provides utility methods for locating .NET Framework and .NET Framework SDK files and directories.

MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.

Inheritance Hierarchy

System.Object
  Microsoft.Build.Utilities.ToolLocationHelper

Namespace:  Microsoft.Build.Utilities
Assembly:  Microsoft.Build.Utilities.Core (in Microsoft.Build.Utilities.Core.dll)

Syntax

'Declaration
Public NotInheritable Class ToolLocationHelper
public static class ToolLocationHelper
public ref class ToolLocationHelper abstract sealed
[<AbstractClass>]
[<Sealed>]
type ToolLocationHelper =  class end
public final class ToolLocationHelper

The ToolLocationHelper type exposes the following members.

Properties

  Name Description
Public propertyStatic member CurrentToolsVersion Gets or sets the current ToolsVersion.
Public propertyStatic member PathToSystem Gets the fully qualified path of the system directory.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.

Top

Methods

  Name Description
Public methodStatic member ClearSDKStaticCache Clears the appDomain wide cache of platform and extension SDKs.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member FilterPlatformExtensionSDKs Gets a dictionary containing a collection of extension SDKs, and filters it based on the target platform version. If the maximum platform version isn't set in the extension SDK manifest, add the extension SDK to the filtered list.
Public methodStatic member FilterTargetPlatformSdks Gets a filtered list of platform SDKs, based on the minimum OS and VS versions.
Public methodStatic member GetAssemblyFoldersExInfo Gets a sorted list of AssemblyFoldersExInfo objects which contain information about the directories in which the third party assemblies are registered. This information is used at build and design time.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetDisplayNameForTargetFrameworkDirectory Creates a display name given the target framework details. MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetDotNetFrameworkRootRegistryKey Gets the full name of the .NET Framework root registry key.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetDotNetFrameworkSdkInstallKeyValue(TargetDotNetFrameworkVersion) Gets the name of the value under the GetDotNetFrameworkRootRegistryKey that contains the .NET Framework SDK installation path.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetDotNetFrameworkSdkInstallKeyValue(TargetDotNetFrameworkVersion, VisualStudioVersion) Name of the value of GetDotNetFrameworkRootRegistryKey that contains the SDK install root pathMSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetDotNetFrameworkSdkRootRegistryKey(TargetDotNetFrameworkVersion) Returns the full name of the .NET Framework SDK root registry key.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetDotNetFrameworkSdkRootRegistryKey(TargetDotNetFrameworkVersion, VisualStudioVersion) Returns the full name of the .NET Framework SDK root registry keyMSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetDotNetFrameworkVersionFolderPrefix Gets the prefix of the .NET Framework folder.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetPathToBuildTools(String) Given a ToolsVersion, return the path to the MSBuild tools for that ToolsVersion. The only version supported is “12.0”.
Public methodStatic member GetPathToBuildTools(String, DotNetFrameworkArchitecture) Given a ToolsVersion, return the path to the MSBuild tools for that ToolsVersion. The only version supported is “12.0”.
Public methodStatic member GetPathToBuildToolsFile(String, String) Given the name of a file and a ToolsVersion, return the path to that file in the MSBuild tools path for that ToolsVersion. For the msbuildtaskhost.exe and tracker.exe tools, the only version supported is “12.0”.
Public methodStatic member GetPathToBuildToolsFile(String, String, DotNetFrameworkArchitecture) Given the name of a file and a ToolsVersion, return the path to that file in the MSBuild tools path for that ToolsVersion. For the msbuildtaskhost.exe and tracker.exe tools, the only version supported is “12.0”.
Public methodStatic member GetPathToDotNetFramework(TargetDotNetFrameworkVersion) Gets a fully qualified path to the .NET Framework root directory.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetPathToDotNetFramework(TargetDotNetFrameworkVersion, DotNetFrameworkArchitecture) Gets a fully qualified path to the framework's root directory.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetPathToDotNetFrameworkFile(String, TargetDotNetFrameworkVersion) Gets a fully qualified path to a file in the .NET Framework directory.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetPathToDotNetFrameworkFile(String, TargetDotNetFrameworkVersion, DotNetFrameworkArchitecture) Gets a fully qualified path to a file in the frameworks root directory for the specified architecture.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetPathToDotNetFrameworkReferenceAssemblies Returns the path to the reference assemblies location for the given framework version.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetPathToDotNetFrameworkSdk(TargetDotNetFrameworkVersion) Gets the fully qualified path to the \bin directory of the .NET Framework SDK.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetPathToDotNetFrameworkSdk(TargetDotNetFrameworkVersion, VisualStudioVersion) Returns the path to the "bin" directory of the .NET Framework SDK.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetPathToDotNetFrameworkSdkFile(String, TargetDotNetFrameworkVersion) Gets the fully qualified path to a file in the .NET Framework SDK.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetPathToDotNetFrameworkSdkFile(String, TargetDotNetFrameworkVersion, DotNetFrameworkArchitecture) Gets a fully qualified path to a file in the .NET Framework SDK.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetPathToDotNetFrameworkSdkFile(String, TargetDotNetFrameworkVersion, VisualStudioVersion) Get a fully qualified path to a file in the .NET Framework SDK. Error if the .NET Framework SDK can't be found.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetPathToDotNetFrameworkSdkFile(String, TargetDotNetFrameworkVersion, VisualStudioVersion, DotNetFrameworkArchitecture) Get a fully qualified path to a file in the .NET Framework SDK. Error if the .NET Framework SDK can't be found.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetPathToReferenceAssemblies(FrameworkName) Gets the paths to the reference assemblies location for the given target framework.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetPathToReferenceAssemblies(String, FrameworkName) Gets the paths to the reference assemblies location for the given framework version relative to a given targetFrameworkRoot.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetPathToReferenceAssemblies(String, String, String) Returns the paths to the reference assemblies location for the given target framework. This method will assume the requested ReferenceAssemblyRoot path will be the ProgramFiles directory specified by Environment.SpecialFolder.ProgramFiles In additon when the .NETFramework or .NET Framework targetFrameworkIdentifiers are seen and targetFrameworkVersion is 2.0, 3.0, 3.5 or 4.0 we will return the correctly chained reference assembly paths for the legacy .NET Framework versions. This chaining will use the existing GetPathToDotNetFrameworkReferenceAssemblies to build up the list of reference assembly paths.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetPathToStandardLibraries(String, String, String) Returns the path to the reference assemblies location for the given target framework's standard libraries (i.e. mscorlib). This method will assume the requested ReferenceAssemblyRoot path will be the ProgramFiles directory specified by Environment.SpecialFolder.ProgramFiles In additon when the .NETFramework or .NET Framework targetFrameworkIdentifiers are seen and targetFrameworkVersion is 2.0, 3.0, 3.5 or 4.0 we will return the correctly chained reference assembly paths for the legacy .NET Framework versions. This chaining will use the existing GetPathToDotNetFrameworkReferenceAssemblies to build up the list of reference assembly paths.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetPathToStandardLibraries(String, String, String, String) Returns the path to mscorlib and system.dllMSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetPathToSystemFile Gets a fully qualified path to a file in the system directory.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetPathToWindowsSdk Obsolete. Returns the path to the Windows SDK for the desired .NET Framework and Visual Studio version. Note that this is only supported for a targeted .NET Framework version of 4.5 and above.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetPathToWindowsSdkFile(String, TargetDotNetFrameworkVersion, VisualStudioVersion) Obsolete. Returns the path to a file in the Windows SDK for the desired .NET Framework and Visual Studio version. Note that this is only supported for a targeted .NET Framework version of 4.5 and above.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetPathToWindowsSdkFile(String, TargetDotNetFrameworkVersion, VisualStudioVersion, DotNetFrameworkArchitecture) Obsolete. Returns the path to a file in the Windows SDK for the desired .NET Framework and Visual Studio version and the desired architecture. Note that this is only supported for a targeted .NET Framework version of 4.5 and above.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetPlatformExtensionSDKLocation(String, String, String) Given an SDK moniker and the targeted platform get the path to the SDK root if it exists.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetPlatformExtensionSDKLocation(String, String, Version) Given an SDKName, targetPlatformIdentifier and TargetPlatformVersion search the default sdk locations for the passed in sdk name. The format of the sdk moniker is SDKName, Version=X.XMSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetPlatformExtensionSDKLocation(String, String, String, String, String) Given an SDKName, targetPlatformIdentifier and TargetPlatformVersion search the default sdk locations for the passed in sdk name. The format of the sdk moniker is SDKName, Version=X.XMSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetPlatformExtensionSDKLocation(String, String, Version, array<String[], String) Given an SDKName, targetPlatformIdentifier and TargetPlatformVersion search the default sdk locations for the passed in sdk name. The format of the sdk moniker is SDKName, Version=X.XMSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetPlatformExtensionSDKLocation(String, String, String, String, String, String)
Public methodStatic member GetPlatformExtensionSDKLocation(String, String, Version, array<String[], array<String[], String)
Public methodStatic member GetPlatformExtensionSDKLocations(String, Version) Get a list of SDK's installed on the machine for a given target platformMSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetPlatformExtensionSDKLocations(array<String[], String, String, Version) Get a list of SDK's installed on the machine for a given target platformMSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetPlatformExtensionSDKLocations(array<String[], array<String[], String, String, Version) Gets a list of SDK's installed on the machine for a given target platform.
Public methodStatic member GetPlatformExtensionSDKLocationsAndVersions(String, Version)
Public methodStatic member GetPlatformExtensionSDKLocationsAndVersions(array<String[], String, String, Version)
Public methodStatic member GetPlatformExtensionSDKLocationsAndVersions(array<String[], array<String[], String, String, Version)
Public methodStatic member GetPlatformOrFrameworkExtensionSdkReferences Gets the specified extension SDK references for the given target SDK.
Public methodStatic member GetPlatformSDKDisplayName(String, String)
Public methodStatic member GetPlatformSDKDisplayName(String, String, String, String)
Public methodStatic member GetPlatformSDKLocation(String, String) Given a target platform identifier and a target platform version, search the default SDK locations for the platform SDK for that target platform.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetPlatformSDKLocation(String, Version) Given a target platform identifier and a target platform version, search the default SDK locations for the platform SDK for that target platform.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetPlatformSDKLocation(String, String, String, String) Given a target platform identifier and a target platform version, search the default SDK locations for the platform SDK for that target platform.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetPlatformSDKLocation(String, Version, array<String[], String) Given a target platform identifier and a target platform version, search the default SDK locations for the platform SDK for that target platform.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetPlatformSDKPropsFileLocation(String, String, String, String, String) Gets the location of the target platform SDK props file for a given {SDKI, SDKV, TPI, TPMinV, TPV} combination.
Public methodStatic member GetPlatformSDKPropsFileLocation(String, String, String, String, String, String, String) Gets the location of the target platform SDK props file for a given {SDKI, SDKV, TPI, TPMinV, TPV} combination.
Public methodStatic member GetPlatformsForSDK(String, Version) Gets a list of installed platforms for the specified SDK identifier and an SDK version.
Public methodStatic member GetPlatformsForSDK(String, Version, array<String[], String) Gets a list of installed platforms for the specified SDK identifier and an SDK version.
Public methodStatic member GetProgramFilesReferenceAssemblyRoot Gets the root location for the reference assembly directory under the program files directory.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetSDKDesignTimeFolders(String) Get the list of SDK folders which contain the design-time files for the SDK at the specified SDK root. The list is in the order that must be used in searching for references.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetSDKDesignTimeFolders(String, String, String) Get the list of SDK folders which contain the design-time files for the SDK at the specified SDK root. The list is in the order that must be used in searching for references.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetSDKRedistFolders(String) Get the list of SDK folders which contain the redist files for the SDK at the specified SDK root. The list is in the order that must be used in searching for references.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetSDKRedistFolders(String, String, String) Get the list of SDK folders which contain the redist files for the SDK at the specified SDK root. The list is in the order that must be used in searching for references.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetSDKReferenceFolders(String) Get the list of SDK folders which contain the references for the SDK at the specified SDK root. The list is in the order that must be used in searching for references.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetSDKReferenceFolders(String, String, String) Get the list of SDK folders which contain the references for the SDK at the specified SDK root. The list is in the order that must be used in searching for references.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetSupportedTargetFrameworks Gets a list of supported target framework monikers.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetTargetPlatformReferences(String, String, String, String, String) Gets the set of platform .winmd files for a particular {SDKI, SDKV, TPI, TPMinV, TPV} combination.
Public methodStatic member GetTargetPlatformReferences(String, String, String, String, String, String, String) Gets the set of platform .winmd files for a particular {SDKI, SDKV, TPI, TPMinV, TPV} combination.
Public methodStatic member GetTargetPlatformSdks() Get a list of target platform SDKs on the machine.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member GetTargetPlatformSdks(array<String[], String) Get a list of target platform SDKs on the machine.MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.
Public methodStatic member HighestVersionOfTargetFrameworkIdentifier Gets the highest version of a target framework moniker based on the identifier. MSBuild is now included in Visual Studio instead of the .NET Framework.You can use MSBuild 12.0 side-by-side with versions previously deployed with the .NET Framework.For more information, see What's New in MSBuild 12.0.

Top

Examples

The following example creates a ToolTask that runs Ilasm.exe. The CommandLineBuilder, ToolLocationHelper, and TaskLoggingHelper classes are used to generate the information needed to run the task.

Imports System
Imports System.Collections
Imports System.Text
Imports Microsoft.Build.Utilities
Imports Microsoft.Build.Framework

Namespace MSBuildTasks

    ''' <summary> 
    ''' A very simple and incomplete ToolTask to wrap the ILASM.EXE tool. 
    ''' </summary> 
    Public Class ILAsm
        Inherits ToolTask

        ''' <summary> 
        ''' Parameter bag. 
        ''' </summary> 
        Protected Friend ReadOnly Property Bag() As Hashtable
            Get 
                Return propertyBag
            End Get 
        End Property 

        Private propertyBag As New Hashtable()

        ''' <summary> 
        ''' The Source file that is to be compled (.il) 
        ''' </summary> 
        Public Property [Source]() As ITaskItem
            Get 
                Return Bag("Source")
            End Get 
            Set(ByVal value As ITaskItem)
                Bag("Source") = value
            End Set 
        End Property 

        ''' <summary> 
        ''' Either EXE or DLL indicating the assembly type to be generated 
        ''' </summary> 
        Public Property TargetType() As String 
            Get 
                Return Bag("TargetType")
            End Get 
            Set(ByVal value As String)
                Bag("TargetType") = value
            End Set 
        End Property '

        Protected Overrides ReadOnly Property ToolName() As String 
            Get 
                Return "ILAsm.exe" 
            End Get 
        End Property 

        ''' <summary> 
        ''' Use ToolLocationHelper to find ILASM.EXE in the Framework directory 
        ''' </summary> 
        Protected Overrides Function GenerateFullPathToTool() As String 
            ' Ask ToolLocationHelper to find ILASM.EXE - it will look in the latest framework directory available 
            Return ToolLocationHelper.GetPathToDotNetFrameworkFile(ToolName, TargetDotNetFrameworkVersion.VersionLatest)
        End Function 

        ''' <summary> 
        ''' Construct the command line from the task properties by using the CommandLineBuilder 
        ''' </summary> 
        Protected Overrides Function GenerateCommandLineCommands() As String 
            Dim builder As New CommandLineBuilder()

            ' We don't need the tool's logo information shown
            builder.AppendSwitch("/nologo")

            Dim targetType As String = Bag("TargetType")
            ' Be explicit with our switches 
            If Not (targetType Is Nothing) Then 
                If [String].Compare(targetType, "DLL", True) = 0 Then
                    builder.AppendSwitch("/DLL")
                ElseIf [String].Compare(targetType, "EXE", True) = 0 Then
                    builder.AppendSwitch("/EXE")
                Else
                    Log.LogWarning("Invalid TargetType (valid values are DLL and EXE) specified: {0}", targetType)
                End If 
            End If 
            ' Add the filename that we want the tool to process
            builder.AppendFileNameIfNotNull(Bag("Source"))

            ' Log a High importance message stating the file that we are assembling
            Log.LogMessage(MessageImportance.High, "Assembling {0}", Bag("Source"))

            ' We have all of our switches added, return the commandline as a string 
            Return builder.ToString()
        End Function 
    End Class 
End Namespace
using System;
using System.Collections;
using System.Text;
using Microsoft.Build.Utilities;
using Microsoft.Build.Framework;

namespace MSBuildTasks
{
    /// <summary> 
    /// A very simple and incomplete ToolTask to wrap the ILASM.EXE tool. 
    /// </summary> 
    public class ILAsm : ToolTask
    {
        #region Member Data
        /// <summary> 
        /// Gets the collection of parameters used by the task class. 
        /// </summary> 
        /// <value>Parameter bag.</value> 
        protected internal Hashtable Bag
        {
            get
            {
                return bag;
            }
        }

        private Hashtable bag = new Hashtable();
        #endregion

        #region ILAsm Task Properties
        /// <summary> 
        /// The Source file that is to be compled (.il) 
        /// </summary> 
        public ITaskItem Source
        {
            get { return Bag["Source"] as ITaskItem; }
            set { Bag["Source"] = value; }
        }
        /// <summary> 
        /// Either EXE or DLL indicating the assembly type to be generated 
        /// </summary> 
        public string TargetType
        {
            get { return Bag["TargetType"] as string; }
            set { Bag["TargetType"] = value; }
        }
        #endregion

        #region ToolTask Members
        protected override string ToolName
        {
            get { return "ILAsm.exe"; }
        }

        /// <summary> 
        /// Use ToolLocationHelper to find ILASM.EXE in the Framework directory 
        /// </summary> 
        /// <returns></returns> 
        protected override string GenerateFullPathToTool()
        {
            // Ask ToolLocationHelper to find ILASM.EXE - it will look in the latest framework directory available 
            return ToolLocationHelper.GetPathToDotNetFrameworkFile(ToolName, TargetDotNetFrameworkVersion.VersionLatest);
        }
        #endregion

        #region ILAsm Task Members
        /// <summary> 
        /// Construct the command line from the task properties by using the CommandLineBuilder 
        /// </summary> 
        /// <returns></returns> 
        protected override string GenerateCommandLineCommands()
        {
            CommandLineBuilder builder = new CommandLineBuilder();

            // We don't need the tool's logo information shown
            builder.AppendSwitch("/nologo");

            string targetType = Bag["TargetType"] as string;
            // Be explicit with our switches 
            if (targetType != null)
            {
                if (String.Compare(targetType, "DLL", true) == 0)
                {
                    builder.AppendSwitch("/DLL");
                }
                else if (String.Compare(targetType, "EXE", true) == 0)
                {
                    builder.AppendSwitch("/EXE");
                }
                else
                {
                    Log.LogWarning("Invalid TargetType (valid values are DLL and EXE) specified: {0}", targetType);
                }
            }

            // Add the filename that we want the tool to process
            builder.AppendFileNameIfNotNull(Bag["Source"] as ITaskItem);

            // Log a High importance message stating the file that we are assembling
            Log.LogMessage(MessageImportance.High, "Assembling {0}", Bag["Source"]);

            // We have all of our switches added, return the commandline as a string 
            return builder.ToString();
        }
        #endregion
    }
}

Thread Safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

See Also

Reference

Microsoft.Build.Utilities Namespace