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
- ItemMap.cs
- TableLayoutStyle.cs
- TreeNodeStyleCollection.cs
- BufferAllocator.cs
- PageParser.cs
- SqlNotificationRequest.cs
- ConfigXmlSignificantWhitespace.cs
- DropShadowBitmapEffect.cs
- ToolStripSplitStackLayout.cs
- BulletedListEventArgs.cs
- ConfigurationLocation.cs
- CompiledQueryCacheEntry.cs
- UIElementIsland.cs
- TraceFilter.cs
- AssemblyBuilder.cs
- CatalogZoneDesigner.cs
- BinaryUtilClasses.cs
- InputManager.cs
- XmlSchemaGroup.cs
- TextBoxAutoCompleteSourceConverter.cs
- LinqDataSourceContextData.cs
- StructuralComparisons.cs
- GridViewDeleteEventArgs.cs
- FlowDocumentReaderAutomationPeer.cs
- SqlPersistenceProviderFactory.cs
- EnumerableCollectionView.cs
- RotateTransform3D.cs
- HttpChannelBindingToken.cs
- XPathMessageFilterElementCollection.cs
- QuerySettings.cs
- ImmutableObjectAttribute.cs
- RoleGroup.cs
- TimeoutException.cs
- XmlSerializationWriter.cs
- ADMembershipProvider.cs
- BoolLiteral.cs
- SatelliteContractVersionAttribute.cs
- DoubleLink.cs
- EdmError.cs
- ConstraintEnumerator.cs
- FlowThrottle.cs
- RightsManagementInformation.cs
- Pair.cs
- HttpHandlerActionCollection.cs
- UrlMappingsSection.cs
- ParenthesizePropertyNameAttribute.cs
- SafeNativeMethods.cs
- TableColumn.cs
- IisTraceWebEventProvider.cs
- PropertyDescriptorComparer.cs
- ExternalDataExchangeService.cs
- HtmlEncodedRawTextWriter.cs
- DataGridHeaderBorder.cs
- DataGridViewRowsAddedEventArgs.cs
- StringCollection.cs
- IPipelineRuntime.cs
- VerificationAttribute.cs
- HostingPreferredMapPath.cs
- UnmanagedMemoryAccessor.cs
- Bidi.cs
- DataDocumentXPathNavigator.cs
- ToolStripContainerDesigner.cs
- QueryResponse.cs
- MinimizableAttributeTypeConverter.cs
- XamlPoint3DCollectionSerializer.cs
- OdbcException.cs
- StrongNameKeyPair.cs
- TransactionContextValidator.cs
- Operators.cs
- ObjectDisposedException.cs
- Rotation3D.cs
- MapPathBasedVirtualPathProvider.cs
- RtfControls.cs
- EmptyControlCollection.cs
- TextWriterTraceListener.cs
- DrawingBrush.cs
- PropertyRecord.cs
- CacheSection.cs
- XmlSchemaSimpleContentRestriction.cs
- EventDescriptorCollection.cs
- DataControlImageButton.cs
- StandardOleMarshalObject.cs
- Profiler.cs
- AuthorizationRuleCollection.cs
- MsmqIntegrationAppDomainProtocolHandler.cs
- UTF7Encoding.cs
- ClientSponsor.cs
- SuppressMergeCheckAttribute.cs
- TabItemWrapperAutomationPeer.cs
- FloaterParaClient.cs
- CultureTable.cs
- HttpServerUtilityWrapper.cs
- IgnorePropertiesAttribute.cs
- Invariant.cs
- SetIterators.cs
- ProfileEventArgs.cs
- SelectionItemProviderWrapper.cs
- BoolExpression.cs
- XmlCDATASection.cs
- XmlDownloadManager.cs