64비트 MSBuild로 C# 웹 프로젝트를 빌드할 때

  • Post author:
  • Post category:
  • Post comments:0 Comments
  • Post last modified:September 24, 2008

이 디렉터리는 "C:\Program Files (x86)\MSBuild\Microsoft\"를 옮겨놓은 것이다.

x64용 MSBuild로 C# 웹 애플리케이션 프로젝트를 빌드하면 "C:\Program Files (x86)\MSBuild\"가 아닌 "C:\Program Files\MSBuild\" 로 경로를 잡는데, 여기엔 "C:\Program Files\MSBuild\Microsoft\Visual Studio\" 디렉터리가 없다. 바로 아래 코드가 Webservices.csproj 에서 발견한 문제의 코드다.

<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets" />

여기서 $(MSBuildExtensionsPath)의 값이 원인이다. 만약 빌드 스크립트를 실행한 게 32비트 MSBuild라면 이 값은 "C:\Program Files (x86)\MSBuild\"이 된다. 물론 비주얼 스튜디오는 "C:\Program Files (x86)"에 설치되므로 "C:\Program Files (x86)\MSBuild\Microsoft\Visual Studio\"를 잘 찾는다.

반면 64비트 MSBuild라면 $(MSBuildExtensionsPath)의 값이 "C:\Program Files\MSBuild\"가 된다. 최종적으로 "C:\Program Files\MSBuild\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets" 파일을 찾으려 든다. 하지만 이 파일은 존재하지 않기 때문에 웹 애플리케이션 프로젝트를 MSBuild로 빌드하려면 오류가 난다.

나는 이 문제를 간단히 해결했다. "Microsoft.WebApplication.targets" 파일을 SVN 저장소에 올려놓고 웹 애플리케이션 프로젝트 파일(.csproj)를 수정했다. 이렇게 개발자가 직접 수정한 프로젝트 파일을 Visual Studio 2008에서 처음 읽을 때 경고 창이 뜬다. 누군가 프로젝트 파일을 손봤으니 이 파일을 읽기 전용으로 적재할 건지 묻는다. 물론 나름 아닌 내 자신이 손 봤으니 보안 경고는 무시했다.

<Import Project="$(SomewhereIPutThisFile)Microsoft.WebApplication.targets" />
Author Details
Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.
0 0 votes
Article Rating
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Inline Feedbacks
View all comments