2010-05-10 5 views
0

어셈블리 및 파일 버전 번호를 실험하고있었습니다. 내 프로그램이 IDE에서 제대로 실행되지만 설치 파일을 만들고 InvalidDeploymentException을 사용하여 응용 프로그램을 설치 한 후에도 제대로 실행됩니다.시작한 후 C# .NET 응용 프로그램이 즉시 충돌 함

문제를 해결하려면 어떻게해야합니까?

+0

예외/스택 추적 등의 전체 세부 정보를 게시 할 수 있습니까? –

+0

어셈블리 및 파일 버전을 늘려서 해결할 수있었습니다. 크래시가 발생하기 전에 값을 1.0.0.4로 설정 한 다음 다시 1.0.0.0으로 설정했습니다. 이로 인해 충돌이 발생했지만 1.0.0.5로 변경되었지만 이제는 작동합니다. 어쨌든이 두 숫자의 필요성은 무엇입니까? –

답변

1

[AssemblyVersion] 및 [AssemblyFileVersion] 특성은 서로 다른 역할을 수행합니다. [AssemblyVersion]은 관리되는 코드에만 표시되며 GAC에서 중요합니다. 어셈블리의 공용 인터페이스에 큰 변화가 생길 때마다이 숫자를 늘려야합니다.

컴파일러는/win32res 명령 줄 옵션을 사용하여 관리되지 않는 리소스를 어셈블리에 포함합니다. 여기에는 VERSIONINFO resource이 포함되며 셸을 포함하여 모든 비 관리 코드가 읽을 수 있습니다. 탐색기에서 어셈블리를 마우스 오른쪽 단추로 클릭하고 세부 정보 속성 페이지를 볼 때 표시되는 내용을 결정합니다. 여기에 표시된 "파일 버전"값은 [AssemblyFileVersion] 속성에 의해 설정됩니다. [AssemblyVersion] 값이 거기에 표시되지 않습니다. Explorer는 (아직) 읽는 방법을 알지 못합니다.

이 속성을 사용하는 방법은 사용자가 결정해야합니다. 충돌은 배포 코드에서 진행되는 최소한의 온 전성 검사가 있으며, 어떤 일이 일어날지를 스스로 잘못 이해하려고 시도하지 않았 음을 나타냅니다. 그러나 그것들을 동일하게 만드는 것은 많은 의미를가집니다.

Microsoft는 [AssemblyFileVersion]을 다른 방식으로 사용하며, 각 빌드마다 자동으로 증가시켜 [AssemblyVersion]을 내립니다. 그것은 좋은 생각이고 제가 사용하는 전략입니다. 하지만 매우 역설적 인 점은 자동 버전 증분 기능이 정확히 후방으로 작동한다는 것입니다. [AssemblyVersion] 만 자동 증분 만 가능합니다. 한숨.

0

fusion log viewer을 사용해 배포 된 앱에로드되지 않는 항목을 확인해보세요.

관련 문제