System.IO.FileNotFoundException: 无法加载文件或程序集 'System.Web.DataVisualization MEF MVC
System.IO.FileNotFoundException: Could not load file or assembly 'System.Web.DataVisualization MEF MVC
我正在创建一个网站,它应该能够接受多个模块并将这些模块组合到一个主项目中。在对引导程序和自定义视图引擎进行编程后,使其能够在 module.dll 中找到视图。
编译用于测试的测试模块后,我收到一个奇怪的错误,它说由于某种原因无法加载 System.Web.DataVisualization。我还注意到模块 dll 中的控制器已正确加载,我可以在调试中看到它,但此错误不断杀死线程并抛出错误。
这是我为 Bootstrapper.cs 处理 dll 的 loading/composing 的代码。
using System;
using System.Collections.Generic;
using System.ComponentModel.Composition;
using System.ComponentModel.Composition.Hosting;
using System.IO;
public class Bootstrapper
{
private static CompositionContainer CompositionContainer;
private static bool IsLoaded = false;
public static void Compose(List<string> pluginFolders)
{
if (IsLoaded) return;
var catalog = new AggregateCatalog();
catalog.Catalogs.Add(new DirectoryCatalog(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bin")));
foreach (var plugin in pluginFolders)
{
var directoryCatalog = new DirectoryCatalog(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Modules", plugin));
catalog.Catalogs.Add(directoryCatalog);
}
CompositionContainer = new CompositionContainer(catalog);
CompositionContainer.ComposeParts();
IsLoaded = true;
}
public static T GetInstance<T>(string contractName = null)
{
var type = default(T);
if (CompositionContainer == null) return type;
if (!string.IsNullOrWhiteSpace(contractName))
type = CompositionContainer.GetExportedValue<T>(contractName);
else
type = CompositionContainer.GetExportedValue<T>();
return type;
}
}
这是测试时抛出的错误。
不幸的是,解决方案是手动下载 dll 并将其添加到引用中,但主要编辑是 Web.Config,我必须在其中定义要导入 System.Web.DataVisualization
的程序集. <add assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
我正在创建一个网站,它应该能够接受多个模块并将这些模块组合到一个主项目中。在对引导程序和自定义视图引擎进行编程后,使其能够在 module.dll 中找到视图。
编译用于测试的测试模块后,我收到一个奇怪的错误,它说由于某种原因无法加载 System.Web.DataVisualization。我还注意到模块 dll 中的控制器已正确加载,我可以在调试中看到它,但此错误不断杀死线程并抛出错误。
这是我为 Bootstrapper.cs 处理 dll 的 loading/composing 的代码。
using System;
using System.Collections.Generic;
using System.ComponentModel.Composition;
using System.ComponentModel.Composition.Hosting;
using System.IO;
public class Bootstrapper
{
private static CompositionContainer CompositionContainer;
private static bool IsLoaded = false;
public static void Compose(List<string> pluginFolders)
{
if (IsLoaded) return;
var catalog = new AggregateCatalog();
catalog.Catalogs.Add(new DirectoryCatalog(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bin")));
foreach (var plugin in pluginFolders)
{
var directoryCatalog = new DirectoryCatalog(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Modules", plugin));
catalog.Catalogs.Add(directoryCatalog);
}
CompositionContainer = new CompositionContainer(catalog);
CompositionContainer.ComposeParts();
IsLoaded = true;
}
public static T GetInstance<T>(string contractName = null)
{
var type = default(T);
if (CompositionContainer == null) return type;
if (!string.IsNullOrWhiteSpace(contractName))
type = CompositionContainer.GetExportedValue<T>(contractName);
else
type = CompositionContainer.GetExportedValue<T>();
return type;
}
}
这是测试时抛出的错误。
不幸的是,解决方案是手动下载 dll 并将其添加到引用中,但主要编辑是 Web.Config,我必须在其中定义要导入 System.Web.DataVisualization
的程序集. <add assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />