Esempio n. 1
0
        public virtual List <MetadataReference> GetReferences()
        {
            var provider = new MetadataReferencesProvider();

            NamedReferences.ForEach(name => provider.AddReferenceFromName(name));
            References.ForEach(r => provider.Add(r));
            return(provider.GetApplicationReferences());
        }
Esempio n. 2
0
        public RazorTemplating([NotNull] ICompilationService compilationService,
                               [NotNull] MetadataReferencesProvider metadataReferencesProvider)
        {
            Check.NotNull(compilationService, nameof(compilationService));
            Check.NotNull(metadataReferencesProvider, nameof(metadataReferencesProvider));

            _compilationService         = compilationService;
            _metadataReferencesProvider = metadataReferencesProvider;
        }
Esempio n. 3
0
        public RazorTemplating(
            [NotNull] ICompilationService compilationService,
            [NotNull] MetadataReferencesProvider metadataReferencesProvider,
            [NotNull] ModelUtilities modelUtilities,
            [NotNull] CSharpUtilities csharpUtiliies)
        {
            Check.NotNull(compilationService, nameof(compilationService));
            Check.NotNull(metadataReferencesProvider, nameof(metadataReferencesProvider));
            Check.NotNull(modelUtilities, nameof(modelUtilities));
            Check.NotNull(csharpUtiliies, nameof(csharpUtiliies));

            _compilationService         = compilationService;
            _metadataReferencesProvider = metadataReferencesProvider;
            _modelUtilities             = modelUtilities;
            _csharpUtiliies             = csharpUtiliies;
        }
Esempio n. 4
0
        private ServiceProvider SetupServiceProvider()
        {
#if DNX451 || DNXCORE50
            // provides ILibraryManager etc services
            var serviceProvider = new ServiceProvider(
                CallContextServiceLocator.Locator.ServiceProvider);
#else
            var serviceProvider = new ServiceProvider(null);
#endif
            serviceProvider.AddService(typeof(CSharpCodeGeneratorHelper), new CSharpCodeGeneratorHelper());
            serviceProvider.AddService(typeof(ModelUtilities), new ModelUtilities());
            var metadataReferencesProvider = new MetadataReferencesProvider(serviceProvider);
            serviceProvider.AddService(typeof(MetadataReferencesProvider), metadataReferencesProvider);
            var compilationService = new RoslynCompilationService();
            serviceProvider.AddService(typeof(ITemplating), new RazorTemplating(compilationService, metadataReferencesProvider));

            return(serviceProvider);
        }
Esempio n. 5
0
        private List <MetadataReference> SetupMetadataReferencesForCompilationOfGeneratedCode(
            MetadataReferencesProvider metadataReferencesProvider)
        {
            metadataReferencesProvider.AddReferenceFromName("EntityFramework.Core");
            metadataReferencesProvider.AddReferenceFromName("EntityFramework.Relational");
            metadataReferencesProvider.AddReferenceFromName("EntityFramework.SqlServer");

#if DNXCORE50 || NETCORE50
            metadataReferencesProvider.AddReferenceFromName("System.Data.Common");
            metadataReferencesProvider.AddReferenceFromName("System.Linq.Expressions");
            metadataReferencesProvider.AddReferenceFromName("System.Reflection");

            return(metadataReferencesProvider.GetApplicationReferences());
#else
            var metadataReferences = metadataReferencesProvider.GetApplicationReferences();
            metadataReferences.Add(MetadataReference.CreateFromFile(
                                       Assembly.Load(new AssemblyName(
                                                         "System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")).Location));

            return(metadataReferences);
#endif
        }
