Ошибка при развертывании приложения ClickOnce. Ссылка в манифесте не соответствует идентификатору загруженной сборки

Я пытаюсь развернуть приложение ClickOnce, но установка не выполняется на клиенте. Вот журнал ошибок:

PLATFORM VERSION INFO Windows : 6.1.7601.65536 (Win32NT) Common Language Runtime : 4.0.30319.1 System.Deployment.dll : 4.0.30319.1 (RTMRel.030319-0100) clr.dll : 4.0.30319.1 (RTMRel.030319-0100) dfdll.dll : 4.0.30319.1 (RTMRel.030319-0100) dfshim.dll : 4.0.31106.0 (Main.031106-0000) SOURCES Deployment url : http://MyProduct.com/download/workstation/MyProduct%20Front%20Desk.application Server : Microsoft-IIS/7.5 X-Powered-By : ASP.NET Deployment Provider url : http://MyProduct.com/Download/Workstation/MyProduct%20Front%20Desk.application Server : Microsoft-IIS/7.5 X-Powered-By : ASP.NET Application url : http://MyProduct.com/Download/Workstation/Application%20Files/MyProduct%20Front%20Desk_1_0_0_7/MyProduct%20Front%20Desk.exe.manifest Server : Microsoft-IIS/7.5 X-Powered-By : ASP.NET IDENTITIES Deployment Identity : MyProduct Front Desk.application, Version=1.0.0.7, Culture=neutral, PublicKeyToken=df343a0868ab2d74, processorArchitecture=msil Application Identity : MyProduct Front Desk.exe, Version=1.0.0.7, Culture=neutral, PublicKeyToken=df343a0868ab2d74, processorArchitecture=msil, type=win32 APPLICATION SUMMARY * Installable application. ERROR SUMMARY Below is a summary of the errors, details of these errors are listed later in the log. * Activation of http://MyProduct.com/download/workstation/MyProduct%20Front%20Desk.application resulted in exception. Following failure messages were detected: + Reference in the manifest does not match the identity of the downloaded assembly MyProductSiteServer.exe. COMPONENT STORE TRANSACTION FAILURE SUMMARY No transaction error was detected. WARNINGS There were no warnings during this operation. OPERATION PROGRESS STATUS * [03/17/11 11:51:04] : Activation of http://MyProduct.com/download/workstation/MyProduct%20Front%20Desk.application has started. * [03/17/11 11:51:04] : Processing of deployment manifest has successfully completed. * [03/17/11 11:51:04] : Installation of the application has started. * [03/17/11 11:51:05] : Processing of application manifest has successfully completed. * [03/17/11 11:51:06] : Found compatible runtime version 4.0.30319. * [03/17/11 11:51:06] : Request of trust and detection of platform is complete. ERROR DETAILS Following errors were detected during this operation. * [03/17/11 11:51:30] System.Deployment.Application.InvalidDeploymentException (RefDefValidation) - Reference in the manifest does not match the identity of the downloaded assembly MyProductSiteServer.exe. - Source: System.Deployment - Stack trace: at System.Deployment.Application.DownloadManager.ProcessDownloadedFile(Object sender, DownloadEventArgs e) at System.Deployment.Application.FileDownloader.DownloadModifiedEventHandler.Invoke(Object sender, DownloadEventArgs e) at System.Deployment.Application.SystemNetDownloader.DownloadSingleFile(DownloadQueueItem next) at System.Deployment.Application.SystemNetDownloader.DownloadAllFiles() at System.Deployment.Application.FileDownloader.Download(SubscriptionState subState) at System.Deployment.Application.DownloadManager.DownloadDependencies(SubscriptionState subState, AssemblyManifest deployManifest, AssemblyManifest appManifest, Uri sourceUriBase, String targetDirectory, String group, IDownloadNotification notification, DownloadOptions options) at System.Deployment.Application.ApplicationActivator.DownloadApplication(SubscriptionState subState, ActivationDescription actDesc, Int64 transactionId, TempDirectory& downloadTemp) at System.Deployment.Application.ApplicationActivator.InstallApplication(SubscriptionState& subState, ActivationDescription actDesc) at System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl) at System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state) COMPONENT STORE TRANSACTION DETAILS No transaction information is available. 

Основным exe, который мне нужно развернуть, является MyProductFrontDesk.exe , который имеет зависимость от MyProductSiteServer.exe – и, похоже, там, где возникает ошибка: «Ссылка в манифесте не совпадает с идентификатором загруженной сборки MyProductSiteServer.exe «.

Какой манифест нужно исправить? И как?

Возникла проблема с Visual Studio 2008, которая решается не встраиванием манифеста по умолчанию – один из комментариев к этой статье предполагает, что проблема все еще существует в Visual Studio 2010.

В свойствах проекта -> вкладка « Приложение » -> « Ресурсы» -> « Значок и манифест» , параметр «Вставить манифест с настройками по умолчанию» вызвал эту проблему. Установка этого параметра в «Создать приложение без манифеста» устраняет проблему.

Я столкнулся с одной и той же проблемой, но мое решение было совсем другим.

Мое приложение ClickOnce ссылалось на другой проект EXE-файла в моем решении, поэтому, когда клиент загрузил его и появился еще один EXE-файл, у него не было манифеста.

Удаление зависимости от другого исполняемого файла решило мою проблему.

У меня была такая же проблема, когда я добавил ссылку на другой проект.

Способ решения этого вопроса – включение настроек безопасности ClickOnce во все проекты, на которые ссылаются, как пояснил Ян (основное внимание):

