Ejemplo n.º 1
0
        internal string[] Generate(RemotableLogger2 logger, BuildEnvironment environment)
        {
            if (!_initialized)
            {
                throw new InvalidOperationException("Initialize must be called before calling Generate");
            }

            _remoteLoggerProvider.TaskLog = logger;

            return(new SourceGeneratorHost(environment).Generate());
        }
        internal string[] Generate(RemotableLogger2 logger, BuildEnvironment environment)
        {
            if (!_initialized)
            {
                throw new InvalidOperationException("Initialize must be called before calling Generate");
            }

            _remoteLoggerProvider.TaskLog = logger;

            return(new SourceGeneratorEngine(
                       environment: environment
#if IS_BUILD_HOST
                       , assemblyReferenceProvider: Uno.SourceGeneration.Host.Server.DesktopGenerationServerHost.SharedAssemblyReferenceProvider
#else
                       , null
#endif
                       ).Generate());
        }
        private string[] GenerateForCollection(EnvironmentPool collection, BuildEnvironment environment)
        {
            (RemoteSourceGeneratorEngine Wrapper, AppDomain Domain)hostEntry = (null, null);

            try
            {
                if (!collection.Hosts.TryTake(out hostEntry))
                {
                    hostEntry = CreateDomain(environment);
                }
                else
                {
                    // Try pinging the remote appdomain, as it may throw a RemotingException exception with this error:
                    // Error : Object '/b612ce25_b538_486d_882a_28a019c782ed/p6lmd0em_mrlqpchbk5gh2mk_10.rem' has been disconnected or does not exist at the server.
                    try
                    {
                        if (hostEntry.Wrapper.Ping())
                        {
                            this.Log().Debug($"Reusing generation host ({collection.Entry.ProjectFile}, {string.Join(", ", collection.Entry.SourceGenerators)})");
                        }
                    }
                    catch (System.Runtime.Remoting.RemotingException /*e*/)
                    {
                        this.Log().Debug($"Discarding disconnected generation host for ({collection.Entry.ProjectFile}, {string.Join(", ", collection.Entry.SourceGenerators)})");

                        hostEntry = CreateDomain(environment);
                    }
                }

                var remotableLogger = new RemotableLogger2(this.Log());

                return(hostEntry.Wrapper.Generate(remotableLogger, environment));
            }
            finally
            {
                if (collection != null)
                {
                    collection.Hosts.Add(hostEntry);
                }
            }
        }
Ejemplo n.º 4
0
        internal string[] Generate(RemotableLogger2 logger, BuildEnvironment environment)
        {
            _remoteLoggerProvider.TaskLog = logger;

            return(new SourceGeneratorHost(environment).Generate());
        }