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
- Ipv6Element.cs
- DbBuffer.cs
- LinqDataSourceInsertEventArgs.cs
- ZipIOLocalFileDataDescriptor.cs
- CodeFieldReferenceExpression.cs
- HttpCachePolicyWrapper.cs
- DebuggerAttributes.cs
- XsdDuration.cs
- WhiteSpaceTrimStringConverter.cs
- Tuple.cs
- RootDesignerSerializerAttribute.cs
- FixedTextView.cs
- ImageBrush.cs
- DoubleLinkListEnumerator.cs
- SmiGettersStream.cs
- BezierSegment.cs
- TreeViewHitTestInfo.cs
- SqlTrackingService.cs
- JournalNavigationScope.cs
- ErrorFormatterPage.cs
- FormViewPagerRow.cs
- XPathDocument.cs
- GraphicsContainer.cs
- WasNotInstalledException.cs
- ListenerConfig.cs
- CacheMode.cs
- SqlFlattener.cs
- DataControlReference.cs
- KeyTime.cs
- LocalizeDesigner.cs
- SystemBrushes.cs
- VoiceObjectToken.cs
- WrappedIUnknown.cs
- OledbConnectionStringbuilder.cs
- ToolStripItem.cs
- MouseActionValueSerializer.cs
- AsyncOperationManager.cs
- PageAdapter.cs
- GraphicsPath.cs
- PipelineModuleStepContainer.cs
- SplitterCancelEvent.cs
- CacheMode.cs
- PixelFormat.cs
- TimelineCollection.cs
- SoapElementAttribute.cs
- TableLayout.cs
- EmbeddedMailObject.cs
- SafeHandle.cs
- _NegoStream.cs
- EqualityComparer.cs
- OutputCacheSection.cs
- SQLByte.cs
- Encoder.cs
- AdornerPresentationContext.cs
- CookielessData.cs
- PenThreadPool.cs
- DataRelationCollection.cs
- ConnectionManagementElement.cs
- ProfileModule.cs
- CustomAttributeSerializer.cs
- PrtTicket_Base.cs
- TreeNodeMouseHoverEvent.cs
- ForeignKeyConstraint.cs
- MimePart.cs
- SurrogateEncoder.cs
- MexHttpBindingElement.cs
- SpoolingTaskBase.cs
- MonthChangedEventArgs.cs
- ObjectStateFormatter.cs
- EntityKeyElement.cs
- DelegatingConfigHost.cs
- AttributeSetAction.cs
- TransformedBitmap.cs
- ParagraphVisual.cs
- Buffer.cs
- DataGridViewColumnCollection.cs
- ContainerVisual.cs
- XmlCompatibilityReader.cs
- ArrayTypeMismatchException.cs
- DrawingContext.cs
- ValidationSummary.cs
- DoWorkEventArgs.cs
- QueueTransferProtocol.cs
- TargetParameterCountException.cs
- CommonDialog.cs
- ImageField.cs
- ArcSegment.cs
- TriggerBase.cs
- DescendantOverDescendantQuery.cs
- SortAction.cs
- ControlParameter.cs
- WebRequestModuleElement.cs
- ToolStripSettings.cs
- SizeAnimationClockResource.cs
- XPathBuilder.cs
- WebPartDeleteVerb.cs
- ConstructorExpr.cs
- DataGridColumnEventArgs.cs
- NavigationProgressEventArgs.cs
- NativeMethods.cs