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

.Net升级助手转换项目为SDK样式失败:System.IO.IOException异常

VB.Net WinForms启动项目升级到.NET时IOException问题排查方案

问题描述

正在将旧VB.Net WinForms应用从.Net Framework升级到.NET,解决方案包含12个项目,其中11个已顺利完成升级,但包含应用UI的启动项目升级第一步就失败,抛出System.IO.IOException异常,日志如下:

Microsoft.UpgradeAssistant.Transformers.ProjectSdkStyleTransformer
    info: Converting project 'C:\source\CommTool\Application\Commission.vbproj' to SDK style.
    error: System.IO.IOException,    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite, Boolean checkHost)
   at Microsoft.UpgradeAssistant.Services.FileSystemExtensions.DirectoryCopy(IFileSystem fileSystem, String sourceDirectory, String targetDirectory, ISet`1 excludeFolders, Boolean recursive) in D:\a\_work\1\s\src\engine\Services\FileSystem\FileSystemExtensions.cs:line 23
   at Microsoft.UpgradeAssistant.Services.FileSystemExtensions.DirectoryCopy(IFileSystem fileSystem, String sourceDirectory, String targetDirectory, ISet`1 excludeFolders, Boolean recursive) in D:\a\_work\1\s\src\engine\Services\FileSystem\FileSystemExtensions.cs:line 31
   at Microsoft.UpgradeAssistant.Services.FileSystemExtensions.DirectoryCopy(IFileSystem fileSystem, String sourceDirectory, String targetDirectory, ISet`1 excludeFolders, Boolean recursive) in D:\a\_work\1\s\src\engine\Services\FileSystem\FileSystemExtensions.cs:line 31
   at Microsoft.UpgradeAssistant.Services.FileSystemExtensions.DirectoryCopy(IFileSystem fileSystem, String sourceDirectory, String targetDirectory, ISet`1 excludeFolders, Boolean recursive) in D:\a\_work\1\s\src\engine\Services\FileSystem\FileSystemExtensions.cs:line 31
   at Microsoft.UpgradeAssistant.Transformers.ProjectSdkStyleTransformer.<RunAsync>d__2.MoveNext() in D:\a\_work\1\s\src\engine\Transformers\Project\ProjectSdkStyleTransformer.cs:line 65
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.UpgradeAssistant.Operations.Operation.<RunTransformerAsync>d__23.MoveNext() in D:\a\_work\1\s\src\engine\Operations\Operation.cs:line 387
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Microsoft.UpgradeAssistant.Operations.Operation.<RunNodeTransformersAsync>d__21.MoveNext() in D:\a\_work\1\s\src\engine\Operations\Operation.cs:line 274
    info: Done

已尝试.NET 6、7、8版本,结果一致;检查过所有项目的.vbproj文件权限均相同,目前该项目仍引用.Net Framework,无法继续推进解决方案升级。

排查与解决步骤

  • 检查文件锁定状态:异常发生在文件复制环节,大概率是启动项目的部分文件被其他进程占用(如Visual Studio、资源管理器、杀毒软件、第三方调试工具)。关闭所有可能占用项目文件的程序,重启Visual Studio后重试升级。
  • 清理项目缓存目录:
    1. 手动备份启动项目的完整目录
    2. 删除项目目录下的bin、obj、.vs、packages等缓存文件夹
    3. 清理解决方案根目录下的packages、.vs文件夹,避免缓存干扰
  • 手动转换为SDK风格项目:若升级助手持续失败,可直接手动修改.vbproj文件:
    1. 备份原Commission.vbproj文件
    2. 替换为适配WinForms的VB.NET SDK风格模板,根据项目实际情况调整:
      <Project Sdk="Microsoft.NET.Sdk">
        <PropertyGroup>
          <OutputType>WinExe</OutputType>
          <TargetFramework>net8.0-windows</TargetFramework>
          <UseWindowsForms>true</UseWindowsForms>
          <ImplicitUsings>enable</ImplicitUsings>
          <Nullable>enable</Nullable>
        </PropertyGroup>
      
        <ItemGroup>
          <!-- 手动添加原项目中的所有代码、资源文件 -->
          <Compile Include="**\*.vb" />
          <EmbeddedResource Include="**\*.resx" />
          <None Include="**\*.settings" />
          <!-- 其他自定义资源文件按需添加 -->
        </ItemGroup>
      
        <!-- 迁移原项目的NuGet包引用、项目引用到此处 -->
      </Project>
      
    3. 保存后重新加载项目,逐一修复缺失的引用或文件路径问题
  • 验证完整目录权限:除了.vbproj文件,检查项目目录下的资源文件、配置文件(如app.config)是否设置了只读属性,确认当前用户对项目目录拥有写入/修改权限(右键目录→属性→安全选项卡查看)。
  • 临时禁用杀毒软件防护:部分杀毒软件会拦截升级助手的文件复制操作,临时关闭实时防护后重试升级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 01:49:51