Пример #1
0
        internal object GetExtension(string extensionTypeAssemblyQualifiedName)
        {
            VSDesignerPerfEventProvider perfEventProvider = new VSDesignerPerfEventProvider();

            perfEventProvider.WriteEvent(VSDesignerPerfEvents.WorkflowDesignerExtensionManagerGetExtensionStart);
            try
            {
                using (ExtensionAssemblyResolvingScope scope = new ExtensionAssemblyResolvingScope(this.logger, this.ExtensionsDirectory))
                {
                    Type hostServiceType = Type.GetType(extensionTypeAssemblyQualifiedName);
                    if (hostServiceType == null)
                    {
                        return(null);
                    }

                    return(this.GetExtension(hostServiceType));
                }
            }
            finally
            {
                perfEventProvider.WriteEvent(VSDesignerPerfEvents.WorkflowDesignerExtensionManagerGetExtensionEnd);
            }
        }
        public override bool Execute()
        {
            VSDesignerPerfEventProvider perfEventProvider = new VSDesignerPerfEventProvider();
            perfEventProvider.WriteEvent(VSDesignerPerfEvents.XamlBuildTaskExecuteStart);

            try
            {
                if (IsInProcessXamlMarkupCompile)
                {
                    bool acquiredLock = false;
                    try
                    {
                        Monitor.TryEnter(referencesCacheLock, ref acquiredLock);
                        if (acquiredLock)
                        {
                            return ReuseAppDomainAndExecute();
                        }
                        else
                        {
                            return GetAppDomainAndExecute();
                        }
                    }
                    finally
                    {
                        if (acquiredLock)
                        {
                            Monitor.Exit(referencesCacheLock);
                        }
                    }
                }
                else
                {
                    return GetAppDomainAndExecute();
                }
            }
            finally
            {
                perfEventProvider.WriteEvent(VSDesignerPerfEvents.XamlBuildTaskExecuteEnd);
            }
        }