Export (0) Print
Expand All

ToolLocationHelper Class

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

System.Object
  Microsoft.Build.Utilities.ToolLocationHelper

Namespace:  Microsoft.Build.Utilities
Assembly:  Microsoft.Build.Utilities.v4.0 (in Microsoft.Build.Utilities.v4.0.dll)

public static class ToolLocationHelper

The ToolLocationHelper type exposes the following members.

  NameDescription
Public propertyStatic memberPathToSystemGets the fully qualified path of the system directory.
Top

  NameDescription
Public methodStatic memberGetDisplayNameForTargetFrameworkDirectoryCreates a display name given the target framework details.
Public methodStatic memberGetDotNetFrameworkRootRegistryKeyGets the full name of the .NET Framework root registry key.
Public methodStatic memberGetDotNetFrameworkSdkInstallKeyValueGets the name of the value under the GetDotNetFrameworkRootRegistryKey that contains the .NET Framework SDK installation path.
Public methodStatic memberGetDotNetFrameworkSdkRootRegistryKeyReturns the full name of the .NET Framework SDK root registry key.
Public methodStatic memberGetDotNetFrameworkVersionFolderPrefixGets the prefix of the .NET Framework folder.
Public methodStatic memberGetPathToDotNetFramework(TargetDotNetFrameworkVersion)Gets a fully qualified path to the .NET Framework root directory.
Public methodStatic memberGetPathToDotNetFramework(TargetDotNetFrameworkVersion, DotNetFrameworkArchitecture)Gets a fully qualified path to the framework's root directory.
Public methodStatic memberGetPathToDotNetFrameworkFile(String, TargetDotNetFrameworkVersion)Gets a fully qualified path to a file in the .NET Framework directory.
Public methodStatic memberGetPathToDotNetFrameworkFile(String, TargetDotNetFrameworkVersion, DotNetFrameworkArchitecture)Gets a fully qualified path to a file in the frameworks root directory for the specified architecture.
Public methodStatic memberGetPathToDotNetFrameworkReferenceAssembliesReturns the path to the reference assemblies location for the given framework version.
Public methodStatic memberGetPathToDotNetFrameworkSdkGets the fully qualified path to the \bin directory of the .NET Framework SDK.
Public methodStatic memberGetPathToDotNetFrameworkSdkFile(String, TargetDotNetFrameworkVersion)Gets the fully qualified path to a file in the .NET Framework SDK.
Public methodStatic memberGetPathToDotNetFrameworkSdkFile(String, TargetDotNetFrameworkVersion, DotNetFrameworkArchitecture)Gets a fully qualified path to a file in the .NET Framework SDK.
Public methodStatic memberGetPathToReferenceAssemblies(FrameworkName)Gets the paths to the reference assemblies location for the given target framework.
Public methodStatic memberGetPathToReferenceAssemblies(String, FrameworkName)Gets the paths to the reference assemblies location for the given framework version relative to a given targetFrameworkRoot.
Public methodStatic memberGetPathToReferenceAssemblies(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.
Public methodStatic memberGetPathToStandardLibrariesReturns 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.
Public methodStatic memberGetPathToSystemFileGets a fully qualified path to a file in the system directory.
Public methodStatic memberGetProgramFilesReferenceAssemblyRootGets the root location for the reference assembly directory under the program files directory.
Public methodStatic memberGetSupportedTargetFrameworksGets a IList of supported target framework monikers.
Public methodStatic memberHighestVersionOfTargetFrameworkIdentifierGets the highest version of a target framework moniker based on the identifier.
Top

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


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
    }
}


.NET Framework

Supported in: 4, 3.5, 3.0, 2.0

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

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

Community Additions

ADD
Show:
© 2014 Microsoft