Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Blazor Wasm组件库3.2.0-preview2.20160.5_Blazor_Webassembly - Fatal编程技术网

Blazor Wasm组件库3.2.0-preview2.20160.5

Blazor Wasm组件库3.2.0-preview2.20160.5,blazor,webassembly,Blazor,Webassembly,我正在尝试使用webassembly Blazor项目构建一个可重用组件库,该项目使用最新的预览版本3.2.0-preview2.20160.5构建 我首先尝试添加一个Razor组件库——但是,因为它面向.NETCore3.1,而Wasm项目面向.NETStandard2.1,这是一个不可能的开始 我试图在dotnet命令行中使用“blazorlib”模板,但收到一个运行时错误,表明该模板与最新的预览版本不兼容 我最终尝试使用一个普通的.Net标准2.1类库。这将允许我创建.razor组件文件,

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


我首先尝试添加一个Razor组件库——但是,因为它面向.NETCore3.1,而Wasm项目面向.NETStandard2.1,这是一个不可能的开始

我试图在dotnet命令行中使用“blazorlib”模板,但收到一个运行时错误,表明该模板与最新的预览版本不兼容

我最终尝试使用一个普通的.Net标准2.1类库。这将允许我创建.razor组件文件,并且编译得很好。但是,如果我尝试在单独的文件中实现代码(例如HelloWorld.razor.cs中的HelloWorldBase类,用于HelloWorld.razor),当我尝试引用主Wasm项目中的组件时,intellisense仅建议“HelloWorldBase”作为标记名,并且该组件不会产生任何输出。我怀疑有某种内部接线缺失

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

非常感谢

更新1

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

HelloWorld.razor:

@namespace BlazorPWA.Common.Components

@inherits HelloWorldBase

<h1>Hello World</h1>
在主项目中,在引用组件库的情况下,intellisense为我提供了HelloWorld和HelloWorldBase,而在将.razor组件直接添加到主项目中时,我只能看到.razor文件名:

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

My UserHome.razor(尝试组件标记的所有4种排列):

@page/“
@命名空间BlazorPWA.Portal.Views
@继承UserHomeBase
欢迎使用您的新应用程序。
UserId是@UserStore.User?.UserId
增量用户标识
输出和源-可以看出,组件标记只是作为HTML标记输出的:


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

您使用的是
部分类吗

分部类在组件库中可能不起作用。我建议您将代码隐藏在组件继承的基类中:

MyComponentBase.cs

public abstract class MyComponent : ComponentBase 
{
    protected void MyCodeBehindMethod()
    {
         ....
    }
}
霉素

@inherits MyComponentBase

@code {
    protected override void OnInitialized()
    {
         MyCodeBehindMethod();
    }
}

事实证明,我需要使用dotnetcli添加一个新的“razorclasslib”项目。当像这样添加时,项目以.Net标准而不是.Net核心为目标,而不是通过Visual Studio IDE,解决了问题。

感谢您的回复。我没有使用分部类,我用更多信息更新了我的问题“我第一次尝试添加Razor组件库”——这是正确的选择。无论您看到什么问题,都应该以另一种方式解决。问题是Blazor Wasm的目标是.Net标准2.1,而Razor组件库的目标是.Net核心3.1
public abstract class MyComponent : ComponentBase 
{
    protected void MyCodeBehindMethod()
    {
         ....
    }
}
@inherits MyComponentBase

@code {
    protected override void OnInitialized()
    {
         MyCodeBehindMethod();
    }
}