C # Создать каталог модулей из файла XAML - PullRequest
3 голосов
/ 10 октября 2011

У меня проблема с загрузкой модулей из файла xaml в контексте библиотеки призмы.Xaml для модулей выглядит следующим образом:

<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:ModuleInfoGroup InitializationMode="WhenAvailable">
    <Modularity:ModuleInfo Ref="file://HelloWorldModule.dll" ModuleName="HelloWorldModule" ModuleType="HelloWorldModule.Views.HelloWorldView, HelloWorldModule, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</Modularity:ModuleInfoGroup>

Пока что синтаксический анализатор находит этот xaml, но не находит HelloWorldModule.dll.Я не смог найти ничего полезного в документах, так как все они предназначены для Silverlight, но мой проект - приложение WFP.

Относительный путь к shell.exe:

\Projects\QFX_Shell\bin\Debug

ипуть к HelloWorldModule.dll:

\Projects\HelloWorldModule\bin\Debug

Итак, вопрос в том, какое значение ожидает атрибут «Ref»?Это абсолютный путь для HelloWorldModule.dll?

Второй вопрос: какое значение должен иметь атрибут ModuleType:

namespace HelloWorldModule.Views
{
  /// <summary>
  /// Interaction logic for HelloWorldView.xaml
  /// </summary>
  public partial class HelloWorldView : UserControl
  {
    public HelloWorldView()
    {
        InitializeComponent();
    }
  }
}

Включено ли пространство имен для имени типа класса?

ModuleType="HelloWorldModule.Views.HelloWorldView, HelloWorldModule...

Следующий вопрос: находится ли HelloWorldModule.dll в той же папке, что и Shell.exe?Спасибо, Юрген

1 Ответ

1 голос
/ 11 октября 2011
  1. Атрибут ref ожидает путь ниже пути приложения, если вы используете относительный путь или абсолютный путь, который обычно не работает, потому что вы не можете знать папку установки во время разработки. Чтобы каталог модулей нашел ваш модуль, вам лучше скопировать модуль в каталог приложения и использовать относительный путь.
  2. Атрибут типа модуля должен быть типом внутри вашего модуля dll, который реализует интерфейс IModule.
  3. Да, пространство имен должно быть включено.
  4. См. Ответ 1

Для получения дополнительных советов по вашим вопросам обратитесь к главе 4, Разработка модульных приложений руководства Prism 4.0 - ноябрь 2010 .

...