【问题标题】:Unity Configuration and Same AssemblyUnity 配置和相同的装配
【发布时间】:2009-12-02 22:33:35
【问题描述】:

我目前在尝试解析 IDataAccess 类时遇到错误。

无法解析属性“type”的值。错误是:无法加载文件或程序集“TestProject”或其依赖项之一。该系统找不到指定的文件。 (C:\Source\TestIoC\src\TestIoC\TestProject\bin\Debug\TestProject.vshost.exe.config 第 14 行)

这是在 WPF 应用程序项目中。

引用您当前所在的程序集的正确语法是什么?有没有办法做到这一点?我知道在一个更大的解决方案中,我会从单独的程序集中提取类型,所以这可能不是问题。但是对于一个小型的独立测试项目来说,这样做的正确方法是什么。注意:我现在只对 XML 配置感兴趣,而不是 C#(代码中)配置。

更新:查看所有 cmets

我的 XML 配置:

<configuration>
  <configSections>
    <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration" />
  </configSections>
  <unity>
    <typeAliases>
      <!-- Lifetime manager types -->
      <typeAlias alias="singleton"  type="Microsoft.Practices.Unity.ContainerControlledLifetimeManager, Microsoft.Practices.Unity" />
      <typeAlias alias="external" type="Microsoft.Practices.Unity.ExternallyControlledLifetimeManager, Microsoft.Practices.Unity" />
      <typeAlias alias="IDataAccess" type="TestProject.IDataAccess, TestProject" />
      <typeAlias alias="DataAccess" type="TestProject.DataAccess, TestProject" />
    </typeAliases>
    <containers>
      <container name="Services">
        <types>
          <type type="IDataAccess" mapTo="DataAccess" />
        </types>
      </container>
    </containers>
  </unity>
</configuration>

【问题讨论】:

    标签: c# .net wpf inversion-of-control unity-container


    【解决方案1】:

    统一 5.7

    剖面线应该是这样的

    &lt;section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,Unity.Configuration" /&gt;

    【讨论】:

      【解决方案2】:

      这看起来不错。您确定您的程序集名称正确吗?检查项目首选项以确保您的程序集名称正确:

      1. 右键单击您的项目,然后单击属性
      2. 单击左侧的应用程序选项卡
      3. 查看“程序集名称”字段的值。

      有时,如果您重命名了项目,该字段仍将是旧值。

      这可能根本不是问题,但这是最简单的检查方法。如果您发现这不是问题,请回复此问题,我将发布我的任何其他想法。

      另外,您可以考虑将示例发布为 .zip 文件,以便我们查看。

      【讨论】:

      • 一个问题是应用项目是TestProject,但是当Visual Studio在调试中运行它时,它作为TestProject.vhost.exe运行。我将虚拟主机添加到 XML 文件中的名称中,但这没有帮助。
      • 我无法上传示例,因为为了不被这个问题所困扰,我将代码分成两个程序集,这样我就可以继续前进。一个类库项目和一个 WPF 项目。
      • DLL 的名称和程序集的名称彼此无关。这就是为什么我要求你询问大会的名称。
      • 哦。但是程序集名称是相同的。
      • 然后打开 Fusion Logging。您可能从 那个 DLL 中引用了一些不可用的东西。执行此操作的应用程序是 FusLogVw.exe
      【解决方案3】:

      我也遇到了同样的问题。这对我有用: 在 Microsoft.Practices.Unity 的属性中将“复制本地”设置为 true。 您还应该添加对 Microsoft.Practices.ObjectBuilder2 的引用(Microsoft.Practices.Unity 取决于它)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-05-26
        • 1970-01-01
        • 2019-11-06
        • 2020-10-26
        • 1970-01-01
        • 2021-02-12
        • 1970-01-01
        相关资源
        最近更新 更多