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
- WindowsIPAddress.cs
- AuthorizationRuleCollection.cs
- RegexReplacement.cs
- DataSourceGroupCollection.cs
- xmlfixedPageInfo.cs
- LostFocusEventManager.cs
- XmlSchemaImporter.cs
- SpotLight.cs
- MachineKeySection.cs
- AppModelKnownContentFactory.cs
- CodeParameterDeclarationExpression.cs
- RuntimeWrappedException.cs
- RelativeSource.cs
- SpotLight.cs
- DataPagerFieldCollection.cs
- HandleRef.cs
- UnicastIPAddressInformationCollection.cs
- XmlEventCache.cs
- ConfigXmlCDataSection.cs
- XmlSiteMapProvider.cs
- ContentValidator.cs
- OptimisticConcurrencyException.cs
- CodeDOMProvider.cs
- counter.cs
- ModuleBuilderData.cs
- mediaeventargs.cs
- CharAnimationUsingKeyFrames.cs
- InternalControlCollection.cs
- FunctionOverloadResolver.cs
- TrackingMemoryStreamFactory.cs
- HealthMonitoringSection.cs
- QualifiedId.cs
- DefaultValueAttribute.cs
- SafeArrayRankMismatchException.cs
- TdsValueSetter.cs
- Models.cs
- DragEventArgs.cs
- DrawingAttributeSerializer.cs
- HttpListenerPrefixCollection.cs
- Visual3DCollection.cs
- DbConnectionInternal.cs
- xsdvalidator.cs
- smtppermission.cs
- SrgsNameValueTag.cs
- UIPropertyMetadata.cs
- StaticTextPointer.cs
- CustomAttribute.cs
- SecurityException.cs
- InternalCache.cs
- WorkflowMarkupSerializationException.cs
- WindowHideOrCloseTracker.cs
- AnimationClockResource.cs
- SystemUnicastIPAddressInformation.cs
- PackageFilter.cs
- SqlDependency.cs
- PageContent.cs
- ResourceReferenceExpression.cs
- ValidationRule.cs
- OpenTypeLayoutCache.cs
- XmlSchemaAnnotation.cs
- SafeSystemMetrics.cs
- TypeBuilderInstantiation.cs
- NameObjectCollectionBase.cs
- WebBrowserEvent.cs
- NonBatchDirectoryCompiler.cs
- Calendar.cs
- ProcessModelInfo.cs
- XmlSchemaInfo.cs
- ContractMapping.cs
- StandardCommands.cs
- JsonClassDataContract.cs
- Variant.cs
- TreeNodeBindingCollection.cs
- DataRecordObjectView.cs
- ValidationError.cs
- TextInfo.cs
- OutOfMemoryException.cs
- HTTPNotFoundHandler.cs
- Page.cs
- CookieParameter.cs
- StatusBarDrawItemEvent.cs
- StyleReferenceConverter.cs
- Pair.cs
- XmlConvert.cs
- DataGridCell.cs
- SHA512Managed.cs
- TableColumn.cs
- XmlPropertyBag.cs
- ControlCodeDomSerializer.cs
- TransformProviderWrapper.cs
- CodeAccessSecurityEngine.cs
- DeflateStream.cs
- EncoderNLS.cs
- DoubleLink.cs
- EntityDataSourceUtil.cs
- ManipulationDeltaEventArgs.cs
- GridPatternIdentifiers.cs
- Operators.cs
- FileBasedResourceGroveler.cs
- XmlSchemaSubstitutionGroup.cs