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

Visual Studio for Mac添加Web引用失败:需前台线程调用DotNetProject_Modified

解决Visual Studio for Mac添加Web引用时的前台线程错误

问题描述

我按以下步骤尝试添加Web服务引用:

  • 右键点击项目
  • 选择“添加Web引用”
  • 粘贴WSDL端点地址

点击“确定”时弹出错误提示:

无法添加Web引用:'DotNetProject_Modified'必须在前台线程调用。

我的环境配置:

  • Visual Studio for Mac 版本7.5(build 1254)
  • NuGet版本4.3.1.4445
  • .NET Core运行时版本2.0.5、2.0.0

完整错误日志:

ERROR [2018-05-12 14:00:46Z]: The web reference could not be added System.InvalidOperationException: 'DotNetProject_Modified' must be called on the foreground thread. at Microsoft.CodeAnalysis.Razor.ForegroundDispatcher.AssertForegroundThread (System.String caller) [0x0001f] in C:\BuildAgent\work\9f4c49cb464f2a60\src\Microsoft.CodeAnalysis.Razor.Workspaces\ForegroundDispatcher.cs:24 at Microsoft.VisualStudio.Mac.LanguageServices.Razor.ProjectSystem.RazorProjectHostBase.DotNetProject_Modified (System.Object sender, MonoDevelop.Projects.SolutionItemModifiedEventArgs args) [0x0000e] in C:\BuildAgent\work\9f4c49cb464f2a60\src\Microsoft.VisualStudio.Mac.LanguageServices.Razor\ProjectSystem\RazorProjectHostBase.cs:124 at (wrapper delegate-invoke) <Module>.invoke_void_object_SolutionItemModifiedEventArgs(object,MonoDevelop.Projects.SolutionItemModifiedEventArgs) at MonoDevelop.Projects.SolutionFolderItem.OnModified (MonoDevelop.Projects.SolutionItemModifiedEventArgs args) [0x00016] in /Users/builder/data/lanes/5965/498923ea/source/monodevelop/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/SolutionFolderItem.cs:452 at MonoDevelop.Projects.Project.OnModified (MonoDevelop.Projects.SolutionItemModifiedEventArgs args) [0x0001a] in /Users/builder/data/lanes/5965/498923ea/source/monodevelop/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs:408 at MonoDevelop.Projects.SolutionFolderItem.NotifyModified (System.String hint) [0x00000] in /Users/builder/data/lanes/5965/498923ea/source/monodevelop/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/SolutionFolderItem.cs:439 at MonoDevelop.Projects.Project.OnItemsAdded (System.Collections.Generic.IEnumerable`1[T] objs) [0x00075] in /Users/builder/data/lanes/5965/498923ea/source/monodevelop/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs:2337 at MonoDevelop.Projects.DotNetProject.OnItemsAdded (System.Collections.Generic.IEnumerable`1[T] objs) [0x00030] in /Users/builder/data/lanes/5965/498923ea/source/monodevelop/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs:1767 at MonoDevelop.Projects.Project+DefaultMSBuildProjectExtension.OnItemsAdded (System.Collections.Generic.IEnumerable`1[T] objs) [0x00000] in /Users/builder/data/lanes/5965/498923ea/source/monodevelop/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs:4636 at MonoDevelop.Projects.ProjectExtension.OnItemsAdded (System.Collections.Generic.IEnumerable`1[T] objs) [0x00000] in /Users/builder/data/lanes/5965/498923ea/source/monodevelop/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectExtension.cs:266 at MonoDevelop.Projects.ProjectExtension.OnItemsAdded (System.Collections.Generic.IEnumerable`1[T] objs) [0x00000] in /Users/builder/data/lanes/5965/498923ea/source/monodevelop/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectExtension.cs:266 at MonoDevelop.Projects.ProjectExtension.OnItemsAdded (System.Collections.Generic.IEnumerable`1[T] objs) [0x00000] in /Users/builder/data/lanes/5965/498923ea/source/monodevelop/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectExtension.cs:266 at MonoDevelop.Projects.ProjectExtension.OnItemsAdded (System.Collections.Generic.IEnumerable`1[T] objs) [0x00000] in /Users/builder/data/lanes/5965/498923ea/source/monodevelop/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectExtension.cs:266 at MonoDevelop.Projects.ProjectExtension.OnItemsAdded (System.Collections.Generic.IEnumerable`1[T] objs) [0x00000] in /Users/builder/data/lanes/5965/498923ea/source/monodevelop/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectExtension.cs:266 at MonoDevelop.Projects.ProjectExtension.OnItemsAdded (System.Collections.Generic.IEnumerable`1[T] objs) [0x00000] in /Users/builder/data/lanes/5965/498923ea/source/monodevelop/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectExtension.cs:266 at MonoDevelop.Projects.ProjectExtension.OnItemsAdded (System.Collections.Generic.IEnumerable`1[T] objs) [0x00000] in /Users/builder/data/lanes/5965/498923ea/source/monodevelop/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectExtension.cs:266

原因分析

这是Visual Studio for Mac 7.5版本中Razor语言服务的已知bug:添加Web引用触发项目修改事件时,Razor相关代码试图在后台线程执行必须在前台UI线程运行的操作,导致断言失败抛出错误。

解决方案

按优先级推荐以下几种解决办法:

  1. 升级Visual Studio for Mac到最新版本
    Microsoft在后续版本(比如8.0及以上)中修复了这个Razor线程问题,升级后可以彻底避免该错误,这是最根本的解决方式。

  2. 临时禁用Razor语言服务(紧急场景)
    如果暂时无法升级,可尝试临时禁用Razor相关服务:

    • 打开IDE偏好设置(Visual Studio > Preferences)
    • 导航到Text Editor > Source Code
    • 找到Razor相关选项,取消勾选启用,重启IDE后再尝试添加Web引用。完成操作后可重新启用该服务。
  3. 使用.NET CLI命令添加服务引用
    绕开IDE的UI问题,直接用命令行工具添加:

    dotnet svcutil <你的WSDL端点URL>
    

    执行命令后,生成的服务引用文件会自动添加到项目中,后续可在IDE中正常使用。

  4. 手动迁移服务引用文件
    也可以在Windows环境下用Visual Studio添加Web引用,生成对应的.cs文件和配置项,再将这些文件复制到Mac上的项目中,手动配置相关引用和设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:31:38