2016-10-11 3 views
0

Я пытаюсь создать надстройку Visual Studio для пользовательского интерфейса. Я решил реализовать модель View ViewModel с использованием библиотеки Prism. Он отлично работает, пока вы запускаете проект отдельно. После того, как я вставляю его в проект надстройки, я получаю это исключение: «Файл или сборка» Prism.Wpf, PublicKeyToken = 91a96d2a154366d8 »или одна из его зависимостей не найдена. Система не может найти файл«Visual Studio C# Add-In с WPF Prism MVVM

Все ссылки обновляются, и все в одном проекте.

enter image description here

В Connect.cs я просто хочу, главное окно, чтобы придумать.

public void Exec(string commandName, vsCommandExecOption executeOption, ref object varIn, ref object varOut, ref bool handled) 
    { 
     handled = false; 
     if(executeOption == vsCommandExecOption.vsCommandExecOptionDoDefault) 
     { 
      if(commandName == "SynopticGeneratorAddIn.Connect.SynopticGeneratorAddIn") 
      { 
       handled = true; 
       ShowMainWindow(); 
       return; 
      } 
     } 
    } 

    private void ShowMainWindow() 
    { 
     AutomaticSynopticGenerationCore.Views.MainWindow mainWindow = new AutomaticSynopticGenerationCore.Views.MainWindow(); 
     mainWindow.Show(); 
    } 
+1

1) поворот на слитого каротажа 2), где связующее ищет призмы узла 3), почему не так там, или почему это не связующее ищет где – Will

+0

Благодаря Fuslogvw и @ Смогу ли я идентифицировать проблему. Поскольку при отладке надстроек Visual Studio запускает новый экземпляр Серии, и доза не начинается с bin \ Debug Directory, как обычно. Он пытается связать сборки из каталога ../Common7/IDE. Это происходит со всеми моими сборками. Сборка Prism просто выдает исключение из-за того, что первая загружена для графического интерфейса. Итак, как я могу заставить Add-In загружать assamblys из моего каталога? –

+0

Это хороший вопрос. Я не знаю, как это работает для аддинов, но должно быть какое-то подходящее решение. Удачи. – Will

ответ

0

Поскольку никто не дал ответа, я расскажу вам, как я это сделал. Я переписал его как VSPackage, потому что надстройки считаются устаревшими. Это не помогло. Также обновление всех пакетов ничего не делало. Единственное, что работало, заключалось в том, чтобы использовать Prism перед созданием экземпляра окна. Это уродливое обходное решение, поэтому, если у вас есть что-то лучше, расскажите мне.

/// <summary> 
    /// This function is the callback used to execute a command when the a menu item is clicked. 
    /// See the Initialize method to see how the menu item is associated to this function using 
    /// the OleMenuCommandService service and the MenuCommand class. 
    /// </summary> 
    private void MenuItemCallback(object sender, EventArgs e) 
    {   
     LoadPrism(); 
     AutomaticSynopticGenerationCore.Views.MainWindow mainWindow = new AutomaticSynopticGenerationCore.Views.MainWindow(); 
     mainWindow.Show(); 
    } 

    /// <summary> 
    /// Loads Prism from own attached Assembly before window instance gets created 
    /// </summary> 
    static void LoadPrism() 
    {    
     typeof(Prism.Bootstrapper).ToString(); 
    }