无论如何,使用prism 4.0链接单独的silverlight 4.0项目,这些项目位于不同的目录中以进行集成

时间:2011-07-25 07:47:07

标签: silverlight-4.0 prism

我有两个独立的silverlight4.0项目,这些项目不在同一个解决方案中。我需要使用Prism4.0集成这些项目。

无论如何都要将这些项目链接到同一解决方案中。

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:0)

我是通过将我的模块项目的解决方案引用到我的主项目中而不将其复制到主项目的文件夹来实现的

现在两个项目都在不同的目录中。

然后我从模块项目中排除了App.xaml文件,并引入了模块导出页面。

然后在托管应用程序的属性中,我进行了更改以包含模块的zap文件。

它现在正在运作。

答案 1 :(得分:0)

如果不将两个项目都放在同一个解决方案中,还有另一种[更好]的方法。您可以使用允许您从xaml文件配置ModuleCatalog的功能,在该文件中放置有关引用模块的信息,以避免将其作为“项目引用”。您只需确保将必要的项目输出(XAP文件)复制到Web项目的ClientBin目录中。

这是模块目录(catalog.xaml)的片段

<?xml version="1.0" encoding="utf-8" ?>
<Modularity:ModuleCatalog
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    xmlns:Modularity="clr-namespace:Microsoft.Practices.Prism.Modularity;assembly=Microsoft.Practices.Prism">
<Modularity:ModuleInfo 
    Ref="Solution1.ProjectA.xap"
    ModuleName="Solution1.ProjectA"
    ModuleType="Solution1.ProjectA.Module, Solution1.ProjectA, Version=1.0.0.0"/>
<Modularity:ModuleInfo 
    Ref="Solution2.ProjectB.xap"
    ModuleName="Solution2.ProjectB"
    ModuleType="Solution2.ProjectB.Module, Solution2.ProjectB, Version=1.0.0.0"/>
</Modularity:ModuleCatalog>

这是BootStrapper的一个代码:

public class Bootstrapper : UnityBootstrapper
{
    protected override void ConfigureModuleCatalog()
    {
        Modularity.ModuleCatalog.CreateFromXaml(new Uri("catalog.xaml", UriKind.Relative));
    }
}

希望这会有所帮助:)

答案 2 :(得分:0)

这种方法工作正常..

我更改了模块文件的启动类名 然后在启动页面中使用Module Export属性构建每个模块xap,然后将该XAP文件添加到主项目

通过调用模块名称

加载每个项目

这是片段

Imports Microsoft.Practices.Prism.Modularity
Imports Microsoft.Practices.Prism.MefExtensions.Modularity
Imports System.ComponentModel.Composition
Imports Microsoft.Practices.Prism.Regions

<ModuleExport(GetType(App))> _
Partial Public Class App
    Inherits Application
    Implements IModule

    Public Sub New()
        InitializeComponent()
    End Sub
    Public Sub Initialize() Implements Microsoft.Practices.Prism.Modularity.IModule.Initialize
        TheRegionManager.RegisterViewWithRegion("MyRegion1", GetType(MainPage))

    End Sub
    <Import()> _
    Public Property TheRegionManager() As IRegionManager
        Private Get
            Return m_TheRegionManager
        End Get
        Set(ByVal value As IRegionManager)
            m_TheRegionManager = value
        End Set
    End Property
    Private m_TheRegionManager As IRegionManager
    Private Sub Application_Startup(ByVal o As Object, ByVal e As StartupEventArgs) Handles Me.Startup

            Me.RootVisual = New MainPage()

    End Sub

End Class

然后在主应用程序

Public Class TheBootstrapper
    Inherits MefBootstrapper
 Protected Overrides Function CreateModuleCatalog() As IModuleCatalog
        Dim moduleCatalog As New ModuleCatalog()
                moduleCatalog.AddModule(New ModuleInfo() With { _
                                 .InitializationMode = InitializationMode.OnDemand, _
         .Ref = "App.xap", _
        .ModuleName = "App"})    
       Return moduleCatalog
    End Function    
End Class

然后通过调用加载的模块使用模块的XAP。