Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / CompMod / System / CodeDOM / Compiler / RedistVersionInfo.cs / 1 / RedistVersionInfo.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.CodeDom.Compiler { using System; using System.Diagnostics; using System.IO; using System.CodeDom.Compiler; using System.Configuration; using System.Collections.Generic; using Microsoft.Win32; internal static class RedistVersionInfo { internal const String NameTag = "CompilerVersion"; // name of the tag for specifying the version internal const String DefaultVersion = InPlaceVersion; // should match one of the versions below //internal const String LatestVersion = "Latest"; // always bind to the latest version internal const String InPlaceVersion = "v2.0"; // always bind to Whidbey version internal const String RedistVersion = "v3.5"; // always bind to the Orcas version private const string dotNetFrameworkSdkInstallKeyValueV35 = "MSBuildToolsPath"; private const string dotNetFrameworkRegistryPath = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\MSBuild\\ToolsVersions\\3.5"; public static string GetCompilerPath(IDictionaryprovOptions, string compilerExecutable) { string compPath = Executor.GetRuntimeInstallDirectory(); // if provOptions is provided check to see if it alters what version we should bind to. // provOptions can be null if someone does new VB/CSCodeProvider(), in which case // they get the Whidbey behavior. if (provOptions != null) { string versionVal;//, newPath; if (provOptions.TryGetValue(RedistVersionInfo.NameTag, out versionVal)) { switch (versionVal) { //case RedistVersionInfo.LatestVersion: // always run against the latest version of the compiler // newPath = GetOrcasPath(); // if (newPath != null && File.Exists(Path.Combine(newPath, compilerExecutable))) // compPath = newPath; // break; case RedistVersionInfo.RedistVersion: // lock-forward to the Orcas version, if it's not available throw (we'll throw at compile time) compPath = GetOrcasPath(); break; case RedistVersionInfo.InPlaceVersion: // lock-back to the Whidbey version, no-op break; default: compPath = null; break; } } } if (compPath == null) throw new InvalidOperationException(SR.GetString(SR.CompilerNotFound, compilerExecutable)); return compPath; } /// /// this method returns the location of the Orcas compilers, but will return whatever /// version is requested via the COMPlus_ environment variables first /// private static string GetOrcasPath() { string dir = null; // if this is running in a private running environment such as Razzle, we would use the path // based on the environment variables: COMPLUS_InstallRoot and COMPLUS_Version. string comPlus_InstallRoot = Environment.GetEnvironmentVariable("COMPLUS_InstallRoot"); string comPlus_Version = Environment.GetEnvironmentVariable("COMPLUS_Version"); if (!string.IsNullOrEmpty(comPlus_InstallRoot) && !string.IsNullOrEmpty(comPlus_Version)) { dir = Path.Combine(comPlus_InstallRoot, comPlus_Version); if (Directory.Exists(dir)) return dir; } dir = Registry.GetValue(dotNetFrameworkRegistryPath, dotNetFrameworkSdkInstallKeyValueV35, null) as string; if (dir != null && Directory.Exists(dir)) { return dir; } return null; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.CodeDom.Compiler { using System; using System.Diagnostics; using System.IO; using System.CodeDom.Compiler; using System.Configuration; using System.Collections.Generic; using Microsoft.Win32; internal static class RedistVersionInfo { internal const String NameTag = "CompilerVersion"; // name of the tag for specifying the version internal const String DefaultVersion = InPlaceVersion; // should match one of the versions below //internal const String LatestVersion = "Latest"; // always bind to the latest version internal const String InPlaceVersion = "v2.0"; // always bind to Whidbey version internal const String RedistVersion = "v3.5"; // always bind to the Orcas version private const string dotNetFrameworkSdkInstallKeyValueV35 = "MSBuildToolsPath"; private const string dotNetFrameworkRegistryPath = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\MSBuild\\ToolsVersions\\3.5"; public static string GetCompilerPath(IDictionaryprovOptions, string compilerExecutable) { string compPath = Executor.GetRuntimeInstallDirectory(); // if provOptions is provided check to see if it alters what version we should bind to. // provOptions can be null if someone does new VB/CSCodeProvider(), in which case // they get the Whidbey behavior. if (provOptions != null) { string versionVal;//, newPath; if (provOptions.TryGetValue(RedistVersionInfo.NameTag, out versionVal)) { switch (versionVal) { //case RedistVersionInfo.LatestVersion: // always run against the latest version of the compiler // newPath = GetOrcasPath(); // if (newPath != null && File.Exists(Path.Combine(newPath, compilerExecutable))) // compPath = newPath; // break; case RedistVersionInfo.RedistVersion: // lock-forward to the Orcas version, if it's not available throw (we'll throw at compile time) compPath = GetOrcasPath(); break; case RedistVersionInfo.InPlaceVersion: // lock-back to the Whidbey version, no-op break; default: compPath = null; break; } } } if (compPath == null) throw new InvalidOperationException(SR.GetString(SR.CompilerNotFound, compilerExecutable)); return compPath; } /// /// this method returns the location of the Orcas compilers, but will return whatever /// version is requested via the COMPlus_ environment variables first /// private static string GetOrcasPath() { string dir = null; // if this is running in a private running environment such as Razzle, we would use the path // based on the environment variables: COMPLUS_InstallRoot and COMPLUS_Version. string comPlus_InstallRoot = Environment.GetEnvironmentVariable("COMPLUS_InstallRoot"); string comPlus_Version = Environment.GetEnvironmentVariable("COMPLUS_Version"); if (!string.IsNullOrEmpty(comPlus_InstallRoot) && !string.IsNullOrEmpty(comPlus_Version)) { dir = Path.Combine(comPlus_InstallRoot, comPlus_Version); if (Directory.Exists(dir)) return dir; } dir = Registry.GetValue(dotNetFrameworkRegistryPath, dotNetFrameworkSdkInstallKeyValueV35, null) as string; if (dir != null && Directory.Exists(dir)) { return dir; } return null; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- PageContent.cs
- GPStream.cs
- ResolveNameEventArgs.cs
- RepeatButton.cs
- RecognizerInfo.cs
- UnknownExceptionActionHelper.cs
- InkCollectionBehavior.cs
- ServicesUtilities.cs
- XmlSchemaAttributeGroupRef.cs
- Console.cs
- EventManager.cs
- DataGridRowHeaderAutomationPeer.cs
- ChannelManager.cs
- NativeMethods.cs
- StreamGeometry.cs
- ScopelessEnumAttribute.cs
- DataContext.cs
- WebPartCloseVerb.cs
- StylusPointCollection.cs
- ConfigurationSettings.cs
- precedingsibling.cs
- ToolStripItemClickedEventArgs.cs
- TableLayoutPanel.cs
- ZoneIdentityPermission.cs
- DataControlPagerLinkButton.cs
- DPAPIProtectedConfigurationProvider.cs
- UnhandledExceptionEventArgs.cs
- PersistNameAttribute.cs
- CursorInteropHelper.cs
- RedBlackList.cs
- ThumbAutomationPeer.cs
- MessageRpc.cs
- User.cs
- ViewStateException.cs
- CapabilitiesAssignment.cs
- DecoratedNameAttribute.cs
- TreeBuilder.cs
- FormsAuthentication.cs
- SqlConnectionStringBuilder.cs
- DbConnectionPoolGroup.cs
- Bind.cs
- XhtmlBasicTextViewAdapter.cs
- SymDocumentType.cs
- ClientData.cs
- MeasurementDCInfo.cs
- DrawItemEvent.cs
- LineMetrics.cs
- CodeCommentStatementCollection.cs
- MailBnfHelper.cs
- RegistrationServices.cs
- GetTokenRequest.cs
- ClassHandlersStore.cs
- DispatcherSynchronizationContext.cs
- FontDialog.cs
- XmlMembersMapping.cs
- TypeBrowser.xaml.cs
- ReadingWritingEntityEventArgs.cs
- Soap.cs
- SqlInternalConnectionSmi.cs
- NamedElement.cs
- LambdaCompiler.Lambda.cs
- SettingsBindableAttribute.cs
- RoleExceptions.cs
- AssemblyHash.cs
- XmlILAnnotation.cs
- EntityContainerAssociationSet.cs
- SlipBehavior.cs
- RecognizedWordUnit.cs
- XmlArrayAttribute.cs
- Menu.cs
- Events.cs
- recordstatefactory.cs
- ObjectParameter.cs
- ClientFormsAuthenticationCredentials.cs
- CodeAttributeDeclaration.cs
- FileFormatException.cs
- WmlPageAdapter.cs
- ProfileBuildProvider.cs
- AssemblyUtil.cs
- SqlClientPermission.cs
- OleDbPermission.cs
- FigureParaClient.cs
- ProfileSettingsCollection.cs
- DbConnectionClosed.cs
- FormViewInsertedEventArgs.cs
- WebPartHeaderCloseVerb.cs
- InlineUIContainer.cs
- PackageDigitalSignature.cs
- ValueQuery.cs
- Deflater.cs
- XAMLParseException.cs
- GridViewCellAutomationPeer.cs
- Vector3DAnimation.cs
- BasicExpandProvider.cs
- BuildResult.cs
- ToolStrip.cs
- TCEAdapterGenerator.cs
- WithStatement.cs
- KnownIds.cs
- HwndHostAutomationPeer.cs