2013-09-04 2 views
0

Rosengn 어셈블리를 Nuget 패키지를 통해 참조하는 Clickonce 응용 프로그램을 배포하려고합니다.Roslyn 어셈블리가있는 ClickOnce 배포 : 매니페스트 버전이 일치하지 않습니다.

로슬린 Nuget 패키지 버전이 1.2.20906.2하지만 : 나는 packages 폴더에있는 DLL의 속성을 볼 때

  1. 나는 DLL이이 버전 1.2.20906.1
  2. 때이 참조 VS2012 솔루션 탐색기에서 참조 속성을 보면 버전 1.2.0.0 (th 모든 로슬린 참조에 대한 Specific version 같이

Local copy Nuget 패키지 DLL에 전자 경로 점) true로 설정됩니다.

<dependency> 
    <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="Roslyn.Services.dll" size="1345672"> 
     <assemblyIdentity name="Roslyn.Services" version="1.2.0.0" publicKeyToken="31BF3856AD364E35" language="neutral" processorArchitecture="msil" /> 
... 

그래서 매니페스트에서 버전 1.2.0.0입니다 :

내 ClickOnce를 게시

, DLL은 버전 1.2.20906.1하지만 ClickOnce를 매니페스트 상태가 포함되어 배포했습니다. Reference in the manifest does not match the identity of the downloaded assembly Roslyn.Services.dll

클라이언트 컴퓨터가 윈도우 7의 x86입니다 :

내가 클라이언트에서 ClickOnce를 설치하려고

, 내가 (프랑스어 번역) 오류 메시지가 표시됩니다.

내 VS 프로젝트에서 AnyCPUx86을 성공 적으로 타겟팅하려고 시도했습니다.

대상 컴퓨터에서 xcopy를 통해 배포하면 응용 프로그램이 정상적으로 실행됩니다.

도움을 주시면 감사하겠습니다.

+0

특정 ClickOnce 문제에 대해서는 잘 모르겠지만 파일 버전과 어셈블리 버전은 완전히 독립적이며 다른 점이 많다는 점을 유의할 것입니다. 실제로 VS 또는 .Net의 일부인 모든 어셈블리에는 어셈블리 버전과 다른 파일 버전이 있습니다. –

+0

@ KevinPilch-Bisson : 의견을 주셔서 감사합니다. 내 프로젝트의 다른 참조에 대해 ClickOnce 매니페스트의 파일 버전과 어셈블리 버전이 일치했기 때문에 실제로 궁금해졌습니다. 또한이 문제가 저에게 특정한 것인지 그리고 다른 사람들이 최신 Roslyn 어셈블리를 포함하여 성공적인 ClickOnce 배포를 수행 할 수 있는지 궁금합니다. – Manuel

답변

0

VS에서 참조는 어디까지입니까? 그것은 패키지 폴더를 가리 킵니까? 그렇지 않다면 배포해야하는 어셈블리이므로 그렇게해야합니다. 참조를 삭제하고 다시 추가하고 배치 할 버전이있는 참조를 가리켜 야합니다. GAC에서 이전 버전에 액세스 한 다음 새 버전을 게시하면 작동하지 않을 수 있습니다. ClickOnce는 매우 구체적이며 버전이 일치해야합니다.

+0

Nuget 패키지를 가리키고 있지만 어쨌든 GAC 버전이 배포되고있는 것으로 의심됩니다. 어떻게 확인할 수 있습니까? – Manuel

+0

어셈블리가 GAC에 있어야 할 필요는 없다고 가정 할 때 로컬 참조가 GAC보다 우선합니다. 예를 들어, DirectX는 로컬 일 수 있지만 SQLExpress는 로컬 일 수 없습니다.나는 그것이 당신이 가리키고 있다고 생각하는 곳을 지적하지 않고 있다고 생각합니다. grins에 대해 사용하려는 dll을 프로젝트와 동일한 폴더에 복사하고 프로젝트에 추가하고 참조를 추가하십시오. 그게 작동하는지 확인하십시오. 그렇다면 귀하의 초기 버전이 귀하가 생각하는 것에 액세스하지 않습니다. – RobinDotNet

+0

몇 가지 추가 검사를 수행했습니다. 문제는 배포 된 dll과 관련이 없습니다. 왜냐하면 clickonce를 배포 한 dll은 좋은 패키지 (NuGet 패키지의 DLL)이기 때문입니다. 문제는 clickonce가 배포해야한다고 생각하는 버전입니다. (그래서 매니 페스트에서 뭔가 잘못 되었나요 ...?) – Manuel

관련 문제