NetCore2.2转NetStandard2.0/.NET472时runcommand属性未定义求助
解决IIS Express启动时"runcommand属性未定义"的问题
我来帮你搞定这个问题,咱们先捋清楚问题根源:
你的项目用的是Microsoft.NET.Sdk.Web(ASP.NET Core Web应用专属SDK),但你把目标框架设成了netstandard2.0;net472——这里的核心矛盾是NetStandard是类库的目标框架标准,完全不适合作为可执行Web应用的目标。ASP.NET Core Web应用无法基于NetStandard生成可执行文件,IIS Express找不到要运行的启动命令,自然就会抛出"runcommand属性未定义"的错误。
接下来给你具体的修复步骤:
1. 修正目标框架配置
把TargetFrameworks改成ASP.NET Core支持的框架组合,结合你原来的.NET Core 2.2基础和兼容.NET Framework 4.72的需求,正确配置应该是:
<TargetFrameworks>netcoreapp2.2;net472</TargetFrameworks>
2. 调整OutputType(精准适配)
虽然你之前改成Exe没解决问题,但结合正确的目标框架后,我们可以做更精准的条件配置:
<OutputType Condition="'$(TargetFramework)' == 'netcoreapp2.2'">Exe</OutputType> <OutputType Condition="'$(TargetFramework)' == 'net472'">Exe</OutputType>
其实直接设置<OutputType>Exe</OutputType>也可以,因为ASP.NET Core应用不管基于.NET Core还是.NET Framework,本质都是可执行文件。
3. 适配AspNetCoreHostingModel
注意:ASP.NET Core 2.2的InProcess托管模型仅支持.NET Core,.NET Framework环境下只能使用OutOfProcess,所以需要添加条件配置:
<AspNetCoreHostingModel Condition="'$(TargetFramework)' == 'netcoreapp2.2'">InProcess</AspNetCoreHostingModel> <AspNetCoreHostingModel Condition="'$(TargetFramework)' == 'net472'">OutOfProcess</AspNetCoreHostingModel>
4. 收尾验证操作
- 右键项目 → 清理
- 右键项目 → 重新生成
- 再次尝试用IIS Express启动调试
这样调整后,IIS Express就能找到对应框架下的合法启动命令,不会再出现runcommand未定义的报错了。
内容的提问来源于stack exchange,提问作者monstertjie_za
相关产品推荐
相关产品推荐

