Błąd wdrażania aplikacji ClickOnce - odniesienie w manifeście nie pasuje do tożsamości pobranego zestawu

Próbuję wdrożyć aplikację ClickOnce, ale instalacja nie powiedzie się na kliencie. Oto dziennik błędów:

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.

Głównym exe, który muszę wdrożyć, jest MyProductFrontDesk.exe, który jest zależny od MyProductSiteServer.exe - i wydaje się, że jest to miejsce, w którym wyrzucany jest błąd: "odniesienie w manifeście nie pasuje do tożsamości pobranego assembly MyProductSiteServer.exe."

Który manifest należy poprawić? I jak?

Author: Shaul Behr, 2011-03-17

20 answers

Wystąpił problem z Visual Studio 2008, który został rozwiązany przez nie osadzenie domyślnego manifestu - jeden z komentarzy do tego artykułu sugeruje, że problem nadal istnieje w Visual Studio 2010.

We właściwościach projektu -> Application tab -> Resources - > checkbox Icon and manifest, ustawienie "Embed manifest with default settings" spowodowało problem. Ustawienie go na "tworzenie aplikacji bez manifestu" naprawia problem.

 113
Author: stuartd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-13 09:03:29

Miałem ten sam problem, gdy dodałem odniesienie do innego projektu.

Sposobem na rozwiązanie tego problemu było włączenie ClickOnce Security Settings we wszystkich odwołanych projektach, jak wyjaśnił Ian tutaj (moje podkreślenie):

Dla mnie, sposób ten został rozwiązany, aby upewnić się, że wszystkie projekty w ramach rozwiązania, które narażone na "Zakładka bezpieczeństwa "w ich" Właściwości projektu "miał opcję" Enable ClickOnce ustawienia bezpieczeństwa " zaznaczono z wybrano opcję " to jest aplikacja pełnego zaufania ". Ma to do czynienia z tworzeniem manifestu poprawnie i aplikacja nie zainstaluje, jeśli te opcje nie są ustawione na wszystkich projektach w ramach rozwiązania, które tego wymagają.

Uważam, że jest to właściwy sposób, aby to naprawić podczas dokonywania odniesienia do innego projektu w ramach tego samego rozwiązania.

Połączony post forum wygasł, ale jest dostępny w archiwum tutaj .

 61
Author: Mauro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-17 19:34:46

Napotkałem ten sam problem, ale moje rozwiązanie było zupełnie inne.

Moja aplikacja ClickOnce odnosiła się do innego projektu pliku EXE w moim rozwiązaniu, więc kiedy klient go pobrał, a był inny plik EXE, ten nie miał manifestu.

Usunięcie zależności od innego pliku wykonywalnego rozwiązało mój problem.

 38
Author: skimania,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-14 04:59:48

Potwierdziłem, że problem istnieje również w Visual Studio 2010. Wybranie opcji "Utwórz aplikację bez manifestu" w Properties - Application-Resources rozwiązało problem.

 12
Author: Eduardo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-12 17:37:30

Może się to zdarzyć również wtedy, gdy masz dwie różne wersje pakietu NuGet, do których odwołuje się w różnych plikach DLL w Twoim projekcie. W moim przypadku używałem frameworka o nazwie Catel i miałem nowszą wersję w jednym pliku DLL niż innym (oversight), ale to spowodowało, że ClickOnce wypluł ten błąd. Odwołanie się do tej samej wersji rozwiązało problem.

 6
Author: Bitfiddler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-08 15:09:01

Doświadczyłem tego samego błędu podczas wdrażania z projektem ustawionym na debugowanie. Kiedy został zmieniony z powrotem do wydania, nie było błędu.

 5
Author: Dave,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-21 04:26:35

Miałem ten sam problem, ale moim rozwiązaniem była zmiana 'Platform target' na ' x86 '(Project Properties -> Build Tab). Został ustawiony na dowolny procesor. Jak tylko zmieniłem ustawienie i ponownie opublikowałem, Instalator ClickOnce był w stanie zakończyć.

 4
