Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / whidbey / QFE / ndp / fx / src / xsp / System / Web / Compilation / WebReferencesBuildProvider.cs / 2 / WebReferencesBuildProvider.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.Compilation {
using System;
using System.Globalization;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.Collections.Specialized;
using System.Net;
using System.Xml.Serialization;
#if !FEATURE_PAL
using System.Web.Services.Description;
using System.Web.Services.Discovery;
#endif // !FEATURE_PAL
using System.Web.Hosting;
using System.Web.UI;
using System.Web.Util;
using Util=System.Web.UI.Util;
internal class WebReferencesBuildProvider: BuildProvider {
private VirtualDirectory _vdir;
private const string IndigoWebRefProviderTypeName = "System.Web.Compilation.WCFBuildProvider";
private static Type s_indigoWebRefProviderType;
private static bool s_triedToGetWebRefType;
internal WebReferencesBuildProvider(VirtualDirectory vdir) {
_vdir = vdir;
}
public override void GenerateCode(AssemblyBuilder assemblyBuilder) {
// Only attempt to get the Indigo provider once
if (!s_triedToGetWebRefType) {
s_indigoWebRefProviderType = BuildManager.GetType(IndigoWebRefProviderTypeName, false /*throwOnError*/);
s_triedToGetWebRefType = true;
}
// If we have an Indigo provider, instantiate it and forward the GenerateCode call to it
if (s_indigoWebRefProviderType != null) {
BuildProvider buildProvider = (BuildProvider)HttpRuntime.CreateNonPublicInstance(s_indigoWebRefProviderType);
buildProvider.SetVirtualPath(VirtualPathObject);
buildProvider.GenerateCode(assemblyBuilder);
}
// e.g "/MyApp/Application_WebReferences"
VirtualPath rootWebRefDirVirtualPath = HttpRuntime.WebRefDirectoryVirtualPath;
// e.g "/MyApp/Application_WebReferences/Foo/Bar"
string currentWebRefDirVirtualPath = _vdir.VirtualPath;
Debug.Assert(StringUtil.StringStartsWithIgnoreCase(
currentWebRefDirVirtualPath, rootWebRefDirVirtualPath.VirtualPathString));
string ns;
if (rootWebRefDirVirtualPath.VirtualPathString.Length == currentWebRefDirVirtualPath.Length) {
// If it's the root WebReferences dir, use the empty namespace
ns = String.Empty;
}
else {
// e.g. "Foo/Bar"
Debug.Assert(rootWebRefDirVirtualPath.HasTrailingSlash);
currentWebRefDirVirtualPath = UrlPath.RemoveSlashFromPathIfNeeded(currentWebRefDirVirtualPath);
currentWebRefDirVirtualPath = currentWebRefDirVirtualPath.Substring(
rootWebRefDirVirtualPath.VirtualPathString.Length);
// Split it into chunks separated by '/'
string[] chunks = currentWebRefDirVirtualPath.Split('/');
// Turn all the relevant chunks into valid namespace chunks
for (int i=0; i
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.Compilation {
using System;
using System.Globalization;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.Collections.Specialized;
using System.Net;
using System.Xml.Serialization;
#if !FEATURE_PAL
using System.Web.Services.Description;
using System.Web.Services.Discovery;
#endif // !FEATURE_PAL
using System.Web.Hosting;
using System.Web.UI;
using System.Web.Util;
using Util=System.Web.UI.Util;
internal class WebReferencesBuildProvider: BuildProvider {
private VirtualDirectory _vdir;
private const string IndigoWebRefProviderTypeName = "System.Web.Compilation.WCFBuildProvider";
private static Type s_indigoWebRefProviderType;
private static bool s_triedToGetWebRefType;
internal WebReferencesBuildProvider(VirtualDirectory vdir) {
_vdir = vdir;
}
public override void GenerateCode(AssemblyBuilder assemblyBuilder) {
// Only attempt to get the Indigo provider once
if (!s_triedToGetWebRefType) {
s_indigoWebRefProviderType = BuildManager.GetType(IndigoWebRefProviderTypeName, false /*throwOnError*/);
s_triedToGetWebRefType = true;
}
// If we have an Indigo provider, instantiate it and forward the GenerateCode call to it
if (s_indigoWebRefProviderType != null) {
BuildProvider buildProvider = (BuildProvider)HttpRuntime.CreateNonPublicInstance(s_indigoWebRefProviderType);
buildProvider.SetVirtualPath(VirtualPathObject);
buildProvider.GenerateCode(assemblyBuilder);
}
// e.g "/MyApp/Application_WebReferences"
VirtualPath rootWebRefDirVirtualPath = HttpRuntime.WebRefDirectoryVirtualPath;
// e.g "/MyApp/Application_WebReferences/Foo/Bar"
string currentWebRefDirVirtualPath = _vdir.VirtualPath;
Debug.Assert(StringUtil.StringStartsWithIgnoreCase(
currentWebRefDirVirtualPath, rootWebRefDirVirtualPath.VirtualPathString));
string ns;
if (rootWebRefDirVirtualPath.VirtualPathString.Length == currentWebRefDirVirtualPath.Length) {
// If it's the root WebReferences dir, use the empty namespace
ns = String.Empty;
}
else {
// e.g. "Foo/Bar"
Debug.Assert(rootWebRefDirVirtualPath.HasTrailingSlash);
currentWebRefDirVirtualPath = UrlPath.RemoveSlashFromPathIfNeeded(currentWebRefDirVirtualPath);
currentWebRefDirVirtualPath = currentWebRefDirVirtualPath.Substring(
rootWebRefDirVirtualPath.VirtualPathString.Length);
// Split it into chunks separated by '/'
string[] chunks = currentWebRefDirVirtualPath.Split('/');
// Turn all the relevant chunks into valid namespace chunks
for (int i=0; i
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- GrammarBuilderBase.cs
- ManualResetEventSlim.cs
- SQLDoubleStorage.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- ToolStripHighContrastRenderer.cs
- XmlJsonReader.cs
- SemanticBasicElement.cs
- WsdlImporterElement.cs
- GridToolTip.cs
- RotationValidation.cs
- URI.cs
- SqlDataSourceStatusEventArgs.cs
- EventRecord.cs
- ViewStateException.cs
- ZoneMembershipCondition.cs
- XmlCodeExporter.cs
- ThreadPool.cs
- XmlSignatureProperties.cs
- DataGridTableCollection.cs
- EventListenerClientSide.cs
- DiscoveryInnerClientManaged11.cs
- RectangleGeometry.cs
- ChineseLunisolarCalendar.cs
- MSG.cs
- SmiRequestExecutor.cs
- IconBitmapDecoder.cs
- SecurityUtils.cs
- ButtonAutomationPeer.cs
- TemplateContent.cs
- EditCommandColumn.cs
- __Filters.cs
- LocalBuilder.cs
- xmlfixedPageInfo.cs
- RenderOptions.cs
- ToolboxItemFilterAttribute.cs
- ComponentCollection.cs
- ReservationCollection.cs
- AccessKeyManager.cs
- Calendar.cs
- BindingElementExtensionElement.cs
- ListItemsPage.cs
- TextControl.cs
- QueryOutputWriterV1.cs
- SchemaNames.cs
- StylusPoint.cs
- ExpressionsCollectionConverter.cs
- Material.cs
- ZipIORawDataFileBlock.cs
- Rfc2898DeriveBytes.cs
- HttpAsyncResult.cs
- Lookup.cs
- WithParamAction.cs
- CalendarDateChangedEventArgs.cs
- TimeEnumHelper.cs
- SerializableAttribute.cs
- OdbcError.cs
- XmlObjectSerializer.cs
- Stack.cs
- BinaryConverter.cs
- EventLogPermission.cs
- CngAlgorithmGroup.cs
- FileSystemInfo.cs
- ContainsRowNumberChecker.cs
- MemberDomainMap.cs
- DispatcherOperation.cs
- Literal.cs
- XmlDomTextWriter.cs
- ViewEvent.cs
- DependencyPropertyHelper.cs
- LayoutDump.cs
- AccessedThroughPropertyAttribute.cs
- SmtpLoginAuthenticationModule.cs
- DataObjectPastingEventArgs.cs
- ConfigurationCollectionAttribute.cs
- RTLAwareMessageBox.cs
- SqlNodeAnnotations.cs
- WorkflowMessageEventArgs.cs
- input.cs
- AssociativeAggregationOperator.cs
- CharKeyFrameCollection.cs
- WebPartVerbsEventArgs.cs
- MinimizableAttributeTypeConverter.cs
- BindingExpressionBase.cs
- XomlCompilerResults.cs
- TextEffectCollection.cs
- Stopwatch.cs
- SR.cs
- WebPageTraceListener.cs
- BmpBitmapEncoder.cs
- HttpException.cs
- MemberHolder.cs
- BindingSource.cs
- DesignSurface.cs
- CodeMemberMethod.cs
- Int64.cs
- StringAnimationUsingKeyFrames.cs
- ApplicationGesture.cs
- HtmlEncodedRawTextWriter.cs
- LinqExpressionNormalizer.cs
- InfoCardHelper.cs