Esempio n. 6
0
        public DatabaseTool(
            [CanBeNull] IServiceProvider serviceProvider,
            [NotNull] ILoggerProvider loggerProvider)
        {
            Check.NotNull(loggerProvider, nameof(loggerProvider));

            _serviceProvider = new ServiceProvider(serviceProvider);
            var loggerFactory = new LoggerFactory();

            loggerFactory.AddProvider(loggerProvider);
            _logger = new LazyRef <ILogger>(() => loggerFactory.CreateLogger <DatabaseTool>());
            _serviceProvider.AddService(typeof(ILogger), _logger.Value);
            _serviceProvider.AddService(typeof(IFileService), new FileSystemFileService());
            _serviceProvider.AddService(typeof(CSharpCodeGeneratorHelper), new CSharpCodeGeneratorHelper());
            _serviceProvider.AddService(typeof(ModelUtilities), new ModelUtilities());
            var metadataReferencesProvider = new MetadataReferencesProvider(_serviceProvider);

            _serviceProvider.AddService(typeof(MetadataReferencesProvider), metadataReferencesProvider);
            var compilationService = new RoslynCompilationService();

            _serviceProvider.AddService(typeof(ITemplating), new RazorTemplating(compilationService, metadataReferencesProvider));
        }
Esempio n. 7
0
 public virtual void AddReferencesForTemplates(MetadataReferencesProvider metadataReferencesProvider)
 {
     metadataReferencesProvider.AddReferenceFromName("EntityFramework.SqlServer.Design");
 }
 public virtual void AddReferencesForTemplates(MetadataReferencesProvider metadataReferencesProvider)
 {
 }
