public Task InitializeAsync(string replServiceProviderTypeName, string cultureName)
            {
                Debug.Assert(cultureName != null);
                using (var resetEvent = new ManualResetEventSlim(false))
                {
                    var uiThread = new Thread(() =>
                    {
                        s_control = new Control();
                        s_control.CreateControl();
                        resetEvent.Set();
                        Application.Run();
                    });
                    uiThread.SetApartmentState(ApartmentState.STA);
                    uiThread.IsBackground = true;
                    uiThread.Start();
                    resetEvent.Wait();
                }
                // TODO (tomat): we should share the copied files with the host
                var metadataFileProvider = new MetadataShadowCopyProvider(
                    Path.Combine(Path.GetTempPath(), "InteractiveHostShadow"),
                    noShadowCopyDirectories: s_systemNoShadowCopyDirectories,
                    documentationCommentsCulture: new CultureInfo(cultureName));

                var assemblyLoader          = new InteractiveAssemblyLoader(metadataFileProvider);
                var replServiceProviderType = Type.GetType(replServiceProviderTypeName);
                var replServiceProvider     = (ReplServiceProvider)Activator.CreateInstance(replServiceProviderType);
                var globals = new InteractiveScriptGlobals(Console.Out, replServiceProvider.ObjectFormatter);

                _serviceState = new ServiceState(assemblyLoader, metadataFileProvider, replServiceProvider, globals);

                return(Task.CompletedTask);
            }
            public Service()
            {
                // TODO (tomat): we should share the copied files with the host
                _metadataFileProvider = new MetadataShadowCopyProvider(
                    Path.Combine(Path.GetTempPath(), "InteractiveHostShadow"),
                    noShadowCopyDirectories: s_systemNoShadowCopyDirectories);

                _assemblyLoader = new InteractiveAssemblyLoader(_metadataFileProvider);

                _formattingOptions = new ObjectFormattingOptions(
                    memberFormat: MemberDisplayFormat.Inline,
                    quoteStrings: true,
                    useHexadecimalNumbers: false,
                    maxOutputLength: 200,
                    memberIndentation: "  ");

                _hostObject = new InteractiveHostObject();

                var initialState = new EvaluationState(
                    scriptState: null,
                    scriptOptions: ScriptOptions.Default,
                    sourceSearchPaths: ImmutableArray <string> .Empty,
                    referenceSearchPaths: ImmutableArray <string> .Empty,
                    workingDirectory: Directory.GetCurrentDirectory());

                _lastTask = Task.FromResult(initialState);

                Console.OutputEncoding = Encoding.UTF8;

                // We want to be sure to delete the shadow-copied files when the process goes away. Frankly
                // there's nothing we can do if the process is forcefully quit or goes down in a completely
                // uncontrolled manner (like a stack overflow). When the process goes down in a controlled
                // manned, we should generally expect this event to be called.
                AppDomain.CurrentDomain.ProcessExit += HandleProcessExit;
            }
Exemple #3
0
            public Task <InteractiveHostPlatformInfo.Data> InitializeAsync(
                string replServiceProviderTypeName,
                string cultureName
                )
            {
                // TODO (tomat): we should share the copied files with the host
                var metadataFileProvider = new MetadataShadowCopyProvider(
                    Path.Combine(Path.GetTempPath(), "InteractiveHostShadow"),
                    noShadowCopyDirectories: s_systemNoShadowCopyDirectories,
                    documentationCommentsCulture: new CultureInfo(cultureName)
                    );

                var assemblyLoader          = new InteractiveAssemblyLoader(metadataFileProvider);
                var replServiceProviderType = Type.GetType(replServiceProviderTypeName);
                var replServiceProvider     = (ReplServiceProvider)Activator.CreateInstance(
                    replServiceProviderType
                    );
                var globals = new InteractiveScriptGlobals(
                    Console.Out,
                    replServiceProvider.ObjectFormatter
                    );

                _serviceState = new ServiceState(
                    assemblyLoader,
                    metadataFileProvider,
                    replServiceProvider,
                    globals
                    );

                return(Task.FromResult(s_currentPlatformInfo.Serialize()));
            }
 public ServiceState(InteractiveAssemblyLoader assemblyLoader, MetadataShadowCopyProvider metadataFileProvider, ReplServiceProvider replServiceProvider, InteractiveScriptGlobals globals)
 {
     AssemblyLoader       = assemblyLoader;
     MetadataFileProvider = metadataFileProvider;
     ReplServiceProvider  = replServiceProvider;
     Globals = globals;
 }
