2016-01-19 2 views
1

J'ai un projet Android fonctionnant avec une .Droid-Solution et un SharedProject. J'ai commencé l'application sur mon téléphone et cela fonctionne très bien. Maintenant, je viens d'ajouter une solution Windows 10 Universal vide et fait les instructions ici: http://developer.xamarin.com/guides/xamarin-forms/platform-features/windows/installation/universal/Xamarin.Forms Windows 10 Erreur universelle "CS0103 InitializeComponent n'existe pas"

En tout cas ... Je n'ai rien fait d'autre. Il suffit de suivre les instructions et tryed pour démarrer l'application universelle de Windows 10, mais je reçois cette erreur:

"CS0103 C# The name 'InitializeComponent ' does not exist in the current context."

Je googlé quelques fois, mais n'a pas trouvé quelque chose qui aide. J'ai également essayé l'exemple ici: https://github.com/jamesmontemagno/Hanselman.Forms avec la même erreur.

Est-ce que quelqu'un connaît cette erreur avec Xamarin.Forms et Windows 10 Universal Apps?

+0

Où faire vous obtenez cette erreur? Dans le projet Win 10 ou dans le projet commun pcl où vit la plupart de votre code? S'il s'agit du projet commun, vous devez vous assurer que l'action de construction et le type appropriés sont configurés sur vos fichiers xaml xaml communs et potentiellement exécuter l'outil personnalisé manuellement. Si vous pouvez confirmer où l'erreur est, je répondrai avec des instructions plus détaillées. – irreal

+0

Je reçois l'erreur dans le SharedProject dans chaque ContentPage. Je ne suis pas absolument sûr, mais c'est peut-être le même Bug comme celui-ci: [xamarin bugzilla] (https://bugzilla.xamarin.com/show_bug.cgi?id=36935). Que voulez-vous dire par "assurez-vous que l'action et le type de construction appropriés sont configurés sur vos fichiers xampl xampl communs et potentiellement exécuter le manuel d'outil personnalisé"? – SPI

+0

Bon, on dirait que c'est le même bug. J'ai trouvé ce [fil] (http://forums.xamarin.com/discussion/54401/xamarin-forms-for-uwp-preview-now-available) '@GaborNemeth a dit: Avoir le même problème que @" PrabhatGupta .2760 "Impossible de compiler si une page XAML provient d'un projet partagé. J'ai créé un exemple de projet pour reproduire ce problème et l'ai joint à https: //bugzilla.xamarin.com/show_bug.cgi? Id = 36935' – SPI

Répondre

2

Chaque fois que vous créez une page .XAML dans Xamarin.Forms, vous utilisez des définitions de classes partielles à trois endroits différents.

Votre fichier .xaml réel aura un attribut Class = "" sur l'élément racine qui définit l'espace de nom et le nom de classe. Le type d'élément racine définira la classe de base que votre nouvelle page .xaml est en sous-classe. Par défaut, ce serait ContentPage.

Vous obtenez également un fichier .xaml.cs lié qui contient également une définition de classe partielle. C'est votre code derrière le fichier, où vous mettez du code spécifique à la page, c'est également là que l'appel InitializeComponent() est appelé depuis le constructeur.

Cet appel sert à analyser le contenu de xaml et à remplir les références à toutes les vues que vous avez utilisées pour utiliser x: name = "something" dans xaml.

InitializeComponent() est automatiquement généré par xamarin, il fait partie de la sortie de votre projet et il devrait être re-généré chaque fois que vous éditez votre fichier .xaml.

Pour que cela se produise, dans les propriétés de votre fichier XAML Build Action doit être réglé sur « ressources embedded » et l'outil personnalisé doit être réglé sur « MSBuild: UpdateDesignTimeXaml »

Maintenant, Même avec ces valeurs correctement définies, il y a des bogues dans Xamarin qui peuvent conduire à ce que le fichier ne soit pas généré et que vous obteniez l'erreur.

La première chose à essayer lorsque vous obtenez cette erreur est de faire un clic droit sur le fichier .xaml et de cliquer sur "Run Custom Tool". Vous ne devez le faire qu'une seule fois, sur un fichier xaml, l'outil sera automatiquement exécuté pour tous les fichiers .xaml de votre projet.

Ceci est quelque chose que je dois faire environ une fois par jour pendant mon développement normal et il a commencé quand je suis passé à VS 2015. Votre kilométrage peut-être warry.

Une autre chose très importante à vérifier est le BuildTargets dans votre fichier .csproj.

La façon dont Xamarin est capable de faire est de spécifier les actions de construction qui appellent sa DLL lorsque vous installez le paquet narget Xamarin.Forms. Parfois, les actions de construction importent la ligne foirée et cela provoque toutes sortes de problèmes.

Déchargez votre fichier .csproj et recherchez la ligne qui importe Xamarin.Forms.targets. Il devrait ressembler à ceci:

<Import Project="..\..\packages\Xamarin.Forms.2.0.0.6484\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets" Condition="Exists('..\..\packages\Xamarin.Forms.2.0.0.6484\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets')" /> 

assurez-vous que la version en correspond ici la version de Xamarin.Forms de votre fichier packages.config, assurez-vous que vous pouvez réellement naviguer dans le dossier racine de votre projet, et trouvez le fichier réel auquel la ligne importante fait référence. Par exemple, packages \ xamarin ... \ Xamarin.Forms.targets

Une chose courante à faire est de tout supprimer de \ packages \ et laisser nuget re-télécharger tout sur votre prochaine version. Assurez-vous simplement que la version dans votre importation .csproj et la version dans packages.config est la même.

Si tout cela est fait, vous devriez avoir une classe partielle générée valide qui implémente InitializeComponent() et les erreurs devraient disparaître.

1

Tout comme une mise à jour ceci:

  1. Nouveau, propre de Windows 10 Installation Pro avec toutes les mises à jour dans une machine virtuelle.

  2. Nouveau, nettoyez l'installation de Visual Studio 2015 Community Edition avec toutes les options sélectionnées et toutes les mises à jour.

  3. Nouveau projet: Blank Xaml App (Xamarin.Forms.Portable) avec le code nowt mais généré.

Le projet ne construira pas comme dans InitializeComponentApp.xaml.cs n'existe pas dans le contexte actuel.

Opinion: cette Xamarin add-on est un add-on gratuit au-dessus d'un produit gratuit, mais même si ce genre de chose n'inspire pas vraiment l'utiliser ...