Я пытаюсь развернуть приложение 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.
Основной исполняемый файл, который мне нужно развернуть, - это файл MyProductFrontDesk.exe
, который зависит от MyProductSiteServer.exe
- и, похоже, именно здесь возникает ошибка: «Ссылка в манифесте не соответствует идентификатору загруженной сборки MyProductSiteServer.exe».
Какой манифест нужно исправить? И как?
c#
visual-studio-2010
clickonce
Шауль Бер
источник
источник
Ответы:
Возникла проблема с Visual Studio 2008, которая решается отсутствием встраивания манифеста по умолчанию - один из комментариев к этой статье предполагает, что проблема все еще существует в Visual Studio 2010.
источник
<assemblyIdentity/>
элемент в настраиваемом манифесте можно настроить (или опустить, чтобы компилятор выдал правильный идентификатор сборки) в вашем настраиваемом.manifest
файле, что позволяет указывать такие вещи, как, например,<requestedExecutionLevel/>
без нарушения ClickOnce.У меня была такая же проблема, когда я добавил ссылку на другой проект.
Чтобы решить эту проблему, включите параметры безопасности ClickOnce во всех упомянутых проектах, как объяснил здесь Ян (выделено мной):
Я считаю, что это правильный способ исправить это при ссылке на другой проект с тем же решением.
Связанное сообщение на форуме истекло, но оно доступно в архиве здесь .
источник
.cproj
файла с помощью<PropertyGroup><TargetZone>LocalIntranet</TargetZone></PropertyGroup>
https://github.com/Squirrel
. Когда мои (непроизводственные) развертывания ClickOnce перестали работать, я совсем забыл об этом.Я столкнулся с той же проблемой, но мое решение было совсем другим.
Мое приложение ClickOnce ссылалось на другой проект EXE-файла в моем решении, поэтому, когда клиент загрузил его, и был еще один EXE-файл, у него не было манифеста.
Удаление зависимости от другого исполняемого файла решило мою проблему.
источник
Я подтвердил, что проблема также существует в Visual Studio 2010. Выбор «Создать приложение без манифеста» в свойствах проекта - Приложение - Ресурсы решил проблему.
источник
Это также может произойти, если у вас есть две разные версии пакета NuGet , на которые есть ссылки в разных файлах DLL в вашем проекте. В моем случае я использовал фреймворк под названием Catel, и у меня была более новая версия, указанная в одном файле DLL, чем в другом (надзор), но это заставило ClickOnce выплюнуть эту ошибку. Ссылка на ту же версию решила проблему.
источник
У меня была та же проблема, но я решил изменить «Целевую платформу» на «x86» (Свойства проекта -> Вкладка «Сборка»). Было установлено значение Any CPU. Как только я изменил настройку и опубликовал заново, установщик ClickOnce смог завершить работу.
источник
У меня возникла такая же ошибка при развертывании с проектом, установленным на Debug. Когда он был изменен обратно на Release, ошибки не было.
источник
У меня была точно такая же проблема. Я не мог удалить зависимость, так как это было необходимо для основного проекта. Второй проект был консольным.
Я перешел на библиотеку классов , и тогда все заработало.
источник
Другой обходной путь, если зависимость exe с манифестом плохого приложения не может быть изменена (например, из пакета NuGet). Двоичный файл может быть включен в качестве содержимого с фиктивным расширением, поэтому ClickOnce не пытается проверить манифест и затем переименовывать его во время запуска приложения.
csproj:
App.xaml.cs:
источник
У меня была такая же проблема, и я попробовал все предложенные ранее решения, но все они не сработали.
Я исправил это, изменив место обновления. Из свойств проекта -> Опубликовать -> Обновления . Измените место обновления на вашу опубликованную папку.
источник
ТАКЖЕ РЕШЕНО ДЛЯ ClickOnce .exe, вызывающего .exe, вызывающего .exe.
У меня тоже была эта проблема, используя VB.NET в Visual Studio 2010.
У меня есть приложение Windows Forms ClickOnce, которое ссылается на второе приложение Windows Forms, которое, в свою очередь, ссылается на третье приложение Windows Forms. (Эти второе и третье приложения являются EXE- файлами, а не DLL-файлами для простоты, поскольку они с одинаковой вероятностью будут запускаться автономно или вызываться с переданными им свойствами.)
Мне пришлось закомментировать содержимое манифеста ОБОИХ и третьего приложений :
Пошаговое руководство: развертывание приложения ClickOnce вручную
Работает отлично.
источник
Если у вас есть одна основная программа, которая ссылается на другую, вам нужно проделать трюк «Создать приложение без манифеста» на Program основной программы:
Проект -> Свойства -> вкладка «Приложение» -> Ресурсы -> Манифест -> раскрывающийся список «Создать приложение без манифеста»
а затем переключитесь на свойства проекта указанной программы и повторите процесс.
источник
Я использую Visual Studio 2012 в Windows 7, и мне нужно опубликовать решение, состоящее из двух проектов.
Как отметил Эдуардо, отметка обоих проектов как ClickOnce и включение приложения полного доверия решает проблему.
источник
У меня была немного другая проблема, которую я смог решить, поэтому я хотел опубликовать ее. Мои проблемы заключались в том, что я запускал 3 ветки из TFS. Я обновил элементы управления Telerik в одном из своих филиалов, но не в других. Как только я обновил элементы управления Telerik во всех 3 ветках и повторно опубликовал его, он заработал, и эта ошибка исчезла.
В то время я работал с VS2015.
источник
Это интересно. Я просто повторно развернул приложение и проблема решена. Возможно повреждение файла из-за сети.
источник
Я использую
mage.exe
для создания своего манифеста. Добавление этого к моему.csproj
исправило проблему. Вы также можете попробовать-nowin32manifest
флаг компилятора ; Я не тестировал. Я не вижу команды Стюарта «Создать приложение без манифеста» в Visual Studio 2017; Я думаю, что это то, что он делает.У меня тоже есть это
.csproj
:источник
В моей версии Visual Studio 2017 версии 15.6.6 (но, возможно, она была там раньше), я обнаружил, что файлы приложения не были в проекте Exe и публикации правой кнопкой мыши, а на вкладке публикации свойств проекта, где вы можете указать, какие файлов приложения, которые вы хотите поместить в установку.
Так что избавьтесь от проблемных. Если что-то уже установлено на компьютере, на котором будет установлено это приложение, нет причин пытаться переустановить его в любом случае, кроме случаев, когда вам нужна ссылка для его запуска. Если бы он установил то, что уже было на компьютере, но в другую папку, это могло бы не сработать. Лучше всего использовать другие приложения или сборки dll в том же месте, где они были установлены ранее.
источник
У меня была такая же проблема пару минут назад, и ниже приведены шаги, которые я использовал для ее решения.
Ключ
Контрольный список
Перейдите к свойствам -> Приложение -> Ресурсы -> проверьте значки и манифест (для a и b)
Перейдите к свойствам -> Сборка: убедитесь, что a и b находятся на одной целевой платформе
Перейдите к свойствам -> Безопасность и убедитесь, что для пунктов a и b отмечены следующие параметры: «Включить параметры безопасности ClickOnce» и «Это приложение с полным доверием».
Перейдите к свойствам -> Опубликовать: я рекомендую вам изменить путь к папке публикации
источник
У меня была такая же проблема с моим приложением VS 2019.
Я попытался создать приложение без манифеста, но это не сработало.
Однако работало следующее:
Надеюсь, это поможет!
источник