문제

내 컴퓨터에서 3.5 SP1을 사용하고있는 반면 고객은 현재 SP1없이 3.5를 사용하고 있습니다. VS2008에서 SP1없이 솔루션이나 프로젝트를 3.5로 타겟팅하는 방법을 모르겠습니다. SP1이 설치된 3.5 만 있습니다.

3.5 W/O SP1에서 사용할 수없는 함수 또는 생성자를 사용하는 경우 코드가 제대로 작동하지 않습니다.

즉, 나는 탐지하고 싶다 시간을 컴파일하십시오 SP1 없이는 작동하지 않는 것.

지금까지 우리는 응용 프로그램이 파손되는지 확인하기 위해 (VM 또는 별도의 기계에서) 테스트를 수행했으며 SP1까지 API의 일부를 사용할 수 없을 때 때때로 파손됩니다. 문제는 어셈블리가로드 될 때가 아니라 코드가 실제로 실행될 때만 끊어진다는 것입니다.

한 가지 솔루션은 SP1 w/o vs2008이있는 기계를 갖추고 프로젝트를 컴파일하는 것입니다. 그러나 소스 코드 또는 제작 한 어셈블리를 분석하여 3.5 SP1 (새 API 또는 무엇이든)에 대한 종속성을 감지하는 데 도움이되는 도구를 선호합니다.

내 Google Powers는이 질문에 충분히 강하지 않았습니다. 힌트가 있습니까?

도움이 되었습니까?

해결책

방금 같은 문제가 있었고 해결책을 찾았습니다. 응용 프로그램의 경우 System.threading.waithandle.waitone (int32)으로 전화를 걸었습니다. 서비스 팩 릴리스에 도입 된 API에 대한 참조에 대한 자세한 내용은 Visual Studio에 주목하지 않고 코드로 누출 될 수 있습니다. krzysztof cwalina의 게시물.

좋은 소식은 Marc는 그의 대답입니다, fxcop은 a 새로운 규칙 이 누출을 감지합니다. 나쁜 소식은 .NET Framework 3.5를 타겟팅 할 때 FXCOP 1.36에서 규칙이 깨 졌다는 것입니다. 그러나 David Kean은 몇 개의 XML 구성 파일을 편집하는 방법을 설명합니다. 문제를 해결. 나는 지침을 따랐고 FXCOP는 이제 서비스 팩 API에 대한 나의 참조를 감지합니다.

다른 팁

어때 이것? (FXCOP의 다중 표적 규칙)

발견 된 코드를 사용할 수 있습니다 여기 설치된 .NET 프레임 워크를 감지합니다.

문자열 fx35registrykey = @"hkey_local_machine Software Microsoft net 프레임 워크 설정 ndp v3.5"; Object FX35ServicePack = registry.getValue (fx35registrykey, "sp", null);

if (fx35servicepack == null || (int) fx35servicepack <1) 새로운 예외를 던지십시오 ( ". net framework 3.5 sp1이 필요합니다.");

시도하지 않은 또 다른 옵션이 있습니다. 그만큼 비주얼 스튜디오 문서 ClickOnce Installer가 .NET 3.5SP1 프레임 워크를 구체적으로 타겟팅 할 수 있다고 말합니다. 링크를 따르고 ".NET Framework 버전 3.5 SP1 타겟팅"을 검색하십시오. 기본적으로 다음 중 하나를 수행하면 설치 프로그램이 3.5SP1을 설치해야한다고합니다.

  • 게시 옵션 대화 상자에서 오류 URL을 지정하십시오.
  • 게시 옵션 대화 상자에서 스위트 이름을 지정하십시오.
  • 게시 옵션 대화 상자에서 데스크탑 단축키를 만듭니다.
  • 응용 프로그램 파일 대화 상자에서 해시에서 파일을 제외하십시오.
  • 서명을 지우십시오. ClickOnce는 서명 페이지에서 확인란을 나타냅니다.
  • System.data.entity 어셈블리에 대한 참조를 추가하십시오.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top