Exemple #5
0
            public ShadowCopyReference(MetadataShadowCopyProvider provider, string originalPath, MetadataReferenceProperties properties)
                : base(properties, originalPath)
            {
                Debug.Assert(originalPath != null);
                Debug.Assert(provider != null);

                _provider = provider;
            }
            public ShadowCopyReference(MetadataShadowCopyProvider provider, string originalPath, MetadataReferenceProperties properties)
                : base(properties, originalPath)
            {
                Debug.Assert(originalPath != null);
                Debug.Assert(provider != null);

                _provider = provider;
            }
 public ShadowCopyReference(
     MetadataShadowCopyProvider provider,
     string originalPath,
     MetadataReferenceProperties properties
     ) : base(properties, originalPath)
 {
     _provider = provider;
 }
        public InteractiveAssemblyLoader(MetadataShadowCopyProvider shadowCopyProvider = null)
        {
            _shadowCopyProvider = shadowCopyProvider;

            _assembliesLoadedFromLocationByFullPath = new Dictionary<string, AssemblyAndLocation>();
            _assembliesLoadedFromLocation = new Dictionary<Assembly, LoadedAssembly>();
            _loadedAssembliesBySimpleName = new Dictionary<string, List<Assembly>>(AssemblyIdentityComparer.SimpleNameComparer);
            _dependenciesWithLocationBySimpleName = new Dictionary<string, List<AssemblyIdentityAndLocation>>();

            _runtimeAssemblyLoader = AssemblyLoaderImpl.Create(this);
        }
Exemple #9
0
        public InteractiveAssemblyLoader(MetadataShadowCopyProvider shadowCopyProvider = null)
        {
            _shadowCopyProvider = shadowCopyProvider;

            _assembliesLoadedFromLocationByFullPath = new Dictionary <string, AssemblyAndLocation>();
            _assembliesLoadedFromLocation           = new Dictionary <Assembly, LoadedAssembly>();
            _loadedAssembliesBySimpleName           = new Dictionary <string, List <LoadedAssemblyInfo> >(AssemblyIdentityComparer.SimpleNameComparer);
            _dependenciesWithLocationBySimpleName   = new Dictionary <string, List <AssemblyIdentityAndLocation> >();

            _runtimeAssemblyLoader = new DesktopAssemblyLoader(this);
        }
Exemple #10
0
 public Service()
 {
     // TODO (tomat): we should share the copied files with the host
     _metadataFileProvider = new MetadataShadowCopyProvider();
     _assemblyLoader       = new InteractiveAssemblyLoader(_metadataFileProvider);
     _sourceSearchPaths    = DefaultSourceSearchPaths;
     _formattingOptions    = new ObjectFormattingOptions(
         memberFormat: MemberDisplayFormat.Inline,
         quoteStrings: true,
         useHexadecimalNumbers: false,
         maxOutputLength: 200,
         memberIndentation: "  ");
 }
 public Service()
 {
     // TODO (tomat): we should share the copied files with the host
     _metadataFileProvider = new MetadataShadowCopyProvider();
     _assemblyLoader = new InteractiveAssemblyLoader(_metadataFileProvider);
     _sourceSearchPaths = DefaultSourceSearchPaths;
     _formattingOptions = new ObjectFormattingOptions(
         memberFormat: MemberDisplayFormat.Inline,
         quoteStrings: true,
         useHexadecimalNumbers: false,
         maxOutputLength: 200,
         memberIndentation: "  ");
 }
            public void Initialize(Type replServiceProviderType, string cultureName)
            {
                Contract.ThrowIfFalse(_serviceState == null, "Service already initialized");

                // TODO (tomat): we should share the copied files with the host
                var metadataFileProvider = new MetadataShadowCopyProvider(
                    Path.Combine(Path.GetTempPath(), "InteractiveHostShadow"),
                    noShadowCopyDirectories: s_systemNoShadowCopyDirectories,
                    documentationCommentsCulture: new CultureInfo(cultureName));

                var assemblyLoader      = new InteractiveAssemblyLoader(metadataFileProvider);
                var replServiceProvider = (ReplServiceProvider)Activator.CreateInstance(replServiceProviderType);
                var globals             = new InteractiveScriptGlobals(Console.Out, replServiceProvider.ObjectFormatter);

                _serviceState = new ServiceState(assemblyLoader, metadataFileProvider, replServiceProvider, globals);
            }
