public NetworkAssemblyLoadContext(
     IPluginLogger <T> logger,
     INetworkAssemblyLoaderOptions <T> options,
     IHostFrameworkProvider hostFrameworkProvider,
     IHostTypesProvider <T> hostTypesProvider,
     IRemoteTypesProvider <T> remoteTypesProvider,
     IDependencyPathProvider <T> dependencyPathProvider,
     IProbingPathsProvider <T> probingPathsProvider,
     IRuntimePlatformContext runtimePlatformContext,
     IDepsFileProvider <T> depsFileProvider,
     IPluginDependencyResolver <T> pluginDependencyResolver,
     INativeAssemblyUnloader nativeAssemblyUnloader,
     IAssemblyLoadStrategyProvider assemblyLoadStrategyProvider,
     IHttpClientFactory httpClientFactory,
     ITempPathProvider <T> tempPathProvider) : base(
         logger,
         options,
         hostFrameworkProvider,
         hostTypesProvider,
         remoteTypesProvider,
         dependencyPathProvider,
         probingPathsProvider,
         runtimePlatformContext,
         depsFileProvider,
         pluginDependencyResolver,
         nativeAssemblyUnloader,
         assemblyLoadStrategyProvider
         )
 {
     this.httpClient       = httpClientFactory.CreateClient();
     this.baseUrl          = options.BaseUrl;
     this.tempPathProvider = tempPathProvider;
 }
        public PluginLoadOptionsBuilder <T> IgnorePlatformInconsistencies(bool ignore = true)
        {
            if (this.assemblyLoadOptionsType != null || this.networkAssemblyLoaderOptionsType != null || this.assemblyLoader != null)
            {
                throw new PrisePluginException("Custom loaders and custom load options are not supported with IgnorePlatformInconsistencies(), please provide your own value for IgnorePlatformInconsistencies.");
            }

            if (this.assemblyLoadOptions != null)
            {
                this.assemblyLoadOptions = new DefaultAssemblyLoadOptions <T>(
                    this.assemblyLoadOptions.PluginPlatformVersion,
                    ignore,
                    this.assemblyLoadOptions.NativeDependencyLoadPreference);
            }

            if (this.networkAssemblyLoaderOptions != null)
            {
                this.networkAssemblyLoaderOptions = new DefaultNetworkAssemblyLoaderOptions <T>(
                    this.networkAssemblyLoaderOptions.BaseUrl,
                    this.networkAssemblyLoaderOptions.PluginPlatformVersion,
                    ignore,
                    this.networkAssemblyLoaderOptions.NativeDependencyLoadPreference);
            }

            return(this);
        }
Example #3
0
 public NetworkAssemblyLoader(
     IPluginLogger <T> logger,
     INetworkAssemblyLoaderOptions <T> options,
     IHostFrameworkProvider hostFrameworkProvider,
     IHostTypesProvider <T> hostTypesProvider,
     IRemoteTypesProvider <T> remoteTypesProvider,
     IDependencyPathProvider <T> dependencyPathProvider,
     IProbingPathsProvider <T> probingPathsProvider,
     IRuntimePlatformContext runtimePlatformContext,
     IDepsFileProvider <T> depsFileProvider,
     IPluginDependencyResolver <T> pluginDependencyResolver,
     INativeAssemblyUnloader nativeAssemblyUnloader,
     IAssemblyLoadStrategyProvider assemblyLoadStrategyProvider,
     ITempPathProvider <T> tempPathProvider,
     IHttpClientFactory httpClientFactory
     )
 {
     this.logger  = logger;
     this.options = options;
     this.hostFrameworkProvider        = hostFrameworkProvider;
     this.hostTypesProvider            = hostTypesProvider;
     this.remoteTypesProvider          = remoteTypesProvider;
     this.dependencyPathProvider       = dependencyPathProvider;
     this.probingPathsProvider         = probingPathsProvider;
     this.runtimePlatformContext       = runtimePlatformContext;
     this.depsFileProvider             = depsFileProvider;
     this.pluginDependencyResolver     = pluginDependencyResolver;
     this.nativeAssemblyUnloader       = nativeAssemblyUnloader;
     this.assemblyLoadStrategyProvider = assemblyLoadStrategyProvider;
     this.tempPathProvider             = tempPathProvider;
     this.httpClientFactory            = httpClientFactory;
 }
Example #4
0
 public NetworkAssemblyLoader(
     INetworkAssemblyLoaderOptions <T> options,
     IHostFrameworkProvider hostFrameworkProvider,
     IHostTypesProvider hostTypesProvider,
     IRemoteTypesProvider <T> remoteTypesProvider,
     IDependencyPathProvider <T> dependencyPathProvider,
     IProbingPathsProvider <T> probingPathsProvider,
     IRuntimePlatformContext runtimePlatformContext,
     IDepsFileProvider <T> depsFileProvider,
     IPluginDependencyResolver <T> pluginDependencyResolver,
     INativeAssemblyUnloader nativeAssemblyUnloader,
     IAssemblyLoadStrategyProvider assemblyLoadStrategyProvider,
     ITempPathProvider <T> tempPathProvider,
     IHttpClientFactory httpClientFactory
     )
 {
     this.loadContext = new NetworkAssemblyLoadContext <T>(
         options,
         hostFrameworkProvider,
         hostTypesProvider,
         remoteTypesProvider,
         dependencyPathProvider,
         probingPathsProvider,
         runtimePlatformContext,
         depsFileProvider,
         pluginDependencyResolver,
         nativeAssemblyUnloader,
         assemblyLoadStrategyProvider,
         httpClientFactory,
         tempPathProvider
         );
     this.assemblyLoadContextReference = new System.WeakReference(this.loadContext);
 }
 public NetworkDepsFileProvider(
     INetworkAssemblyLoaderOptions <T> options,
     IHttpClientFactory httpClientFactory)
 {
     this.options = options;
     this.client  = httpClientFactory.CreateClient();
 }
 public NetworkPluginDependencyResolver(
     IRuntimePlatformContext runtimePlatformContext,
     INetworkAssemblyLoaderOptions <T> options,
     IHttpClientFactory httpClientFactory,
     ITempPathProvider <T> tempPathProvider) : base(runtimePlatformContext)
 {
     this.options          = options;
     this.httpClient       = httpClientFactory.CreateClient();
     this.tempPathProvider = tempPathProvider;
 }
        public PluginLoadOptionsBuilder <T> WithNetworkAssemblyLoader(
            string baseUrl,
            PluginPlatformVersion pluginPlatformVersion = null,
            NativeDependencyLoadPreference nativeDependencyLoadPreference = NativeDependencyLoadPreference.PreferInstalledRuntime)
        {
            if (pluginPlatformVersion == null)
            {
                pluginPlatformVersion = PluginPlatformVersion.Empty();
            }

            this.networkAssemblyLoaderOptions = new DefaultNetworkAssemblyLoaderOptions <T>(
                baseUrl,
                pluginPlatformVersion,
                false,
                nativeDependencyLoadPreference);

            this.depsFileProviderType         = typeof(NetworkDepsFileProvider <T>);
            this.pluginDependencyResolverType = typeof(NetworkPluginDependencyResolver <T>);
            this.assemblyLoaderType           = typeof(NetworkAssemblyLoader <T>);
            return(this);
        }