2010-10-26 2 views
3

Это мой первый раз с SL (но не WPF). Im learning PRISM смотрят великолепные видеоролики MTaulty: http://channel9.msdn.com/blogs/mtaulty/prism--silverlight-part-1-taking-sketched-code-towards-unityМое приложение Silverlight не показывает изменений

Пока все хорошо, я с последним видео, и я делаю то же самое, что и в моем VS. Я использую SL4 & mvc2 web & призму для sl4.

Я нашел проблему, и я не знаю, что происходит.

Приложение моего SL не показывает никаких изменений. У меня есть основная оболочка:

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

Дело в том, я зарегистрировал Посмотреть в первой RegionManager, совершенно, я зарегистрировал вторую точку зрения, но она не показывает ... Хорошо, некоторые ошибки в где-нибудь ... но нет.

Я понял, что граница для второго regionManager не появляется, нормально. Я прокомментировал строку, которая регистрирует представление (представление работает), и представление все еще отображается. Я прокомментировал загрузчик, удалив его из Application_Startup, ничего не отображается, пока не отображается (не возможно, что мое приложение не знает, как выполнить оболочку, все прокомментировано).

Короче говоря, я уверен, что если я удалю 3 файла, приложение все еще работает ... Я очистил решение, удалил файлы .xap из ClientBin ... Ничего, приложение все еще показывает просмотр и т. д. Другими словами, приложение не отражает изменения кода.

Что происходит?

спасибо.

EDIT: Около один год спустя ...

Таким образом, я не трогал Silverlight, так как это, но сегодня я хотел бы сделать очень простое приложение (только путь и текстовое поле) и .. Yay мое приложение начало не показывать изменения.

Я не могу воспроизвести ошибку, я не знаю, что это за триггер, но я знаю, что это проблема с ASP.NET MVC.

Проект Im, который я здесь говорил, и проект, который я сделал сегодня, оба использовали ASP.NET MVC для запуска проекта SL.

Я загрузил проект EmailClient (только часть нас интересует) на мой хост: www.foxandxss.net/stuff/EmailClient.rar

Легко видеть проблему. Для начала вы можете увидеть, что в Shell.xaml цвет LayoutRoot - Azure, и если вы запустите приложение, оно будет зеленым (когда я открыл сегодня это приложение, я сменил его на зеленый и работал, но больше никаких изменений). Если вы измените цвет на другой, он не изменится. Если вы перейдете в App.xaml.cs и прокомментируете строки, которые создают и запускают загрузчик (поэтому приложение не будет запущено), приложение все равно будет открываться. Похоже, что приложение работает с кешем и каждым изменением, вы не увидите его.

Я попытался удалить xap из проекта MVC, и ничего.

Дело в том, что если вы щелкнете правой кнопкой мыши по проекту SL и нажмите «Просмотреть в браузере», вы увидите изменения (Azure BG или ничего, если вы прокомментировали boostrapper), но если вы запустите его из проекта MVC, ничего.

+0

Это действительно трудно сказать, что происходит, если ваши собственные изменения не отражаются , Попробуйте создать новое решение с простой оболочкой и двумя регионами. –

+0

Yay, начался снова, тот же проект из того же видео. Не смогли. Опять та же проблема. Я не знаю, есть ли проблема vs, проблема с sl, проблема с призмой или проблема с видеопроектом. Или моя проблема, brrrrr. –

+0

Скачало приложение и побежало. Помимо необходимости разблокировать и удалять readonly из разных файлов, изменение цвета на красный немедленно обновилось. Я не вижу проблем с вашим проектом. У вас есть набор шагов для проверки, чтобы мы работали с правильными страницами? –

ответ

3

В прошлом у меня были проблемы с кэшированием файлов XAP.Если это вопрос, я бы впрыснуть фиктивный параметр рядом с пути XAP файла (в данном случае временной метки):

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

Если вы обновить этот параметр на каждой сборки, это должно привести к потере кэша и загрузки последней xap-файл.

2

Самуэль имеет правильную идею, но вы можете получить Silverlight автоматически игнорировать предыдущие временные метки, проверяя время последней записи на сервере

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