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
- ConfigXmlComment.cs
- VolatileEnlistmentState.cs
- SEHException.cs
- StringUtil.cs
- webeventbuffer.cs
- ViewStateModeByIdAttribute.cs
- ThicknessAnimationUsingKeyFrames.cs
- CounterSet.cs
- DelayedRegex.cs
- MaterializeFromAtom.cs
- FontUnit.cs
- RuntimeHelpers.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- AssemblyResourceLoader.cs
- XPathBinder.cs
- TransformerInfo.cs
- QueryCacheManager.cs
- TraceContext.cs
- SymLanguageType.cs
- documentsequencetextpointer.cs
- BackStopAuthenticationModule.cs
- ConfigurationManager.cs
- OdbcHandle.cs
- DetailsViewAutoFormat.cs
- ProjectionPruner.cs
- URLIdentityPermission.cs
- IgnoreDeviceFilterElement.cs
- RepeaterItemEventArgs.cs
- ScriptControlDescriptor.cs
- PathGradientBrush.cs
- BamlWriter.cs
- FormViewDeleteEventArgs.cs
- DefaultPrintController.cs
- AutomationEventArgs.cs
- OleDbSchemaGuid.cs
- EntityUtil.cs
- ToolStripControlHost.cs
- ToolStripRenderEventArgs.cs
- BaseCAMarshaler.cs
- OrderedDictionary.cs
- MessagePropertyDescription.cs
- ComplexType.cs
- XmlNavigatorFilter.cs
- Debugger.cs
- Mouse.cs
- HttpVersion.cs
- WindowsSpinner.cs
- DataContractAttribute.cs
- ValidatedControlConverter.cs
- CompleteWizardStep.cs
- DeflateEmulationStream.cs
- FileSystemEventArgs.cs
- XmlParserContext.cs
- TabControl.cs
- DrawListViewItemEventArgs.cs
- HashJoinQueryOperatorEnumerator.cs
- DependencyPropertyValueSerializer.cs
- ObjectTypeMapping.cs
- UriTemplateTrieLocation.cs
- ScriptControlDescriptor.cs
- DataGridCellsPanel.cs
- HashHelper.cs
- Empty.cs
- CqlParserHelpers.cs
- ColumnBinding.cs
- NotifyParentPropertyAttribute.cs
- ILGenerator.cs
- SiteOfOriginPart.cs
- WebPartCloseVerb.cs
- AppearanceEditorPart.cs
- SafeRegistryHandle.cs
- MouseGesture.cs
- Utility.cs
- VirtualizingStackPanel.cs
- RoutedUICommand.cs
- GlobalizationAssembly.cs
- DatagridviewDisplayedBandsData.cs
- StandardBindingOptionalReliableSessionElement.cs
- TriState.cs
- MemberAccessException.cs
- MarkupExtensionReturnTypeAttribute.cs
- InvokeGenerator.cs
- CodePageUtils.cs
- PrinterSettings.cs
- IncrementalReadDecoders.cs
- OracleCommandBuilder.cs
- NodeLabelEditEvent.cs
- MetadataItemSerializer.cs
- WebPartMenuStyle.cs
- BaseCodePageEncoding.cs
- IteratorFilter.cs
- _LocalDataStoreMgr.cs
- PowerStatus.cs
- DataComponentMethodGenerator.cs
- EnumerableRowCollection.cs
- FontSourceCollection.cs
- BlurEffect.cs
- ChtmlCommandAdapter.cs
- OletxResourceManager.cs
- DefaultPrintController.cs