Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / Compilation / WebReferencesBuildProvider.cs / 1305376 / 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
- DesignerProperties.cs
- ToolStripSeparator.cs
- ConvertTextFrag.cs
- DeviceSpecificChoice.cs
- LinkedResourceCollection.cs
- EntityCollectionChangedParams.cs
- AttributeEmitter.cs
- CompModSwitches.cs
- FunctionImportElement.cs
- ButtonStandardAdapter.cs
- WebBrowserNavigatedEventHandler.cs
- OutputCacheProfile.cs
- EnumerableRowCollection.cs
- CallbackValidator.cs
- _SslSessionsCache.cs
- TagMapCollection.cs
- AxisAngleRotation3D.cs
- AbstractDataSvcMapFileLoader.cs
- WCFServiceClientProxyGenerator.cs
- StandardToolWindows.cs
- InvalidEnumArgumentException.cs
- MasterPageBuildProvider.cs
- ObservableCollection.cs
- MutexSecurity.cs
- _emptywebproxy.cs
- ColumnMapVisitor.cs
- InvalidProgramException.cs
- SetterBase.cs
- TextStore.cs
- ClientFormsAuthenticationCredentials.cs
- InputEventArgs.cs
- DesignerOptionService.cs
- WorkItem.cs
- MDIControlStrip.cs
- Random.cs
- CacheRequest.cs
- util.cs
- Baml6ConstructorInfo.cs
- MethodBuilder.cs
- State.cs
- _NetworkingPerfCounters.cs
- IndexedString.cs
- SqlFunctionAttribute.cs
- Tuple.cs
- _ListenerResponseStream.cs
- Substitution.cs
- Switch.cs
- ExtensionFile.cs
- PriorityRange.cs
- XamlReader.cs
- ObjectDataProvider.cs
- Mapping.cs
- DataSourceGeneratorException.cs
- AsymmetricKeyExchangeFormatter.cs
- ObjectToken.cs
- DbParameterCollectionHelper.cs
- CompatibleComparer.cs
- TransformerInfoCollection.cs
- WCFModelStrings.Designer.cs
- EventKeyword.cs
- HostingEnvironmentException.cs
- TabControl.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- XsltOutput.cs
- LineServices.cs
- Point4D.cs
- DocumentCollection.cs
- FileStream.cs
- EndpointBehaviorElementCollection.cs
- SerialErrors.cs
- WhitespaceSignificantCollectionAttribute.cs
- ZipFileInfoCollection.cs
- ServiceDescriptionContext.cs
- TileBrush.cs
- TextTabProperties.cs
- SecurityHeader.cs
- ContentElement.cs
- ObjectNavigationPropertyMapping.cs
- SingleResultAttribute.cs
- SemanticKeyElement.cs
- WindowsProgressbar.cs
- Semaphore.cs
- DetailsViewAutoFormat.cs
- ToolStripGripRenderEventArgs.cs
- _SslSessionsCache.cs
- TextTreeTextBlock.cs
- CanExecuteRoutedEventArgs.cs
- RuntimeResourceSet.cs
- arclist.cs
- XmlBindingWorker.cs
- LogRecordSequence.cs
- RelationshipEndMember.cs
- CacheMemory.cs
- XmlSerializationWriter.cs
- PriorityQueue.cs
- FileLevelControlBuilderAttribute.cs
- AutomationElementIdentifiers.cs
- TableLayoutPanel.cs
- QilInvokeEarlyBound.cs
- SecurityElement.cs