Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / CompMod / System / CodeDOM / Compiler / RedistVersionInfo.cs / 5 / 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
- CollaborationHelperFunctions.cs
- EntityDataSourceQueryBuilder.cs
- ComplexPropertyEntry.cs
- ImageCollectionEditor.cs
- IdentityModelDictionary.cs
- FixedPageAutomationPeer.cs
- AutoCompleteStringCollection.cs
- ValuePatternIdentifiers.cs
- DrawingVisualDrawingContext.cs
- ListViewSelectEventArgs.cs
- ConditionalWeakTable.cs
- SafeNativeMethods.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- UidPropertyAttribute.cs
- DataGridColumnHeaderAutomationPeer.cs
- GridViewRowCollection.cs
- Dispatcher.cs
- WindowInteractionStateTracker.cs
- ClientSettingsProvider.cs
- SamlConstants.cs
- SqlCacheDependency.cs
- SafeThemeHandle.cs
- DataGridViewTextBoxCell.cs
- MarshalDirectiveException.cs
- UTF32Encoding.cs
- GeometryModel3D.cs
- StreamUpgradeInitiator.cs
- SingleAnimationBase.cs
- OleDbDataAdapter.cs
- BinaryObjectReader.cs
- NamedPipeDuplicateContext.cs
- CookieProtection.cs
- SqlRemoveConstantOrderBy.cs
- QueryStringParameter.cs
- DataServiceException.cs
- XmlCharCheckingWriter.cs
- ConfigXmlElement.cs
- DataGridViewCellEventArgs.cs
- DesignerSerializationOptionsAttribute.cs
- HtmlInputText.cs
- ScriptingProfileServiceSection.cs
- IPAddress.cs
- GridViewDeleteEventArgs.cs
- Panel.cs
- PolyQuadraticBezierSegmentFigureLogic.cs
- ButtonFlatAdapter.cs
- DBCommandBuilder.cs
- ContentValidator.cs
- EdmProperty.cs
- ExclusiveHandleList.cs
- BuilderElements.cs
- WebMessageEncodingElement.cs
- ListView.cs
- BackgroundFormatInfo.cs
- Module.cs
- SqlMethodAttribute.cs
- MSHTMLHost.cs
- SqlColumnizer.cs
- WmpBitmapEncoder.cs
- securitycriticaldataformultiplegetandset.cs
- StylusPointCollection.cs
- X509Utils.cs
- FixedFlowMap.cs
- TemplateNodeContextMenu.cs
- MetadataArtifactLoaderCompositeFile.cs
- WebPartConnectionCollection.cs
- PreloadHost.cs
- StatusInfoItem.cs
- ClientConfigurationHost.cs
- Variable.cs
- EntityDescriptor.cs
- SourceItem.cs
- GridViewUpdatedEventArgs.cs
- LassoHelper.cs
- _NTAuthentication.cs
- UserControlParser.cs
- Point3DCollectionValueSerializer.cs
- ListViewDeletedEventArgs.cs
- CreateDataSourceDialog.cs
- ToolStripSplitButton.cs
- MLangCodePageEncoding.cs
- RelationshipDetailsRow.cs
- XamlWriter.cs
- FragmentQueryProcessor.cs
- HMACSHA512.cs
- XmlBinaryWriterSession.cs
- InputLangChangeRequestEvent.cs
- PropertiesTab.cs
- WindowsToolbar.cs
- List.cs
- ContextMarshalException.cs
- WindowsFormsSectionHandler.cs
- ReferencedCollectionType.cs
- SourceCollection.cs
- ISAPIWorkerRequest.cs
- SqlResolver.cs
- AxDesigner.cs
- Point4DValueSerializer.cs
- AutoGeneratedFieldProperties.cs
- EpmContentSerializer.cs