Esempio n. 9
0
        public static async Task Main(string[] args)
        {
            var builder = WebAssemblyHostBuilder.CreateDefault(args);

            builder.RootComponents.Add <App>("app");

            var fieldsProcessorMetadataReferencesProvider = new MetadataReferencesProvider();

            builder.Services.AddTransient(sp => new HttpClient {
                BaseAddress = new Uri(builder.HostEnvironment.BaseAddress)
            });
            builder.Services.AddSingleton <JsInterop>(serviceProvider => new JsInterop(serviceProvider.GetService <IJSRuntime>()));
            builder.Services.AddSingleton <TraceListener>(serviceProvider => new TraceListener(";membuf=1"));
            builder.Services.AddSingleton <ModelObjects>(serviceProvider =>
            {
                ISynchronizationContext invokingSynchronization = new BlazorSynchronizationContext();
                WebContentConfig webContentConfig = new WebContentConfig();
                var logMediaFileSystem            = new LogJoint.Wasm.LogMediaFileSystem(serviceProvider.GetService <IJSRuntime>());

                var model = ModelFactory.Create(
                    new ModelConfig
                {
                    WorkspacesUrl              = "",
                    TelemetryUrl               = "",
                    IssuesUrl                  = "",
                    AutoUpdateUrl              = "",
                    PluginsUrl                 = "",
                    WebContentCacheConfig      = webContentConfig,
                    LogsDownloaderConfig       = webContentConfig,
                    TraceListeners             = new[] { serviceProvider.GetService <TraceListener>() },
                    RemoveDefaultTraceListener = true,     // it's expensive in wasm
                    FormatsRepositoryAssembly  = System.Reflection.Assembly.GetExecutingAssembly(),
                    FileSystem                 = logMediaFileSystem,
                    FieldsProcessorMetadataReferencesProvider = fieldsProcessorMetadataReferencesProvider,
                    FieldsProcessorAssemblyLoader             = new AssemblyLoader(),
                    PersistenceFileSystem = new LogJoint.Wasm.PersistenceFileSystem((IJSInProcessRuntime)serviceProvider.GetService <IJSRuntime>()),
                },
                    invokingSynchronization,
                    (storageManager) => null /*new PreprocessingCredentialsCache (
                                              * mainWindow.Window,
                                              * storageManager.GlobalSettingsEntry,
                                              * invokingSynchronization
                                              * )*/,
                    (shutdown, webContentCache, traceSourceFactory) => null /*new Presenters.WebViewTools.Presenter (
                                                                             * new WebBrowserDownloaderWindowController (),
                                                                             * invokingSynchronization,
                                                                             * webContentCache,
                                                                             * shutdown,
                                                                             * traceSourceFactory
                                                                             * )*/,
                    null /*new Drawing.Matrix.Factory()*/,
                    LogJoint.RegularExpressions.FCLRegexFactory.Instance
                    );

                logMediaFileSystem.Init(model.TraceSourceFactory);
                model.GlobalSettingsAccessor.FileSizes = new Settings.FileSizes()
                {
                    Threshold = 1, WindowSize = 1
                };

                return(model);
            });
            builder.Services.AddSingleton <ViewModelObjects>(serviceProvider =>
            {
                var model     = serviceProvider.GetService <ModelObjects>();
                var jsRuntime = serviceProvider.GetService <IJSRuntime>();

                var viewModel = new ViewModelObjects();
                var mocks     = new Mocks(viewModel);
                mocks.ShellOpen.When(s => s.OpenInTextEditor(Arg.Any <string>())).Do(x =>
                {
                    serviceProvider.GetService <JsInterop>().SaveAs.SaveAs(File.ReadAllText(x.Arg <string>()), x.Arg <string>());
                });

                var presentationObjects = LogJoint.UI.Presenters.Factory.Create(
                    model,
                    new Clipboard(jsRuntime),
                    mocks.ShellOpen,
                    /*alertPopup=*/ null,
                    mocks.FileDialogs,
                    mocks.PromptDialog,
                    mocks.AboutConfig,
                    mocks.DragDropHandler,
                    mocks.SystemThemeDetector,
                    mocks.Views
                    );

                viewModel.PresentationObjects = presentationObjects;

                return(viewModel);
            });
            builder.Services.AddSingleton <TreeStyles>();

            var wasmHost = builder.Build();

            var jsInterop = wasmHost.Services.GetService <JsInterop>();
            await jsInterop.Init();

            var jsRuntime = wasmHost.Services.GetService <IJSRuntime>();
            await fieldsProcessorMetadataReferencesProvider.Init(jsRuntime);

            {
                var pluginsDirsList   = new List <string>();
                var pluginsDir        = Path.Combine(Path.GetTempPath(), "plugins"); // folder in memory, powered by emscripten MEMFS.
                var resourcesAssembly = Assembly.GetExecutingAssembly();

                foreach (string resourceName in resourcesAssembly.GetManifestResourceNames().Where(f => f.StartsWith("LogJoint.Wasm.Plugins")))
                {
                    var resourceStream = resourcesAssembly.GetManifestResourceStream(resourceName);
                    var pluginDir      = Path.Combine(pluginsDir, resourceName);
                    var sw             = System.Diagnostics.Stopwatch.StartNew();
                    using (var archive = new ZipArchive(resourceStream, ZipArchiveMode.Read, leaveOpen: true))
                    {
                        var createdDirectories = new HashSet <string>();
                        void ensureDirectoryCreated(string dir)
                        {
                            if (createdDirectories.Add(dir))
                            {
                                Directory.CreateDirectory(dir);
                            }
                        };
                        foreach (var e in archive.Entries)
                        {
                            var fileName = Path.Combine(pluginDir, e.FullName);
                            ensureDirectoryCreated(Path.GetDirectoryName(fileName));
                            using (var sourceStream = e.Open())
                                using (var targetStream = File.OpenWrite(fileName))
                                {
                                    sourceStream.CopyTo(targetStream);
                                }
                        }
                    }
                    Console.WriteLine("Extracted plugin: {0}, took {1}", resourceName, sw.Elapsed);
                    pluginsDirsList.Add(pluginDir);
                }

                var model = wasmHost.Services.GetService <ModelObjects>();
                var view  = wasmHost.Services.GetService <ViewModelObjects>();
                model.PluginsManager.LoadPlugins(new Extensibility.Application(
                                                     model.ExpensibilityEntryPoint,
                                                     view.PresentationObjects.ExpensibilityEntryPoint), string.Join(',', pluginsDirsList), false);
            }

            await wasmHost.RunAsync();
        }