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
- XmlDataLoader.cs
- BaseTemplateBuildProvider.cs
- TransformValueSerializer.cs
- ToolStripContainer.cs
- AnnotationAuthorChangedEventArgs.cs
- control.ime.cs
- ConsumerConnectionPoint.cs
- QilFactory.cs
- EventPrivateKey.cs
- KeyFrames.cs
- DataTableExtensions.cs
- SQLGuidStorage.cs
- SafeNativeMethodsMilCoreApi.cs
- ScriptingWebServicesSectionGroup.cs
- ProgressBarAutomationPeer.cs
- XmlQueryRuntime.cs
- IdentityReference.cs
- x509utils.cs
- DataSpaceManager.cs
- Missing.cs
- FragmentQueryProcessor.cs
- GridViewCancelEditEventArgs.cs
- XmlCompatibilityReader.cs
- MailAddress.cs
- MatrixCamera.cs
- DataSourceControlBuilder.cs
- BaseTemplateBuildProvider.cs
- InvalidPropValue.cs
- UIElement3D.cs
- HttpCapabilitiesBase.cs
- SoapReflectionImporter.cs
- Random.cs
- XmlTextEncoder.cs
- ListViewItem.cs
- UIElementParagraph.cs
- PenLineJoinValidation.cs
- ServerValidateEventArgs.cs
- WindowsFormsHostPropertyMap.cs
- BaseCollection.cs
- FormClosedEvent.cs
- PrimitiveCodeDomSerializer.cs
- EventMetadata.cs
- SystemIcons.cs
- SourceCollection.cs
- LineBreak.cs
- WorkflowMarkupSerializationException.cs
- ObjectDataSourceMethodEventArgs.cs
- Monitor.cs
- ListenerServiceInstallComponent.cs
- ToolStripPanel.cs
- DataGridHeaderBorder.cs
- XmlRawWriter.cs
- Container.cs
- CodeActivityContext.cs
- Button.cs
- ByteStreamMessageEncodingElement.cs
- FontFaceLayoutInfo.cs
- WindowManager.cs
- TempFiles.cs
- ReadOnlyHierarchicalDataSource.cs
- SynchronizationFilter.cs
- IsolatedStorageFilePermission.cs
- ValueTypeFixupInfo.cs
- DynamicValidatorEventArgs.cs
- ContentPropertyAttribute.cs
- MimeObjectFactory.cs
- xmlsaver.cs
- BaseDataBoundControl.cs
- AutomationAttributeInfo.cs
- IMembershipProvider.cs
- DataGridLinkButton.cs
- DbParameterHelper.cs
- TdsParser.cs
- PartialClassGenerationTask.cs
- Compiler.cs
- DocumentViewerBase.cs
- ItemDragEvent.cs
- OpCodes.cs
- XomlCompilerParameters.cs
- ToolStripSettings.cs
- NestPullup.cs
- HtmlHistory.cs
- RangeBase.cs
- PropagationProtocolsTracing.cs
- SearchForVirtualItemEventArgs.cs
- listitem.cs
- XmlWriterTraceListener.cs
- WmlLabelAdapter.cs
- ThreadPool.cs
- PrintControllerWithStatusDialog.cs
- SemanticAnalyzer.cs
- TypeConverter.cs
- ToolTipService.cs
- RNGCryptoServiceProvider.cs
- ZipIOCentralDirectoryFileHeader.cs
- PagesChangedEventArgs.cs
- HostDesigntimeLicenseContext.cs
- XmlParserContext.cs
- Update.cs
- OpenTypeLayout.cs