Visual Studio 2010 использует Application.xaml;Blend 4 использует App.xaml - PullRequest
0 голосов
/ 03 августа 2010

Ранее все ресурсы уровня приложения в проекте, который я создаю, хранились в App.xaml. Тогда я решил перейти с VS 2008 на 2010, и именно здесь начались проблемы.

После миграции я попытался провести небольшое тестирование, используя окно тестирования вместо обычного окна запуска. После изменения объекта автозапуска внезапно я столкнулся с множеством ошибок компиляции, и что не так (что вкратце) привело к обнаружению, что теперь есть два файла, которые содержат ресурсы уровня приложения, связанные с проектом: App.xaml (оригинал) и Application.xaml (в настоящее время совершенно пусто). Я переместил все ресурсы (а также объединенные словари) в Application.xaml, и все снова было правильно с миром, когда дело касалось Visual Studio.

Затем я узнал, что Blend все еще хочет использовать App.xaml. Я создал несколько ресурсов и поместил их в Application.xaml, и увидел, что они не использовались, когда я компилировал с Blend (но они использовались, когда я компилировал с VS).

Где можно указать, какой xaml является файлом ресурсов WPF верхнего уровня? Это выходит из-под контроля ...

Cory

1 Ответ

3 голосов
/ 31 октября 2011

Существуют небольшие различия в именовании в зависимости от того, какой язык программирования вы выберете.Проекты Visual Basic WPF используют Application.xaml, а проекты C # называют его App.xaml.

Как вы, наверное, знаете, все приложения .NET нуждаются в методе Main.Кроме того, приложениям Windows необходим насос сообщений, чтобы подключиться к системе обмена сообщениями Windows.В WPF вы можете использовать класс Application для запуска прослушивания сообщений Windows.

Вот как вы можете сделать это явно.

VB

Public Class Startup

  <STAThread()>
  Shared Sub Main()
    Dim app As New Application()
    Dim window As New MainWindow()

    window.Show()
    app.Run()

  End Sub

End Class

C #

public class Startup
    {


  [STAThread()]
  public static void Main()
  {
    Application app = new Application();
    MainWindow window = new MainWindow();

    window.Show();
    app.Run();

  }
}

Поскольку создание такого типа кода является обычным для приложений WPF, вы можете указать MSBuild написать этот код, определив файл и класс XAML, которые являются производными от System.Windows.Application, и указав его сборку.действие как «ApplicationDefinition».

enter image description here

В вашей ситуации вместо редактирования файла VbProj можно просто выбрать правильный файл в обозревателе решений и изменить BuildAction.

...