Esempio n. 1
0
        private void Cleanup(bool cleanSupportingFolderIfNotInProject)
        {
            if (this.temporaryFolderPlaceholder != null)
            {
                this.temporaryFolderPlaceholder.Dispose();
                this.temporaryFolderPlaceholder = (ProjectPathHelper.TemporaryDirectory)null;
            }
            if (this.supportingDirectoryPath != null && cleanSupportingFolderIfNotInProject)
            {
                if (this.ImportContext.ActiveProject.FindItem(DocumentReference.Create(this.supportingDirectoryPath)) == null)
                {
                    try
                    {
                        Directory.Delete(this.supportingDirectoryPath);
                    }
                    catch (IOException ex)
                    {
                    }
                }
            }
            IDisposable disposable = this.asyncHandlerArgument as IDisposable;

            if (disposable != null)
            {
                disposable.Dispose();
            }
            this.asyncHandlerArgument = (object)null;
        }
Esempio n. 2
0
 private void ResetInternal()
 {
     this.hostData.Clear();
     this.insertionPoint          = (ISceneInsertionPoint)null;
     this.initialInsertionPoint   = (ISceneInsertionPoint)null;
     this.supportingFolderName    = (string)null;
     this.supportingDirectoryPath = (string)null;
     this.asyncHandler            = (Action <object, DoWorkEventArgs>)null;
     this.asyncHandlerArgument    = (object)null;
     this.countMessages           = 0;
     this.completeRatio           = 0.0;
     this.importContext           = (IImportManagerContext)null;
     if (this.temporaryFolderPlaceholder != null)
     {
         this.temporaryFolderPlaceholder.Dispose();
     }
     this.temporaryFolderPlaceholder = new ProjectPathHelper.TemporaryDirectory(false, true);
     this.supportingFiles            = (IList <KeyValuePair <string, string> >) new List <KeyValuePair <string, string> >();
 }
        private void OnWorkerDoWork(object sender, DoWorkEventArgs e)
        {
            AssemblyAssetAggregator.ProviderWorker providerWorker = sender as AssemblyAssetAggregator.ProviderWorker;
            providerWorker.DoWork -= new DoWorkEventHandler(this.OnWorkerDoWork);
            List <AssemblyAssetProvider> list = (List <AssemblyAssetProvider>)e.Argument;

            if (Enumerable.FirstOrDefault <AssemblyAssetProvider>((IEnumerable <AssemblyAssetProvider>)list) == null)
            {
                return;
            }
            AppDomain domain = AppDomain.CreateDomain("AssetToolDomain", (Evidence)null, new AppDomainSetup()
            {
                DisallowBindingRedirects = true
            });

            try
            {
                using (ProjectPathHelper.TemporaryDirectory temporaryDirectory = new ProjectPathHelper.TemporaryDirectory())
                {
                    using (List <AssemblyAssetProvider> .Enumerator enumerator = list.GetEnumerator())
                    {
                        while (enumerator.MoveNext())
                        {
                            AssemblyAssetProvider provider = enumerator.Current;
                            if (providerWorker.CancellationPending)
                            {
                                break;
                            }
                            if (!provider.AsynchronizedInitialize(domain, temporaryDirectory.Path, (IBackgroundWorkerWrapper)providerWorker))
                            {
                                providerWorker.InvokeUIThread(DispatcherPriority.Background, (Action)(() => this.RemoveProvider((AssetProvider)provider)));
                            }
                        }
                    }
                }
            }
            finally
            {
                AppDomain.Unload(domain);
            }
        }
