Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Common / AuthoringOM / Compiler / ReferencedAssemblyResolver.cs / 1305376 / ReferencedAssemblyResolver.cs
namespace System.Workflow.ComponentModel.Compiler { using System; using System.Reflection; using System.Collections.Specialized; using System.ComponentModel.Design; using System.Workflow.ComponentModel.Compiler; using System.Workflow.ComponentModel.Design; #region Class Assembly resolver // In the cases where the WorkflowCompiler is invoked directly, we need to deserialize the // xoml before we can create the real TypeProvider, hence it is necessary to look at the // referenced assemblies for any types that fail to load. In the VS scenarios, the TypeProvider // has already been created and the WorkflowMarkupSerializer will use it first. internal sealed class ReferencedAssemblyResolver { private StringCollection referencedAssemblies = new StringCollection(); private Assembly localAssembly; private bool resolving = false; public ReferencedAssemblyResolver(StringCollection referencedAssemblies, Assembly localAssembly) { this.referencedAssemblies = referencedAssemblies; this.localAssembly = localAssembly; } public Assembly ResolveEventHandler(object sender, ResolveEventArgs args) { return ResolveAssembly(args.Name); } internal void SetLocalAssembly(Assembly localAsm) { this.localAssembly = localAsm; } private Assembly ResolveAssembly(string name) { if (this.resolving) return null; // First look for the local assembly. if (this.localAssembly != null && name == this.localAssembly.FullName) return this.localAssembly; try { this.resolving = true; AssemblyName assemblyName = new AssemblyName(name); // Then try the referenced assemblies. foreach (string assemblyPath in this.referencedAssemblies) { try { AssemblyName referenceAssemblyName = AssemblyName.GetAssemblyName(assemblyPath); if (referenceAssemblyName != null && ParseHelpers.AssemblyNameEquals(referenceAssemblyName, assemblyName)) { Assembly reference = null; try { reference = Assembly.Load(referenceAssemblyName); } catch { reference = Assembly.LoadFrom(assemblyPath); } return reference; } } catch { // Eat up any exceptions! } } } finally { this.resolving = false; } return null; } } #endregion } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. namespace System.Workflow.ComponentModel.Compiler { using System; using System.Reflection; using System.Collections.Specialized; using System.ComponentModel.Design; using System.Workflow.ComponentModel.Compiler; using System.Workflow.ComponentModel.Design; #region Class Assembly resolver // In the cases where the WorkflowCompiler is invoked directly, we need to deserialize the // xoml before we can create the real TypeProvider, hence it is necessary to look at the // referenced assemblies for any types that fail to load. In the VS scenarios, the TypeProvider // has already been created and the WorkflowMarkupSerializer will use it first. internal sealed class ReferencedAssemblyResolver { private StringCollection referencedAssemblies = new StringCollection(); private Assembly localAssembly; private bool resolving = false; public ReferencedAssemblyResolver(StringCollection referencedAssemblies, Assembly localAssembly) { this.referencedAssemblies = referencedAssemblies; this.localAssembly = localAssembly; } public Assembly ResolveEventHandler(object sender, ResolveEventArgs args) { return ResolveAssembly(args.Name); } internal void SetLocalAssembly(Assembly localAsm) { this.localAssembly = localAsm; } private Assembly ResolveAssembly(string name) { if (this.resolving) return null; // First look for the local assembly. if (this.localAssembly != null && name == this.localAssembly.FullName) return this.localAssembly; try { this.resolving = true; AssemblyName assemblyName = new AssemblyName(name); // Then try the referenced assemblies. foreach (string assemblyPath in this.referencedAssemblies) { try { AssemblyName referenceAssemblyName = AssemblyName.GetAssemblyName(assemblyPath); if (referenceAssemblyName != null && ParseHelpers.AssemblyNameEquals(referenceAssemblyName, assemblyName)) { Assembly reference = null; try { reference = Assembly.Load(referenceAssemblyName); } catch { reference = Assembly.LoadFrom(assemblyPath); } return reference; } } catch { // Eat up any exceptions! } } } finally { this.resolving = false; } return null; } } #endregion } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CacheOutputQuery.cs
- XmlSchemaDatatype.cs
- XmlCustomFormatter.cs
- GeneralTransform3DTo2D.cs
- NumericUpDownAcceleration.cs
- Compiler.cs
- RoutedEvent.cs
- CustomWebEventKey.cs
- SplashScreenNativeMethods.cs
- WindowInteractionStateTracker.cs
- MergeExecutor.cs
- PrinterResolution.cs
- WindowsSlider.cs
- HuffmanTree.cs
- PageAsyncTaskManager.cs
- DelimitedListTraceListener.cs
- GeometryDrawing.cs
- SplineKeyFrames.cs
- TextEndOfParagraph.cs
- SupportsPreviewControlAttribute.cs
- ElementAction.cs
- StylusCollection.cs
- OleDbRowUpdatingEvent.cs
- XPathItem.cs
- ImageList.cs
- PreservationFileReader.cs
- PasswordPropertyTextAttribute.cs
- COM2Enum.cs
- ObjectDataSourceView.cs
- TableCellCollection.cs
- ArrayTypeMismatchException.cs
- pingexception.cs
- DesignerAutoFormatCollection.cs
- MessageQueueConverter.cs
- Metadata.cs
- Pen.cs
- TcpConnectionPool.cs
- Page.cs
- PKCS1MaskGenerationMethod.cs
- PreviewPrintController.cs
- ObjectViewEntityCollectionData.cs
- DeviceFilterDictionary.cs
- RadioButton.cs
- SettingsPropertyValue.cs
- EntityCommandCompilationException.cs
- ConstrainedDataObject.cs
- FileDataSourceCache.cs
- PermissionSet.cs
- SecurityNegotiationException.cs
- TripleDES.cs
- MethodImplAttribute.cs
- ManagementDateTime.cs
- webeventbuffer.cs
- SpecularMaterial.cs
- ComponentEvent.cs
- DesignerRegionMouseEventArgs.cs
- SmiMetaData.cs
- WebPartCatalogCloseVerb.cs
- SequenceDesigner.cs
- CommandDesigner.cs
- AlternationConverter.cs
- CheckBoxList.cs
- BooleanKeyFrameCollection.cs
- MachineKey.cs
- ExceptionRoutedEventArgs.cs
- InputDevice.cs
- IdnElement.cs
- SizeConverter.cs
- TableHeaderCell.cs
- RuntimeUtils.cs
- PersianCalendar.cs
- StreamGeometry.cs
- Bezier.cs
- TemplateNameScope.cs
- QilCloneVisitor.cs
- InfoCardServiceInstallComponent.cs
- ConfigurationManagerInternalFactory.cs
- SessionStateItemCollection.cs
- XmlCDATASection.cs
- ColumnBinding.cs
- BulletedListEventArgs.cs
- StringUtil.cs
- AsyncOperationManager.cs
- TrackingServices.cs
- ValueExpressions.cs
- DataGridParentRows.cs
- UnknownBitmapEncoder.cs
- XmlTextEncoder.cs
- DependencyPropertyValueSerializer.cs
- PropertyCondition.cs
- RemotingConfiguration.cs
- BasicHttpBindingElement.cs
- ListViewContainer.cs
- FormsAuthenticationEventArgs.cs
- Publisher.cs
- Walker.cs
- HtmlMeta.cs
- ToolZone.cs
- DropSource.cs
- ContainerUtilities.cs