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
- PageAsyncTaskManager.cs
- SignatureTargetIdManager.cs
- UTF7Encoding.cs
- StringSorter.cs
- SqlReferenceCollection.cs
- SoapCommonClasses.cs
- HighlightVisual.cs
- TypeBuilder.cs
- DocumentAutomationPeer.cs
- WebHttpBindingCollectionElement.cs
- SqlDependency.cs
- AuthenticationSection.cs
- XXXOnTypeBuilderInstantiation.cs
- UrlAuthorizationModule.cs
- ToolTip.cs
- XmlParserContext.cs
- ParsedAttributeCollection.cs
- DataBindingCollection.cs
- TemplateBuilder.cs
- PolyBezierSegment.cs
- ConfigWriter.cs
- TextEditorCopyPaste.cs
- SqlXmlStorage.cs
- WindowsGraphics2.cs
- BorderSidesEditor.cs
- COAUTHINFO.cs
- IteratorFilter.cs
- PlanCompiler.cs
- SchemaEntity.cs
- RightsManagementEncryptedStream.cs
- CanonicalXml.cs
- TemplatePropertyEntry.cs
- CodeMethodInvokeExpression.cs
- FileVersion.cs
- GridViewColumnCollectionChangedEventArgs.cs
- ChildChangedEventArgs.cs
- ProtocolsConfigurationEntry.cs
- Control.cs
- InstanceCreationEditor.cs
- HttpModulesSection.cs
- AssociativeAggregationOperator.cs
- COM2ExtendedBrowsingHandler.cs
- CompModSwitches.cs
- RubberbandSelector.cs
- KeyTime.cs
- SafePEFileHandle.cs
- UriExt.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- InfoCardRSACryptoProvider.cs
- CryptoConfig.cs
- StrongNamePublicKeyBlob.cs
- AutoSizeComboBox.cs
- ExpressionPrefixAttribute.cs
- XmlChildNodes.cs
- SoapSchemaImporter.cs
- ContractHandle.cs
- MonthChangedEventArgs.cs
- StateFinalizationActivity.cs
- UrlUtility.cs
- AdapterSwitches.cs
- Directory.cs
- SelectionItemProviderWrapper.cs
- TypeUtil.cs
- MsmqIntegrationInputChannel.cs
- StringReader.cs
- GetWinFXPath.cs
- TabOrder.cs
- VectorCollectionConverter.cs
- ParserStack.cs
- SecurityManager.cs
- GPPOINTF.cs
- ReachDocumentSequenceSerializer.cs
- WebPartConnection.cs
- WindowsRegion.cs
- RefType.cs
- Itemizer.cs
- BitConverter.cs
- CodeExporter.cs
- BamlStream.cs
- Metafile.cs
- EndpointBehaviorElementCollection.cs
- SystemPens.cs
- XhtmlStyleClass.cs
- MetadataFile.cs
- TypeLoadException.cs
- CompoundFileReference.cs
- ToolStripControlHost.cs
- SerializationObjectManager.cs
- WebPartsSection.cs
- DesignerVerbToolStripMenuItem.cs
- SpecialNameAttribute.cs
- SpanIndex.cs
- Int32Animation.cs
- Converter.cs
- DataViewManagerListItemTypeDescriptor.cs
- ObjectQueryExecutionPlan.cs
- WebEventTraceProvider.cs
- IntegerFacetDescriptionElement.cs
- RoutedEventValueSerializer.cs
- Error.cs