protected override async Task CreateProjectCodeProviderFromSourceAsync(string source, AssemblyName assemblyName)
        {
            if (this.ProjectProviders.ContainsKey(assemblyName))
            {
                var message = string.Format("Same assembly name used in more than one project: {0}", assemblyName);
                Console.WriteLine(message);
                return;
                //throw new Exception(message);
            }

            var provider = await AsyncProjectCodeProvider.CreateFromSourceAsync(source, assemblyName, this);

            this.ProjectProviders.Add(assemblyName, provider);
        }
        protected override async Task CreateProjectCodeProviderAsync(string projectPath, AssemblyName assemblyName)
        {
            if (this.ProjectProviders.ContainsKey(assemblyName))
            {
                var message = string.Format("Same assembly name used in more than one project: {0}", assemblyName);
                Console.WriteLine(message);
                return;
                //throw new Exception(message);
            }

            var provider = await AsyncProjectCodeProvider.CreateFromProjectAsync(projectPath, this);

            lock (this.ProjectProviders)
            {
                //// TODO: Hack! remove these lines!
                //if (this.ProjectProviders.ContainsKey(assemblyName))
                //{
                //	var oldProvider = this.ProjectProviders[assemblyName];
                //	this.ProjectProviders.Remove(assemblyName);
                //}

                this.ProjectProviders.Add(assemblyName, provider);
            }
        }