В любом случае можно ли связать отдельные проекты silverlight4.0, которые были в разных каталогах, для интеграции с использованием prism4.0? - PullRequest
0 голосов
/ 25 июля 2011

У меня есть два отдельных проекта silverlight4.0, которые не были в одном решении. Мне нужно интегрировать эти проекты, используя Prism4.0.

В любом случае можно ли связать эти проекты с тем, чтобы оба проекта не превращались в одно и то же решение?

Кто-нибудь может помочь?

Ответы [ 3 ]

0 голосов
/ 26 июля 2011

Есть еще один [лучший] способ сделать это, не используя оба проекта для одного и того же решения.Вы можете использовать функции, которые позволяют вам настроить ModuleCatalog из файла xaml, в который вы помещаете информацию о ссылочных модулях, чтобы избежать этого как «Ссылки проекта».Вам просто нужно убедиться, что вы скопировали необходимые выходные данные проекта (файлы XAP) в каталог 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));
    }
}

Надеюсь, это поможет:)

0 голосов
/ 05 августа 2011

Этот метод работает нормально.

Я изменил имя класса запуска моих файлов модулей, затем собрал каждый модуль xap с атрибутами Module Export на странице запуска, а затем добавил этот файл 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 модуля путем вызова загруженного модуля.

0 голосов
/ 26 июля 2011

Я сделал это, перенеся решение моего модульного проекта в основной проект, не копируя его в папку основного проекта

Теперь оба проекта находятся в разных каталогах.

Затем я исключил файл App.xaml из проекта модуля и представил страницу экспорта модуля.

А затем в свойстве хостингового приложения я внес изменение, включив zap-файл модуля.

И это работает сейчас.

...