Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / System / Windows / Markup / BamlVersionHeader.cs / 1 / BamlVersionHeader.cs
/****************************************************************************\ * * File: BamlVersionHeader.cs * * Copyright (C) 2005 by Microsoft Corporation. All rights reserved. * \***************************************************************************/ using System; using System.IO; using System.Globalization; using System.Diagnostics; using MS.Internal.IO.Packaging.CompoundFile; #if PBTCOMPILER namespace MS.Internal.Markup #else namespace System.Windows.Markup #endif { internal class BamlVersionHeader { // The current BAML record version. This is incremented whenever // the BAML format changes // Baml Format Breaking Changes should change this. internal static readonly VersionPair BamlWriterVersion; static BamlVersionHeader() { // Initialize the Version number this way so that it can be // seen in the Lutz Reflector. BamlWriterVersion = new VersionPair(0, 96); } public BamlVersionHeader() { _bamlVersion = new FormatVersion("MSBAML", BamlWriterVersion); } public FormatVersion BamlVersion { get { return _bamlVersion; } #if !PBTCOMPILER set { _bamlVersion = value; } #endif } // This is used by Async loading to measure if the whole record is present static public int BinarySerializationSize { get { // Unicode "MSBAML" = 12 // + 4 bytes length header = 12 + 4 = 16 // + 3*(16bit MinorVer + 16bit MajorVer) = 16+(3*(2+2))= 28 // For product stability the size of this data structure // shouldn't change anyway. return 28; } } #if !PBTCOMPILER internal void LoadVersion(BinaryReader bamlBinaryReader) { #if DEBUG long posStart = bamlBinaryReader.BaseStream.Position; #endif BamlVersion = FormatVersion.LoadFromStream(bamlBinaryReader.BaseStream); #if DEBUG long posEnd = bamlBinaryReader.BaseStream.Position; Debug.Assert((posEnd-posStart) == BamlVersionHeader.BinarySerializationSize, "Incorrect Baml Version Header Size"); #endif // We're assuming that only major versions are significant for compatibility, // so if we have a major version in the file that is higher than that in // the code, we can't read it. if (BamlVersion.ReaderVersion != BamlWriterVersion) { throw new InvalidOperationException(SR.Get(SRID.ParserBamlVersion, (BamlVersion.ReaderVersion.Major.ToString(CultureInfo.CurrentCulture) + "." + BamlVersion.ReaderVersion.Minor.ToString(CultureInfo.CurrentCulture)), (BamlWriterVersion.Major.ToString(CultureInfo.CurrentCulture) + "." + BamlWriterVersion.Minor.ToString(CultureInfo.CurrentCulture)))); } } #endif internal void WriteVersion(BinaryWriter bamlBinaryWriter) { #if DEBUG long posStart = bamlBinaryWriter.BaseStream.Position; #endif BamlVersion.SaveToStream(bamlBinaryWriter.BaseStream); #if DEBUG long posEnd = bamlBinaryWriter.BaseStream.Position; if(-1 == posStart) { long length = bamlBinaryWriter.BaseStream.Length; Debug.Assert(length == BamlVersionHeader.BinarySerializationSize, "Incorrect Baml Version Header Size"); } else { Debug.Assert((posEnd-posStart) == BamlVersionHeader.BinarySerializationSize, "Incorrect Baml Version Header Size"); } #endif } FormatVersion _bamlVersion; } } // 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
- QilList.cs
- AnnotationService.cs
- NativeMethods.cs
- CodePageUtils.cs
- PlatformCulture.cs
- AnnotationAuthorChangedEventArgs.cs
- InputProcessorProfiles.cs
- TextEditorCharacters.cs
- FillErrorEventArgs.cs
- invalidudtexception.cs
- DataKey.cs
- BuilderElements.cs
- Brushes.cs
- LoginDesignerUtil.cs
- InputLangChangeRequestEvent.cs
- InputBindingCollection.cs
- listitem.cs
- XmlAttributeOverrides.cs
- CqlQuery.cs
- ProfileSettingsCollection.cs
- CommentAction.cs
- DetailsViewInsertEventArgs.cs
- Options.cs
- HttpPostClientProtocol.cs
- PersonalizationState.cs
- ParameterBuilder.cs
- OleDbWrapper.cs
- WebPartCatalogCloseVerb.cs
- RegexWorker.cs
- SerializationInfo.cs
- ToolboxItemImageConverter.cs
- SharedUtils.cs
- SizeAnimationBase.cs
- RelatedCurrencyManager.cs
- EncryptedKeyIdentifierClause.cs
- OdbcErrorCollection.cs
- ParserOptions.cs
- DictionaryItemsCollection.cs
- GreenMethods.cs
- HttpContext.cs
- CreateUserWizardStep.cs
- ContextStack.cs
- SQLInt16.cs
- LinkedList.cs
- SessionPageStateSection.cs
- diagnosticsswitches.cs
- XPathCompiler.cs
- TransactionOptions.cs
- PolicyLevel.cs
- SslStream.cs
- FreezableDefaultValueFactory.cs
- SiteMapPath.cs
- ButtonStandardAdapter.cs
- InkCanvasInnerCanvas.cs
- sqlcontext.cs
- StrongNameUtility.cs
- SafeSystemMetrics.cs
- LookupBindingPropertiesAttribute.cs
- LogEntryDeserializer.cs
- HtmlImage.cs
- InputProviderSite.cs
- MethodAccessException.cs
- Visitor.cs
- ExpressionHelper.cs
- DependencyObjectCodeDomSerializer.cs
- QueryComponents.cs
- TrailingSpaceComparer.cs
- NodeLabelEditEvent.cs
- PageAdapter.cs
- DrawingCollection.cs
- RegexMatch.cs
- XPathNodePointer.cs
- DbConnectionInternal.cs
- RuntimeHelpers.cs
- SmiEventStream.cs
- XmlUtilWriter.cs
- ObjectToModelValueConverter.cs
- AppLevelCompilationSectionCache.cs
- BitArray.cs
- DataColumnPropertyDescriptor.cs
- Scene3D.cs
- Int32RectValueSerializer.cs
- HttpCookiesSection.cs
- QueryRelOp.cs
- InvokeWebServiceDesigner.cs
- HtmlFormAdapter.cs
- WebPartDisplayMode.cs
- SoapSchemaMember.cs
- AsyncPostBackTrigger.cs
- InternalBufferOverflowException.cs
- PrintingPermission.cs
- HScrollProperties.cs
- CategoriesDocument.cs
- XPathCompileException.cs
- BindingMemberInfo.cs
- AssemblyBuilder.cs
- DigitShape.cs
- ClientScriptManager.cs
- Manipulation.cs
- ControlCachePolicy.cs