安装Autofac.WCF

时间:2017-05-11 21:33:59

标签: autofac autofac-module

如果我执行以下步骤,我会收到例外:

测试1:

MainApp-项目:

  1. 添加了Nuget Package Autofac Version 4.5.0
  2. 添加了Nuget Package Autofac.WCF Version 4.0
  3. 模块-项目:

    1. 添加了Nuget Package Autofac.WCF版本4.0(将自动安装Autofac 3.3.1)
    2. 通过Nuget Manager Autofac更新至4.5.0 在通过Directorycatalog进行Moduleload期间,MainApp的引导程序会抛出此异常。
    3. Autofac.WCF具有依赖性Autofac> = 3.3.1&& < 5.0.0

      Bootstrapper.cs中的异常: Prism.Wpf.dll中出现未处理的“System.IO.FileLoadException”类型异常

      其他信息:Die Datei oder Assembly“Autofac,Version = 3.3.0.0,Culture = neutral,PublicKeyToken = 17863af14b0044da”odereineAbhängigkeitdavonwurde nicht gefunden。 Eine bestimmte Datei konnte nicht gefunden oder geladen werden。 (Ausnahme von HRESULT:0x80131621)

      测试2:

      我也尝试了这些步骤:

      MainApp:

      1. 使用nuget manager安装Autofac 4.5.0
      2. 使用nuget manager安装Autofac.WCF
      3. 模块:

        1. 使用nuget manager安装Autofac 4.5.0
        2. 使用nuget manager安装Autofac.WCF
        3. 可能,我犯了一个错误,因为我第一次使用Autofac和Autofac.WCF。我在团结IoC之前使用过。

          Bootstrapper.cs:

          using Autofac;
          using Prism.Autofac;
          using PrismAutofacApp2.Views;
          using System.Windows;
          using Prism.Modularity;
          
          namespace PrismAutofacApp2
          {
              class Bootstrapper : AutofacBootstrapper
              {
                  protected override DependencyObject CreateShell()
                  {
                      return Container.Resolve<MainWindow>();
                  }
          
                  protected override void InitializeShell()
                  {
                      Application.Current.MainWindow.Show();
                  }
          
                  protected override IModuleCatalog CreateModuleCatalog()
                  {
                      var modulecatalog = new DirectoryModuleCatalog() { ModulePath = @".\Modules" };
          
                      return modulecatalog;
                  }
          
              }
          }
          

          模块:

          using Prism.Modularity;
          using Prism.Regions;
          using System;
          using Autofac;
          
          
          namespace PrismModule2
          {
              public class PrismModule2Module : Module
              {
                  IRegionManager _regionManager;
          
                  public PrismModule2Module(IRegionManager regionManager)
                  {
                      _regionManager = regionManager;
                  }
              }
          }
          

          更新

          我根据请求对软件包进行了评论卸载,然后重新安装了测试2中提到的所有步骤,问题仍然存在。

          如果通过删除覆盖方法CreateModulecatalog来取消模块负载,那么问题就不再发生了,意味着MainApp中的Autofac 4.5.0 + Autofac.WCF 4.0.0工作,但是如果我加载模块则不行(包括.Autofac 4.5.0和Autofac.WCF)与CreateModulecatalog Autofac 4.5.0和Autofac.WCF。

          请记住,模块没有app.config,因为它是一个模块(dll)项目。

          对我来说,让项目按以下要求运行是非常重要的:

          MainApp:

          1. Autofac 4.5.0 + Autofac.WCF 4.0.0 + Prism.WPF
          2. 模块应从目录
          3. 加载
          4. MainApp启动可执行文件
          5. 模块:

            1. Autofac 4.5.0 + Autofac.WCF 4.0.0(namedpipe)+ Prism.WPF
            2. 模块必须托管WCF服务,因为mainapp启动了一个可执行文件,这些可执行文件必须完成wcf服务+ ioc。
            3. 我无法阻止所有内容,因为无法在mainapp(bootstrapper)中无异常地使用autofac + autofac.wcf加载模块。

              如果有人可以支持我,那么我可以使用共享桌面设置团队查看器会话以解决我的问题并为我提供指导。

2 个答案:

答案 0 :(得分:1)

我解决了这些步骤:

我的模块:

  1. 在我的模块中使用nuget包管理器删除了Autofac + Autofac.WCF
  2. 在我的模块中安装了带有nuget包管理器的Autofac 4.5.0
  3. 下载Autofac.WCF源代码
  4. 打开解决方案
  5. 删除了autofac参考的条目
  6. 通过nuget包管理器
  7. 加载Autofac 4.5.0
  8. Autofac.WCF项目的构建版本
  9. 将DLL复制到我的模块并作出参考

答案 1 :(得分:0)

我做了Shazter推荐的内容。我转到GitHub链接并下载了源代码。加载后,我删除了由NuGet恢复的默认Autofac。然后我通过NuGet添加了最新的Autofac并重建了发布版本。然后我引用了我的新dll而没有更多问题。