2015-02-04 3 views
2

Проблема:ClickOnce - Redemption.dll - Нет такой интерфейс поддерживается

Я изменяю приложение (Project A) было разработано, чтобы использовать метод развертывания ClickOnce. У меня есть проект VB DLL, который использует Redemption. Это работает на клиентском сайте в течение 3 лет. В настоящее время мы используем Install Shield в качестве установщика. Redemption отлично работает при установке с помощью этого метода. Мы используем VS2013, а приложение использует .NET 3.5.

После установки приложения из ClickOnce построить приложение запускается, но ошибки при попытке использовать Redemption:

Unable to cast COM object of type 'System.__ComObject' to interface type 'Redemption.IRDOItems'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{F8408EB8-6B65-4704-810C-29795E67C0DD}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).

У меня есть другое приложение (Project B), который развертывается с помощью ClickOnce, которая также использует Redemption и его работает отлично. В этом проекте разница с Redemption заключается в том, что он ссылается и используется в основном проекте, а не в DLL-проекте в рамках решения. В этом проекте Redemption указан в разделе «Файлы приложений». Это приложение использует .NET 4.0.

Чтобы получить Проект А работать я скопировал настройки, используемой в проекте В.

В проекте B Выкуп был отмечен как:

  • Isolated = True
  • Вставить Interop Типы = True

В проекте A Погашение было отмечено как:

  • Изолированный = True
  • Copy Local = True

Код Interop типы не существует, потому что это .NET 3.5

Redemption.DLL не перечисленный в файлах приложений в проекте A , однако, если посмотреть на опубликованные файлы, они включены, а также развернуты на клиентской машине.

Нативный манифест для библиотеки VB DLL имеет все записи интерфейса, как и в манифесте Project B.

Я нашел несколько предложений после поиска bing/google, но я не смог найти кого-то, у кого была такая же проблема с COM-файлом. Это то, что я пробовал, но не с помощью:

Добавить файл Redemption в основной проект (без ссылки на него) и установить команду «Создать действие = Содержимое и копировать в выходной каталог = Копировать всегда».

  • Это дало мне ошибку при публикации, о том, что манифест Redemption уже сделано (то есть нативный манифест для VB DLL).
  • Изменение ссылки на выкуп в VB DLL, чтобы он не был изолирован позволил сборке работать, но все же получил исходную ошибку.
  • Различные комбинации действия сборки и изоляции на Погашение в VB DLL дало те же результаты.

Добавить файл исправления в основной проект, но на этот раз ссылаясь на него. Установите изолированный = true в основном проекте и установите значение false в VB DLL. Также пробовали различные комбинации изолированного и скопированного локального в основном проекте и VB DLL.

Редактировать главный файл проекта и добавьте группу элементов для развертывания манифеста, как описано здесь:

Я изменил Project A использовать .NET 4.0, так что я мог бы точно такой же настройки по выкупу в соответствии с проектом B.

Все с таким же чистым результатом.

Резюме:

Redemption.DLL, кажется, развернут, но не регистрируются в пути для VB DLL, чтобы увидеть его. Любые предложения были бы очень желанными.

ответ

1

Чтобы получить эту работу, я закончил создание Искупления в качестве предпосылки.

Я создал проект установки для установки Redemption. Чтобы сделать загрузчик таким образом, чтобы его можно было использовать в качестве прецедента, я следовал инструкциям здесь https://msdn.microsoft.com/en-us/library/h4k032e1.aspx

Смежные вопросы