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
- TransformCryptoHandle.cs
- ThreadSafeList.cs
- ProxyHelper.cs
- WebHostUnsafeNativeMethods.cs
- AssemblyUtil.cs
- AccessibleObject.cs
- RelationshipEnd.cs
- X509ChainElement.cs
- MultiTrigger.cs
- RawTextInputReport.cs
- XmlCharCheckingWriter.cs
- XmlBinaryReader.cs
- DocumentApplicationJournalEntry.cs
- User.cs
- ObservableCollection.cs
- PersonalizablePropertyEntry.cs
- Bidi.cs
- ExpandableObjectConverter.cs
- BamlResourceDeserializer.cs
- PropertyInformation.cs
- Int64KeyFrameCollection.cs
- UnsafeNativeMethods.cs
- IMembershipProvider.cs
- WebDisplayNameAttribute.cs
- ObjectQueryState.cs
- LineMetrics.cs
- MultiDataTrigger.cs
- XmlCharCheckingWriter.cs
- cookiecollection.cs
- Adorner.cs
- SqlRowUpdatedEvent.cs
- PageEventArgs.cs
- XmlSchemaAnnotated.cs
- FontWeights.cs
- PointConverter.cs
- RadioButtonRenderer.cs
- FixedBufferAttribute.cs
- BitmapMetadataBlob.cs
- XmlTextWriter.cs
- CatalogPart.cs
- Byte.cs
- MatrixStack.cs
- Timer.cs
- ListViewHitTestInfo.cs
- TypeConverterBase.cs
- TableRowGroup.cs
- ExpressionSelection.cs
- SpecialNameAttribute.cs
- ErrorWebPart.cs
- XmlWriterSettings.cs
- SecondaryViewProvider.cs
- MorphHelpers.cs
- EntityDesignerUtils.cs
- WebPartDescriptionCollection.cs
- ValidatorCollection.cs
- ParallelEnumerable.cs
- TextServicesManager.cs
- ServiceReference.cs
- WindowsPrincipal.cs
- propertyentry.cs
- ThreadStartException.cs
- Run.cs
- CodeDelegateCreateExpression.cs
- ToolBarOverflowPanel.cs
- TextEditorCopyPaste.cs
- ThemeDirectoryCompiler.cs
- DesignerSerializationVisibilityAttribute.cs
- TimeoutValidationAttribute.cs
- SslStream.cs
- UdpTransportSettingsElement.cs
- Typography.cs
- WindowsRichEditRange.cs
- Gdiplus.cs
- VariableReference.cs
- ImmutableDispatchRuntime.cs
- HealthMonitoringSection.cs
- AccessDataSource.cs
- TabControl.cs
- FlowPanelDesigner.cs
- CacheMemory.cs
- Select.cs
- InputGestureCollection.cs
- MethodAccessException.cs
- OdbcErrorCollection.cs
- RegexStringValidator.cs
- XamlToRtfParser.cs
- ProjectionPruner.cs
- XmlAttributeCache.cs
- mactripleDES.cs
- TextBox.cs
- StateChangeEvent.cs
- WebMessageEncodingBindingElement.cs
- DLinqTableProvider.cs
- MethodCallTranslator.cs
- RegistrationServices.cs
- DeploymentSection.cs
- ReferentialConstraint.cs
- OleDbFactory.cs
- ProfileProvider.cs
- PaintEvent.cs