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