У меня есть решение VS со следующими проектами, чтобы я мог обмениваться кодом пользовательского интерфейса между iOS и Windows:
- MyApp.UI.Avalonia - библиотека стандартных классов .NET с пакетом nuget Avalonia
- содержит файлы XAML / CS для пользовательского интерфейса
- MyApp.iOS - проект Xamarin для iOS, с пакетами nuget Avalonia и Avalonia.iOS
- MyApp.Windows - проект приложения Windows, созданный из шаблона проекта Avalonia (с удаленными файлами XAML)
Когда я запускаю приложение Windows, я получаюисключение в моем классе App при вызове AvaloniaXamlLoader.Load (this): System.IO.FileNotFoundException: 'Unable to find view for MyApp.App
Похоже, что при попытке найти App.xaml, соответствующий XAML-файл в файле App.cs, происходит сбой.Это делается путем поиска ресурса с URL-адресом, например, «avares: /! AvaloniaResourceXamlInfo».Когда я отлаживаю этот процесс в проекте ControlCatalog решения Avalonia, он находит ресурс с этим именем в общей сборке библиотеки классов ControlCatalog, и внутри этого ресурса он находит все файлы и активы XAML.
Я заметил разницу между моим проектом и его проектом в том, что когда я щелкаю правой кнопкой мыши по проекту и выбираю Add -> Item -> User Control (Avalonia), он создает XAML-файл, оборачивающий CS-файл в их проекте,но в моем проекте он создает два файла просто бок о бок.Какие настройки проекта мне не хватает, чтобы получить файлы XAML в этот волшебный ресурс! AvaloniaResourceXamlInfo?
Обновление: Хотя я все еще получаю ту же ошибку, я смог получить xaml.cs-файлы для инкапсуляции соответствующих .cs-файлов (так что, очевидно, это не единственная проблема) путем добавления следующего в мой файл .csproj вручную (который я нашел в примере проекта ControlCatalog):
<ItemGroup>
<Compile Update="**\*.xaml.cs">
<DependentUpon>%(Filename)</DependentUpon>
</Compile>
<AvaloniaResource Include="**\*.xaml">
<SubType>Designer</SubType>
</AvaloniaResource>
<AvaloniaResource Include="Assets\*" />
<AvaloniaResource Include="Assets\Fonts\*" />
</ItemGroup>