Для меня способ решения этой проблемы состоял в том, чтобы убедиться, что все проекты в рамках решения, которые открыли вкладку « Безопасность » в своих « Свойствах проекта », имели опцию « Включить настройки безопасности ClickOnce », отмеченные с помощью опции « Это полное доверие приложение «Выбрано. Это связано с тем, что он правильно создает манифест, и приложение не будет установлено, если эти параметры не будут установлены во всех проектах в рамках требуемого решения.

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

Связанный пост форума уже истек, но он доступен в архиве здесь .

Я подтвердил, что проблема также существует в Visual Studio 2010. Выбор «Создать приложение без манифеста» в Свойствах проекта – Приложение – Ресурсы решили проблему.

Это также может произойти, если у вас есть две разные версии пакета NuGet, указанные в разных DLL-файлах вашего проекта. В моем случае я использовал фреймворк под названием Catel, и у меня была более новая версия, упомянутая в одном DLL-файле, чем другая (надзор), но это вызвало щелчок ClickOnce для этой ошибки. Реферирование одной и той же версии разрешило проблему.

У меня была та же проблема, но я решил изменить «Платформа» на «x86» (Project Properties -> Build Tab). Он был настроен на любой процессор. Как только я изменил настройки и переиздал, установщик ClickOnce смог завершить.

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

Я перешел в Class Library , и тогда все сработало.

Я столкнулся с такой же ошибкой при развертывании с проектом, настроенным на Debug. Когда он был изменен на Release, ошибки не было.

Другой обходной путь, в случае, если зависимость exe с манифестом плохого приложения не может быть изменена (скажем, из пакета NuGet). Бинарный файл может быть включен как контент с фиктивным расширением, поэтому ClickOnce не пытается проверить манифест и затем переименовывается во время запуска приложения.

csproj:

   .exe.bin PreserveNewest    False     Exclude True Assembly   

App.xaml.cs:

 public partial class App : Application { private void Application_Startup(object sender, StartupEventArgs e) { var appDir = Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName); if (!File.Exists($"{appDir}\\.exe")) { File.Copy($"{appDir}\\.exe.bin", $"{appDir}\\.exe"); } } } 

У меня была такая же проблема, и я пробовал все предыдущие предлагаемые решения здесь, и все они не работали.

Я исправил это, изменив местоположение обновления. Из свойств проекта -> Опубликовать -> Обновления . Измените местоположение обновления в опубликованной папке.

ТАКЖЕ РЕШЕН ДЛЯ ClickOnce .exe, вызывая .exe, вызывая .exe.

У меня тоже была эта проблема, используя VB.NET в Visual Studio 2010.

У меня есть приложение ClickOnce Windows Forms, которое ссылается на второе приложение Windows Forms, которое, в свою очередь, ссылается на третье приложение Windows Forms. (Этими вторыми и третьими приложениями являются EXE- файлы, а не DLL-файл для простоты, поскольку они в равной степени могут работать автономно или вызываться со свойствами, переданными им).

Мне пришлось прокомментировать 2-е и 3-е показания манифеста приложений :

Пошаговое руководство. Ручное развертывание приложения ClickOnce

Он работает отлично.

Я использую Visual Studio 2012 в Windows 7 и должен опубликовать решение, состоящее из двух проектов.

Как отметил Эдуардо, обозначение обоих проектов как ClickOnce и включение Full Trust Application устраняет проблему.

У меня была другая проблема, которую я смог решить, и поэтому я хотел опубликовать ее. Мои проблемы заключались в том, что я запускал 3 отделения из TFS. Я обновил элементы управления Telerik в одном из моих филиалов, но не в других. Как только я обновил элементы управления Telerik во всех трех филиалах и повторно опубликовал его, эта ошибка исчезла.

В то время я работал VS2015.

Это интересно. Я просто перераспределяю приложение и проблему. Возможно, повреждение файла из-за сети.

Я использую mage.exe для генерации моего манифеста. Добавив это в мой .csproj исправлена ​​проблема. Вы также можете попробовать флаг -nowin32manifest compiler ; Я его не тестировал. Я не вижу stuartd «Создать приложение без манифеста» в Visual Studio 2017; Я думаю, что это то, что он делает.

  true  

У меня также есть это в моем .csproj :

 false 

Если у вас есть одна основная программа, которая ссылается на другую, вам нужно сделать трюк «Создать приложение без манифеста» в программе основной программы:

Проект -> Свойства -> вкладка приложения -> ресурсы -> манифест -> выпадающее меню “Создать приложение без манифеста”

а затем перейдите к свойствам Project Project, на которые ссылается, и повторите процесс.

  • Почему Visual Studio не может найти мою DLL?
  • Компиляция Visual Studio 2010 с версией отладки или выпуска сторонней библиотеки в зависимости от того, скомпилирован ли мой проект Build или Release?
  • push_back vs emplace_back
  • Не удается найти или открыть файл PDB в Visual Studio C ++ 2010
  • Невозможно импортировать ключевой файл «blah.pfx» - ошибка «Ключ-файл может быть защищен паролем»
  • При проверке произошла ошибка. HRESULT = '8000000A'
  • Как установить флаги компилятора CUDA в Visual Studio 2010?
  • Зависимая DLL не копируется в папку вывода сборки в Visual Studio
  • Как настроить MSBuild для использования сохраненного файла публикации для WebDeploy?
  • Скопируйте файлы (файлы) из одного проекта в другой, используя событие post build ... VS2010
  • Не удалось инициализировать систему конфигурации
  • Давайте будем гением компьютера.