Blazor Wasm组件库为3.2.0-preview2.20160.5

问题描述 投票:0回答:2

[我正在尝试使用使用最新预览版本3.2.0-preview2.20160.5构建的webassembly Blazor项目构建可重用的组件库。

[我首先尝试添加一个Razor组件库-但是,因为它的目标是.Net Core 3.1,而Wasm项目的目标是.Net Standard 2.1,所以这不是入门级。

我试图通过dotnet命令行使用“ blazorlib”模板,但是收到了一个运行时错误消息,指示该模板与最新的预览版本不兼容。

我终于尝试使用普通的.Net Standard 2.1类库。这将允许我创建.razor组件文件,并且可以正常编译。但是,如果我尝试在单独的文件中实现后台代码(例如,对于HelloWorld.razor,在HelloWorld.razor.cs中名为HelloWorldBase的类),则当我尝试引用主Wasm项目中的组件时,智能感知仅建议标签名称为“ HelloWorldBase”,该组件不会产生任何输出。我怀疑缺少某种内部布线。

有人知道正确的方法来创建具有最新预览版本的可重用Blazor组件库,可以在Wasm项目中引用它吗?

非常感谢

更新1

下面显示的是我当前在组件库(.Net Standard 2.1类库项目)中的结构:

enter image description here

HelloWorld.razor:

@namespace BlazorPWA.Common.Components

@inherits HelloWorldBase

<h1>Hello World</h1>

HelloWorld.razor.cs:

using Microsoft.AspNetCore.Components;

namespace BlazorPWA.Common.Components
{
    public class HelloWorldBase : ComponentBase
    {
    }
}

在主项目中,引用了组件库,intellisense为我同时提供了HelloWorld和HelloWorldBase,而将.razor组件直接添加到主项目中,我只会看到.razor文件名:

enter image description here

无论我选择HelloWorld还是HelloWorldBase,都不会呈现组件的输出,只是空白。

我的UserHome.razor(尝试使用组件标签的所有4个排列):

@page "/"

@namespace BlazorPWA.Portal.Views

@inherits UserHomeBase

Welcome to your new app.

UserId is <Observable>@UserStore.User?.UserId</Observable>

<button @onclick="IncrementUserId">Increment UserId</button>

<HelloWorld></HelloWorld>
<HelloWorldBase></HelloWorldBase>
<BlazorPWA.Common.Components.HelloWorld></BlazorPWA.Common.Components.HelloWorld>
<BlazorPWA.Common.Components.HelloWorldBase></BlazorPWA.Common.Components.HelloWorldBase>

输出和源-可以看到组件标签就像HTML标签一样正在被输出:

enter image description here

要将剃须刀组件添加到主项目中,我将添加新项目->剃刀组件,而我在组件库中没有此选项-我必须添加另一个文件类型,然后重命名为.razor-我想知道这是否是问题,缺少一些模板化/关联代码吗?

我正在尝试使用使用最新预览版本3.2.0-preview2.20160.5构建的webassembly Blazor项目构建可重用的组件库。我首先尝试添加Razor组件库-但是,...

blazor webassembly
2个回答
0
投票

您使用的是partial class吗?


0
投票

原来,我需要使用dotnet CLI添加一个新的“ razorclasslib”项目。当像这样添加时,该项目而不是通过Visual Studio IDE,而是以.Net Standard而不是.Net Core为目标,从而解决了该问题。

© www.soinside.com 2019 - 2024. All rights reserved.