Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / xsp / System / Web / Compilation / WebReferencesBuildProvider.cs / 1 / 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
- BamlLocalizationDictionary.cs
- ProtectedConfiguration.cs
- DispatcherSynchronizationContext.cs
- BeginEvent.cs
- DirectoryInfo.cs
- RouteTable.cs
- WmlValidationSummaryAdapter.cs
- CompensationToken.cs
- WebBaseEventKeyComparer.cs
- InstanceOwnerQueryResult.cs
- SharedUtils.cs
- ComponentSerializationService.cs
- SqlDataSourceStatusEventArgs.cs
- RtfToXamlLexer.cs
- HttpClientChannel.cs
- BindableTemplateBuilder.cs
- ParallelTimeline.cs
- ServiceDeploymentInfo.cs
- LambdaCompiler.Statements.cs
- CommandPlan.cs
- FlowThrottle.cs
- TaskHelper.cs
- QEncodedStream.cs
- ConfigurationManager.cs
- SelectionPatternIdentifiers.cs
- SrgsGrammar.cs
- ChildTable.cs
- Constraint.cs
- MethodCallTranslator.cs
- DrawListViewItemEventArgs.cs
- TypeConverterHelper.cs
- ListSortDescription.cs
- PackagingUtilities.cs
- MetadataItemEmitter.cs
- DurableEnlistmentState.cs
- ObjectDataSourceStatusEventArgs.cs
- EntityChangedParams.cs
- ApplicationActivator.cs
- ChineseLunisolarCalendar.cs
- SerializerWriterEventHandlers.cs
- AuthenticationModulesSection.cs
- ExpandSegmentCollection.cs
- DataGridViewButtonCell.cs
- Path.cs
- StylusShape.cs
- EncryptedData.cs
- DisplayNameAttribute.cs
- TrackingServices.cs
- SetStateEventArgs.cs
- ReadOnlyCollection.cs
- Peer.cs
- ComPersistableTypeElement.cs
- StylusPointProperty.cs
- UnknownBitmapDecoder.cs
- AnimatedTypeHelpers.cs
- ComponentResourceKey.cs
- NameHandler.cs
- SqlException.cs
- ProvideValueServiceProvider.cs
- Converter.cs
- StringConverter.cs
- ImageCodecInfo.cs
- PrintController.cs
- TextEditorContextMenu.cs
- Material.cs
- DataGridTextBoxColumn.cs
- UrlPath.cs
- TableParagraph.cs
- SignedInfo.cs
- TextRunCache.cs
- TCPListener.cs
- IndexingContentUnit.cs
- RequestQueue.cs
- OdbcStatementHandle.cs
- XmlIgnoreAttribute.cs
- SqlCacheDependencyDatabase.cs
- ObjectAssociationEndMapping.cs
- Token.cs
- SystemIPv6InterfaceProperties.cs
- AsymmetricKeyExchangeDeformatter.cs
- AlphabetConverter.cs
- PartitionerStatic.cs
- RadialGradientBrush.cs
- DefaultEventAttribute.cs
- DataColumn.cs
- XappLauncher.cs
- ChameleonKey.cs
- TextBounds.cs
- FatalException.cs
- EntityParameterCollection.cs
- TextTreeTextBlock.cs
- EntityDataSourceDesigner.cs
- RpcCryptoRequest.cs
- URI.cs
- IISMapPath.cs
- QuotaThrottle.cs
- PropertyCollection.cs
- StorageMappingItemLoader.cs
- PrintDocument.cs
- PageAsyncTask.cs