다음을 통해 공유

ClickOnce Manifest 파일 Hash값 문제

ㅇㅅㅇ 0 평판 포인트
2024-03-18T01:31:45.5966667+00:00

안녕하세요.
https://learn.microsoft.com/ko-kr/answers/questions/1616956/clickonce-manifest-hash

위의 질문에서 질문을 추가하기 위해 댓글을 작성하였는데 계속 삭제 처리되어 한번 더 게시글을 작성하였습니다.

WPF기반의 프로젝트를 ClickOnce를 활용하여 배포하기 위해 테스트를 진행중입니다.

Visual Studio를 이용하여 ClickOnce 게시하기 버튼을 눌렀을 때 빌드 > 게시 > 배포 순서대로 진행하고 있습니다. 여기서 빌드 직후 프로젝트 dll의 용량이 1563.5KB로 생성이 되는데 게시파일 생성 후 1560KB로 줄어들게 되어 배포할때 배포하는 프로젝트dll의 Hash값과 Manifest파일의 Hash값이 달라 설치 및 업데이트 오류가 발생하고 있습니다.

제가 궁금한 점은 게시파일 생성 후 프로젝트 dll의 용량이 줄어드는 이유와 해당 문제 해결방법 (게시 후 dll의 용량이 줄어드는 현상을 없애는 방법이나 게시 후 용량이 줄어든 dll의 Hash값을 Manifest 파일에 적용하는 방법)이 있는지 궁금합니다.

User's image

[빌드 후]

User's image

[게시 후]

User's image

[LandCadastral.dll.Manifest]

Windows 10
Windows 10
개인용 컴퓨터 및 태블릿에서 실행되는 Microsoft 운영 체제입니다.
질문 162개
Visual Studio
Visual Studio
Windows, 웹 및 모바일 디바이스용 애플리케이션을 빌드하기 위한 통합 개발 도구 제품군입니다.
질문 42개
투표 {count}개

답변 1개

정렬 기준: 가장 유용함
  1. Wenying Lu-MSFT 2,070 평판 포인트 Microsoft 공급업체
    2024-03-19T10:01:26.48+00:00

    안녕하세요 @ㅇㅅㅇ 님 ,

    빌드 후 프로젝트 DLL 크기가 감소하는 주된 이유는 릴리스 과정 중에 일부 최적화 또는 압축 기술이 적용되기 때문일 수 있습니다.이러한 기술에는 사용되지 않는 코드 제거, 리소스 파일 압축, 컴파일 옵션 최적화 등이 포함될 수 있습니다. 따라서 릴리스 이후의 DLL의 크기는 빌드 되었을 때보다 작습니다.

    프로젝트 파일의 "AfterCompile" 설정을 사용하여 응용 프로그램에 서명할 수 있습니다. 그렇지 않으면 해시 불일치가 발생하게 됩니다.

    절차는 다음과 같습니다:

    프로젝트 파일 열기: 먼저 C# 프로젝트의. csproj 확장자인 텍스트 편집기에서 Visual Studio 프로젝트의 프로젝트 파일을 엽니다.

    서명 섹션 찾기: 프로젝트 파일에서 서명 설정이 정의된 섹션을 찾습니다. 이 섹션에는 일반적으로 <SignAssembly>와 같은 어셈블리 서명과 관련된 요소가 포함되어 있습니다.

    AfterCompile 대상 추가:프로젝트 파일 내부에 "After Compile"이라는 이름을 가진 새로운 <Target> 요소를 추가합니다. 이 대상은 컴파일 과정 후에 실행됩니다.

    서명 명령 추가: "AfterCompile" 대상에서 응용 프로그램에 서명하는 데 필요한 명령을 추가합니다. 여기에는 일반적으로 Microsoft에서 제공하는 signtool 유틸리티를 사용하여 어셈블리에 서명하는 작업이 포함됩니다.

    다음은 "AfterCompile" 대상에 서명 명령을 추가하는 방법의 예입니다:

    <Target Name="AfterCompile">
       <Exec Command="&quot;C:\Path\to\signtool.exe&quot; sign /f &quot;C:\Path\to\YourCertificate.pfx&quot; /p YourPassword /t 
    </Target>
    

    변경 사항 저장:서명 지시사항을 추가한 후 프로젝트 파일을 저장합니다.

    프로젝트 빌드: Visual Studio에서 프로젝트를 빌드 합니다. "AfterCompile" 대상은 컴파일 과정을 거쳐 지정된 인증서로 애플리케이션에 서명한 후 실행됩니다.

    사용 중인 Visual Studio 버전이 무엇인지 모르겠네요. 자세한 내용은 링크에서 해결 방법과 설명을 참조하시기 바랍니다.

    감사합니다.


    도움이 되었다고 생각되는 게시물에 대해 "답변 수락"을 클릭하고 좋아요를 누르십시오.이 답변에 대해 추가 질문이 있는 경우 "댓글"을 추가하십시오. 참고: Q&A에서 이메일 알림을 받으려면 설명서의 지침에 따라 이메일 알림을 활성화하세요.


답변

질문 작성자가 수락한 답변이라고 답변에 표시할 수 있으며, 이를 통해 작성자의 문제를 해결한 답변을 사용자가 알 수 있도록 도와줍니다.