2015-02-07 16 views
8

Mam formularz Xamarin (używam projektu Xamarin Studio 5.7) ze zwykłymi komponentami interfejsu użytkownika zawierającymi PCL. Właśnie używałem klas (bez projektantów XAML), aby rozpocząć mój projekt, który działa dobrze, kompiluje się i ma treść z kilkoma podstronami. Postanowiłem dodać nowy plik AboutPage.xaml i AboutPage.cs i używać interfejsu do edycji moich formularzy. Stworzyłem więc nową stronę za pomocą nowego pliku ... Forms ContentPage XAML ..... Jak wspomniałem powyżej, tworzy on moje dwa pliki.Autogenerowane pliki XAML.g.cs nie są kompilowane w projekcie PCL Xamarin Forms

AboutPage.cs AboutPage.xaml

wynikowe pliki wyglądać tak ...

AboutPage.cs

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

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

AboutPage.xaml

<?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> 

Teraz, to wygląda dobrze i upewniłem się, że moja deklaracja klasowa została uwzględniona przestrzeń nazw. Jednak podczas kompilacji wynikowy plik AboutPage.xaml.g.cs wygląda tak ... Zauważ, jak instrukcje użycia są zawarte w przestrzeni nazw, a nie na górze pliku. Niestety nie można tego skompilować.

Co ja tu zrobiłem źle?

//------------------------------------------------------------------------------ 
// <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)); 
     } 
    } 
} 

Wynika to z następujących błędów

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) 

Więc potem zorientowali może to było mylące ogon mojego nazw (IPSND.Xamarin) z głowicą z użyciem w Xamarin. Forms namespaces ... Więc zmieniono moją przestrzeń nazw w tym zestawie formularzy (zarówno w przestrzeni nazw .cs, jak i deklaracji klasy XAML), aby był IPSND.Test. Skutkowało to niestety tymi samymi błędami.

Najwyraźniej, jak Jason wskazał w komentarzach poniżej, ta konfiguracja posiadania instrukcji użycia jest nie tylko dozwolona, ​​ale zgodnie z tym dokumentem here, jest projektowana dla wygenerowanego pliku. Myślę więc, że sedno tego problemu może być bardziej związane z moimi referencjami dla Xamarin.Forms w bibliotece PCL (coś w rodzaju błędu mówi). Korzystając z dokumentu wymienionego powyżej, przeszedłem do moich plików .cs i .xaml i dopasowałem je dokładnie (bez użycia instrukcji i bez dziedziczenia z ContentPage w Deklaracji cząstkowej, ale to nie pomogło ...

+0

Czy to rzeczywiście powoduje błąd kompilatora? użyte instrukcje są poprawne w deklaracjach przestrzeni nazw – Jason

+0

o cholera, powinienem to tam umieścić ... tak ... Dostaję ten błąd ... który m akes sense ... Typ lub przestrzeń nazw "Forms" nie istnieje w przestrzeni nazw "IPSND.Xamarin" (czy brakuje odniesienia do zestawu?) (CS0234) (IPSND.Xamarin). Wydaje się więc, że użytki są zagnieżdżone (co ma sens). – jaskey

+2

Myślę, że to dlatego, że obszar nazw projektu zawiera ". Xamarin", który powoduje konflikt – Jason

Odpowiedz

7

OK, przyznaję się do Jasona ..... był na dobrej drodze i przybił go .... Moja przestrzeń nazw IPSND.Xamarin była problemem. | Po prostu zmiana przestrzeni nazw na tym konkretnym xaml/cs nie była Problem polegał na tym, że moja przestrzeń projektu miała na końcu "Xamarin". Zrobiłem kopię całego projektu i przeniosłem wszystko do IPSND.X i wszystko skompilowane dobrze.

Powiązane problemy