加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-3 – 无法加载文件或程序集’StructureMap,Version

发布时间:2020-12-16 06:46:04 所属栏目:asp.Net 来源:网络整理
导读:我正在研究一个项目,并决定将StructureMap作为IoC,但每当我们尝试加载项目(顺便说一下MVC 3)时,我们会收到此错误: Could not load file or assembly ‘StructureMap,Version=2.5.3.0, Culture=neutral, PublicKeyToken=e60ad81abae3c223’ or one of its de
我正在研究一个项目,并决定将StructureMap作为IoC,但每当我们尝试加载项目(顺便说一下MVC 3)时,我们会收到此错误:

Could not load file or assembly
‘StructureMap,Version=2.5.3.0,
Culture=neutral,
PublicKeyToken=e60ad81abae3c223’ or
one of its dependencies. The system
cannot find the file specified.

在Global.asax中,我有这个代码来初始化StructureMap

ObjectFactory.Initialize(
    x =>
    {
        x.ForRequestedType<IUnitOfWorkFactory>()
            .TheDefaultIsConcreteType<EFUnitOfWorkFactory>()
            .CacheBy(InstanceScope.HttpContext);

        x.ForRequestedType(typeof(IRepository<>))
            .CacheBy(InstanceScope.HttpContext)
            .TheDefaultIsConcreteType(typeof(GenericRepository<>));

    });

并将我在一个lib文件夹中的StructureMap添加到主MVC应用程序中.即使删除了我能找到的所有引用,我仍然会收到此错误.

对于记录,这是MVC3结构中的lib文件夹

我添加了对StructureMap.dll的引用(奇怪的是版本2.6.1,但错误说版本为2.5.3.0

]
忘了提一下我有一个自定义Controller Factory for StructueMap.这是控制器工厂的代码:

public class StructureMapControllerFactory : DefaultControllerFactory
{
    protected override IController GetControllerInstance(RequestContext requestContext,Type controllerType)
    {
        try
        {
            return (controllerType == null) ? null : ObjectFactory.GetInstance(controllerType) as Controller;
        }
        catch (StructureMapException)
        {
            System.Diagnostics.Debug.WriteLine(ObjectFactory.WhatDoIHave());
            throw;
        }
    }
}

以下是我在Global.asax.cs中使用它的方法

ControllerBuilder.Current.SetControllerFactory(new StructureMapControllerFactory());

编辑:我使用NuGet安装了StructureMap并仍然得到相同的错误,虽然NuGet安装了不同的版本(2.6而不是2.5),但仍然得到2.5错误.因此,我将向能够帮助我解决此问题的任何人提供赏金

编辑2我卸载然后重新安装Visual Studio和实体框架,当我尝试添加POCO时我收到此错误

有谁知道如何解决这个问题?

编辑3:我使用位于here的技术卸载了CTP,我卸载了CTP和版本4.1然后按照指示的位置和我提供的链接,当我按照说明操作时收到此错误消息.这已达到临界质量,我的雇主对我感到非常不满,因为我似乎无法解决上面的错误消息.有人给我任何答案吗?

编辑4:使用IIS 7.5 Express在本地工作,现在需要让它在实时服务器上运行.有趣的是我正在使用StructureMap 2.6.2,但错误(出于某种原因)正在寻找2.5.3.我搜索并搜索试图找到对StructureMap 2.5.3的引用.

编辑5:在本地工作完美,但在现场网站上的错误相同.我远程工作,我们使用SVN进行源代码控制,其他开发人员远程工作,但就像我的代码从未进入生产阶段,当然我无法访问实时网站

解决方法

当我引用依赖于DLL的旧版本而不是我引用的DLL或项目时,我总是看到类似的错误.较旧的程序集包含在该DLL的清单中,因此如果无法找到确切的(较旧的)版本,则加载它可能会抛出错误,具体取决于它的引用方式.

很难知道哪些引用依赖于StructureMap,尤其是旧版本.您能否更新您的问题以包含您的参考的屏幕截图(而不仅仅是lib文件夹)?或者更好的是,.csproj文件中显示引用的部分以及它们是否需要特定版本?在任何引用的项目中,我会毫不留情地梳理这一部分.

并且,与其他人所说的一致,我将从您的解决方案中删除lib结构,并尽可能通过NuGet安装包.

更新:如果您无法追踪指向结构化版本的硬件版本的引用,请尝试执行程序集版本重定向,如下所述:http://msdn.microsoft.com/en-us/library/7wd6ex19(v=VS.100).aspx

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读