我有两个独立的silverlight4.0项目,这些项目不在同一个解决方案中。我需要使用Prism4.0集成这些项目。
无论如何都要将这些项目链接到同一解决方案中。
有人可以帮忙吗?
答案 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。