[c#] ClickOnce 응용 프로그램 배포 오류-매니페스트의 참조가 다운로드 한 어셈블리의 ID와 일치하지 않습니다.

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의 ID와 일치하지 않습니다.”

수정해야 할 매니페스트는 무엇입니까? 그리고 어떻게?



답변

있었다 기본 매니페스트를 내장하지 않음으로써 해결된다 비주얼 스튜디오 2008에 문제가 그 기사에 대한 코멘트 중 하나 문제가 계속 비주얼 스튜디오 2010에 존재하는 제안은 -.

프로젝트 속성-> 응용 프로그램 탭-> 리소스 -> 확인란 아이콘 및 매니페스트 에서 “기본 설정으로 매니페스트 포함”설정으로 인해 문제가 발생했습니다. “매니페스트없이 응용 프로그램 만들기”로 설정하면 문제가 해결됩니다.


답변

다른 프로젝트에 대한 참조를 추가 할 때 동일한 문제가 발생했습니다.

이 문제를 해결하는 방법 은 Ian이 여기에서 설명한대로 모든 참조 프로젝트에서 ClickOnce 보안 설정 을 활성화하는 것입니다 (강조 표시).

나를 위해,이 해결 한 방법은 “노출 솔루션 아래에있는 모든 프로젝트 수 있도록 하였다 보안 탭을 자신의”의 ” 프로젝트 속성 “옵션 “한 사용에서 ClickOnce 보안 설정 옵션으로 쳤다”를 ” 이것은 완전 신뢰입니다 애플리케이션 “선택됨. 이는 매니페스트를 올바르게 생성하는 것과 관련이 있으며 이러한 옵션이 필요한 솔루션 내의 모든 프로젝트에 설정되어 있지 않으면 응용 프로그램이 설치되지 않습니다.

동일한 솔루션으로 다른 프로젝트를 참조 할 때 이것이 올바른 방법이라고 생각합니다.

링크 된 포럼 게시물은 지금 만료되었지만 여기 에서 아카이브에서 사용할 수 있습니다 .


답변

동일한 문제가 발생했지만 내 솔루션은 매우 달랐습니다.

내 ClickOnce 응용 프로그램이 내 솔루션에서 다른 EXE 파일 프로젝트를 참조하고 있었기 때문에 클라이언트가 파일을 다운로드하고 다른 EXE 파일이 있었을 때 해당 프로젝트에 매니페스트가 없었습니다.

다른 실행 파일에 대한 종속성을 제거하면 문제가 해결되었습니다.


답변

Visual Studio 2010에도 문제가 있음을 확인했습니다. 프로젝트 속성-응용 프로그램-리소스에서 “매니페스트없이 응용 프로그램 만들기”를 선택하면 문제가 해결되었습니다.


답변

이는 프로젝트의 서로 다른 DLL 파일에서 참조되는 두 가지 버전의 NuGet 패키지 가있는 경우에도 발생할 수 있습니다 . 제 경우에는 Catel이라는 프레임 워크를 사용하고 있었고 한 DLL 파일에서 다른 DLL 파일에서 참조 된 최신 버전이 있었지만 (감독) 이로 인해 ClickOnce에서이 오류가 발생했습니다. 동일한 버전을 참조하면 문제가 해결되었습니다.


답변

나는 같은 문제가 있었지만 내 해결책은 ‘플랫폼 대상’을 ‘x86′(프로젝트 속성-> 빌드 탭)으로 변경하는 것이 었습니다. 모든 CPU로 설정되었습니다. 설정을 변경하고 다시 게시하자마자 ClickOnce 설치 관리자가 완료 될 수있었습니다.


답변

프로젝트를 디버그로 설정하여 배포 할 때 동일한 오류가 발생했습니다. Release로 다시 변경되었을 때 오류가 없었습니다.