private ModelElement LoadPartition(Partition partition, string modelFile) { if (string.IsNullOrEmpty(modelFile) || !File.Exists(modelFile)) { base.ModelBus.LogError(ErrorCategory.Error, Microsoft.VisualStudio.TextTemplating.Modeling.ModelBusExceptionMessages.GetInvalidModelFilePath(modelFile)); return(null); } ISerializerLocator serializerLocator = this.CreateSerializerLocator(); if (serializerLocator == null) { base.ModelBus.LogError(ErrorCategory.Error, Microsoft.VisualStudio.TextTemplating.Modeling.ModelBusExceptionMessages.GetErrorLocateSerializer(modelFile)); return(null); } IDomainModelSerializer serializerFromFileName = serializerLocator.GetSerializerFromFileName(modelFile); if (serializerFromFileName == null) { base.ModelBus.LogError(ErrorCategory.Error, Microsoft.VisualStudio.TextTemplating.Modeling.ModelBusExceptionMessages.GetErrorLocateSerializer(modelFile)); return(null); } Type domainModelType = serializerFromFileName.DomainModelType; if (!(from i in partition.DomainDataDirectory.DomainModels select i.ImplementationType).Any <Type>(t => object.Equals(t, domainModelType))) { partition.Store.LoadDomainModels(new Type[] { domainModelType }); } SerializationResult serializationResult = new SerializationResult(); ModelElement element = null; using (Transaction transaction = partition.Store.TransactionManager.BeginTransaction("Load model", true)) { element = serializerFromFileName.LoadModel(serializationResult, partition, modelFile, serializerLocator); if (!serializationResult.Failed) { transaction.Commit(); } } if (!serializationResult.Failed && (element != null)) { return(element); } base.ModelBus.LogError(ErrorCategory.Error, Microsoft.VisualStudio.TextTemplating.Modeling.ModelBusExceptionMessages.GetErrorLoadFailed(modelFile)); if (serializationResult.Failed) { foreach (SerializationMessage message in serializationResult) { base.ModelBus.LogError(FromKind(message.Kind), message.Message); } } return(null); }