Сообщение об ошибке «Невозможно установить или запустить приложение. Для приложения требуется stdole версии 7.0.3300.0 в GAC» - PullRequest
55 голосов
/ 17 февраля 2009

Когда один пользователь пытается запустить приложение, наше приложение ClickOnce сообщает:

Невозможно установить или запустить приложение. Приложению требуется стандартная версия 7.0.3300.0 в GAC.

Интересно отметить, что GAC (C: \ Windows \ Assembly) не имеет установленного stdole. Как мне его там достать?

Мы используем .NET 3.5, и он был установлен на этом компьютере.

Ответы [ 10 ]

66 голосов
/ 17 февраля 2009

Попробуйте перейти на вкладку Публикация в свойствах проекта, а затем нажмите кнопку Файлы приложения . Затем установите следующие свойства:

  • Имя файла из stdole.dll
  • Статус публикации до Включить
  • Группа загрузки до Требуется

После этого вам необходимо переиздать заявку.

Если ссылка имеет CopyLocal = true, ссылка будет опубликована вместе с приложением. Если ссылка имеет CopyLocal = false, то ссылка будет помечена как предварительное условие. Это означает, что сборка должна быть установлена ​​в клиентском GAC до установки приложения ClickOnce.

Некоторые сборки установлены в GAC из-за установки Visual Studio, а не установки .NET Framework. Это может быть ваша ситуация.

27 голосов
/ 18 февраля 2009

Получается, что файлы .NET были скопированы в C:\Program Files\Microsoft.NET\Primary Interop Assemblies\. Однако они никогда не были зарегистрированы в GAC .

В итоге я вручную перетащил файлы из C:\Program Files\Microsoft.NET\Primary Interop Assemblies в C:\windows\assembly, и приложение работало на этой проблемной машине. Вы также можете сделать это программно с помощью Gacutil .

Так что, похоже, что-то случилось с .NET во время установки, но это, похоже, исправляет проблему. Я надеюсь, что это поможет кому-то еще!

22 голосов
/ 01 октября 2014

В моем случае я решил эту проблему, перейдя на вкладку Опубликовать в свойствах проекта , а затем нажмите кнопку Файлы приложения . Тогда просто:

Примечание: Прежде чем применять это решение, убедитесь, что вы уже (как и я) проверили все проекты решения и не нашли ссылок на stdole.dll сборка.

1 - находится stdole.dll файл;

2 - изменен Статус публикации на Исключить

3 - После этого вам необходимо повторно опубликовать ваше приложение .

Эта проблема возникла в Visual Studio 2012 после ее миграции из Visual Studio 2010.

Надеюсь, это поможет.

13 голосов
/ 17 февраля 2009

У меня была такая же проблема с развертыванием ClickOnce.

Я решил проблему, перейдя на вкладку «Публикация» в свойствах проекта и выбрав кнопку «Файлы приложения».

Затем я выбрал параметры:

  • 'Имя файла' из 'stdole.dll'
  • «Опубликовать статус» для «Включить» и
  • Загрузить группу 'в' Обязательный '.

Это исправило мою проблему при повторной публикации.

Надеюсь, это поможет вам: D

5 голосов
/ 29 апреля 2011

У нас была та же проблема с нашим приложением ClickOnce, которое использует Interop с Microsoft Office. Это произошло только на нескольких компьютерах в компании.

Лучшим исправлением, которое мы обнаружили, было изменение установки MS Office на проблемных компьютерах (через панель Программы и компоненты ) и обеспечение «возможности программирования .NET» (не уверен в названии компонента - наши версии Microsoft_Office не на английском языке) были установлены для каждого из приложений MS Office (Excel, Word, Outlook и т. д.). Похоже, это не включено в установку по умолчанию.

Тогда проблема с stdole.dll была исправлена.

Надеюсь, это поможет.

1 голос
/ 08 января 2013

Мое решение: я открыл папку ссылок в обозревателе решений (с указанием всех файлов) и для каждой сборки, на которую жаловалась установка (имя сборки может не совпадать с именем сборки - внутри объекта Проводник, но достаточно легко понять), я изменил Копировать локальный на True . Мне пришлось делать это с каждой сборкой Microsoft Office / COM .

1 голос
/ 02 марта 2009

Ну, вы не можете установить в GAC, используя ClickOnce. Это задокументировано в этой статье MSDN .

0 голосов
/ 29 марта 2011

Для H2oRider - ваше приложение получает доступ к dll Oracle в GAC? Я рекомендую вам сделать следующее: добавьте dll в ваш проект, установите для действия сборки значение «content» и установите для «copy to output directory» значение «copy Always».

Затем удалите ваши ссылки на DLL в GAC. Повторно добавьте ссылку, но на этот раз перейдите к той, которую вы только что добавили в свой проект.

Теперь опубликуйте это. Приложение будет искать dll локально, и dll включена в развертывание, поэтому оно найдет его.

Если это не сработает, возможно, вы не сможете использовать эту dll, если она включена локально, а не в GAC. Это верно для некоторых сборок, таких как Office PIA. В этом случае единственный способ развернуть его - обернуть его в пакет установки и развертывания и использовать Bootstrapper Manifest Generator, чтобы превратить его в предварительное условие, которое вы можете опубликовать с помощью развертывания ClickOnce.

0 голосов
/ 19 августа 2009

Интересно, у меня не было ссылок на stdole в моем проекте, но у меня был пользователь, все еще получающий ошибку. Мне пришлось добавить ссылку, а затем изменить настройку, чтобы включить. Надеюсь, это сработает.

0 голосов
/ 30 апреля 2009

Проверьте, действительно ли вы используете ссылку EnvDTE. Если нет, удалите его и перекомпилируйте.

...