【问题标题】:Where should I put code compiled from CodeDOM Graph in my Prism modular application if this code must be accessable from any Prism module?如果必须可以从任何 Prism 模块访问此代码,我应该将从 CodeDOM Graph 编译的代码放在我的 Prism 模块化应用程序中的什么位置?
【发布时间】:2016-03-24 13:07:22
【问题描述】:

我开发 Prism 6 WPF MVVM 模块化应用程序。我的应用程序的解决方案包括一个 Shell 项目和许多 Prism 模块项目。在我的应用程序中,我必须实现动态源 C# 代码生成和编译 (CodeDom)。我假设将代码(构建 CodeDOM 图并从中编译程序集)放在一些公共类库(CL 项目)中,该类库从我的应用程序解决方案中的任何 Prism 模块项目中“可见”,以便我可以调用公共方法来构建 CodeDOM 图和编译来自应用程序中任何 Prism 模块的程序集。但是我不知道如何从我的应用程序中的任何 Prism 模块访问正在编译的程序集(即每个 prism 模块都必须能够调用从 CodeDOM 图编译的程序集)。我假设 CodeDOM 图将作为类库编译为程序集(GenerateExecutable 属性设置为 false)。我希望将编译后的程序集写入内存而不是磁盘(CompilerParameters.GenerateInMemory = true)。 如果我希望从 CodeDOM 图编译的程序集在我的应用程序中的所有 prism 模块中都可见,并且所有这些模块都可以从 assemply 调用公共方法和属性,我应该怎么做? 我使用动态源一开始是 C# 代码生成,我以前没有使用过它。因此,我们将非常感谢您的帮助。

【问题讨论】:

    标签: c# prism codedom modularity csharpcodeprovider


    【解决方案1】:

    Prism 模块可以依赖于其他模块。

    使 CodeDOM 模块成为所有其他模块的依赖项,并共享一个服务接口/事件,为各个模块提供访问/调用运行时编译程序集所需的功能。

    【讨论】:

    • toadflakz,你知道我的应用程序中的所有模块都必须引用从 CodeDOM 图编译的代码吗?但是这段代码将被写入内存而不是文件中!有没有办法在每个 prism 模块中设置对从 CodeDOM 图编译的写入内存程序集的引用?
    • 您可以在运行时动态加载程序集,以便您的 CodeDOM 模块的部分功能可以处理与其他模块的通信(如果需要)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-09
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    相关资源
    最近更新 更多