Esempio n. 4
0
        public IEnumerable <IProjectItem> CreateProjectItems(string name, string targetFolder, IProject project, IEnumerable <TemplateArgument> templateArguments, CreationOptions creationOptions, out List <IProjectItem> itemsToOpen, IServiceProvider serviceProvider)
        {
            Uri uri;

            if (string.IsNullOrEmpty(name))
            {
                throw new ArgumentNullException("name");
            }
            ICodeDocumentType codeDocumentType = base.GetCodeDocumentType(serviceProvider);

            if (templateArguments != null)
            {
                templateArguments = templateArguments.Concat <TemplateArgument>(TemplateManager.GetDefaultArguments(serviceProvider.ExpressionInformationService()));
            }
            else
            {
                templateArguments = TemplateManager.GetDefaultArguments(serviceProvider.ExpressionInformationService());
            }
            IEnumerable <IProjectItem> projectItems = Enumerable.Empty <IProjectItem>();

            itemsToOpen = new List <IProjectItem>();
            using (ProjectPathHelper.TemporaryDirectory temporaryDirectory = new ProjectPathHelper.TemporaryDirectory(true))
            {
                Uri uri1 = new Uri(Microsoft.Expression.Framework.Documents.PathHelper.EnsurePathEndsInDirectorySeparator(temporaryDirectory.Path));
                List <DocumentCreationInfo> documentCreationInfos = new List <DocumentCreationInfo>();
                List <string> strs = new List <string>();
                bool          flag = false;
                foreach (VSTemplateTemplateContentProjectItem templateProjectItem in this.TemplateProjectItems)
                {
                    if (!templateProjectItem.OpenInEditorSpecified)
                    {
                        continue;
                    }
                    flag = true;
                    break;
                }
                bool             flag1             = false;
                string           str               = CodeGenerator.MakeSafeIdentifier(codeDocumentType, project.DocumentReference.DisplayNameShort, flag1);
                bool             flag2             = true;
                string           str1              = CodeGenerator.MakeSafeIdentifier(codeDocumentType, project.DocumentReference.DisplayNameShort, flag2);
                TemplateArgument templateArgument  = new TemplateArgument("safeprojectname", str);
                TemplateArgument templateArgument1 = new TemplateArgument("safeprojectname", str1);
                TemplateArgument templateArgument2 = new TemplateArgument("assemblyname", project.DocumentReference.DisplayNameShort);
                TemplateArgument templateArgument3 = new TemplateArgument("safeassemblyname", project.DocumentReference.DisplayNameShort.Replace(' ', '\u005F'));
                foreach (VSTemplateTemplateContentProjectItem vSTemplateTemplateContentProjectItem in this.TemplateProjectItems)
                {
                    string targetFileName = vSTemplateTemplateContentProjectItem.TargetFileName;
                    if (string.IsNullOrEmpty(targetFileName))
                    {
                        targetFileName = vSTemplateTemplateContentProjectItem.Value;
                    }
                    TemplateArgument[]             templateArgumentArray = new TemplateArgument[] { new TemplateArgument("fileinputname", Path.GetFileNameWithoutExtension(name)), new TemplateArgument("fileinputextension", Path.GetExtension(name)) };
                    IEnumerable <TemplateArgument> templateArguments1    = templateArgumentArray;
                    targetFileName     = TemplateParser.ReplaceTemplateArguments(targetFileName, templateArguments1);
                    templateArguments1 = templateArguments1.Concat <TemplateArgument>(templateArguments);
                    bool   flag3 = Path.GetExtension(vSTemplateTemplateContentProjectItem.Value).Equals(codeDocumentType.DefaultFileExtension, StringComparison.OrdinalIgnoreCase);
                    string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(Microsoft.Expression.Framework.Documents.PathHelper.GetFileOrDirectoryName(targetFileName));
                    if (serviceProvider.DocumentTypeManager().DocumentTypes[DocumentTypeNamesHelper.Xaml].IsDocumentTypeOf(fileNameWithoutExtension))
                    {
                        fileNameWithoutExtension = Path.GetFileNameWithoutExtension(fileNameWithoutExtension);
                    }
                    string str2 = CodeGenerator.MakeSafeIdentifier(codeDocumentType, fileNameWithoutExtension, flag3);
                    IEnumerable <TemplateArgument> templateArguments2     = templateArguments1;
                    TemplateArgument[]             templateArgumentArray1 = new TemplateArgument[] { new TemplateArgument("rootnamespace", project.DefaultNamespaceName), new TemplateArgument("projectname", project.DocumentReference.DisplayNameShort), templateArgument2, templateArgument3, null, null, null, null };
                    templateArgumentArray1[4] = (flag3 ? templateArgument1 : templateArgument);
                    templateArgumentArray1[5] = new TemplateArgument("safeitemname", str2);
                    templateArgumentArray1[6] = new TemplateArgument("safeitemrootname", str2);
                    templateArgumentArray1[7] = new TemplateArgument("culture", (string.IsNullOrEmpty(project.UICulture) ? CultureInfo.CurrentUICulture.ToString() : project.UICulture));
                    templateArguments1        = templateArguments2.Concat <TemplateArgument>(templateArgumentArray1);
                    try
                    {
                        uri = base.ResolveFileUri(targetFileName, uri1);
                    }
                    catch (UriFormatException uriFormatException)
                    {
                        continue;
                    }
                    IDocumentType documentType = project.GetDocumentType(targetFileName);
                    foreach (IDocumentType documentType1 in serviceProvider.DocumentTypeManager().DocumentTypes)
                    {
                        if (vSTemplateTemplateContentProjectItem.SubType != documentType1.Name)
                        {
                            continue;
                        }
                        documentType = documentType1;
                    }
                    if (!base.CreateFile(vSTemplateTemplateContentProjectItem.Value, base.TemplateLocation, uri, vSTemplateTemplateContentProjectItem.ReplaceParameters, templateArguments1))
                    {
                        continue;
                    }
                    string str3 = ProjectItemTemplate.AdjustTargetFolder(targetFolder, uri1.LocalPath, uri.LocalPath);
                    DocumentCreationInfo documentCreationInfo = new DocumentCreationInfo()
                    {
                        SourcePath      = uri.LocalPath,
                        TargetFolder    = str3,
                        DocumentType    = documentType,
                        CreationOptions = creationOptions
                    };
                    documentCreationInfos.Add(documentCreationInfo);
                    if (!flag)
                    {
                        if (strs.Count > 0)
                        {
                            continue;
                        }
                        strs.Add(Path.Combine(str3, Path.GetFileName(uri.LocalPath)));
                    }
                    else
                    {
                        if (!vSTemplateTemplateContentProjectItem.OpenInEditor)
                        {
                            continue;
                        }
                        strs.Add(Path.Combine(str3, Path.GetFileName(uri.LocalPath)));
                    }
                }
                if (documentCreationInfos.Count > 0)
                {
                    projectItems = project.AddItems(documentCreationInfos);
                }
                if (projectItems.Any <IProjectItem>())
                {
                    for (int i = 0; i < strs.Count; i++)
                    {
                        IProjectItem projectItem = projectItems.FirstOrDefault <IProjectItem>((IProjectItem item) => item.DocumentReference.Path.Equals(strs[i], StringComparison.OrdinalIgnoreCase));
                        if (projectItem != null)
                        {
                            itemsToOpen.Add(projectItem);
                        }
                    }
                    projectItems = projectItems.Concat <IProjectItem>(this.AddAssemblies(project));
                }
            }
            if (base.BuildOnLoad)
            {
                IProjectManager      projectManager    = serviceProvider.ProjectManager();
                IProjectBuildContext activeBuildTarget = projectManager.ActiveBuildTarget;
                projectManager.BuildManager.Build(activeBuildTarget, null, true);
                KnownProjectBase knownProjectBase = project as KnownProjectBase;
                if (knownProjectBase != null)
                {
                    knownProjectBase.CheckForChangedOrDeletedItems();
                }
            }
            return(projectItems);
        }