You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将.NET Framework项目重定向到.NET Core时VS2019属性窗口加载错误求助

把.NET Framework项目迁移到.NET Core的正确步骤

问题场景

你尝试直接修改旧格式的BOne.Ewa.Api.csproj文件,将<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>替换为<TargetFramework>netcoreapp3.1</TargetFramework>后,在Visual Studio 2019中遇到以下错误:

尝试加载项目属性窗口时出错,请关闭窗口重试。
找不到成员。(HRESULT异常: 0x80020003 (DISP_E_MEMBERNOTFOUND))

错误原因

原项目使用的是旧版MSBuild项目格式(基于http://schemas.microsoft.com/developer/msbuild/2003),而.NET Core依赖的是SDK风格项目格式,两者的项目结构、导入的MSBuild目标和属性差异极大。直接修改目标框架属性会导致MSBuild无法识别所需的成员,从而抛出错误。

正确迁移步骤

  • 不要直接修改旧项目文件,按以下步骤操作:
    1. 在Visual Studio中新建一个**类库(.NET Core)**项目,目标框架选择netcoreapp3.1(或更高的LTS版本如.NET 6),项目名称保持BOne.Ewa.Api。
    2. 迁移代码资源:将原项目中的.cs文件、视图文件(如果是Razor项目)、配置文件等复制到新项目对应的目录下。
    3. 重构NuGet依赖:原项目中通过packages目录导入的包,需要替换为SDK风格的<PackageReference>节点。例如原有的Microsoft.AspNetCore.Mvc.Razor.Extensions.2.2.0,可以直接在新项目的csproj中添加:
      <PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.Extensions" Version="2.2.0" />
      
      也可以通过Visual Studio的NuGet包管理器搜索安装对应的包。
    4. 移除.NET Framework特有配置:原项目中的<TargetFrameworkProfile>、<FileUpgradeFlags>、<OldToolsVersion>等配置是.NET Framework专属的,SDK风格项目不需要这些内容。
    5. 适配API差异:检查代码中是否使用了.NET Framework特有的API(如System.Web相关类),替换为.NET Core中的等效API。
    6. 验证编译:打开新项目,编译并修复出现的错误,确保所有功能正常运行。

额外提示

如果需要保留对.NET Framework的兼容,可以将新项目设置为多目标框架,例如在csproj中添加:

<TargetFrameworks>net48;netcoreapp3.1</TargetFrameworks>

这样项目可以同时编译为.NET Framework 4.8和.NET Core 3.1版本,逐步完成迁移过渡。

内容的提问来源于stack exchange,提问作者Hunter91151

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 20:57:09