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
- HeaderCollection.cs
- InstanceNameConverter.cs
- InstallerTypeAttribute.cs
- EmptyStringExpandableObjectConverter.cs
- Logging.cs
- JavaScriptString.cs
- MutexSecurity.cs
- JoinTreeNode.cs
- VisualBrush.cs
- DesigntimeLicenseContext.cs
- KeyValueInternalCollection.cs
- CodeVariableReferenceExpression.cs
- LockingPersistenceProvider.cs
- PagedDataSource.cs
- NativeMethods.cs
- EntityCommandCompilationException.cs
- ConsoleTraceListener.cs
- WebPartEditorApplyVerb.cs
- PropertyValueChangedEvent.cs
- EnumType.cs
- CodeExporter.cs
- StandardCommands.cs
- TabControl.cs
- sitestring.cs
- HtmlControlPersistable.cs
- PointAnimationUsingKeyFrames.cs
- TextBox.cs
- ArgIterator.cs
- DesignerDataTable.cs
- FilteredReadOnlyMetadataCollection.cs
- FlowDocumentFormatter.cs
- WebServiceHandler.cs
- DesignBindingPicker.cs
- ToolStripContainer.cs
- PagePropertiesChangingEventArgs.cs
- DocumentViewerAutomationPeer.cs
- MemoryFailPoint.cs
- HttpsChannelListener.cs
- VoiceSynthesis.cs
- NativeWindow.cs
- PageAdapter.cs
- ShaderEffect.cs
- EventMappingSettingsCollection.cs
- CqlWriter.cs
- EncoderExceptionFallback.cs
- StringSorter.cs
- OutKeywords.cs
- SizeIndependentAnimationStorage.cs
- LocationUpdates.cs
- ControlBuilder.cs
- coordinatorscratchpad.cs
- LogLogRecordEnumerator.cs
- TextTreeFixupNode.cs
- AspCompat.cs
- CurrentChangingEventManager.cs
- CryptoApi.cs
- PersonalizationProviderHelper.cs
- RsaKeyGen.cs
- SspiWrapper.cs
- RuntimeVariableList.cs
- RegistryConfigurationProvider.cs
- LinkLabelLinkClickedEvent.cs
- ToolStripRendererSwitcher.cs
- UpdateCommand.cs
- EditorBrowsableAttribute.cs
- Pair.cs
- ObservableDictionary.cs
- ConfigXmlSignificantWhitespace.cs
- LateBoundChannelParameterCollection.cs
- HttpAsyncResult.cs
- WorkerProcess.cs
- UnknownWrapper.cs
- LayoutEditorPart.cs
- TimeoutValidationAttribute.cs
- RelationshipSet.cs
- BatchWriter.cs
- EventLogReader.cs
- BamlVersionHeader.cs
- BufferedGraphicsContext.cs
- PermissionAttributes.cs
- ToReply.cs
- PartialCachingControl.cs
- WaitHandleCannotBeOpenedException.cs
- ExpressionVisitor.cs
- InfoCardSymmetricCrypto.cs
- BezierSegment.cs
- FontSizeConverter.cs
- HttpRuntime.cs
- SafePEFileHandle.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- TagMapInfo.cs
- TrackingLocation.cs
- XmlObjectSerializerContext.cs
- HandleRef.cs
- NullableDecimalAverageAggregationOperator.cs
- DefaultObjectMappingItemCollection.cs
- TextTabProperties.cs
- Rect3D.cs
- WmlObjectListAdapter.cs
- ProfileSection.cs