티스토리 뷰

반응형

Xamarin.Forms 2.4부터 .NET Standard 2.0을 정식으로 지원하기 시작했습니다. 그리고 대부분의 Library들도 .NET Stnadard 기반으로 바뀌고 있기 때문에 기존의 PCL Profile 기반 Xamarin.Forms 프로젝트를 .NET Standard 기반으로 변경이 필요하게 되었습니다. 이 과정은 아래와 같이 진행할 수 있습니다.

진행하기 전에 모든 솔루션을 백업해두세요. .NET Standard로 변경 후 문제가 발생할 수 있기 때문입니다.

  1. Xamarin.Android, Xamarin.iOS 프로젝트를 Unload 해주세요.
  2. Xamarin.Android와 Xamarin.iOS를 각각 마우스 우클릭 한 후 Edit ** (.csproj)을 선택해주세요.
  3.  그러면 아래와 같이 Project 파일이 열리는데, Xamarin.Forms 프로젝트를 가리키는 ItemsGroup을 찾습니다.
    Xamarin.Android

    Xamarin.iOS

  4. 위에서 찾은 ItemsGroup XML을 따로 메모장에 복사해둡니다.
  5. 이제 Xamarin.Forms 프로젝트를 마우스 우클릭 후 Remove 해주세요.
  6. 솔루션을 마우스 우클릭 한 후 Open Folder in File Explorer를 선택해주세요.
  7. 기존의 Xamarin.Forms 프로젝트가 그대로 있을 텐데, 폴더이름을 다른 이름으로 변경하여 백업해둡시다.
  8. 이제 다시 Visual Studio에서 솔루션을 마우스 우클릭 한 후 Add-New Project...를 선택합니다.
  9. .NET Standard의 Class Library 프로젝트로 선택한 후 Project이름은 동일하게 지정합니다.
    반드시 프로젝트 경로도 기존 Xamarin.Forms 프로젝트의 위치로 변경해줍니다.
  10. 추가된 Xamarin.Forms 프로젝트에 Nuget을 통해 Xamarin.Forms를 추가해줍시다.
    (반드시 Xamarin.Forms 2.4 이상이어야 합니다. 이전버전에서는 .NET Standard를 지원하지 않습니다.)
  11. 위에서 백업해 두었던 과거 Xamarin.Forms 프로젝트에서 새로 추가한 Xamarin.Forms 프로젝트로 파일들을 모두 복구해주세요.
  12. 이제 Xamarin.Android와 Xamarin.iOS 프로젝트를 복구할 차례입니다. 위에서 하셨던 것 처럼 동일하게 Xamarin.Android, Xamarin.iOS 프로젝트 파일을 Edit해주세요.
  13. 위에서 백업해두었던 Xamarin.Android, Xamarin.iOS 프로젝트의 ItemsGroup을 복구해주세요. 만약 동일한 ItemGroup 항목이 이미 추가되어 있으면 추가하지 않아도 됩니다.

  14. Xamarin.Android, Xamarin.iOS 프로젝트를 Reload 하여 프로젝트를 활성화 해주세요.
  15. Xamarin.Android, Xamarin.iOS 프로젝트도 동일한 Xamarin.Forms 패키지 버전으로 설치해주세요. (반드시 2.4이상 설치)
  16. 마지막으로 빌드와 의존성 설정을 복구해야 합니다. 솔루션을 마우스 우클릭 한 후 Properties를 선택해주세요
  17. Configuration Properties에서 아래와 같이 모두 Build와 Deploy가 설정되어있는지 봐주세요.
  18. Project Dependencies에서 의존성이 제대로 되어있는지 봐주세요.
    • Xamarin.Android 프로젝트를 선택했을 때 Xamarin.Forms 프로젝트가 체크되어 있어야 합니다.
    • Xamarin.iOS 프로젝트를 선택했을 때 Xamarin.Forms 프로젝트가 체크되어 있어야 합니다.
  19. 모든 프로젝트를 Rebuild 해보시고, 앱이 정상적으로 실행되는지 봐주세요.

문제해결 방법

  • 프로젝트를 실행하자 마자 종료되는 경우: 새롭게 생성한 Xamarin.Forms 프로젝트의 이름은 반드시 이전의 Xamarin.Forms 프로젝트 이름과 동일해야 합니다. (대소문자 마저 동일해야함) Xamarin.Android, Xamarin.iOS에서 프로젝트 명으로 참조하기 때문입니다. 따라서 프로젝트의 이름은 프로젝트를 생성한 후 함부로 변경하지 않는 것이 좋습니다.


댓글