.net core Blazor Core托管-Razor类库项目中的所有组件都以HTML格式打印在页面上

.net core Blazor Core托管-Razor类库项目中的所有组件都以HTML格式打印在页面上,.net-core,blazor,razor-class-library,.net Core,Blazor,Razor Class Library,我还没有找到类似问题的关键词,所以我发布了一个新的 项目运行良好,突然出现了下面描述的问题。我只是在编辑Razor类库中的一些Razor文件,因此无法将其追溯到我所做的任何代码修改 问题是: 我有以下项目结构: 客户端、服务器和共享的是最初由NetCore3.0中的Blazor模板创建的项目DesktopClient是与ElectronNET类似的Blazor项目,问题也发生在那里的组件上。SharedLibrary项目是放置所有项目通用组件的项目,问题的根源显然来自该项目 共享库在客户端项目

我还没有找到类似问题的关键词,所以我发布了一个新的

项目运行良好,突然出现了下面描述的问题。我只是在编辑Razor类库中的一些Razor文件,因此无法将其追溯到我所做的任何代码修改

问题是: 我有以下项目结构:

客户端、服务器和共享的是最初由NetCore3.0中的Blazor模板创建的项目DesktopClient是与ElectronNET类似的Blazor项目,问题也发生在那里的组件上。SharedLibrary项目是放置所有项目通用组件的项目,问题的根源显然来自该项目

共享库客户端项目中引用,因此我可以访问客户端项目中的组件

发生的情况是,Razor类库中的组件突然停止“编译”,所有“@”都被打印为原始HTML,就像“计数器2”的按钮一样:

[]

请注意,图像上有3个按钮。第一个在基本Razor页面中,正在正确编译。第二个来自SharedLibrary项目,显然没有被编译,因为“@”标记没有被替换。第三个按钮来自客户端项目中的一个组件(与基本Razor页面相同的项目),并且工作正常

因此问题在于共享库Razor文件没有被“编译”

我所尝试的:
  • 从项目中删除和添加引用
  • 清洗和修复溶液
  • 更新软件包
  • 检查.csproj以查看是否可以找到任何错误/缺失的内容(此文件没有经验,因此可能遗漏了某些内容)
  • 创建了一个新的Blazor Core托管项目,并添加了一个Razor类库,其设置与此演示相同。它工作得很好,所以问题就在这个项目上解决了。依赖项和“.csproj”文件似乎非常相似
守则: .csproj用于客户项目:


netstandard2.0
Exe
8
使可能
3
wwwroot\styles\font\%(递归目录)%(文件名)%(扩展名)
保存最新
wwwroot\images\system\%(递归目录)%(文件名)%(扩展名)
保存最新
wwwroot\images\social\brands\%(递归目录)%(文件名)%(扩展名)
保存最新
从未
.csproj用于共享图书馆

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <OutputType>Library</OutputType>
    <IsPackable>true</IsPackable>
    <BlazorLinkOnBuild>false</BlazorLinkOnBuild>
    <LangVersion>8.0</LangVersion>
    <Nullable>enable</Nullable>
    <RazorLangVersion>3.0</RazorLangVersion>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Blazor.Extensions.SignalR" Version="0.4.0" />
    <PackageReference Include="Microsoft.AspNetCore.Blazor" Version="3.0.0-preview9.19465.2" />
    <PackageReference Include="Microsoft.AspNetCore.Blazor.Build" Version="3.0.0-preview9.19465.2" PrivateAssets="all" />
    <PackageReference Include="Microsoft.Extensions.Localization.Abstractions" Version="3.0.0" />
  </ItemGroup>

  <ItemGroup>
    <Folder Include="Content\images\social\brands\" />
    <Folder Include="Core\Login\" />
    <Folder Include="Core\Login\OAuth2\" />
    <Folder Include="Services\" />
  </ItemGroup>

  <ItemGroup>
    <Compile Update="Resources\Languages\en-US.Designer.cs">
      <DesignTime>True</DesignTime>
      <AutoGen>True</AutoGen>
      <DependentUpon>en-US.resx</DependentUpon>
    </Compile>
  </ItemGroup>

  <ItemGroup>
    <EmbeddedResource Update="Resources\Languages\en-US.resx">
      <Generator>ResXFileCodeGenerator</Generator>
      <LastGenOutput>en-US.Designer.cs</LastGenOutput>
    </EmbeddedResource>
  </ItemGroup>

</Project>

netstandard2.0
图书馆
真的
假的
8
使可能
3
真的

检查
Microsoft.AspNetCore.Components.Web
列在
\u Imports.razor
上:

@using System.Net.Http
@using Microsoft.AspNetCore.Authorization
@using Microsoft.AspNetCore.Components.Authorization
@using Microsoft.AspNetCore.Components.Forms
@using Microsoft.AspNetCore.Components.Routing
@using Microsoft.AspNetCore.Components.Web  //<-----
@using Microsoft.JSInterop
@using _your_namespace_
@using _your_namespace_.Shared
@使用System.Net.Http
@使用Microsoft.AspNetCore.Authorization
@使用Microsoft.AspNetCore.Components.Authorization
@使用Microsoft.AspNetCore.Components.Forms
@使用Microsoft.AspNetCore.Components.Routing

@使用Microsoft.AspNetCore.Components.Web//是,它位于客户端项目中!如何确保SharedLibrary在客户端projet上引用时正在使用程序集?谢谢,附件“razor类库”的文件夹中确实缺少“\u Imports.razor”。奇怪的是,我一开始没有这个文件,而且它还在工作。谢谢你的回复!
@page "/"

@using ServerAPI.Client.Components
@using SharedLibrary.Components.User

<h1>Counter</h1>

<p>Current count: @currentCount</p>

<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>

@code {
    int currentCount = 0;

    void IncrementCount()
    {
        currentCount++;
    }
}
<SocialWithFormLoginComponent />
<Counter />
<h1>Counter 2</h1>

<p>Current count 2: @currentCount2</p>

<button class="btn btn-primary" @onclick="IncrementCount2">Click me 2</button>

@code {
    int currentCount2 = 0;

    void IncrementCount2()
    {
        currentCount2++;
        StateHasChanged();
        Console.WriteLine("Hello world!");
    }
}
<h1>Counter 3</h1>

<p>Current count 3: @currentCount3</p>

<button class="btn btn-primary" @onclick="IncrementCount3">Click me 3</button>

@code {
    int currentCount3 = 0;

    void IncrementCount3()
    {
        currentCount3++;
        StateHasChanged();
        Console.WriteLine("Hello world!");
    }
}
@using System.Net.Http
@using Microsoft.AspNetCore.Authorization
@using Microsoft.AspNetCore.Components.Authorization
@using Microsoft.AspNetCore.Components.Forms
@using Microsoft.AspNetCore.Components.Routing
@using Microsoft.AspNetCore.Components.Web  //<-----
@using Microsoft.JSInterop
@using _your_namespace_
@using _your_namespace_.Shared