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
- BoolExpressionVisitors.cs
- ParameterToken.cs
- Oid.cs
- HebrewCalendar.cs
- BroadcastEventHelper.cs
- ValidationError.cs
- Timer.cs
- ConnectionStringsExpressionEditor.cs
- ObjectPersistData.cs
- ISessionStateStore.cs
- ViewPort3D.cs
- PropertyCollection.cs
- BigInt.cs
- XmlAttributeProperties.cs
- TreeChangeInfo.cs
- HwndHostAutomationPeer.cs
- WebScriptEnablingElement.cs
- ControlUtil.cs
- HostingEnvironmentSection.cs
- PersonalizableAttribute.cs
- CodeSnippetStatement.cs
- HttpResponseHeader.cs
- SessionStateItemCollection.cs
- WebRequestModulesSection.cs
- HeaderCollection.cs
- GeneralTransform2DTo3D.cs
- DrawingServices.cs
- TextSerializer.cs
- HttpRawResponse.cs
- SQLSingleStorage.cs
- GeneralTransform2DTo3DTo2D.cs
- XPathSelfQuery.cs
- ErrorProvider.cs
- ToolTipService.cs
- ProxyWebPartConnectionCollection.cs
- MobileErrorInfo.cs
- InputManager.cs
- FixedSOMPageElement.cs
- Decoder.cs
- TreeViewBindingsEditor.cs
- ProviderConnectionPointCollection.cs
- PrivacyNoticeElement.cs
- FastEncoder.cs
- DocumentReference.cs
- shaperfactoryquerycacheentry.cs
- CombinedGeometry.cs
- DataTableNameHandler.cs
- ToolZone.cs
- PrePostDescendentsWalker.cs
- SpnEndpointIdentity.cs
- TextParagraphView.cs
- DBBindings.cs
- RenderTargetBitmap.cs
- XmlBoundElement.cs
- OutputWindow.cs
- BrowserDefinitionCollection.cs
- Blend.cs
- SystemResourceHost.cs
- MDIWindowDialog.cs
- LogExtentCollection.cs
- TextRange.cs
- MailAddressCollection.cs
- DataExpression.cs
- ResourceDescriptionAttribute.cs
- ComponentRenameEvent.cs
- RIPEMD160Managed.cs
- HwndSourceParameters.cs
- XmlMtomWriter.cs
- UserPersonalizationStateInfo.cs
- OleAutBinder.cs
- XPathException.cs
- SQLSingle.cs
- BitmapEffectInputData.cs
- IResourceProvider.cs
- Wildcard.cs
- PenLineCapValidation.cs
- UnauthorizedAccessException.cs
- ShapeTypeface.cs
- CodeStatementCollection.cs
- Lazy.cs
- GPRECTF.cs
- Run.cs
- MultiPropertyDescriptorGridEntry.cs
- LabelEditEvent.cs
- InputLanguageManager.cs
- ThousandthOfEmRealPoints.cs
- ButtonChrome.cs
- TableItemProviderWrapper.cs
- GZipStream.cs
- ExpressionVisitor.cs
- SByteStorage.cs
- FtpWebRequest.cs
- WebServiceEnumData.cs
- AgileSafeNativeMemoryHandle.cs
- UnsettableComboBox.cs
- MiniMapControl.xaml.cs
- TreeViewImageIndexConverter.cs
- DataStorage.cs
- FileClassifier.cs
- UrlRoutingHandler.cs