Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- WebPartZoneBase.cs
- DocumentSchemaValidator.cs
- AutomationElement.cs
- SystemIcmpV6Statistics.cs
- TextParagraph.cs
- IPipelineRuntime.cs
- SBCSCodePageEncoding.cs
- FixedSOMImage.cs
- KeyNameIdentifierClause.cs
- HMACSHA512.cs
- CookieProtection.cs
- RegistryPermission.cs
- ClientSettingsProvider.cs
- WarningException.cs
- EntityViewContainer.cs
- MethodImplAttribute.cs
- SatelliteContractVersionAttribute.cs
- KeyTime.cs
- BinaryWriter.cs
- BaseAppDomainProtocolHandler.cs
- Int32RectValueSerializer.cs
- ListBindingHelper.cs
- CustomTypeDescriptor.cs
- Brush.cs
- StyleXamlTreeBuilder.cs
- EventLogReader.cs
- ProcessRequestArgs.cs
- AttributeUsageAttribute.cs
- CreateUserErrorEventArgs.cs
- TrackingRecord.cs
- SqlDataSourceCommandEventArgs.cs
- CapacityStreamGeometryContext.cs
- SqlTriggerContext.cs
- WizardPanel.cs
- HiddenFieldPageStatePersister.cs
- IArgumentProvider.cs
- UserPreferenceChangedEventArgs.cs
- BaseCollection.cs
- AccessDataSource.cs
- SqlFunctionAttribute.cs
- AccessControlList.cs
- NamespaceDecl.cs
- NotificationContext.cs
- DrawingContextDrawingContextWalker.cs
- StronglyTypedResourceBuilder.cs
- DbConnectionFactory.cs
- ConnectionProviderAttribute.cs
- ExpandCollapsePattern.cs
- WorkflowInstanceContextProvider.cs
- WindowAutomationPeer.cs
- DataGridViewTopRowAccessibleObject.cs
- AssemblyResourceLoader.cs
- HwndSourceParameters.cs
- HashJoinQueryOperatorEnumerator.cs
- TreeViewAutomationPeer.cs
- StringSorter.cs
- WinEventQueueItem.cs
- SocketInformation.cs
- IIS7UserPrincipal.cs
- TextTreeTextNode.cs
- CompensatableSequenceActivity.cs
- DataGridViewCellStyleConverter.cs
- _SingleItemRequestCache.cs
- HierarchicalDataSourceControl.cs
- HatchBrush.cs
- BufferAllocator.cs
- SQLInt32.cs
- FileUpload.cs
- EntityContainerEmitter.cs
- TracingConnectionListener.cs
- DataBinder.cs
- ResourceReferenceExpressionConverter.cs
- Material.cs
- HttpHandlerAction.cs
- UiaCoreTypesApi.cs
- XmlDocumentSchema.cs
- HtmlInputFile.cs
- TcpAppDomainProtocolHandler.cs
- FrameworkContextData.cs
- CollectionBase.cs
- EnumerableRowCollection.cs
- CustomMenuItemCollection.cs
- HashAlgorithm.cs
- dataobject.cs
- sqlinternaltransaction.cs
- SystemGatewayIPAddressInformation.cs
- QueryParameter.cs
- AvtEvent.cs
- HttpConfigurationContext.cs
- RegisteredExpandoAttribute.cs
- Propagator.JoinPropagator.cs
- DataColumnMappingCollection.cs
- GenerateTemporaryTargetAssembly.cs
- PointF.cs
- XmlElementCollection.cs
- Operand.cs
- MessageLogger.cs
- ComNativeDescriptor.cs
- CompileXomlTask.cs
- HScrollBar.cs