|
MEF & SatisfyImportsOnce: FileLoadException
|
|||
---|---|---|---|
#18+
Понадобилось мне недавно дописать одно расширение для SSMS - начинал когда-то это делать для SSMS 2014, сейчас решил подогнать его под актуальную версию, т.е. SSMS 18. Все расширения для Visual Studio, а следовательно, и для SSMS сделаны на основе, и активно используют внутри MEF. Однако для этих расширений дела с ним обстоят немного иначе, чем со своими собственными приложениями. В частности, свои компоненты приходится насильно впихивать в CompositionContainer, просто так их система не импортирует (при этом майкрософтовские индусы спрятали контейнер в такую глубокую ж, что вытаскивать его приходится рефлекшеном). После этого нужно ещё для ряда компонентов (уже не своих) вызвать SatisfyImportsOnce, чтобы они без рекомпозиции просто обновили свои импорты, и туда попали те компоненты, которые я закомпозил принудительно. И вот для одного компонента студии этот вызов валится с такой вот ошибкой: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
Проверил и обновил все сборки в проекте до последней версии - без толку. Посмотрел, как и какие сборки грузятся (fuslogw) - ну да, вызов вышеупомянутой сборки валится, расширенная информация такова: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
- т.е. нужна сборка версии 15.2, а нашлась только 15.16, и она не подходит. Из-за этой ошибки не проходит обновление импортов где нужно (в реализации IViewTagAggregatorFactoryService), и расширение просто не работает. Кто что посоветует? SSMS 18.7.1, фреймворк 4.7.2. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2020, 17:18 |
|
MEF & SatisfyImportsOnce: FileLoadException
|
|||
---|---|---|---|
#18+
Я не пробовал сам писать екстеншены к VS, но Сон Веры Павловны вытаскивать его приходится рефлекшеном ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2020, 18:04 |
|
MEF & SatisfyImportsOnce: FileLoadException
|
|||
---|---|---|---|
#18+
fkthat Я не пробовал сам писать екстеншены к VS, но Сон Веры Павловны вытаскивать его приходится рефлекшеном А другого варианта просто нет - сборка расширения (по стандартному месту расположения аддонов) не находится ни в AssemblyCatalog, ни в DirectoryCatalog контейнера, и компоненты без насильного подсовывания просто никуда не попадут. И именно в случае SSMS (это не полноценная студия, а isolated shell) я не один так делаю. Ну, и плюс - это всё прекрасно работало пару минорных версий SSMS тому назад. А в этой, видимо, как-то не так обновили сборки. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2020, 18:13 |
|
MEF & SatisfyImportsOnce: FileLoadException
|
|||
---|---|---|---|
#18+
Хозяйке на заметку: при возникновении подобных косяков очищать папку %LocalAppData%\Microsoft\SQL Server Management Studio\18.0_IsoShell\ComponentModelCache (или LocalAppData%\Microsoft\VidualStudio\<version>\ComponentModelCache в общем случае) - там в файлик Microsoft.VisualStudio.Default.cache видимо когда-то давно прописалась версия 15.2 той самой сборки, и не обновилась, поэтому при обновлении импортов и делалась попытка загрузить версию 15.2. Папку очистил, кэш обновился, всё заработало. Всем спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2020, 08:27 |
|
|
start [/forum/topic.php?fid=20&fpage=7&tid=1398413]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
others: | 267ms |
total: | 391ms |
0 / 0 |