문제

우리는 8GB RAM을 활용하기 위해 새로운 개발 머신을 확보하고 Vista 64 Ultimate로 업그레이드하고 있습니다. 관리자는 코드가 프로덕션으로 이동하는 데 문제가 없는지 확인하기 위해 32 비트 가상 머신에서 모든 개발을 수행하기를 원합니다.

결과 프로그램이 32 비트 OS에서 작동하도록 보장 할 수있는 방법이 있습니까? 가상 머신을 사용해도 괜찮지 만 "단일"모니터 유형보기로 돌아 가게하는 방식은 마음에 들지 않습니다. VS 도구 모음을 다른 모니터로 옮기는 것을 좋아합니다.

편집 : 우리는 Visual Studio 2005 및 2008, VB.NET 및 / 또는 C #을 사용하고 있습니다.

수정 : Harpreet의 답변 사용 , 다음은 x86 / 32 비트를 컴파일하도록 Visual Studio IDE를 설정하는 데 사용한 단계입니다.

  1. 빌드를 클릭하고 구성 관리자를 엽니 다.
  2. 활성 솔루션 플랫폼 드롭 다운 목록 선택
  3. 목록에있는 경우 x86을 선택하고 그렇지 않은 경우 5 단계로 건너 뜁니다. <New... 선택>
  4. 새 솔루션 플랫폼 대화 상자에서 x86을 선택하고 확인을 누릅니다.
  5. 모든 프로젝트에 대해 선택한 플랫폼이 x86인지 확인합니다.
  6. 닫기를 클릭합니다.

    즐기세요.

    감사합니다. 키스

도움이 되었습니까?

해결책

32 비트 Windows 용 64 비트 컴퓨터에서 개발을합니다.문제가되지 않습니다.보수적 일 수 있도록 프로젝트가 x86 모드에서 컴파일되도록 설정되어 있는지 확인해야합니다.솔루션의 각 프로젝트를 살펴보고 이것을 다시 확인하고 싶을 것입니다.AnyCPU 설정을 사용할 수도 있지만 32 비트 머신과는 다르게 dev 머신에서 실행되기 때문에 조금 더 위험합니다.물론 64 비트 모드는 피하고 싶습니다.

내가 겪은 문제는 앱이 64 비트 용으로 컴파일 될 때 작동하지 않는 드라이버입니다 (명시 적으로 64 비트 또는 64 비트 Windows에서 컴파일되고 실행되는 AnyCPU).x86 컴파일을 고수하면 이러한 문제를 완전히 피할 수 있습니다.그러면 개발 시스템의 모든 결함이 드러날 것입니다.

이상적으로는 32 비트 머신에서 자주 실행할 수있는 빌드 및 테스트 환경을 설정할 수 있습니다.그러면 관리가 안심하고 VM을 데스크톱으로 사용하지 않아도됩니다.

다른 팁

실행 파일을 32 비트로 컴파일하는 한 32 비트 및 64 개의 Windows 시스템에서 실행됩니다 (보장).64 개의 개발 머신을 사용하면 64 비트 컴파일로 코드 테스트를 시작할 수 있다는 이점이 있습니다 (32 비트 정수로 캐스팅 된 포인터와 같은 것을 확인하기 위해). 이렇게하면 향후 64 비트로 쉽게 전환 할 수 있습니다 (회사에서 선택해야 함).64 비트 버전 수행).

64 비트 OS 용으로 컴파일하는 것은 컴파일러의 옵션입니다.Vista 64 비트 내에서 32 비트 exe로 절대적으로 컴파일 할 수 있습니다.앱을 실행하면 TaskManager에서 프로세스 옆에 "* 32"가 있음을 확인할 수 있습니다. 이는 32 비트임을 의미합니다.)

당신의 관리자는 64 비트 OS의 진정한 의미에 대해 더 많은 교육이 필요하다고 생각합니다. :)

질문에 대한 답은 아니지만 문제에 대한 해결책 일 수 있습니다. VirtualBox (및 기타)는 "원활한 통합"모드를 지원하여 두 번째 시작 표시 줄을 제공하고 창을 자유롭게 드래그 할 수 있습니다.

또한 이것은 귀하의 질문에 대한 답변이며 컴파일 설정에 따라 다릅니다.다양한 환경에 맞게 컴파일 할 수 있으며 Visual Studio를 사용하여 64 비트 시스템에서 32 비트 프로그램을 완벽하게 컴파일 할 수 있습니다.방법을 말할 수는 없지만 Visual Studio 전문가가 도움을 줄 수 있다고 확신합니다.

VS 2005 (2008)를 사용하여 32 비트 응용 프로그램을 개발하고 XP Pro x64 또는 Vista Business 64 비트가 탑재 된 새로운 컴퓨터를 구입하여 시청하면서 추가 RAM을 활용할 수 있습니다. 상업적으로 필요한 경우 64 비트 포트를 수행 할 수있는 가능성에 대해 간략히 설명합니다. 개발 환경에서 일부 스크립트를 수정하는 것 외에는 문제가 없었습니다.

이 업그레이드주기에 포함되지 않은 개발자는 여전히 32 비트 컴퓨터를 사용하므로 체크인 전에 당연히 단위 테스트와 애플리케이션 테스트 제품군을 실행할 때 문제가 발생합니다.

