【问题标题】:Unity Container error using Prism Modularity and including Unity by source使用 Prism Modularity 并按源包含 Unity 的 Unity Container 错误
【发布时间】:2011-08-04 17:29:04
【问题描述】:

尝试将 Prism4 Bootstrapper 与源引用的 Unity 一起使用时,我不断收到错误消息(将现有项目包含在解决方案中)。从源代码构建 Unity 然后包含输出文件时,我也遇到了错误。

详情如下:

我有一个使用 Prism4 的项目。 Prism 的 Bootstrapper 组件依赖于 Unity 2.0。对我来说更准确地说,他们依赖于统一的 2.0.414.0 版本。

如果我尝试将 Prism 的当前或更新版本作为 prism 4 包含到我的项目中,那么 VS 会给我一条消息以生成一些 app.config 代码来强制加载最新的程序集。

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="Microsoft.Practices.Unity" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
            <bindingRedirect oldVersion="0.0.0.0-2.1.505.0" newVersion="2.1.505.0"/>
        </dependentAssembly>
    </assemblyBinding>
</runtime>

在使用 Unity 2.0 和 Unity 2.1 的预构建 dll 文件时,这没有问题...

但是,如果我尝试从源代码构建这些并使用新的 DLL,或者将项目直接包含到我的项目中,我总是会收到错误:

类型“Microsoft.Practices.Unity.IUnityContainer”在未引用的程序集中定义。您必须添加对程序集“Microsoft.Practices.Unity, Version=2.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”的引用。

请注意 Unity 2.0 [b]IS[/b] 版本 2.0.414.0。所以我的第一次尝试是使用 unity 2.0 源代码库。我也用这个版本做了很多后续的尝试,包括从一个新的项目开始。我尝试通过预先构建的 bin 文件、源代码和自定义构建的 dll 来包含 Prism,但结果相同。我还使用 Unity 2.1 尝试了所有相同的事情,希望它可以工作。

我的环境是 MSVC# 2010 win7 x64。我在 x86 和任何 CPU 配置以及调试和发布下构建。唯一的依赖是 Prism 和 Unity。

【问题讨论】:

    标签: c# wpf unity-container prism


    【解决方案1】:

    找到了解决方法。

    我打开了 Prism 源的解决方案并删除了任何对统一的引用。然后我将统一项目作为现有项目添加到 prism 解决方案中。最后,我将统一引用为所有相关棱镜项目的项目。因此,我将用于我的项目的统一 dll 正在由 prism unityextensions 输出。

    稍后会更新一些批处理文件,瞧,这是一种解决方法。

    不是最好的解决方案,但我现在已经准备好继续前进了。

    附:主题行不正确。这是 prism 中 UnityExtensions 的问题,而不是模块化问题。当我称它为 UnityBootstrapper 时,我也不清楚它“

    【讨论】:

    • Correction ...另外,当我将 UnityBootstrapper 称为“Prism 的引导程序组件”时,我并不清楚它。
    猜你喜欢
    • 1970-01-01
    • 2018-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-02
    • 2016-12-29
    • 2011-12-15
    • 1970-01-01
    相关资源
    最近更新 更多