Я разрабатываю надстройку уровня документа VSTO для Excel с использованием руководства по составным приложениям (Prism для Visual Studio 2008 / .NET 3.5).
Одно из требований заключается в том, что эта надстройка должна быть расширяемойто есть он должен позволять загружать dll плагина во время выполнения.Я создаю каталог модулей каталога Unity следующим образом:
// the path where the WorkbookProject.dll Add-In (WorkbookProject\bin\Debug) resides
string fullPath = AppDomain.CurrentDomain.BaseDirectory;
string theDirectory = Path.GetDirectoryName(fullPath);
return new DirectoryModuleCatalog() { ModulePath = fullPath };
Моя упрощенная иерархия проектов выглядит следующим образом:
Common
-ref: none
WorkbookProject // the main project with xlsx workbook (shouldn't reference any PlugIns)
-ref: Common
PluginOne
-ref: Common
-PostBuildEvent copies output dll to WorkbookProject\bin\Debug
Setup (temporarily knows all plugins, but they should be installed separately)
-ref: Common
-ref: PluginOne
-ref: WorkbookProject
Это прекрасно работает после развертывания (все библиотеки находятся в папке приложения).как созданный проектом установки), но во время отладки я получаю исключение на Microsoft.Practices.Composite.Modularity.ModuleCatalog.Load()
:
System.IO.FileLoadException: API restriction: The assembly 'file:///(...)\WorkbookProject\bin\Debug\Common.dll' has already loaded from a different location.
It cannot be loaded from a new location within the same appdomain.
В окне вывода / отладки Visual Studio я вижу, что этот файл уже былзагружается из
C:\Users\Me\AppData\Local\assembly\dl3\JWCWD78V.HAZ\H2VHNAYM.XW1\18912686\7e8ea552_620acc01\Common.dll
Почему все файлы моего приложения (на которые ссылается WorkbookProject) копируются в каталог AppData во время отладки?Можно ли этого избежать?
Будет ли иметь значение, если я преобразую свой проект из надстройки рабочей книги в надстройку приложения?