Author: Paul Whygle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-14 16:26:55

Miałem dokładnie ten sam problem. Nie mogłem usunąć zależności, ponieważ była potrzebna przez główny projekt. Drugim projektem był projekt konsoli.

Zmieniłem na Class Library i wtedy wszystko działało.

 4
Author: user2971656,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-08 15:07:26

Inne obejście, w przypadku, gdy nie można zmienić zależności exe z manifestem złej aplikacji(powiedzmy pochodzącym z pakietu NuGet). Plik binarny może być dołączony jako zawartość z atrapą rozszerzenia, więc ClickOnce nie próbuje walidacji manifestu, a następnie zmienia nazwę podczas uruchamiania aplikacji.

Csproj:

  <Content Include="..\packages\<package>\lib\<app>.exe">
    <Link><app>.exe.bin</Link>
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </Content>
  <ItemGroup>
    <PublishFile Include="<app>">
      <Visible>False</Visible>
      <Group>
      </Group>
      <TargetPath>
      </TargetPath>
      <PublishState>Exclude</PublishState>
      <IncludeHash>True</IncludeHash>
      <FileType>Assembly</FileType>
    </PublishFile>
  </ItemGroup>

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}\\<app>.exe"))
        {
            File.Copy($"{appDir}\\<app>.exe.bin", $"{appDir}\\<app>.exe");
        }
    }
}
 2
Author: Matthieu Maitre MSFT,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-03 19:21:25

Miałem ten sam problem, i próbowałem wszystkich poprzednich proponowanych rozwiązań tutaj, i wszystkie z nich nie działa.

Naprawiłem to zmieniając lokalizację aktualizacji. From project properties - >Publish -> Aktualizacje . Zmień lokalizację aktualizacji na folder opublikowany.

 1
Author: Majid Alshezawi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-08 15:14:51

Również rozwiązane dla ClickOnce .dzwoni exe .dzwoni exe .exe.

Też miałem ten problem, używając VB.NET w Visual Studio 2010.

Mam ClickOnce aplikacji Windows Forms, która odwołuje się do drugiej aplikacji Windows Forms, która z kolei odwołuje się do trzeciej aplikacji Windows Forms. (Te drugie i trzecie aplikacje są plikami EXE , a nie plikami DLL dla uproszczenia, ponieważ mogą być uruchamiane samodzielnie lub wywoływane z właściwościami przekazanymi do oni.)

Musiałem skomentować zarówno treść manifestu drugiego i trzeciego wniosku za:

Walkthrough: ręczne wdrażanie aplikacji ClickOnce

To działa idealnie.

 1
Author: peter williamson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-09 01:28:24

Używam mage.exe do generowania manifestu. Dodanie tego do mojego .csproj naprawiło problem. Możesz również spróbować -nowin32manifest flaga kompilatora ; nie testowałem jej. Nie widzę "tworzenia aplikacji bez manifestu" stuartda w Visual Studio 2017; myślę, że to właśnie robi.

<PropertyGroup>
  <NoWin32Manifest>true</NoWin32Manifest>
</PropertyGroup>

Mam też to w moim .csproj:

<GenerateManifests>false</GenerateManifests>
 1
Author: DharmaTurtle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-13 21:45:38

Jeśli masz jeden główny program, który odwołuje się do innego, musisz wykonać trick "Create application without a manifest"na głównym programie programu:

Projekt -- > Właściwości -- > karta aplikacji -- > zasoby -- > Manifest -- > rozwijane "Tworzenie aplikacji bez manifestu"

A następnie przełącz się na właściwości projektu programu i powtórz proces.

 1
Author: RoySeberg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-25 18:19:41

Miałem ten sam problem kilka minut temu, a poniżej są kroki, które wykorzystałem, aby go rozwiązać.

Klucz

  • a = główny projekt (projekt, który chcesz opublikować, np. myProduct)
  • b = projekt referencyjny (np. MyProductSiteServer)

