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(IDictionary provOptions, 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(IDictionary provOptions, 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
- DataGridViewAutoSizeColumnsModeEventArgs.cs
- SchemaImporterExtensionElement.cs
- Cursor.cs
- DataGridTextBox.cs
- BindToObject.cs
- CodeCastExpression.cs
- RuntimeEnvironment.cs
- WsiProfilesElement.cs
- StatusStrip.cs
- RestHandler.cs
- Events.cs
- KnownTypeAttribute.cs
- SchemaLookupTable.cs
- XmlImplementation.cs
- UInt64.cs
- WindowVisualStateTracker.cs
- ListControl.cs
- PageParser.cs
- BitmapFrame.cs
- FontFamily.cs
- ArraySet.cs
- SqlClientWrapperSmiStream.cs
- PageParserFilter.cs
- PaperSize.cs
- Stroke.cs
- InternalsVisibleToAttribute.cs
- AndCondition.cs
- SettingsPropertyValue.cs
- ClientRuntimeConfig.cs
- ThreadExceptionEvent.cs
- XmlStringTable.cs
- TypeBuilderInstantiation.cs
- MasterPageCodeDomTreeGenerator.cs
- ExtractCollection.cs
- HttpDigestClientCredential.cs
- Evidence.cs
- ContentTextAutomationPeer.cs
- GenericTransactionFlowAttribute.cs
- ExceptionHandlersDesigner.cs
- EncodingFallbackAwareXmlTextWriter.cs
- SynchronizingStream.cs
- CompilationUnit.cs
- SettingsPropertyNotFoundException.cs
- TextChangedEventArgs.cs
- DoubleAnimationClockResource.cs
- RequestCachePolicy.cs
- Splitter.cs
- CodeIndexerExpression.cs
- CodeCatchClauseCollection.cs
- Substitution.cs
- SqlClientMetaDataCollectionNames.cs
- StylusPointPropertyInfoDefaults.cs
- XmlEnumAttribute.cs
- UInt32Storage.cs
- LineUtil.cs
- ZipFileInfoCollection.cs
- FilteredDataSetHelper.cs
- MsmqProcessProtocolHandler.cs
- datacache.cs
- WindowsRegion.cs
- NCryptNative.cs
- QueueProcessor.cs
- WindowsRegion.cs
- SecurityManager.cs
- FileIOPermission.cs
- _FtpDataStream.cs
- DrawToolTipEventArgs.cs
- UnconditionalPolicy.cs
- NestedContainer.cs
- AQNBuilder.cs
- MultiSelector.cs
- DefaultMemberAttribute.cs
- UTF32Encoding.cs
- infer.cs
- activationcontext.cs
- DiffuseMaterial.cs
- FontFamilyConverter.cs
- MessageDesigner.cs
- Lasso.cs
- SystemResourceKey.cs
- EditorZoneDesigner.cs
- CommentAction.cs
- ToolStripOverflow.cs
- ResourcesBuildProvider.cs
- QilLiteral.cs
- TransformCollection.cs
- MenuItemCollection.cs
- WindowsSspiNegotiation.cs
- DataControlImageButton.cs
- ScrollPatternIdentifiers.cs
- PointF.cs
- SqlHelper.cs
- BooleanExpr.cs
- SqlNotificationEventArgs.cs
- LocalizationCodeDomSerializer.cs
- SecurityKeyIdentifierClause.cs
- XmlIlVisitor.cs
- CacheEntry.cs
- TabControlEvent.cs
- RuntimeArgumentHandle.cs