Как правильно найти DLL в GAC

215
11 декабря 2021, 13:30

Проблема такая. Написал библиотеку типов на C#. Пока дебажил проблем не было, так как проект самой библиотеки входил в решения приложений и пересобирался вместе с ними. Но как только стало нужно изолировать приложения друг от друга, ожидаемо появились проблемы. Нужно сделать так, чтобы приложения видели мою библиотеку по имени, то есть чтобы не было обязательно ее присутствие в той же папке, где находится приложение.

Сначала пробовал зарегистрировать DLL для COM-взаимодействия, но для этого придется переписывать бОльшую часть кода библиотеки. Потом обратил внимание на вариант с GAC, но и тут не получилось, так как регистрация проходит, но я не вижу сборку в списке в Visual Studio. Внятного ответа на то, как включить библиотеку в этот список найти на просторах интернета не смог.

Регистрировал командой к приложению C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.2 Tools\gacutil.exe -i [Путь к приложению]. После утилита показывала мне, что библиотека действительно зарегистрирована, но в списке она не появлялась(

Как правильно добавить DLL в проект, если она самописная и зарегистрирована в GAC? Из разговора в комментах понял, что меня спасет только он (в смысле GAC).

Как делал я: прогнал команду в консоли способом, описанным выше, далее в проекте попытался добавить ссылку на нее, но библиотеки не нашел. Может я не там искал?

UPD: После прочтения всех статей ни одна не помогла. Описываемых веток реестра не существует. Единственное, что работает, это поместить сборку по адресу C:\Windows\Assembly она становится видимой, но это не вариант.

Answer 1

Правильный ответ - никак. Так как при добавлении в GAC уже невозможно воспользоваться подсказками (читай - intellisence-ом), нужно добавлять функции на лету. В моей ситуации есть 2 выхода. Первый - переписывать dll на com, и ссылаться на нее без копирования в директорию. Но не будет конструкторов и многого другого, плюс - все переписать. Второй - включать в проект приложения проект библиотеки и таскать ее вместе с собой, что неудобно в плане развертывания. Я выбрал второй вариант, так как переписывать все неохота. Спасибо за отсутствие ответов и запихивание бесполезных ссылок на msdn.

READ ALSO
Как, соблюдая MVVM, управлять Frame?

Как, соблюдая MVVM, управлять Frame?

Я нашел вариант в интернете, где Frame управляется созданием страниц из VM главного окна:

261
Открыть csv файл разделенный ; в Excel из C#

Открыть csv файл разделенный ; в Excel из C#

Нужно открыть файл csv с разделителем ";" из C# в Excel

120
Как работать с адресами памяти в C#?

Как работать с адресами памяти в C#?

Есть адрес памяти 0x7C4540, и я хочу записать/получить из него значениеКак мне это сделать в C#?

201
Как сделать, чтобы пользователь должен был удерживать палец на экране и перемещать вверх, вниз?

Как сделать, чтобы пользователь должен был удерживать палец на экране и перемещать вверх, вниз?

Много где читал, но везде или свайп, или просто нажатие на экранКак сделать, чтобы пользователь должен был удерживать палец на экране и перемещать...

180