x86 용으로 빌드 된 라이브러리가 있습니다. 어셈블리를 참조하고 "모든 CPU"에 .NET 프로젝트를 컴파일하면, 다음과 같은 컴파일러 경고를 얻을 :프로세서 아키텍처 문제 (x86 대 모든 CPU)
"There was a mismatch between the processor architecture of the project being built "MSIL" and
the processor architecture of the reference "xxx", processorArchitecture=MSIL", "x86". This
mismatch may cause runtime failures. Please consider changing the targeted processor
achitecture of your project through the Configuration Manager..."
나는 두 개의 프로젝트가 있습니다. 프로젝트 A와 B. 둘 다 .net # visual studio (2013) 프로젝트입니다. 프로젝트 A는 Windows 서비스이고 프로젝트 B는 간단한 Windows 양식 응용 프로그램입니다. 둘 다 x86 라이브러리를 다시 (때때로) 사용하는 공통 라이브러리 (또한 모든 CPU)를 사용합니다.
프로젝트 A (Windows 서비스, anycpu를) -> CommonLibrary (anycpu를) -> UtilityLibrary (86)
프로젝트 B (윈폼, anycpu를) -> CommonLibrary (anycpu를) -> UtilityLibrary (86)
프로젝트 A에서는 UtilityLibrary를 사용할 때 런타임 오류가 발생합니다. 그러나 프로젝트 B가 아닙니다. UtilityLibrary가 "Any Cpu"로 빌드되거나 Project A가 x86에서 빌드되면 프로젝트 A의 런타임 오류가 해결됩니다. 따라서이 문제와 관련이 있습니다.
내 질문에 : 어떤 경우에 아키텍처 관련 라이브러리를 사용하여 런타임 오류가 발생합니까?
UtilityLibrary는 최신 소프트웨어 릴리스의 일부이며 CommonLibrary는 소프트웨어 릴리스의 일부인 API이기도합니다. 나는 이것의 결과를 결정하려고 노력하고있다. 향후 릴리스에서는 X86이 될 이유가 없으므로 AnyCpu 용 UtilityLibrary가 빌드됩니다.
감사합니다. 그것은 나를 위해 일을 정리했다. utilitylibrary로 작업 한 winforms 응용 프로그램은 실제로 x86으로 설정되었습니다. 임의의 CPU로 설정하면 실패합니다. –