У меня есть приложение, в котором я должен предоставить пользователю возможность расширения на лету.Вы можете думать об этом как о механизме вычислений, с большим количеством данных и некоторыми математическими / числовыми алгоритмами.Я предоставляю некоторые статические поля (данные) и методы (вычисления), с помощью которых пользователь может создать правильное выражение C #, которое должно возвращать double.
Пользователь вводит допустимое выражение в текстовое поле, и я должен предоставить результаты.В настоящее время я внедряю выражение в статический метод сборки, сгенерированной в памяти, следуя инструкциям в http://blogs.msdn.com/b/abhinaba/archive/2006/02/09/528416.aspx.. Затем я использую отражение, чтобы вызвать конкретный метод и вернуть результат.
Это работает нормально, за исключением того факта, что сгенерированные сборки продолжают накапливаться в течение жизненного цикла приложения.Это было нормально, когда у меня были только клиентские приложения, но теперь я перехожу к серверному приложению и не хочу время от времени переустанавливать службу.
При поиске какчтобы выгрузить сборку, я обнаружил пространство имен System.Addin.Это именно то, что я хочу: загрузка сборки на другой домен приложений, который я могу отменить последним.Он даже инкапсулирует все отражения.
Единственная проблема, с которой я столкнулся сейчас, заключается в том, что AddInStore ожидает путь к файлу, но все мои сборки генерируются в памяти, устанавливая для свойства GenerateInMemory CompileParameters, используемого в true.Обязательно ли записывать мои сборки на диск?Или можно использовать сборку, скомпилированную во время выполнения, непосредственно в качестве надстройки?
С уважением, Карлос