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
- RuleRefElement.cs
- PluralizationServiceUtil.cs
- MaterializeFromAtom.cs
- PortCache.cs
- ConfigurationElementProperty.cs
- EntityDataReader.cs
- MILUtilities.cs
- HMACRIPEMD160.cs
- SectionVisual.cs
- WsdlInspector.cs
- TreeNodeStyle.cs
- CollectionsUtil.cs
- LinqDataSourceView.cs
- ContainerUtilities.cs
- SqlTypesSchemaImporter.cs
- UDPClient.cs
- HeaderLabel.cs
- ComContractElementCollection.cs
- TranslateTransform3D.cs
- TakeQueryOptionExpression.cs
- AsymmetricKeyExchangeFormatter.cs
- DefaultTextStoreTextComposition.cs
- NodeFunctions.cs
- AdornedElementPlaceholder.cs
- ExtractedStateEntry.cs
- CollectionContainer.cs
- StrongNameMembershipCondition.cs
- StrokeNodeOperations2.cs
- RepeaterItemCollection.cs
- _SSPIWrapper.cs
- RenderingEventArgs.cs
- CapiSymmetricAlgorithm.cs
- PointLightBase.cs
- RuleConditionDialog.cs
- CaseStatement.cs
- TraceLevelHelper.cs
- LogExtent.cs
- BinaryParser.cs
- SoapCommonClasses.cs
- CryptoHandle.cs
- GroupJoinQueryOperator.cs
- TablePatternIdentifiers.cs
- ColumnWidthChangedEvent.cs
- CharConverter.cs
- XpsFilter.cs
- LineVisual.cs
- ContextMenu.cs
- ExchangeUtilities.cs
- RenderContext.cs
- TextServicesManager.cs
- WebPartCancelEventArgs.cs
- PropertyValue.cs
- PropertyDescriptorGridEntry.cs
- MemoryStream.cs
- ProfileModule.cs
- Symbol.cs
- HttpServerProtocol.cs
- SRef.cs
- ThreadExceptionDialog.cs
- CrossAppDomainChannel.cs
- AsymmetricKeyExchangeDeformatter.cs
- BasicHttpBinding.cs
- CommentEmitter.cs
- ConfigXmlReader.cs
- FontFaceLayoutInfo.cs
- SafeRightsManagementEnvironmentHandle.cs
- DataRowChangeEvent.cs
- GroupBox.cs
- EntityDataSourceContainerNameItem.cs
- SelectedCellsChangedEventArgs.cs
- WindowsFormsHelpers.cs
- Manipulation.cs
- StandardCommands.cs
- StreamGeometry.cs
- ToolStripHighContrastRenderer.cs
- TypeElementCollection.cs
- QueryCursorEventArgs.cs
- LoadRetryConstantStrategy.cs
- KerberosRequestorSecurityToken.cs
- SqlException.cs
- ThreadSafeList.cs
- FolderBrowserDialog.cs
- XmlWhitespace.cs
- EditorAttributeInfo.cs
- ConfigXmlAttribute.cs
- PipeStream.cs
- SQLBytesStorage.cs
- MappingException.cs
- DataGridViewTextBoxCell.cs
- TransformGroup.cs
- ToolBar.cs
- HashHelpers.cs
- EntitySqlQueryCacheEntry.cs
- InheritedPropertyChangedEventArgs.cs
- XmlReader.cs
- NativeMethods.cs
- DBConcurrencyException.cs
- ItemDragEvent.cs
- XmlSerializerSection.cs
- ObjectAnimationBase.cs