또한 우리가하는 일은 "일반적인"구성 (XP / Vista, 2/4/8 코어 등)으로 구성된 "테스트 빌드"시스템 세트가 있는지 확인하는 것입니다. 체크인-안정성, 성능 등에 대한 다양한 테스트 스위트가 있습니다. 통합 영역에 적절히 추가되기 전에. 다시 말하지만, 이들은 64 비트 OS에서 빌드 된 32 비트 응용 프로그램을 실행하는 데 문제가 없습니다.

어쨌든 다른 사람들이 이미 말했듯이 컴파일러가 실제로 실행중인 OS에 관계없이 대상 OS에 적합한 코드를 생성하는 컴파일러이기 때문에 문제가되지 않을 것이라고 예상합니다.

예, 아담이 말한 것처럼 요.MSIL (기본값), x64 및 x86의 세 가지 옵션이 있습니다.x64를 대상으로 할 수 있으며 64 비트 시스템 용으로 특별히 dll을 생성하거나 32 비트 및 64 비트에서 실행되지만 64 비트 시스템의 32 비트와 동일한 제한이있는 x86을 수행 할 수 있습니다.

MSIL은 기본적으로 JITer가 플랫폼 별 명령을 발행하도록 허용합니다 (네이티브 이미지에 비해 약간의 성능 저하)

편집 : 언어가 없으므로 vb.net 및 C #과 같은 .net 프레임 워크 언어에 대해 이야기하고 있습니다. C ++는 완전히 다른 동물입니다.

오늘 발견 :

http : // www .brianpeek.com / blog / archive / 2007 / 11 / 13 / x64-development-with-net.aspx <인용구>

.NET을 사용한 x64 개발

올해 초 저는 64 비트 운영 체제 (정확히는 Vista Ultimate x64)로 전환했습니다. 대부분의 경우이 프로세스는 비교적 고통스럽지 않았지만 그 과정에서 몇 가지 문제가있었습니다 (주로 x64 호환 드라이버이지만이 논의의 요점은 아닙니다).

x64 개발의 세계에서 제가 여기서 설명하겠다고 생각했던 몇 가지 어려움이있었습니다. 이 목록은 증가 할 가능성이 높으므로 문제에 대한 향후 게시물을 기대하십시오.

.NET 개발의 멋진 세계에서 응용 프로그램과 어셈블리는 다양한 플랫폼을 대상으로 컴파일 될 수 있습니다. 기본적으로 애플리케이션과 어셈블리는 Visual Studio에서 임의의 CPU로 컴파일됩니다. 이 시나리오에서 CLR은 실행중인 컴퓨터에 대한 기본 대상이 무엇이든 어셈블리를로드합니다. 예를 들어 x64 컴퓨터에서 실행 파일을 실행하면 64 비트 프로세스로 실행됩니다.

Visual Studio는 x86, x64 및 Itanium (IA-64)의 세 가지 특정 플랫폼 대상도 제공합니다. 실행 파일을 특정 대상으로 빌드하면 해당 유형의 프로세스로로드됩니다. 예를 들어 x64 컴퓨터에서 실행되는 x86 대상 실행 파일은 32 비트 CLR 및 WOW64 계층을 사용하는 32 비트 프로세스로 실행됩니다. 어셈블리가 런타임에로드되면 대상이 호스팅 프로세스의 대상과 일치하거나 모든 CPU로 컴파일 된 경우에만 프로세스에서로드 할 수 있습니다. 예를 들어 x64가 어셈블리의 대상으로 설정된 경우 x64 프로세스에 의해서만로드 될 수 있습니다.

이것은 몇 가지 시나리오에서 작동합니다.

  • XNA-XNA는 32 비트 어셈블리 세트로만 사용할 수 있습니다. 따라서 XNA 어셈블리를 참조 할 때이를 사용하는 실행 파일 / 어셈블리는 x86 플랫폼을 대상으로해야합니다. x64 (또는 임의의 CPU 및 64 비트 시스템에서 실행)를 대상으로하는 경우 XNA 어셈블리를로드하려고 할 때 오류가 발생합니다.

  • Microsoft Robotics Studio-XInputGamepadService는 내부적으로 XNA를 사용하여 Xbox 360 컨트롤러와 통신합니다. 위를 참조하세요.

  • 관리되는 DirectX-이미 사용되지 않고 XNA로 대체되었지만 여전히 사용됩니다. 어셈블리는 특정 대상에 대해 표시되지 않았지만 메모리 예외, 특히 Microsoft.DirectX.AudioVideoPlayback 어셈블리에 문제가있었습니다.

  • 피젯-다운로드하는 라이브러리와시기에 따라 32 비트 전용으로 표시되거나 표시되지 않을 수 있습니다. 현재 버전 (11/8/07)은 이와 같이 표시되어 있으므로 호스팅하려면 32 비트 프로세스가 필요합니다. 실행 파일 또는 어셈블리가 특정 플랫폼을 대상으로하는지 확인하는 가장 쉬운 방법은 corflags 응용 프로그램을 사용하는 것입니다. 이를 사용하려면 시작 메뉴에서 Visual Studio 명령 프롬프트를 열고 확인하려는 어셈블리에 대해 실행합니다.

    실행 파일 또는 어셈블리가 특정 플랫폼을 대상으로하는지 확인하는 가장 쉬운 방법은 corflags 응용 프로그램을 사용하는 것입니다. 이를 사용하려면 시작 메뉴에서 Visual Studio 명령 프롬프트를 열고 확인하려는 어셈블리에 대해 실행합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top