Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / CompMod / System / CodeDOM / Compiler / RedistVersionInfo.cs / 3 / 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;
}
private static string GetOrcasPath() {
// Temporary until the decision is made:
//
// \Windows\Microsoft.NET\Framework\v3.5.xxxxx\ or
// \Windows\WinFX\v3.5\
string dir = Registry.GetValue(dotNetFrameworkRegistryPath, dotNetFrameworkSdkInstallKeyValueV35, null) as string;
if (dir != null && Directory.Exists(dir)) {
return dir;
}
return null;
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- AffineTransform3D.cs
- BufferedGraphicsContext.cs
- WizardPanel.cs
- ISCIIEncoding.cs
- ProviderSettingsCollection.cs
- SignatureConfirmationElement.cs
- SynchronizedInputPattern.cs
- PerfCounterSection.cs
- XmlEntity.cs
- Compiler.cs
- RangeBase.cs
- Style.cs
- BamlWriter.cs
- SmtpSection.cs
- DockPatternIdentifiers.cs
- DebugView.cs
- TcpServerChannel.cs
- SQLRoleProvider.cs
- MarshalByValueComponent.cs
- WhitespaceSignificantCollectionAttribute.cs
- CheckBoxBaseAdapter.cs
- validation.cs
- ProfileGroupSettingsCollection.cs
- XmlBaseReader.cs
- HyperLinkDataBindingHandler.cs
- AuthorizationSection.cs
- CloudCollection.cs
- FactoryGenerator.cs
- InputScopeConverter.cs
- InkPresenter.cs
- BitmapImage.cs
- messageonlyhwndwrapper.cs
- HttpRuntimeSection.cs
- PageWrapper.cs
- ServiceOperationParameter.cs
- GenericArgumentsUpdater.cs
- ScriptModule.cs
- Tokenizer.cs
- XmlDesigner.cs
- HttpHeaderCollection.cs
- CodeExpressionStatement.cs
- TimeSpanConverter.cs
- ScrollItemPattern.cs
- TextTreeFixupNode.cs
- _AcceptOverlappedAsyncResult.cs
- ResourceDictionaryCollection.cs
- RuleSetDialog.Designer.cs
- ApplicationHost.cs
- LongValidator.cs
- DefaultHttpHandler.cs
- WaveHeader.cs
- XmlWriterTraceListener.cs
- OperationCanceledException.cs
- ETagAttribute.cs
- IdentifierService.cs
- StreamUpdate.cs
- EncodingInfo.cs
- ResizeGrip.cs
- WebConfigurationHostFileChange.cs
- TitleStyle.cs
- PropertyEmitter.cs
- Geometry3D.cs
- TypeValidationEventArgs.cs
- ToolStripRenderer.cs
- QilDataSource.cs
- DataSourceCacheDurationConverter.cs
- WorkflowMarkupSerializationException.cs
- QuadraticBezierSegment.cs
- TraceFilter.cs
- DependencyProperty.cs
- CookielessHelper.cs
- TextBoxBase.cs
- ServiceModelConfigurationSection.cs
- PrintDocument.cs
- FormViewUpdatedEventArgs.cs
- HtmlTable.cs
- SafeRightsManagementPubHandle.cs
- MenuItemStyle.cs
- EnumerableWrapperWeakToStrong.cs
- ClassImporter.cs
- PhysicalOps.cs
- Merger.cs
- ResolveCompletedEventArgs.cs
- smtppermission.cs
- HotSpotCollection.cs
- XmlToDatasetMap.cs
- DetailsViewRow.cs
- EventOpcode.cs
- LoginCancelEventArgs.cs
- ScrollChrome.cs
- CuspData.cs
- AssertSection.cs
- DataSourceSelectArguments.cs
- BindingCollection.cs
- XslAstAnalyzer.cs
- ExceptionUtil.cs
- Cursor.cs
- EndpointDispatcherTable.cs
- InvalidFilterCriteriaException.cs
- OSFeature.cs