Из документации по Внедрение зависимостей :
IIocResolver (и IIocManager) также имеют метод расширения CreateScope (определенный в Abp.Dependency. namespace) для безопасного освобождения всех разрешенных зависимостей.
В конце использования блока все разрешенные зависимости автоматически удаляются.
blockquote>Если вы находитесь в статическом контексте или не можете внедрить IIocManager, в качестве крайней меры вы можете использовать одноэлементный объект IocManager.Instance везде.
blockquote>Итак, используйте область с
IocManager.Instance
:
using (var scope = IocManager.Instance.CreateScope()) { ... }
→IocManager.Instance.UsingScope(scope => { ... })
protected void Session_Start() { // Starting a session and already authenticated means we have an old cookie var existingUser = System.Web.HttpContext.Current.User; if (existingUser != null && existingUser.Identity.Name != "") { IocManager.Instance.UsingScope(scope => // Here { // Execute app service here. var srv = scope.Resolve
(); srv.UpdateItems(); }); } }
Это кажется, что необходимо лучше понять стороннюю библиотеку и как это использует свои собственные зависимости. Если установка API решает проблему, но копирование файлов вручную не делает, то Вы пропускаете что-то. Существует или недостающий файл, или некоторая переменная среды или ключ реестра, это требуется. Две вещи, которые действительно помогут Вам в этом, зависит инструмент (который является частью установки C++), и procmon, который скажет Вам все ключи реестра и файлы, которые привыкают во времени выполнения.
Если Вы удачливы, это - просто файл, который Вы пропускаете. Если это - все, что это, можно использовать раздел "Build Events" проекта скопировать необходимые файлы в правильное местоположение на успешной сборке. В противном случае Вы оказываетесь перед необходимостью решать этот некоторый другой путь - или путем требования API быть установленными, или прокрутка собственного проекта установки.
Как Вы развертываетесь? Просто плоские файлы? Если так, это должно работать, пока файл заканчивается в выходном каталоге проекта. Он?
При использовании другого развертывания необходимо будет сказать что механизм включать его. Это отличается для каждого из msi/ClickOnce/etc.
Можно или медленно добавлять нисходящие зависимости как ссылки на проект. Это является громоздким, и несколько хрупким
Или Ваш мог использовать инструмент как "Depends.exe" от Microsoft, чтобы осмотреть Ваши высокоуровневые блоки и получить список ссылок к зависимостям.