Добавить клиентскую версию Blazor в существующее приложение Asp. Net Core 3.1 - PullRequest
3 голосов
/ 15 февраля 2020

Я пытаюсь визуализировать клиентское приложение Blazor в виде контроллера существующего Asp. Net Core 3.1 приложения.

Я подписался на это руководство и я создал пустое приложение из шаблона. Я обнаружил, что мне нужно:

  1. Эти пакеты nuget:
    <PackageReference Include="Microsoft.AspNetCore.Blazor" Version="3.2.0-preview1.20073.1" />
    <PackageReference Include="Microsoft.AspNetCore.Blazor.Build" Version="3.2.0-preview1.20073.1" PrivateAssets="all" />
    <PackageReference Include="Microsoft.AspNetCore.Blazor.DevServer" Version="3.2.0-preview1.20073.1" PrivateAssets="all" />
    <PackageReference Include="Microsoft.AspNetCore.Blazor.HttpClient" Version="3.2.0-preview1.20073.1" />
    
  2. Этот код в Program.Main:
    var builder = WebAssemblyHostBuilder.CreateDefault(args);
    builder.RootComponents.Add<App>("app");
    await builder.Build().RunAsync();
    
  3. Этот HTML код в View для «точки входа» приложения Blazor:

    <app>Loading...</app>
    
    <div id="blazor-error-ui">
        An unhandled error has occurred.
        <a href="" class="reload">Reload</a>
        <a class="dismiss">?</a>
    </div>
    <script src="_framework/blazor.webassembly.js"></script>
    
  4. Компоненты .razor:
    • App.razor
    • _Imports.razor
    • Shared / MainLayout.razor
    • Shared / NavMenu.razor

Это должно быть , но я получаю сообщение об ошибке (могу добавить полную трассировку стека, если вам нужно):

---> Mono.Cecil.AssemblyResolutionException: Failed to resolve assembly: 'Microsoft.AspNetCore.Mvc.Razor, Version=3.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'

Где найти версию пакета nuget? Нужна ли сборка привязки? Я безуспешно пытался с:

<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="3.1.0" />

РЕДАКТИРОВАТЬ

Добавление следующих пакетов решило эту проблему:

<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.RazorPages" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.Authentication" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.Cookies" Version="2.2.0" />

Но теперь у меня есть другая ошибка:

C:\Program Files\dotnet\sdk\3.1.101\Sdks\Microsoft.NET.Sdk.Razor\build\netstandard2.0\Microsoft.NET.Sdk.Razor.Component.targets(106,5): error : rzc generate exited with code 1.

И Visual Studio (16.4.4) вылетает, как только я открываю любой .razor файл

1 Ответ

3 голосов
/ 15 февраля 2020

Добавьте следующие пакеты в вашем проекте:

<PackageReference Include="Microsoft.AspNetCore.Blazor" Version="3.2.0-preview1.20073.1" />
<PackageReference Include="Microsoft.AspNetCore.Blazor.Build" Version="3.2.0-preview1.20073.1" PrivateAssets="all" />
<PackageReference Include="Microsoft.AspNetCore.Blazor.HttpClient" Version="3.2.0-preview1.20073.1" />
<PackageReference Include="Microsoft.AspNetCore.Blazor.Server" Version="3.2.0-preview1.20073.1" />

В вашем методе Startup.Configure добавьте:

app.UseClientSideBlazorFiles<BlazorApp.Program>()
   .UseEndpoints(endpoints =>
   {
       endpoints.MapFallbackToClientSideBlazor<BlazorApp.Program>("blazor");
   });

Где "блазор" - это относительное URI к вашему Просмотр бритвы с размещением приложения Blazor.
и BlazorApp.Program тип вашего приложения Blazor Program

Если вы хотите, чтобы оно было разделено на 2 отдельных проекта, проект приложения Blazor должен иметь следующие пакеты:

<PackageReference Include="Microsoft.AspNetCore.Blazor" Version="3.2.0-preview1.20073.1" />
<PackageReference Include="Microsoft.AspNetCore.Blazor.Build" Version="3.2.0-preview1.20073.1" PrivateAssets="all" />
<PackageReference Include="Microsoft.AspNetCore.Blazor.DevServer" Version="3.2.0-preview1.20073.1" PrivateAssets="all" />
<PackageReference Include="Microsoft.AspNetCore.Blazor.HttpClient" Version="3.2.0-preview1.20073.1" />

и проект сервера следующий:

<PackageReference Include="Microsoft.AspNetCore.Blazor.Server" Version="3.2.0-preview1.20073.1" />
...