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
- FileReservationCollection.cs
- BitmapDecoder.cs
- XmlNodeComparer.cs
- XmlIgnoreAttribute.cs
- SizeF.cs
- BitmapEncoder.cs
- FontWeight.cs
- ByteStream.cs
- IISUnsafeMethods.cs
- OrderingInfo.cs
- QueryCacheKey.cs
- DataBinding.cs
- CrossAppDomainChannel.cs
- ToolStripPanelCell.cs
- PathSegment.cs
- BaseConfigurationRecord.cs
- ModulesEntry.cs
- Char.cs
- TimeoutConverter.cs
- FloaterParagraph.cs
- ToolStripOverflow.cs
- EdmProviderManifest.cs
- TableNameAttribute.cs
- ListViewDeleteEventArgs.cs
- DataGridViewDataErrorEventArgs.cs
- ISAPIApplicationHost.cs
- RenderData.cs
- ByteStack.cs
- SecurityDocument.cs
- XhtmlBasicObjectListAdapter.cs
- SetStoryboardSpeedRatio.cs
- ProfileManager.cs
- FieldToken.cs
- LogicalMethodInfo.cs
- UnknownBitmapDecoder.cs
- XslCompiledTransform.cs
- RangeBaseAutomationPeer.cs
- Page.cs
- MultiTrigger.cs
- GotoExpression.cs
- HttpResponse.cs
- DependencySource.cs
- ThumbAutomationPeer.cs
- DateTimeFormatInfoScanner.cs
- SR.cs
- MouseActionValueSerializer.cs
- PropertyChange.cs
- Help.cs
- RuleSettings.cs
- KeyEvent.cs
- FrameworkElement.cs
- WebPartVerb.cs
- ObjectStateEntryDbUpdatableDataRecord.cs
- LinearGradientBrush.cs
- ErrorHandlerFaultInfo.cs
- SynchronizationLockException.cs
- ResolveMatchesMessageCD1.cs
- XsltSettings.cs
- LinearKeyFrames.cs
- Aes.cs
- SoapWriter.cs
- TrailingSpaceComparer.cs
- StringKeyFrameCollection.cs
- ThrowOnMultipleAssignment.cs
- BitmapEffectInput.cs
- EntityDataSourceWrapper.cs
- ChannelSinkStacks.cs
- PolicyLevel.cs
- PageContentAsyncResult.cs
- BezierSegment.cs
- BooleanConverter.cs
- TreeNodeCollection.cs
- GridEntryCollection.cs
- XamlNamespaceHelper.cs
- AuthorizationRuleCollection.cs
- IQueryable.cs
- HostVisual.cs
- Pair.cs
- SqlUtil.cs
- LongCountAggregationOperator.cs
- SystemIPv6InterfaceProperties.cs
- RankException.cs
- ConnectionsZone.cs
- NavigationPropertyEmitter.cs
- VerbConverter.cs
- CollectionViewSource.cs
- CompoundFileStorageReference.cs
- StrongNameUtility.cs
- Helper.cs
- RootContext.cs
- ListViewCancelEventArgs.cs
- SpeechUI.cs
- HostingEnvironment.cs
- CommonGetThemePartSize.cs
- bindurihelper.cs
- FamilyCollection.cs
- ComplexPropertyEntry.cs
- CustomWebEventKey.cs
- TrustDriver.cs
- AnnotationComponentManager.cs