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
- AttachInfo.cs
- UnicodeEncoding.cs
- DESCryptoServiceProvider.cs
- LocalizationComments.cs
- SendMailErrorEventArgs.cs
- DataBoundLiteralControl.cs
- AliasGenerator.cs
- SamlAttributeStatement.cs
- CodeTypeConstructor.cs
- TagPrefixInfo.cs
- TreeNodeStyleCollection.cs
- WebPartZoneBase.cs
- XmlReaderSettings.cs
- TagMapCollection.cs
- LoaderAllocator.cs
- SaveWorkflowCommand.cs
- DeferredTextReference.cs
- AssemblyResourceLoader.cs
- DataGridCommandEventArgs.cs
- OperationContext.cs
- MouseCaptureWithinProperty.cs
- DelayedRegex.cs
- SimpleTextLine.cs
- NamespaceQuery.cs
- ToolStripPanelRow.cs
- SortedDictionary.cs
- NumberFormatInfo.cs
- Exceptions.cs
- DSASignatureDeformatter.cs
- DependencySource.cs
- RootAction.cs
- GradientStop.cs
- ObjectSpanRewriter.cs
- UIElementPropertyUndoUnit.cs
- QilSortKey.cs
- DeclarativeCatalogPart.cs
- PeerFlooder.cs
- UnconditionalPolicy.cs
- DefaultTextStore.cs
- RotateTransform3D.cs
- SByteConverter.cs
- SymmetricKeyWrap.cs
- ColorContextHelper.cs
- GifBitmapEncoder.cs
- AsyncOperationContext.cs
- DataGridViewCellParsingEventArgs.cs
- CalendarDesigner.cs
- SelectionHighlightInfo.cs
- PropertyToken.cs
- SQLBinaryStorage.cs
- WeakEventTable.cs
- EdmComplexTypeAttribute.cs
- AssemblyBuilder.cs
- WebBrowserPermission.cs
- InstalledFontCollection.cs
- DataGridViewCellParsingEventArgs.cs
- LinkLabelLinkClickedEvent.cs
- serverconfig.cs
- MemberCollection.cs
- CfgArc.cs
- LayoutEngine.cs
- ClientSession.cs
- BuildProvider.cs
- ExpressionDumper.cs
- AmbiguousMatchException.cs
- DifferencingCollection.cs
- GACIdentityPermission.cs
- Buffer.cs
- DesignerOptionService.cs
- DataGridColumnHeaderItemAutomationPeer.cs
- FixedPosition.cs
- CalendarDay.cs
- AttachedPropertyMethodSelector.cs
- IIS7WorkerRequest.cs
- WindowsAuthenticationModule.cs
- HostUtils.cs
- HtmlTableCell.cs
- SQLMembershipProvider.cs
- DeflateEmulationStream.cs
- Config.cs
- ComboBoxAutomationPeer.cs
- SerializationHelper.cs
- HttpSysSettings.cs
- ToolStripManager.cs
- CompareValidator.cs
- SqlLiftIndependentRowExpressions.cs
- Roles.cs
- CodeTypeDeclarationCollection.cs
- LinkConverter.cs
- WebConvert.cs
- SourceInterpreter.cs
- AppDomainAttributes.cs
- bidPrivateBase.cs
- DataSourceIDConverter.cs
- GlyphRunDrawing.cs
- DockPatternIdentifiers.cs
- ToolBarButtonDesigner.cs
- ProfileModule.cs
- FormsAuthenticationModule.cs
- SerializationAttributes.cs