Это может быть немного глупый вопрос, но мне нужно кое-что прояснить. Я несколько новичок в .NET и создал EXE, который должен был ссылаться на существующую COM DLL. При этом Visual Studio 2010 автоматически создала «Interop» DLL, которая ему нужна / используется для работы с устаревшей COM DLL.
Я развернул свой проект и включил в него эту Interop DLL (в той же папке), и все работает нормально. Тем не менее, у меня есть другие приложения, которые должны будут использовать эту же устаревшую COM DLL. Можно ли ссылаться на него одинаково в каждом приложении и продолжать развертывание DLL-библиотеки Interop для каждого приложения? К сожалению, все эти небольшие приложения находятся в одной и той же папке, и каждое из них использует одну и ту же Interop DLL (так что она будет существовать там, если будет использоваться другим приложением). Я вынужден поместить их в одну папку, потому что эти приложения называется как способ настройки родительского приложения. Таким образом, он только смотрит в свою локальную папку, когда хочет запустить «пользовательское» приложение. Я просто обеспокоен тем, что если один EXE-файл когда-либо будет удален и он извлечет Interop DLL, то другие, которые все еще зависят от него, потерпят неудачу.
Итак, мне было интересно, возможно ли или хорошая идея поместить эту Interop DLL в GAC? Я пошел дальше и установил Interop DLL в GAC, а затем удалил Interop DLL из папки, где работает мой EXE, и он не работал. Я получаю сообщение об ошибке «Не удалось загрузить файл или сборку». Я застрял на том, чтобы заставить это работать.
- Нужно ли ссылаться на Interop DLL в моем проекте по-другому, так что теперь это из GAC?
или
- Нужно ли что-то добавить в мой код .NET, например Assembly.Load, чтобы это работало?
- Нужно ли создавать эту Interop DLL самостоятельно, используя TLBIMP?
Любая помощь будет принята с благодарностью!
С наилучшими пожеланиями,
Nelson