Сообщение об ошибке "Не удается установить или запустить приложение. Приложение требует stdole Version 7.0.3300.0 в GAC".
Когда один пользователь пытается запустить приложение, наше приложение ClickOnce сообщает:
Не удается установить или запустить приложение. Для приложения требуется stdole Version 7.0.3300.0 в GAC.
Интересно отметить, что в GAC (C:\Windows\assembly) не установлен stdole. Как мне его получить?
Мы используем .NET 3.5, и он был установлен на этом компьютере.
Ответы
Ответ 1
Итак, получается, что файлы .NET были скопированы в C:\Program Files\Microsoft.NET\Primary Interop Assemblies\
. Однако они никогда не регистрировались в GAC.
Я закончил вручную перетаскивание файлов в C:\Program Files\Microsoft.NET\Primary Interop Assemblies
в C:\windows\assembly
, и приложение работало на этой проблемной машине. Вы также можете сделать это программно с помощью Gacutil.
Итак, похоже, что что-то случилось с .NET во время установки, но это, похоже, исправляет проблему. Я надеюсь, что это поможет кому-то еще!
Ответ 2
Попробуйте перейти на вкладку "Опубликовать" в свойствах проекта, а затем нажмите кнопку "Файлы приложений". Затем установите следующие свойства:
- Имя файла stdole.dll
- Опубликовать статус для включения
- Загрузить группу в требуемый
После этого вам нужно повторно опубликовать свое приложение.
Если ссылка имеет CopyLocal = true, эта ссылка будет опубликована вместе с приложением. Если ссылка имеет CopyLocal = false, ссылка будет помечена как обязательное условие. Это означает, что сборка должна быть установлена в клиентском GAC до того, как приложение ClickOnce будет установлено.
Существуют некоторые сборки, которые устанавливаются в GAC из-за установки Visual Studio, а не для установки .NET Framework. Это может быть ваша ситуация.
Ответ 3
В моем случае я решил эту проблему перейти на вкладку Опубликовать в свойствах проекта, а затем выбрать кнопку Файлы приложений. Тогда просто:
Примечание.. Прежде чем применять это решение, убедитесь, что вы уже (как и я), проверили все ваши проекты решений и не нашли ссылок на stdole.dll сборка.
1 - находится файл stdole.dll;
2 - изменил статус Опубликовать на Исключить
3 - После этого вам нужно опубликовать свое приложение.
Эта проблема произошла на Visual Studio 2012 после ее миграции из Visual Studio 2010.
Надеюсь, что это поможет.
Ответ 4
У меня была та же проблема с развертыванием ClickOnce.
Я решил проблему, перейдя на вкладку "Опубликовать" в свойствах проекта, а затем выбрав кнопку "Файлы приложений".
Затем я выбрал следующие опции:
- 'Имя файла' 'stdole.dll'
- "Опубликовать статус" в "Включить" и
- 'Загрузить группу' в 'Обязательно'.
Это исправило мою проблему при повторном опубликовании.
Надеюсь, это поможет вам: D
Ответ 5
У нас была та же проблема с нашим приложением ClickOnce, которое использует Interop с Microsoft Office. Это произошло только на нескольких компьютерах в компании.
Лучшим решением, которое мы выяснили, было изменение установки MS Office на проблемных компьютерах (через панель "Программы и компоненты" ) и убедиться, что "функция программирования .NET" (не уверена в имени компонента - наши версии Microsoft_Office не являются Английский) был установлен для каждого из приложений MS Office (Excel, Word, Outlook и т.д.). Это, похоже, не включено в установку по умолчанию.
Тогда проблема с stdole.dll была исправлена.
Надеюсь, это поможет.
Ответ 6
Ну, вы не можете установить GAC с помощью ClickOnce. Это описано в этой статье MSDN.
Ответ 7
Проверьте, действительно ли вы используете ссылку EnvDTE. Если нет, удалите его и перекомпилируйте.
Ответ 8
Интересно, у меня не было никаких ссылок на stdole в моем проекте, но у меня был пользователь, все еще получавший ошибку. Мне пришлось добавить ссылку, а затем изменить настройку для включения. Надеюсь, что это сработает.
Ответ 9
В H2oRider - ваше приложение получает доступ к dll Oracle в GAC? Я рекомендую вам следующее: добавьте dll в свой проект и установите действие сборки в "content" и установите "copy to output directory" для "копирования всегда".
Затем удалите ссылки (ссылки) на dll в GAC. Повторно добавьте ссылку, но на этот раз перейдите к той, которую вы только что добавили в свой проект.
Теперь опубликуйте его. Приложение будет искать DLL локально, а DLL будет включена в развертывание, чтобы найти его.
Если это не сработает, возможно, вы не сможете использовать эту DLL, если она включена локально, а не в GAC. Это касается некоторых сборок, таких как Office PIA. В этом случае единственный способ его развертывания - обернуть его в пакет установки и развертывания и использовать генератор манифеста Bootstrapper, чтобы превратить его в необходимое условие, которое вы можете опубликовать при развертывании ClickOnce.
Ответ 10
Мое решение: я открыл папку с рекомендациями в обозревателе решений (показывая все файлы) и для каждой сборки, на которую жаловалась установка (имя сборки может быть не таким же, как имя файла сборки - внутри объекта explorer, но достаточно легко понять), я изменил Копировать Локальный на Истину. В конце концов мне нужно было сделать это с каждой установкой Microsoft Office/COM.