ToolLocationHelper Class
Provides utility methods for locating .NET Framework and .NET Framework SDK files and directories.
Namespace: Microsoft.Build.Utilities
Assembly: Microsoft.Build.Utilities.v4.0 (in Microsoft.Build.Utilities.v4.0.dll)
The ToolLocationHelper type exposes the following members.
| Name | Description | |
|---|---|---|
![]() ![]() | ClearSDKStaticCache | Clears the appDomain wide cache of platform and extension SDKs. |
![]() ![]() | 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. |
![]() ![]() | GetDisplayNameForTargetFrameworkDirectory | Creates a display name given the target framework details. |
![]() ![]() | GetDotNetFrameworkRootRegistryKey | Gets the full name of the .NET Framework root registry key. |
![]() ![]() | GetDotNetFrameworkSdkInstallKeyValue(TargetDotNetFrameworkVersion) | Gets the name of the value under the GetDotNetFrameworkRootRegistryKey that contains the .NET Framework SDK installation path. |
![]() ![]() | GetDotNetFrameworkSdkInstallKeyValue(TargetDotNetFrameworkVersion, VisualStudioVersion) | Name of the value of GetDotNetFrameworkRootRegistryKey that contains the SDK install root path |
![]() ![]() | GetDotNetFrameworkSdkRootRegistryKey(TargetDotNetFrameworkVersion) | Returns the full name of the .NET Framework SDK root registry key. |
![]() ![]() | GetDotNetFrameworkSdkRootRegistryKey(TargetDotNetFrameworkVersion, VisualStudioVersion) | Returns the full name of the .NET Framework SDK root registry key |
![]() ![]() | GetDotNetFrameworkVersionFolderPrefix | Gets the prefix of the .NET Framework folder. |
![]() ![]() | GetPathToDotNetFramework(TargetDotNetFrameworkVersion) | Gets a fully qualified path to the .NET Framework root directory. |
![]() ![]() | GetPathToDotNetFramework(TargetDotNetFrameworkVersion, DotNetFrameworkArchitecture) | Gets a fully qualified path to the framework's root directory. |
![]() ![]() | GetPathToDotNetFrameworkFile(String, TargetDotNetFrameworkVersion) | Gets a fully qualified path to a file in the .NET Framework directory. |
![]() ![]() | GetPathToDotNetFrameworkFile(String, TargetDotNetFrameworkVersion, DotNetFrameworkArchitecture) | Gets a fully qualified path to a file in the frameworks root directory for the specified architecture. |
![]() ![]() | GetPathToDotNetFrameworkReferenceAssemblies | Returns the path to the reference assemblies location for the given framework version. |
![]() ![]() | GetPathToDotNetFrameworkSdk(TargetDotNetFrameworkVersion) | Gets the fully qualified path to the \bin directory of the .NET Framework SDK. |
![]() ![]() | GetPathToDotNetFrameworkSdk(TargetDotNetFrameworkVersion, VisualStudioVersion) | Returns the path to the "bin" directory of the .NET Framework SDK. |
![]() ![]() | GetPathToDotNetFrameworkSdkFile(String, TargetDotNetFrameworkVersion) | Gets the fully qualified path to a file in the .NET Framework SDK. |
![]() ![]() | GetPathToDotNetFrameworkSdkFile(String, TargetDotNetFrameworkVersion, DotNetFrameworkArchitecture) | Gets a fully qualified path to a file in the .NET Framework SDK. |
![]() ![]() | 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. |
![]() ![]() | 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. |
![]() ![]() | GetPathToReferenceAssemblies(FrameworkName) | Gets the paths to the reference assemblies location for the given target framework. |
![]() ![]() | GetPathToReferenceAssemblies(String, FrameworkName) | Gets the paths to the reference assemblies location for the given framework version relative to a given targetFrameworkRoot. |
![]() ![]() | 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. |
![]() ![]() | 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. |
![]() ![]() | GetPathToStandardLibraries(String, String, String, String) | Returns the path to mscorlib and system.dll |
![]() ![]() | GetPathToSystemFile | Gets a fully qualified path to a file in the system directory. |
![]() ![]() | GetPathToWindowsSdk | 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. |
![]() ![]() | GetPathToWindowsSdkFile(String, TargetDotNetFrameworkVersion, VisualStudioVersion) | 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. |
![]() ![]() | GetPathToWindowsSdkFile(String, TargetDotNetFrameworkVersion, VisualStudioVersion, DotNetFrameworkArchitecture) | 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. |
![]() ![]() | GetPlatformExtensionSDKLocation(String, String, String) | Given an SDK moniker and the targeted platform get the path to the SDK root if it exists. |
![]() ![]() | 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.X |
![]() ![]() | 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.X |
![]() ![]() | GetPlatformExtensionSDKLocation(String, String, Version, 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.X |
![]() ![]() | GetPlatformExtensionSDKLocations(String, Version) | Get a list of SDK's installed on the machine for a given target platform |
![]() ![]() | GetPlatformExtensionSDKLocations(String[], String, String, Version) | Get a list of SDK's installed on the machine for a given target platform |
![]() ![]() | 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. |
![]() ![]() | 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. |
![]() ![]() | 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. |
![]() ![]() | GetPlatformSDKLocation(String, Version, 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. |
![]() ![]() | GetProgramFilesReferenceAssemblyRoot | Gets the root location for the reference assembly directory under the program files directory. |
![]() ![]() | 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. |
![]() ![]() | 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. |
![]() ![]() | 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. |
![]() ![]() | 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. |
![]() ![]() | 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. |
![]() ![]() | 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. |
![]() ![]() | GetSupportedTargetFrameworks | Gets a list of supported target framework monikers. |
![]() ![]() | GetTargetPlatformSdks() | Get a list of target platform SDKs on the machine. |
![]() ![]() | GetTargetPlatformSdks(String[], String) | Get a list of target platform SDKs on the machine. |
![]() ![]() | HighestVersionOfTargetFrameworkIdentifier | Gets the highest version of a target framework moniker based on the identifier. |
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 } }
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