Checklist

  1. Przejdź do właściwości -> aplikacja -> zasoby - > zaznacz ikony i manifest (zarówno dla a jak i b)

  2. Przejdź do properties - > Build : upewnij się, że i b są na tej samej platformie docelowej

  3. Przejdź do Właściwości - > Zabezpieczenia i upewnij się, że a i b mają zaznaczone te ustawienia: "Włącz ustawienia zabezpieczeń ClickOnce "i"to jest pełna aplikacja zaufania"

  4. Przejdź do właściwości - > Publikuj: polecam zmienić ścieżkę folderu publikacji

 1
Author: Kingsley Akpan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-02-20 23:08:16

Używam Visual Studio 2012 na Windows 7 i muszę opublikować rozwiązanie składające się z dwóch projektów.

Jak zauważył Eduardo, oznaczanie obu projektów jako ClickOnce i włączenie aplikacji pełnego zaufania rozwiązuje problem.

 0
Author: user819490,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-08 15:15:38

Miałem trochę inny problem, który udało mi się rozwiązać, więc chciałem opublikować. Moim problemem było to, że uruchomiłem 3 oddziały z TFS. Ulepszyłem sterowanie Telerikiem w jednym z moich oddziałów, ale nie w innych. Kiedy zaktualizowałem kontrolki Telerik we wszystkich gałęziach 3 i ponownie opublikowałem, działało i ten błąd zniknął.

Używałem wtedy VS2015.

 0
Author: jaredbaszler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-12 16:06:49

To ciekawe. Po prostu przestawiam wniosek i problem rozwiązany. Może uszkodzenie plików z powodu sieci.

 0
Author: huseyindotpw,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-19 11:12:25

W mojej wersji Visual Studio 2017, Wersja 15.6.6 (ale może być tam wcześniej) odkryłem, że pliki aplikacji nie był w prawym przycisku Exe projektu i Publish, ale w zakładce Właściwości projektu Publish, gdzie można ustawić, które z plików aplikacji, które chcesz umieścić w instalacji.

Więc wyjmij te, które są problemem. Jeśli coś jest już zainstalowane na komputerze, na którym zostanie zainstalowana ta aplikacja, nie ma powodu, aby próbować ją ponownie zainstalować w każdym razie, chyba że potrzebujesz referencji, żeby to uruchomić. Gdyby to było zainstalować to, co było już na komputerze, ale do innego folderu to może nie działać. Najlepiej jest używać innych aplikacji lub zespołów dll w tym samym miejscu, w którym były wcześniej zainstalowane.

 0
Author: John Foll,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-01-08 19:11:25

Miałem dokładnie ten sam problem z moją aplikacją VS 2019.

Próbowałem stworzyć aplikację bez manifestu, ale to nie zadziałało.

To, co jednak zadziałało, było następujące:

  1. przejdź do Build-- > Publish-- > Application
  2. Kliknij przycisk "Informacje o montażu"
  3. zaznacz opcję "Make assembly COM-Visible"

Miejmy nadzieję, że to pomoże!

 0
Author: LaurentiuMa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-17 11:53:26

Wydaje się, że problem jest spowodowany przez konfigurację.exe w vs 2019. wygląda na to, że exe nie zaktualizuje swojej wersji podczas wykonywania nowego wdrożenia. obejściem dla mnie jest

  1. Usuń wszystko z folderu wdrażania.
  2. odznacz opcję "Utwórz program instalacyjny, aby zainstalować składniki warunkowe" w właściwościach = > Publikuj = > warunek wstępny.
  3. Zrób rozlokowanie.
  4. wróć i włącz ponownie "utwórz program instalacyjny, aby zainstalować wymagane komponenty". domyślam się, że ten proces będzie Wymuś vs 2019, aby zaktualizować konfigurację.exe do poprawnej wersji.

Również projekt -- > Właściwości -- > karta aplikacji -- > zasoby -- >Manifest -- > rozwijane "Utwórz aplikację bez manifestu" będzie działać, ale aplikacja nie będzie aktualizować, jeśli jest nowsza wersja, więc muszę wrócić do obejścia powyżej.

 0
Author: koo9,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-09-24 16:13:27