.NET 7.0.302 SDK附带MSBuild 17.6升级后Blazor构建失败求助
解决Blazor绑定属性构建失败问题(.NET SDK 7.0.302/MSBuild 17.6)
问题背景
升级到.NET SDK 7.0.302(附带MSBuild 17.6)后,Blazor项目构建时触发错误:
无法从绑定属性‘bind-Model’推断属性名称。绑定属性应采用‘bind’或‘bind-value’形式,以及对应的可选参数(如‘bind-value:event’、‘bind:format’等)
这是因为新版本的MSBuild对Blazor绑定语法的校验规则更严格,bind-Model这类非标准写法不再被允许。
修复方案
1. 修正绑定语法(推荐)
Blazor的标准绑定语法分为两种场景:
- 绑定组件默认
Value属性:使用bind-value或简写bind - 绑定组件自定义属性:使用
bind:{PropertyName}格式
将项目中所有bind-Model的写法替换为正确格式:
- 错误写法:
<MyComponent bind-Model="@LocalModel" /> - 正确写法:
<MyComponent bind:Model="@LocalModel" />
如果是自定义组件的绑定问题,需确保组件同时定义属性和对应的变更事件回调,示例代码:
[Parameter] public MyModelType Model { get; set; } [Parameter] public EventCallback<MyModelType> ModelChanged { get; set; }
2. 临时锁定SDK版本(应急方案)
如果暂时无法大面积修改代码,可在项目.csproj文件中指定使用旧版本SDK,绕过新校验规则:
<PropertyGroup> <TargetFramework>net7.0</TargetFramework> <!-- 锁定使用7.0.300版本SDK --> <SdkVersion>7.0.300</SdkVersion> <RollForward>Disable</RollForward> </PropertyGroup>
3. 检查第三方组件
若错误来自第三方UI组件库,建议查看组件库更新日志,确认是否有适配.NET SDK 7.0.302的版本,及时升级组件库。
内容的提问来源于stack exchange,提问作者Ben Croughs
相关产品推荐
相关产品推荐

