void PreloadThread()
        {
            // Pre-load some stuff to make SharpDevelop more responsive once it is started.
            LoggingService.Debug("Preload-Thread started.");

            // warm up MSBuild
            string projectCode = @"
<Project DefaultTargets=""Build"" xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"" ToolsVersion=""4.0"">
  <PropertyGroup>
    <Configuration>Debug</Configuration>
    <Platform>AnyCPU</Platform>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include=""System"" />
  </ItemGroup>
  <Import Project=""$(MSBuildToolsPath)\Microsoft.CSharp.targets"" />
</Project>";
            var    project     = new Microsoft.Build.Evaluation.Project(
                new System.Xml.XmlTextReader(new System.IO.StringReader(projectCode)), null, "4.0",
                new Microsoft.Build.Evaluation.ProjectCollection());

            // warm up the XSHD loader
            ICSharpCode.AvalonEdit.Highlighting.HighlightingManager.Instance.GetDefinition("C#");
            // warm up the C# parser
            var parser = new ICSharpCode.NRefactory.CSharp.CSharpParser();
            var cu     = parser.Parse(new ICSharpCode.AvalonEdit.Document.TextDocument(@"using System;
class Test {
	int SomeMethod(string a);
	void Main(string[] b) {
	   SomeMethod(b[0 + 1]);
	}
}"), "test.cs");
            // warm up the type system
            var unresolvedFile = cu.ToTypeSystem();
            var pc             = new ICSharpCode.NRefactory.CSharp.CSharpProjectContent().AddOrUpdateFiles(unresolvedFile);

            pc = pc.AddAssemblyReferences(ICSharpCode.NRefactory.TypeSystem.Implementation.MinimalCorlib.Instance);
            var compilation = pc.CreateCompilation();
            // warm up the resolver
            var resolver = new ICSharpCode.NRefactory.CSharp.Resolver.CSharpAstResolver(compilation, cu, unresolvedFile);

            foreach (var node in cu.Descendants)
            {
                resolver.Resolve(node);
            }
            // load CSharp.Refactoring.dll
            new RedundantUsingDirectiveIssue();
            // warm up AvalonEdit (must be done on main thread)
            SD.MainThread.InvokeAsyncAndForget(
                delegate {
                object editor;
                SD.EditorControlService.CreateEditor(out editor);
                LoggingService.Debug("Preload-Thread finished.");
            }, DispatcherPriority.ApplicationIdle);
        }
Ejemplo n.º 2
0
        void PreloadThread()
        {
            // Pre-load some stuff to make SharpDevelop more responsive once it is started.
            LoggingService.Debug("Preload-Thread started.");

            // warm up MSBuild
            string projectCode = @"
            <Project DefaultTargets=""Build"" xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"" ToolsVersion=""4.0"">
              <PropertyGroup>
            <Configuration>Debug</Configuration>
            <Platform>AnyCPU</Platform>
              </PropertyGroup>
              <ItemGroup>
            <Reference Include=""System"" />
              </ItemGroup>
              <Import Project=""$(MSBuildToolsPath)\Microsoft.CSharp.targets"" />
            </Project>";
            var project = new Microsoft.Build.Evaluation.Project(
                new System.Xml.XmlTextReader(new System.IO.StringReader(projectCode)), null, "4.0",
                new Microsoft.Build.Evaluation.ProjectCollection());

            // warm up the XSHD loader
            ICSharpCode.AvalonEdit.Highlighting.HighlightingManager.Instance.GetDefinition("C#");
            // warm up the C# parser
            var parser = new ICSharpCode.NRefactory.CSharp.CSharpParser();
            var cu = parser.Parse(new ICSharpCode.AvalonEdit.Document.TextDocument(@"using System;
            class Test {
            int SomeMethod(string a);
            void Main(string[] b) {
               SomeMethod(b[0 + 1]);
            }
            }"), "test.cs");
            // warm up the type system
            var unresolvedFile = cu.ToTypeSystem();
            var pc = new ICSharpCode.NRefactory.CSharp.CSharpProjectContent().AddOrUpdateFiles(unresolvedFile);
            pc = pc.AddAssemblyReferences(ICSharpCode.NRefactory.TypeSystem.Implementation.MinimalCorlib.Instance);
            var compilation = pc.CreateCompilation();
            // warm up the resolver
            var resolver = new ICSharpCode.NRefactory.CSharp.Resolver.CSharpAstResolver(compilation, cu, unresolvedFile);
            foreach (var node in cu.Descendants) {
                resolver.Resolve(node);
            }
            // load CSharp.Refactoring.dll
            new RedundantUsingDirectiveIssue();
            // warm up AvalonEdit (must be done on main thread)
            SD.MainThread.InvokeAsyncAndForget(
                delegate {
                    object editor;
                    SD.EditorControlService.CreateEditor(out editor);
                    LoggingService.Debug("Preload-Thread finished.");
                }, DispatcherPriority.ApplicationIdle);
        }