2010-10-26 4 views
3

C'est ma première fois avec SL (mais pas WPF). J'apprends PRISM en regardant les super vidéos de MTaulty: http://channel9.msdn.com/blogs/mtaulty/prism--silverlight-part-1-taking-sketched-code-towards-unityMon application Silverlight ne montre pas les changements

Jusqu'ici tout va bien, je suis avec la dernière vidéo et je fais les mêmes choses qu'Il fait dans mon VS. J'utilise SL4 & mvc2 web & prisme pour sl4.

J'ai trouvé un problème et je ne sais pas ce qui se passe.

Mon application SL elle-même ne montre aucun changement. J'ai une coquille de base:

<Grid x:Name="LayoutRoot" Background="Azure"> 
    <Grid.RowDefinitions> 
     <RowDefinition /> 
     <RowDefinition /> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="2*" /> 
    </Grid.ColumnDefinitions> 
    <ctls:GridSplitter Grid.RowSpan="2" HorizontalAlignment="Right" 
         VerticalAlignment="Stretch" Width="2" 
         Background="Black" /> 
    <ctls:GridSplitter Grid.Column="1" 
         HorizontalAlignment="Stretch" VerticalAlignment="Bottom" 
         Height="2" Background="Black" /> 

    <Border Background="SkyBlue" CornerRadius="3" 
      Margin="5" Grid.RowSpan="2"> 
     <ContentControl rgn:RegionManager.RegionName="FolderSelectionRegion" 
         HorizontalAlignment="Stretch" VerticalAlignment="Stretch" 
         HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" /> 
    </Border> 
    <Border 
     Background="SkyBlue" 
     CornerRadius="3" 
     Margin="5" 
     Grid.Column="1"> 
     <ContentControl 
      rgn:RegionManager.RegionName="MailSelectionRegion" 
      HorizontalAlignment="Stretch" 
      VerticalAlignment="Stretch" 
      HorizontalContentAlignment="Stretch" 
      VerticalContentAlignment="Stretch" /> 
    </Border> 
</Grid> 

La chose est, je me suis inscrit une vue dans la première RegionManager, parfait, j'enregistré une deuxième vue, mais il ne montre pas ... Ok, d'un bug quelque part ... mais non.

J'ai réalisé que la bordure pour le second regionManager ne s'affiche pas, ok. J'ai commenté la ligne qui enregistre la vue (la vue fonctionne) et la vue apparaît toujours. J'ai commenté le bootstrapper, en le supprimant de Application_Startup, rien de la vue n'apparaît encore (pas possible, il n'y a aucun moyen que mon application sache comment exécuter le Shell, tout est mis en commentaire).

En bref, je suis sûr que si je supprime 3 fichiers, l'application fonctionne toujours ... J'ai nettoyé la solution, supprimé les fichiers .xap de la ClientBin ... Rien, l'application montre toujours le vue et ainsi de suite. En d'autres termes, l'application ne reflète pas les changements sur le code.

Que se passe-t-il?

Merci.

EDIT: Près un an plus tard ...

Donc, je ne touche pas Silverlight depuis, mais aujourd'hui je voulais faire une application très simple (juste un chemin et zone de texte) et .. Yay mon application a commencé à ne pas montrer les changements.

Je ne peux pas reproduire le bogue, je ne sais pas ce qui déclencher cela, mais je sais que c'est un problème avec ASP.NET MVC.

Le projet Je parle ici, et le projet que j'ai fait aujourd'hui, tous deux utilisaient ASP.NET MVC pour lancer le projet SL.

J'uploadé le projet EmailClient (juste la partie qui nous intéresse) à mon hôte: www.foxandxss.net/stuff/EmailClient.rar

est facile de voir le problème. Pour commencer, vous pouvez voir que dans Shell.xaml, la couleur LayoutRoot est Azure et si vous exécutez l'application, il sera vert (Lorsque j'ai ouvert cette application aujourd'hui, je l'ai changé en vert et a fonctionné, mais plus de changements). Si vous changez la couleur à l'autre, cela n'a pas changé. Si vous allez à App.xaml.cs et commentez les lignes qui créent et exécutent le programme d'amorçage (afin que l'application ne s'exécute pas), l'application s'ouvre toujours. Est-ce que l'application est en cours d'exécution est un cache et everychange que vous faites, vous ne le verrez pas.

J'ai essayé de supprimer le xap du projet MVC, et rien. Le fait est que si vous faites un clic droit sur le projet SL et cliquez sur "Afficher dans le navigateur" vous verrez les changements (Azure BG ou rien si vous avez commenté le boostrapper) mais si vous l'exécutez depuis le projet MVC, rien.

+0

Il est vraiment difficile de dire ce qui se passe si vos propres modifications ne sont pas . Essayez de créer une nouvelle solution avec un shell simple et deux régions. –

+0

Yay, recommencé, même projet de la même vidéo. Échoué. Encore le même problème. Je ne sais pas si c'est un problème vs, un problème sl, un problème de prisme ou un problème de projet vidéo. Ou mon problème, brrrrr. –

+0

Téléchargé votre application et couru. En plus d'avoir à débloquer et à supprimer readonly de divers fichiers, changer la couleur en rouge a mis à jour immédiatement. Je peux trouver aucun problème avec votre projet. Avez-vous un ensemble d'étapes de repro pour assurer que nous courons les bonnes pages? –

Répondre

3

Par le passé, j'avais des problèmes avec la mise en cache des fichiers XAP.Si c'est la question, j'injecter un paramètre fictif à côté du chemin du fichier XAP (dans ce cas, un horodatage):

<div id="silverlightControlHost"> 
    <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%"> 
     <param name="source" value="ClientBin/EmailClient.xap?20110712160700"/> 
     <param name="onError" value="onSilverlightError" /> 
     <param name="background" value="white" /> 
     <param name="minRuntimeVersion" value="4.0.50826.0" /> 
     <param name="autoUpgrade" value="true" /> 
     <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50826.0" style="text-decoration:none"> 
      <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/> 
     </a> 
    </object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe></div> 

Si vous actualisez ce paramètre sur chaque version, cela devrait invalider le cache et charger la dernière fichier xap.

2

Samuel a la bonne idée, mais vous pouvez obtenir Silverlight pour ignorer automatiquement les horodatages précédentes en cochant la dernière fois en écriture sur le serveur

<div id="silverlightControlHost"> 
    <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%"> 
     <% 
      const string orgSourceValue = @"ClientBin/SilverlightApp.xap"; 
      string param; 
      if (System.Diagnostics.Debugger.IsAttached) 
       param = "<param name=\"source\" value=\"" + orgSourceValue + "\" />"; 
      else 
      { 
       string xappath = HttpContext.Current.Server.MapPath(@"") + @"\" + orgSourceValue; 
       DateTime xapCreationDate = System.IO.File.GetLastWriteTime(xappath); 
       param = "<param name=\"source\" value=\"" + orgSourceValue + "?ignore=" + xapCreationDate.ToString("yyyy-MM-dd_HH-mm-ss") + "\" />"; 
      } 
      Response.Write(param); 
     %> 
     <param name="onError" value="onSilverlightError" /> 
     <param name="background" value="white" /> 
     <param name="minRuntimeVersion" value="4.0.50401.0" /> 
     <param name="autoUpgrade" value="true" /> 
     <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50401.0" style="text-decoration:none"> 
      <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/> 
     </a> 
    </object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe></div> 
Questions connexes