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
- TraceListeners.cs
- DispatcherOperation.cs
- XmlDictionary.cs
- ObjectListGeneralPage.cs
- DeviceFilterEditorDialog.cs
- SafeCryptContextHandle.cs
- PerformanceCounterPermissionEntry.cs
- NoneExcludedImageIndexConverter.cs
- CategoryGridEntry.cs
- ApplicationFileCodeDomTreeGenerator.cs
- CfgSemanticTag.cs
- XmlILIndex.cs
- EntitySqlQueryState.cs
- DesignerHelpers.cs
- HttpListenerContext.cs
- WebPartConnectionsCloseVerb.cs
- GraphicsPath.cs
- LinkButton.cs
- BlockExpression.cs
- TraceUtility.cs
- TreeNodeClickEventArgs.cs
- DocumentViewerAutomationPeer.cs
- TimeSpanSecondsConverter.cs
- DbConvert.cs
- ManualResetEvent.cs
- WbemProvider.cs
- streamingZipPartStream.cs
- SoapInteropTypes.cs
- ProfilePropertySettingsCollection.cs
- PowerStatus.cs
- X509ChainPolicy.cs
- XmlQueryTypeFactory.cs
- HtmlButton.cs
- ToolStripDropDownMenu.cs
- ViewBase.cs
- WindowPattern.cs
- ConnectionStringSettingsCollection.cs
- DocumentViewerConstants.cs
- GotoExpression.cs
- ZipIOLocalFileHeader.cs
- IdnElement.cs
- ObjectDisposedException.cs
- iisPickupDirectory.cs
- SecurityTokenAuthenticator.cs
- DirectoryGroupQuery.cs
- XmlSchemaType.cs
- VersionUtil.cs
- DataGridViewCellValidatingEventArgs.cs
- FixedFlowMap.cs
- HtmlAnchor.cs
- EntityTypeEmitter.cs
- WriteTimeStream.cs
- ScriptReferenceBase.cs
- AccessControlEntry.cs
- XmlName.cs
- DotNetATv1WindowsLogEntryDeserializer.cs
- GB18030Encoding.cs
- SqlDataSourceEnumerator.cs
- ConfigXmlWhitespace.cs
- EntityFunctions.cs
- Rotation3D.cs
- SystemIcons.cs
- HttpApplicationFactory.cs
- JsonFormatWriterGenerator.cs
- ProfileParameter.cs
- ScrollProperties.cs
- ComplexLine.cs
- DetailsViewInsertEventArgs.cs
- TextTreeUndo.cs
- WhitespaceRule.cs
- Walker.cs
- XmlSerializerSection.cs
- MimeBasePart.cs
- EventListener.cs
- ActivityExecutionFilter.cs
- CollectionContainer.cs
- LinkUtilities.cs
- StringConverter.cs
- ConfigurationManagerHelper.cs
- ConfigurationCollectionAttribute.cs
- NetCodeGroup.cs
- ColumnResizeUndoUnit.cs
- ServiceTimeoutsElement.cs
- ObjectDataSourceSelectingEventArgs.cs
- Int64Converter.cs
- ApplicationGesture.cs
- BitmapInitialize.cs
- RealizationDrawingContextWalker.cs
- DataGridAddNewRow.cs
- EntityDataSourceSelectingEventArgs.cs
- SiteMapSection.cs
- DataGridRowHeaderAutomationPeer.cs
- AsyncCompletedEventArgs.cs
- FlowLayoutSettings.cs
- WebPartMovingEventArgs.cs
- XamlUtilities.cs
- Metafile.cs
- Logging.cs
- ButtonChrome.cs
- MachineKeyConverter.cs