Exemple #13
0
            public void Initialize(Type replServiceProviderType, string cultureName)
            {
                Debug.Assert(replServiceProviderType != null);
                Debug.Assert(cultureName != null);

                Debug.Assert(_metadataFileProvider == null);
                Debug.Assert(_assemblyLoader == null);
                Debug.Assert(_replServiceProvider == null);

                // TODO (tomat): we should share the copied files with the host
                _metadataFileProvider = new MetadataShadowCopyProvider(
                    Path.Combine(Path.GetTempPath(), "InteractiveHostShadow"),
                    noShadowCopyDirectories: s_systemNoShadowCopyDirectories,
                    documentationCommentsCulture: new CultureInfo(cultureName));

                _assemblyLoader = new InteractiveAssemblyLoader(_metadataFileProvider);

                _replServiceProvider = (ReplServiceProvider)Activator.CreateInstance(replServiceProviderType);
            }
            public Service()
            {
                // TODO (tomat): we should share the copied files with the host
                _metadataFileProvider = new MetadataShadowCopyProvider(
                    Path.Combine(Path.GetTempPath(), "InteractiveHostShadow"),
                    noShadowCopyDirectories: s_systemNoShadowCopyDirectories);
                _assemblyLoader    = new InteractiveAssemblyLoader(_metadataFileProvider);
                _formattingOptions = new ObjectFormattingOptions(
                    memberFormat: MemberDisplayFormat.Inline,
                    quoteStrings: true,
                    useHexadecimalNumbers: false,
                    maxOutputLength: 200,
                    memberIndentation: "  ");

                // We want to be sure to delete the shadow-copied files when the process goes away. Frankly
                // there's nothing we can do if the process is forcefully quit or goes down in a completely
                // uncontrolled manner (like a stack overflow). When the process goes down in a controlled
                // manned, we should generally expect this event to be called.
                AppDomain.CurrentDomain.ProcessExit += HandleProcessExit;
            }
            public Service()
            {
                // TODO (tomat): we should share the copied files with the host
                _metadataFileProvider = new MetadataShadowCopyProvider(
                    Path.Combine(Path.GetTempPath(), "InteractiveHostShadow"),
                    noShadowCopyDirectories: s_systemNoShadowCopyDirectories);

                _options = ScriptOptions.Default.WithSearchPaths(DefaultReferenceSearchPaths);

                _assemblyLoader = new InteractiveAssemblyLoader(_metadataFileProvider);
                _sourceSearchPaths = DefaultSourceSearchPaths;
                _formattingOptions = new ObjectFormattingOptions(
                    memberFormat: MemberDisplayFormat.Inline,
                    quoteStrings: true,
                    useHexadecimalNumbers: false,
                    maxOutputLength: 200,
                    memberIndentation: "  ");

                // We want to be sure to delete the shadow-copied files when the process goes away. Frankly
                // there's nothing we can do if the process is forcefully quit or goes down in a completely
                // uncontrolled manner (like a stack overflow). When the process goes down in a controlled
                // manned, we should generally expect this event to be called.
                AppDomain.CurrentDomain.ProcessExit += HandleProcessExit;
            }
        public AssemblyLoader(MetadataShadowCopyProvider shadowCopyProvider = null)
        {
            this.shadowCopyProvider = shadowCopyProvider;

            Assembly mscorlib = typeof(object).Assembly;
            loadedAssembliesByPath = new Dictionary<string, Assembly>(StringComparer.OrdinalIgnoreCase)
            {
                { mscorlib.Location, mscorlib }
            };

            loadedAssemblies = new Dictionary<Assembly, LoadedAssembly>()
            {
                { mscorlib, new LoadedAssembly { LoadedExplicitly = true, OriginalPath = mscorlib.Location } }
            };

            loadedAssembliesBySimpleName = new Dictionary<string, List<Assembly>>(StringComparer.OrdinalIgnoreCase)
            {
                { "mscorlib", new List<Assembly> { mscorlib } }
            };

            identitiesBySimpleName = new Dictionary<string, List<AssemblyIdentity>>();

            AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(AssemblyResolve);
        }
 public MetadataShadowCopyProviderTests()
 {
     _provider = new MetadataShadowCopyProvider(TempRoot.Root);
 }
 public MetadataShadowCopyProviderTests()
 {
     _provider = CreateProvider(CultureInfo.InvariantCulture);
 }
 public MetadataShadowCopyProviderTests()
 {
     _provider = new MetadataShadowCopyProvider(TempRoot.Root);
 }
        public InteractiveAssemblyLoader(MetadataShadowCopyProvider shadowCopyProvider = null)
        {
            _shadowCopyProvider = shadowCopyProvider;

            Assembly mscorlib = typeof(object).GetTypeInfo().Assembly;

            _assembliesLoadedFromLocationByFullPath = new Dictionary<string, AssemblyAndLocation>();
            _assembliesLoadedFromLocation = new Dictionary<Assembly, LoadedAssembly>();
            _loadedAssembliesBySimpleName = new Dictionary<string, List<Assembly>>(AssemblyIdentityComparer.SimpleNameComparer);
            _dependenciesWithLocationBySimpleName = new Dictionary<string, List<AssemblyIdentityAndLocation>>();

            CorLightup.Desktop.AddAssemblyResolveHandler(AssemblyResolve);
        }
 public MetadataShadowCopyProviderTests()
 {
     _provider = CreateProvider(CultureInfo.InvariantCulture);
 }
 public MetadataShadowCopyProviderTests()
 {
     _provider = new MetadataShadowCopyProvider(TempRoot.Root, s_systemNoShadowCopyDirectories);
 }
            public Service()
            {
                // TODO (tomat): we should share the copied files with the host
                _metadataFileProvider = new MetadataShadowCopyProvider(
                    Path.Combine(Path.GetTempPath(), "InteractiveHostShadow"),
                    noShadowCopyDirectories: s_systemNoShadowCopyDirectories);

                _assemblyLoader = new InteractiveAssemblyLoader(_metadataFileProvider);

                _formattingOptions = new ObjectFormattingOptions(
                    memberFormat: MemberDisplayFormat.Inline,
                    quoteStrings: true,
                    useHexadecimalNumbers: false,
                    maxOutputLength: 200,
                    memberIndentation: "  ");

                _hostObject = new InteractiveHostObject();

                var initialState = new EvaluationState(
                    scriptState: null,
                    scriptOptions: ScriptOptions.Default,
                    sourceSearchPaths: ImmutableArray<string>.Empty,
                    referenceSearchPaths: ImmutableArray<string>.Empty,
                    workingDirectory: Directory.GetCurrentDirectory());

                _lastTask = Task.FromResult(initialState);

                Console.OutputEncoding = Encoding.UTF8;
              
                // We want to be sure to delete the shadow-copied files when the process goes away. Frankly
                // there's nothing we can do if the process is forcefully quit or goes down in a completely
                // uncontrolled manner (like a stack overflow). When the process goes down in a controlled
                // manned, we should generally expect this event to be called.
                AppDomain.CurrentDomain.ProcessExit += HandleProcessExit;
            }
            public void Initialize(Type replServiceProviderType, string cultureName)
            {
                Debug.Assert(replServiceProviderType != null);
                Debug.Assert(cultureName != null);

                Debug.Assert(_metadataFileProvider == null);
                Debug.Assert(_assemblyLoader == null);
                Debug.Assert(_replServiceProvider == null);

                // TODO (tomat): we should share the copied files with the host
                _metadataFileProvider = new MetadataShadowCopyProvider(
                    Path.Combine(Path.GetTempPath(), "InteractiveHostShadow"),
                    noShadowCopyDirectories: s_systemNoShadowCopyDirectories,
                    documentationCommentsCulture: new CultureInfo(cultureName));

                _assemblyLoader = new InteractiveAssemblyLoader(_metadataFileProvider);

                _replServiceProvider = (ReplServiceProvider)Activator.CreateInstance(replServiceProviderType);

                _globals = new InteractiveScriptGlobals(Console.Out, _replServiceProvider.ObjectFormatter);
            }
 public MetadataShadowCopyProviderTests()
 {
     _provider = new MetadataShadowCopyProvider(TempRoot.Root, s_systemNoShadowCopyDirectories);
 }