2015-02-07 1 views
8

UI 구성 요소가 포함 된 일반적인 PCL과 함께 Xamarin 양식 (Xamarin Studio 5.7 사용) 프로젝트가 있습니다. 나는 Classes (No XAML 디자이너)를 사용하여 프로젝트를 시작했으며 제대로 작동하고 컴파일하며 몇 개의 하위 페이지가있는 ContentPage가 있습니다. 새로운 AboutPage.xaml 및 AboutPage.cs 파일을 추가하고 UI를 사용하여 양식을 편집하기로 결정했습니다. 그래서, 새 파일을 통해 새 페이지를 만들었습니다 ... Forms ContentPage XAML ..... 위에서 언급 한 것처럼 두 파일을 만듭니다.자동 생성 된 XAML.g.cs 파일은 Xamarin Forms PCL 프로젝트에서 컴파일 할 수 없습니다.

AboutPage.cs AboutPage.xaml

결과 파일은 이제이 AboutPage.xaml에게

AboutPage.cs

using System; 
using System.Collections.Generic; 
using Xamarin.Forms; 

namespace IPSND.Xamarin 
{ 
    public partial class AboutPage : ContentPage 
    { 
     public AboutPage() 
     { 
      InitializeComponent(); 
     } 
    } 
} 

... 이런 식으로

<?xml version="1.0" encoding="UTF-8"?> 
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="IPSND.Xamarin.AboutPage"> 
    <ContentPage.Content> 
     <StackLayout> 
      <Image Id="ImageLogo" Aspect = "AspectFit"></Image> 
     </StackLayout> 
    </ContentPage.Content> 
</ContentPage> 

봐 괜찮을 것으로 보이고 수업 준비가 포함되었는지 확인했습니다. 네임 스페이스. 그러나 컴파일 할 때 결과 AboutPage.xaml.g.cs 파일은 다음과 같습니다. using 문이 네임 스페이스 내부에 포함되어 있고 파일 맨 위에 포함되어 있지 않은지 확인합니다. 불행히도 이것은 컴파일 할 수 없습니다.

내가 여기서 잘못 했습니까?

//------------------------------------------------------------------------------ 
// <auto-generated> 
//  This code was generated by a tool. 
//  Runtime Version:4.0.30319.18408 
// 
//  Changes to this file may cause incorrect behavior and will be lost if 
//  the code is regenerated. 
// </auto-generated> 
//------------------------------------------------------------------------------ 

namespace IPSND.Xamarin { 
    using System; 
    using Xamarin.Forms; 
    using Xamarin.Forms.Xaml; 


    public partial class AboutPage : ContentPage { 

     private void InitializeComponent() { 
      this.LoadFromXaml(typeof(AboutPage)); 
     } 
    } 
} 

D:\SVN\IPSND.Xamarin\obj\Debug\AboutPage.xaml.g.cs(19,19): Error CS0234: The type or namespace name 'Forms' does not exist in the namespace 'IPSND.Xamarin' (are you missing an assembly reference?) (CS0234) (IPSND.Xamarin) 

D:\SVN\IPSND.Xamarin\obj\Debug\AboutPage.xaml.g.cs(19,19): Error CS0234: The type or namespace name 'Forms' does not exist in the namespace 'IPSND.Xamarin' (are you missing an assembly reference?) (CS0234) (IPSND.Xamarin) 

D:\SVN\IPSND.Xamarin\obj\Debug\AboutPage.xaml.g.cs(38,38): Error CS0246: The type or namespace name 'ContentPage' could not be found (are you missing a using directive or an assembly reference?) (CS0246) (IPSND.Xamarin) 

그래서, 그때 내가이 (가) 자 마린에 사용의 머리를 내 네임 스페이스 (IPSND.Xamarin)의 꼬리를 혼란 것을 어쩌면 생각 다음과 같은 오류가 발생합니다. 양식 네임 스페이스 ... 그래서이 양식 집합 (.cs 네임 스페이스와 XAML 클래스 선언 모두)에서 내 네임 스페이스를 IPSND.Test로 변경했습니다. 불행히도 같은 오류가 발생했습니다.

Jason이 아래 주석에서 지적한 것처럼이 using 문을 사용하는 구성은 허용 될뿐만 아니라이 문서에 따라 here이 생성 된 파일을위한 것입니다. 그래서,이 문제의 핵심은 PCL 라이브러리에서 Xamarin.Forms에 대한 내 참조와 더 관련이있을 것 같습니다 (일종의 오류라고 말함). 위에서 참조한 문서를 사용하여 .csr 파일과 .xaml 파일에 들어가 정확히 일치하도록 만들었습니다 (전혀 사용하지 않고 부분 선언에서 ContentPage의 상속을 사용하지 않았지만 아직 도움이되지 않았습니다.).

+0

실제로 컴파일러 오류가 발생 했나요? using 문은 네임 스페이스 선언 내에서 유효합니다 . – Jason

+0

오, 쓰레기, 거기에 넣었어야했는데 ... 예 ...이 오류가 발생했습니다 ... 어느 m akes sense ... 형식 또는 네임 스페이스 이름 'Forms'가 'IPSND.Xamarin'네임 스페이스에 없습니다 (어셈블리 참조가 누락 되었습니까?) (CS0234) (IPSND.Xamarin). 그래서, 사용법이 중첩되어 있다고 생각하는 것 같습니다. – jaskey

+2

프로젝트 네임 스페이스에 충돌을 일으키는 ".Xamarin"이 포함되어 있다고 생각합니다. – Jason

답변

7

좋아요, 제이슨에게 신용 해 ... 그는 바른 길을 가다가 못 박았습니다. ... IPSND.Xamarin의 제 네임 스페이스가 문제였습니다. 특정 xaml/cs에서 네임 스페이스를 변경하는 것이 아니 었습니다. 문제는 내 프로젝트 네임 스페이스 끝에 'Xamarin'이 있었기 때문에 전체 프로젝트의 복사본을 만들고 IPSND.X로 모든 것을 옮겼으며 모든 것이 잘 컴파일되었습니다.

관련 문제