Внедрение HttpClient в компонент Blazor в библиотеке классов Razor

Я создал решение на основе шаблона Blazor WebAssembly, в котором я снял флажок ASP.NET Core hosted, поэтому у меня есть проекты Client, Server, Shared в решении.

К этому решению я добавил библиотеку классов Razor (без проверки страниц поддержки и представлений) под названием BlogsRcl, в которой у меня есть компонент Blazor с именем Blogs.razor.

Я хочу иметь возможность внедрить HttpClient в свой Blogs.razor компонент так же, как компонент FetchData.razor в проекте «Клиент», то есть «@inject HttpClient Http».

В файле .csproj для моего проекта BlogsRcl я добавил одну / или обе ссылки на

<PackageReference Include="Microsoft.Extensions.Http" Version="5.0.0.0" />
<PackageReference Include="System.Net.Http" Version="5.0.0" />

что, с Microsoft.Extensions.Http все кошерно, но когда я добавляю System.Net.Http, каждый проект в решении жалуется, что это Unable to find package System.Net.Http with version (>= 5.0.0).

Тем не менее, когда я делаю Go To Definition для HttpClient в компоненте FetchData.razor в проекте Client, метаданные говорят Assembly System.Net.Http, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a.

Изменить: я тоже пытался добавить <PackageReference Include="System.Net.Http.Json" Version="5.0.0" />, но безуспешно.

Что мне не хватает?


person Michael Tranchida    schedule 26.12.2020    source источник


Ответы (1)


RCL (<Project Sdk="Microsoft.NET.Sdk.Razor">) не должны нуждаться в каких-либо из этих ссылок на пакеты, поскольку необходимые ссылки являются частью структуры. В Visual Studio вы можете увидеть, что входит в состав фреймворка, развернув Project/Depedencies/Frameworks/Microsoft.NETCore.App/.

Но вы, однако, должны убедиться, что вы также добавили необходимые директивы using. Либо добавьте их в начало вашего .razor-файла, либо, что еще лучше, для такого общего использования добавьте их в _Imports.razor-файл.

@using System.Net.Http
@using System.Net.Http.Json
person Michel Jansson    schedule 27.12.2020
comment
Чувак ... мог бы поклясться, что я добавил using ... Вот вопрос, который никому никогда не пригодится, лол. В любом случае, спасибо. - person Michael Tranchida; 29.12.2020
comment
@MichaelTranchida Хе-хе бывает! В вашу защиту - редактор компонентов бритвы в VS действительно плохой, и подобная ошибка легко могла бы быть обнаружена обычным редактором .cs. Не могу дождаться, когда новый бритвенный редактор на основе LSP станет достаточно стабильным, чтобы его можно было использовать ... - person Michel Jansson; 30.12.2020