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
- MemberRelationshipService.cs
- ResolveCriteria11.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- GiveFeedbackEventArgs.cs
- Currency.cs
- ListChangedEventArgs.cs
- IItemProperties.cs
- Compensate.cs
- ImageCodecInfo.cs
- FormDocumentDesigner.cs
- WhiteSpaceTrimStringConverter.cs
- AuthenticationServiceManager.cs
- NegotiateStream.cs
- HiddenFieldDesigner.cs
- CompositeActivityValidator.cs
- UInt16Storage.cs
- OneToOneMappingSerializer.cs
- BulletedListEventArgs.cs
- ResourceProviderFactory.cs
- Codec.cs
- DataTrigger.cs
- BooleanConverter.cs
- Constant.cs
- Expressions.cs
- TextServicesContext.cs
- ImageIndexConverter.cs
- RequestCacheManager.cs
- InstanceContextManager.cs
- EntityException.cs
- BuildProviderCollection.cs
- LZCodec.cs
- LineGeometry.cs
- PassportPrincipal.cs
- MgmtResManager.cs
- SchemaElementDecl.cs
- DefaultHttpHandler.cs
- HttpListenerRequest.cs
- AuthenticationManager.cs
- TextLineResult.cs
- Primitive.cs
- XmlEncodedRawTextWriter.cs
- AvTraceFormat.cs
- RemotingSurrogateSelector.cs
- SiteMapNodeItem.cs
- AutomationElementCollection.cs
- PointLightBase.cs
- DocumentApplicationState.cs
- WebRequestModuleElement.cs
- LoginView.cs
- DoubleLink.cs
- SqlPersonalizationProvider.cs
- HttpProfileBase.cs
- XmlReaderSettings.cs
- Soap.cs
- TypedTableGenerator.cs
- DynamicUpdateCommand.cs
- OletxVolatileEnlistment.cs
- NotImplementedException.cs
- COM2TypeInfoProcessor.cs
- CollectionDataContract.cs
- StylusEditingBehavior.cs
- SqlDataSourceCommandEventArgs.cs
- ServiceDescriptionReflector.cs
- New.cs
- WebBrowserPermission.cs
- TreeViewImageGenerator.cs
- Hashtable.cs
- LinkLabel.cs
- ResourceProperty.cs
- CodeExpressionCollection.cs
- COM2TypeInfoProcessor.cs
- StrongTypingException.cs
- MatrixTransform.cs
- XmlAnyElementAttributes.cs
- TextElementAutomationPeer.cs
- TypedReference.cs
- DataContract.cs
- AttachedPropertyBrowsableWhenAttributePresentAttribute.cs
- DiscoveryDocumentSerializer.cs
- SafeProcessHandle.cs
- ContractReference.cs
- BindingManagerDataErrorEventArgs.cs
- WindowsComboBox.cs
- MetadataPropertyCollection.cs
- XmlAtomErrorReader.cs
- DBPropSet.cs
- StsCommunicationException.cs
- ClientRolePrincipal.cs
- StylusPointPropertyInfoDefaults.cs
- TreeViewEvent.cs
- LookupNode.cs
- TypeElement.cs
- SessionEndingCancelEventArgs.cs
- DocumentProperties.cs
- XmlValidatingReaderImpl.cs
- XPathConvert.cs
- DesignerTransaction.cs
- SqlGatherConsumedAliases.cs
- XmlElementList.cs
- MediaEntryAttribute.cs