0

나는 6비주얼 스튜디오 2008 SP1 어셈블리 참조 혼란

내가에서의 SQL Server Compact 3.5 SP2를 사용하려면 윈도우 CE에 대한 몇 가지 .NET Compact Framework에서 3.5 SP1 솔루션을 개발하기 위해 윈도우 XP SP3에서 Visual Studio 2008 SP1을 사용하고 있습니다 내 솔루션, 그러나 Visual Studio에서 어셈블리 참조를 처리하는 방법이 매우 이상하게 느껴집니다.

내가 (SSCEDeviceRuntime-ENU.MSI) "윈도우 모바일에 대한 SQL 서버 컴팩트 3.5 SP2"(SSCERuntime_x86-ENU.MSI) "윈도우 데스크톱에 대한의 SQL Server Compact 3.5 SP2"모두를 설치했습니다. 전자는 두 개의 버전의 System.Data.SqlServerCE 어셈블리와 한 버전의 System.Data.SqlServerCe.Entity 어셈블리를 Windows XP의 GAC에 넣는 반면 후자는 Windows XP의 GAC에 어셈블리를 넣지 않는 것입니다. GAC는 두 어셈블리의 버전이 System.Data.SqlServerCE의 경우 3.5.1.0 및 3.5.0.0이고 System.Data.SqlServerCE.Entity의 경우 3.5.1.0으로보고하기 때문에 이미 이상하게 보입니다. SQL Server Compact 3.5 SP2 ("C : \ Program Files \ Microsoft SQL Server Compact Edition \ v3.5"및 "C : \ Program Files \ Microsoft SQL Server Compact Edition \ v3.5 \ Desktop") Windows 탐색기는 두 어셈블리 버전 3.5.8080.0이됩니다. 이제 3.5.0.0은 바닐라라고 가정합니다. SQL Server Compact 3.5 (아니요 SP) 및 3.5.1.0은 SP1 (SP2 제외)으로 간주됩니다. 나는 바닐라 나 SP1을 설치하지 않았고, 왜 그들은 심지어 거기에 있습니까?

또한 Visual Studio 2008 SP1에서 "C : \ Program Files \ Microsoft SQL Server Compact Edition \ v3.5 \ 장치"디렉터리의 System.Data.SqlServerCE 어셈블리를 추가하려고하면 Visual Studio 2008 SP1은 속성 패널에 버전 번호 3.5.1.0을보고합니다. 이 버전 번호는 GAC의 어셈블리에서 가져온 것으로 보이며, .NET 용으로 사용해서는 안됩니다. Compact Framework. "C : \ Program Files \ Microsoft SQL Server Compact Edition \ v3.5 \ 장치"의 실제 버전 번호는 3.5.8080.0으로 다시 지정됩니다.

http://msdn.microsoft.com/en-us/library/gg213826.aspx에 설명 된대로 개인 배포를 사용할 수 있다는 것을 알고 있지만 Visual Studio에서 어셈블리의 잘못된 플랫폼 버전을 모두 참조하는 것으로 보인다는 사실에 여전히 귀찮습니다. 특히 사설 배포에 의존합니다.

아마도 Visual Studio가 GAC와 함께 작동하는 방식을 이해할 수 없습니다. 누군가가 나를 계몽 할 수 있습니까? 개인 배포에 의존하지 않고이를 "수정"할 수있는 방법이 있습니까?

답변

1

파일 버전은 3.5.8080.0입니다.

어셈블리 버전은 3.5.1.0입니다.

Explorer에서 파일의 속성을 열고 "버전"탭으로 전환하면이 사실을 확인할 수 있습니다 (실제로 3.5.8080.0으로보고하지만 사실 3.5 인 데스크톱 파일은 가능합니다). 1.0. 당신은 장치 파일,하지만 같은 설명이 어셈블리를 참조에 관해서


Visual Studio를 전혀 GAC와 상호 작용하지 않음) 적용 할 수 없습니다 (사실, 관련 질문을 참조 Why does the .NET tab in the 'Add Reference' dialog in Visual Studio not list the contents of the GAC?)

+0

나는 본다.나는 최근에 DLL이 버전 탭에 두 개의 버전이 있고 항상 (다른 DLL에서) 몇 번봤을 때 동일한 값을 가졌으므로 파일 버전과 어셈블리 버전의 차이점을 궁금해했습니다. 당신이 값이 다르다는 것을 지적한 후에 차이점에 대해 봤습니다. 이제 두 속성의 차이점을 이해합니다. 나는 또한 GAC의 어셈블리에는 * File Version *이 없다는 것을 알았습니다. 대신 * 제품 버전 *이 있습니다. System.Data.SqlServerCE의 경우 * File Version *과 동일한 값을 갖습니다. – Kal

관련 문제