Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / ComIntegration / ComIntegrationManifestGenerator.cs / 1 / ComIntegrationManifestGenerator.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.ComIntegration { using System; using System.ServiceModel; using System.Collections.Generic; using System.Runtime.InteropServices; using System.IO; using System.Text; using System.Collections; using System.Reflection; // this is a heavily modified version of the Win32ManifestGenerator found in the CLR internal class ComIntegrationManifestGenerator : MarshalByRefObject { internal static void GenerateManifestCollectionFile(Guid[] manifests, String strAssemblyManifestFileName, String assemblyName) { String title = ""; String asmTitle = ""; String asmEnd = " "; String path = Path.GetDirectoryName(strAssemblyManifestFileName); if (!String.IsNullOrEmpty(path) && !Directory.Exists(path)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(System.ServiceModel.ComIntegration.Error.DirectoryNotFound(path)); } Stream s = null; try { // manifest title s = File.Create(strAssemblyManifestFileName); WriteUTFChars(s, title + Environment.NewLine); WriteUTFChars(s, asmTitle + Environment.NewLine); WriteUTFChars(s, "" + Environment.NewLine, 8); for (int i = 0; i < manifests.Length; i++) { WriteUTFChars(s, " " + Environment.NewLine, 4); WriteUTFChars(s, " " + Environment.NewLine, 4); } WriteUTFChars(s, asmEnd); } catch (Exception e) { if (e is NullReferenceException || e is SEHException) { throw; } s.Close(); File.Delete(strAssemblyManifestFileName); throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(System.ServiceModel.ComIntegration.Error.ManifestCreationFailed(strAssemblyManifestFileName, e.Message)); } s.Close(); } internal static void GenerateWin32ManifestFile(Type[] aTypes, String strAssemblyManifestFileName, String assemblyName) { String title = ""; String asmTitle = "" + Environment.NewLine, 8); WriteUTFChars(s, " " + Environment.NewLine, 8); WriteUTFChars(s, "" + Environment.NewLine, 16); WriteUTFChars(s, " "; String path = Path.GetDirectoryName(strAssemblyManifestFileName); if (!String.IsNullOrEmpty(path) && !Directory.Exists(path)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(System.ServiceModel.ComIntegration.Error.DirectoryNotFound(path)); } Stream s = null; try { // manifest title s = File.Create(strAssemblyManifestFileName); WriteUTFChars(s, title + Environment.NewLine); WriteUTFChars(s, asmTitle + Environment.NewLine); WriteUTFChars(s, " "; WriteTypes(s, aTypes, 4); WriteUTFChars(s, asmEnd); } private static void WriteTypes(Stream s, Type[] aTypes, int offset) { RegistrationServices regServices = new RegistrationServices(); String name = null; Assembly asm = Assembly.GetExecutingAssembly(); string asmver = asm.ImageRuntimeVersion; foreach (Type t in aTypes) { // only registrable managed types will show up in the manifest file if (!regServices.TypeRequiresRegistration(t)) { DiagnosticUtility.DebugAssert("User defined types must be registrable"); throw DiagnosticUtility.ExceptionUtility.ThrowHelperInternal(false); } String strClsId = "{" + Marshal.GenerateGuidForType(t).ToString().ToUpperInvariant() + "}"; name = t.FullName; // this type is a com imported type or Record if (regServices.TypeRepresentsComType(t) || t.IsValueType) { WriteUTFChars(s, "" + Environment.NewLine, 8); AsmCreateWin32ManifestFile(s, aTypes); } catch (Exception e) { if (e is NullReferenceException || e is SEHException) { throw; } s.Close(); File.Delete(strAssemblyManifestFileName); throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(System.ServiceModel.ComIntegration.Error.ManifestCreationFailed(strAssemblyManifestFileName, e.Message)); } s.Close(); } private static void AsmCreateWin32ManifestFile(Stream s, Type[] aTypes) { String asmEnd = " " + Environment.NewLine, offset); WriteUTFChars(s, " " + Environment.NewLine, offset); } } } private static void WriteUTFChars(Stream s, String value, int offset) { for (int i = 0; i < offset; i++) { WriteUTFChars(s, " "); } WriteUTFChars(s, value); } private static void WriteUTFChars(Stream s, String value) { byte[] bytes = System.Text.Encoding.UTF8.GetBytes(value); s.Write(bytes, 0, bytes.Length); } } } // 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
- PolicyLevel.cs
- AttachedPropertyBrowsableAttribute.cs
- InternalBase.cs
- BatchParser.cs
- ParameterCollectionEditor.cs
- ObfuscateAssemblyAttribute.cs
- InstalledFontCollection.cs
- SoapTypeAttribute.cs
- FileUtil.cs
- XhtmlBasicImageAdapter.cs
- DoubleMinMaxAggregationOperator.cs
- TabletCollection.cs
- WeakHashtable.cs
- ChangePassword.cs
- DbConvert.cs
- BufferModesCollection.cs
- PointCollection.cs
- WebZone.cs
- ResizingMessageFilter.cs
- ZipIOExtraFieldPaddingElement.cs
- QueryExpr.cs
- TextStore.cs
- SqlStatistics.cs
- HierarchicalDataBoundControl.cs
- ClusterRegistryConfigurationProvider.cs
- Transform.cs
- SingleObjectCollection.cs
- ViewBox.cs
- Range.cs
- VirtualPathUtility.cs
- X500Name.cs
- CodeSubDirectory.cs
- EmptyElement.cs
- Command.cs
- WindowsGrip.cs
- PathSegmentCollection.cs
- ConnectionPointCookie.cs
- DataObjectMethodAttribute.cs
- UserPersonalizationStateInfo.cs
- CodeDOMProvider.cs
- IgnoreDeviceFilterElement.cs
- XmlSignatureProperties.cs
- WeakHashtable.cs
- OdbcReferenceCollection.cs
- WebZone.cs
- __ComObject.cs
- XmlWriterDelegator.cs
- EntityReference.cs
- PlatformCulture.cs
- DifferencingCollection.cs
- Debug.cs
- Facet.cs
- SystemPens.cs
- Message.cs
- SwitchElementsCollection.cs
- URLBuilder.cs
- SortedSet.cs
- ClosureBinding.cs
- ConfigurationSettings.cs
- ClientSettingsStore.cs
- WebPartsPersonalizationAuthorization.cs
- PointCollection.cs
- DocumentSequenceHighlightLayer.cs
- ResourcePool.cs
- TextEncodedRawTextWriter.cs
- GlobalItem.cs
- CompilerErrorCollection.cs
- AssociatedControlConverter.cs
- FontNamesConverter.cs
- WizardStepBase.cs
- CodeExpressionStatement.cs
- SmiRequestExecutor.cs
- ScriptRef.cs
- CacheVirtualItemsEvent.cs
- Speller.cs
- IERequestCache.cs
- DecoratedNameAttribute.cs
- UriTemplateTableMatchCandidate.cs
- InputManager.cs
- CheckBoxList.cs
- UIElement.cs
- ConstructorNeedsTagAttribute.cs
- OleServicesContext.cs
- CategoryAttribute.cs
- WebPartCollection.cs
- DebugHandleTracker.cs
- FloaterParagraph.cs
- TransformedBitmap.cs
- SmiContextFactory.cs
- RadioButtonPopupAdapter.cs
- SqlTriggerAttribute.cs
- ComplusTypeValidator.cs
- sortedlist.cs
- Dump.cs
- EntityClassGenerator.cs
- NamedPermissionSet.cs
- HandlerWithFactory.cs
- GlyphCache.cs
- RowUpdatingEventArgs.cs
- UTF8Encoding.cs