Mar*_*man 5 com f# visual-studio visual-studio-2022
这仅适用于 Visual Studio 2022。我已经卸载了 VS2019 和预览版,其中 F# 工作得非常好(F# 5.0)。我正在使用 VS2022 来使用 F# 6.0,并且不想回到 F# 5.0。
\n该问题特定于 F#。我也使用 C#,并且在 VS2022 下运行最新的 C# 没有任何问题。
\n几乎持续运行的 DevEnv 进程消耗了我的 CPU 4 个超线程中的 1 到 4 个。我已经关闭了 F# 设置中可以找到的所有实验选项。
\n有时有 2 个或更多后台进程在运行,有时暂停,有时没有 - 这与后台 CPU 消耗之间似乎没有相关性
\n有时我会弹出一个关于等待完成编辑器过程或编译过程的对话框。
\n当 devenev.exe 在属性下消耗 CPU 周期时,我发现总有一个clr.dllCoUnInitializeEE+0x6790是罪魁祸首。我认为这应该是一个短暂的过程?有时,其中的两个或三个会消耗大部分超线程(也有其他相同的,但 CPU 消耗非常低或没有)。有罪线程上的堆栈如下:
1, Microsoft.FSharp.Collections.SeqModule+Zip@633[[System.__Canon, mscorlib],[System.__Canon, mscorlib]].Invoke(System.__Canon, System.__Canon) + 0x50 <-- FSharp.Core.ni.dll+0x83f430\n2, Microsoft.FSharp.Collections.Internal+IEnumerator+map2@103[[System.__Canon, mscorlib],[System.__Canon, mscorlib],[System.__Canon, mscorlib]].DoMoveNext(System.__Canon ByRef) + 0xca <-- FSharp.Core.ni.dll+0x8476ba\n3, Microsoft.FSharp.Collections.Internal+IEnumerator+MapEnumerator`1[[System.__Canon, mscorlib]].System.Collections.IEnumerator.MoveNext() + 0x40 <-- FSharp.Core.ni.dll+0x847270\n4, Microsoft.FSharp.Collections.SeqModule.ForAll[[System.__Canon, mscorlib]](Microsoft.FSharp.Core.FSharpFunc`2<System.__Canon,Boolean>, System.Collections.Generic.IEnumerable`1<System.__Canon>) + 0x76 <-- FSharp.Core.ni.dll+0x753466\n5, FSharp.Compiler.Symbols.SymbolHelpers+ItemDisplayPartialEquality@485.System.Collections.Generic.IEqualityComparer<FSharp.Compiler.NameResolution.Item>.Equals(Item, Item) + 0x24 <-- FSharp.Compiler.Service.ni.dll+0x2900294\n6, System.Collections.Generic.Dictionary`2[[System.__Canon, mscorlib],[System.__Canon, mscorlib]].Insert(System.__Canon, System.__Canon, Boolean) + 0x200 <-- mscorlib.ni.dll+0x57bea0\n7, Internal.Utilities.Library.IPartialEqualityComparer+partialDistinctBy@1001[[System.__Canon, mscorlib]].Invoke(System.__Canon) + 0xb0 <-- FSharp.Compiler.Service.ni.dll+0x2bc9540\n8, Microsoft.FSharp.Primitives.Basics.List.filterToFreshConsTail[[System.__Canon, mscorlib]](Microsoft.FSharp.Collections.FSharpList`1<System.__Canon>, Microsoft.FSharp.Core.FSharpFunc`2<System.__Canon,Boolean>, Microsoft.FSharp.Collections.FSharpList`1<System.__Canon>) + 0x4e <-- FSharp.Core.ni.dll+0x76060e\n9, Microsoft.FSharp.Primitives.Basics.List.filter[[System.__Canon, mscorlib]](Microsoft.FSharp.Core.FSharpFunc`2<System.__Canon,Boolean>, Microsoft.FSharp.Collections.FSharpList`1<System.__Canon>) + 0xe7 <-- FSharp.Core.ni.dll+0x760747\n10, FSharp.Compiler.EditorServices.DeclarationListInfo.Create(InfoReader, AccessorDomain, FSharp.Compiler.Text.Range, DisplayEnv, Microsoft.FSharp.Core.FSharpFunc`2<Item,FSharp.Compiler.Symbols.FSharpAccessibility>, Microsoft.FSharp.Collections.FSharpList`1<FSharp.Compiler.EditorServices.CompletionItem>, Microsoft.FSharp.Core.FSharpOption`1<System.String[]>, Boolean) + 0x2a0 <-- FSharp.Compiler.Service.ni.dll+0x274a830\n11, <StartupCode$FSharp-Compiler-Service>.$FSharpCheckerResults+GetDeclarations@1088.Invoke(Microsoft.FSharp.Core.Unit) + 0x2a0 <-- FSharp.Compiler.Service.ni.dll+0x289c0b0\n12, FSharp.Compiler.Diagnostics.ErrorScope.Protect[[System.__Canon, mscorlib]](FSharp.Compiler.Text.Range, Microsoft.FSharp.Core.FSharpFunc`2<Microsoft.FSharp.Core.Unit,System.__Canon>, Microsoft.FSharp.Core.FSharpFunc`2<System.String,System.__Canon>) + 0x58 <-- FSharp.Compiler.Service.ni.dll+0x24a7d28\n13, FSharp.Compiler.CodeAnalysis.TypeCheckInfo.GetDeclarations(Microsoft.FSharp.Core.FSharpOption`1<FSharp.Compiler.CodeAnalysis.FSharpParseFileResults>, Int32, System.String, FSharp.Compiler.EditorServices.PartialLongName, Microsoft.FSharp.Core.FSharpFunc`2<Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Collections.FSharpList`1<FSharp.Compiler.EditorServices.AssemblySymbol>>) + 0x101 <-- FSharp.Compiler.Service.ni.dll+0x27b3831\n14, <StartupCode$FSharp-Compiler-Service>.$FSharpCheckerResults+GetDeclarationListInfo@1953-1.Invoke(FSharp.Compiler.CodeAnalysis.TypeCheckInfo) + 0x31 <-- FSharp.Compiler.Service.ni.dll+0x28a33d1\n15, <StartupCode$FSharp-Editor>.$CompletionProvider+ProvideCompletionsAsyncAux@110-6.Invoke(Microsoft.CodeAnalysis.Text.SourceText) + 0x143 <-- 0x7ffdb4beacd3\n16, Microsoft.FSharp.Control.AsyncPrimitives.CallThenInvokeNoHijackCheck[[System.__Canon, mscorlib],[System.__Canon, mscorlib]](Microsoft.FSharp.Control.AsyncActivation`1<System.__Canon>, System.__Canon, Microsoft.FSharp.Core.FSharpFunc`2<System.__Canon,Microsoft.FSharp.Control.FSharpAsync`1<System.__Canon>>) + 0x3e <-- FSharp.Core.ni.dll+0x7c756e\n17, clr.dll+0x42b6\n18, Microsoft.FSharp.Control.Trampoline.Execute(Microsoft.FSharp.Core.FSharpFunc`2<Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Control.AsyncReturn>) + 0x60 <-- FSharp.Core.ni.dll+0x7c5420\n19, <StartupCode$FSharp-Core>.$Async+AwaitWaitHandle@1661-3.Invoke(System.Object, Boolean) + 0xc5 <-- FSharp.Core.ni.dll+0x824265\n20, System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) + 0x172 <-- mscorlib.ni.dll+0x58df12\n21, System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) + 0x15 <-- mscorlib.ni.dll+0x58dd95\n22, System.Threading._ThreadPoolWaitOrTimerCallback.PerformWaitOrTimerCallback(System.Object, Boolean) + 0xed <-- mscorlib.ni.dll+0xf3676d\n23, clr.dll!CoUninitializeEE+0x1b73\n24, clr.dll!CoUninitializeEE+0x1a88\n25, clr.dll!DllRegisterServerInternal+0x19f43\n26, clr.dll!TranslateSecurityAttributes+0x298b3\n27, clr.dll!CoUninitializeEE+0x2f30\n28, clr.dll!CoUninitializeEE+0x2ea3\n29, clr.dll!CoUninitializeEE+0x2de2\n30, clr.dll!CoUninitializeEE+0x2fc7\n31, clr.dll!TranslateSecurityAttributes+0x296ff\n32, clr.dll!ReOpenMetaDataWithMemoryEx+0x1252\n33, clr.dll!ReOpenMetaDataWithMemoryEx+0x4090\n34, clr.dll!GetMetaDataPublicInterfaceFromInternal+0x1bde5\n35, clr.dll!CoUninitializeEE+0x6815\n36, kernel32.dll!BaseThreadInitThunk+0x14\n37, ntdll.dll!RtlUserThreadStart+0x21\nRun Code Online (Sandbox Code Playgroud)\n我只为 Windows C# 和 F# 项目重新安装了 VS2022,仅此而已。
\n希望这些信息足以提供有关正在发生的事情的线索。
\n请参阅有关我在 tidyups 方面进一步努力的评论,并拥有我认为需要的 Framework 4.6 和 4.7 dot net dll/运行时,以及只有一个 dot net core,我认为它是 6.0,但被列为Microsoft .NET Core SDK - 2.1.202(x64)- 如果这是问题所在。
问题似乎仍然是 CoUninitialize ,它应该是一个短暂的线程来卸载 COM 对象 - 请参阅https://learn.microsoft.com/en-us/windows/win32/api/combaseapi/nf-combaseapi-couninitialize。F# 的哪一部分正在使用无法卸载的 Com 对象,因为在编辑/编译 C# 项目时不会发生这种情况?
\n我再次使用最小的点网库 IIRC 重新安装了 VS2022,它需要 4.6 和 4.7 框架才能安装一些 C# 和 F#。现在一切都回来了,而我没有做任何其他事情,包括没有自动更新等。这是来自的最新转储dotnet --info:
PS ..> dotnet --info\n.NET SDK (reflecting any global.json):\n Version: 6.0.100\n Commit: 9e8b04bbff\n\nRuntime Environment:\n OS Name: Windows\n OS Version: 10.0.18363\n OS Platform: Windows\n RID: win10-x64\n Base Path: C:\\Program Files\\dotnet\\sdk\\6.0.100\\\n\nHost (useful for support):\n Version: 6.0.0\n Commit: 4822e3c3aa\n\n.NET SDKs installed:\n 2.1.202 [C:\\Program Files\\dotnet\\sdk]\n 3.1.413 [C:\\Program Files\\dotnet\\sdk]\n 5.0.302 [C:\\Program Files\\dotnet\\sdk]\n 5.0.403 [C:\\Program Files\\dotnet\\sdk]\n 6.0.100 [C:\\Program Files\\dotnet\\sdk]\n\n.NET runtimes installed:\n Microsoft.AspNetCore.All 2.1.28 [C:\\Program Files\\dotnet\\shared\\Microsoft.AspNetCore.All]\n Microsoft.AspNetCore.All 2.1.29 [C:\\Program Files\\dotnet\\shared\\Microsoft.AspNetCore.All]\n Microsoft.AspNetCore.All 2.1.30 [C:\\Program Files\\dotnet\\shared\\Microsoft.AspNetCore.All]\n Microsoft.AspNetCore.App 2.1.28 [C:\\Program Files\\dotnet\\shared\\Microsoft.AspNetCore.App]\n Microsoft.AspNetCore.App 2.1.29 [C:\\Program Files\\dotnet\\shared\\Microsoft.AspNetCore.App]\n Microsoft.AspNetCore.App 2.1.30 [C:\\Program Files\\dotnet\\shared\\Microsoft.AspNetCore.App]\n Microsoft.AspNetCore.App 3.1.17 [C:\\Program Files\\dotnet\\shared\\Microsoft.AspNetCore.App]\n Microsoft.AspNetCore.App 3.1.18 [C:\\Program Files\\dotnet\\shared\\Microsoft.AspNetCore.App]\n Microsoft.AspNetCore.App 3.1.19 [C:\\Program Files\\dotnet\\shared\\Microsoft.AspNetCore.App]\n Microsoft.AspNetCore.App 3.1.21 [C:\\Program Files\\dotnet\\shared\\Microsoft.AspNetCore.App]\n Microsoft.AspNetCore.App 5.0.1 [C:\\Program Files\\dotnet\\shared\\Microsoft.AspNetCore.App]\n Microsoft.AspNetCore.App 5.0.4 [C:\\Program Files\\dotnet\\shared\\Microsoft.AspNetCore.App]\n Microsoft.AspNetCore.App 5.0.8 [C:\\Program Files\\dotnet\\shared\\Microsoft.AspNetCore.App]\n Microsoft.AspNetCore.App 5.0.9 [C:\\Program Files\\dotnet\\shared\\Microsoft.AspNetCore.App]\n Microsoft.AspNetCore.App 5.0.10 [C:\\Program Files\\dotnet\\shared\\Microsoft.AspNetCore.App]\n Microsoft.AspNetCore.App 5.0.12 [C:\\Program Files\\dotnet\\shared\\Microsoft.AspNetCore.App]\n Microsoft.AspNetCore.App 6.0.0 [C:\\Program Files\\dotnet\\shared\\Microsoft.AspNetCore.App]\n Microsoft.NETCore.App 2.0.9 [C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App]\n Microsoft.NETCore.App 2.1.28 [C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App]\n Microsoft.NETCore.App 2.1.29 [C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App]\n Microsoft.NETCore.App 2.1.30 [C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App]\n Microsoft.NETCore.App 3.1.17 [C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App]\n Microsoft.NETCore.App 3.1.18 [C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App]\n Microsoft.NETCore.App 3.1.19 [C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App]\n Microsoft.NETCore.App 3.1.21 [C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App]\n Microsoft.NETCore.App 5.0.1 [C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App]\n Microsoft.NETCore.App 5.0.4 [C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App]\n Microsoft.NETCore.App 5.0.8 [C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App]\n Microsoft.NETCore.App 5.0.9 [C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App]\n Microsoft.NETCore.App 5.0.12 [C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App]\n Microsoft.NETCore.App 6.0.0 [C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App]\n Microsoft.WindowsDesktop.App 3.1.17 [C:\\Program Files\\dotnet\\shared\\Microsoft.WindowsDesktop.App]\n Microsoft.WindowsDesktop.App 3.1.18 [C:\\Program Files\\dotnet\\shared\\Microsoft.WindowsDesktop.App]\n Microsoft.WindowsDesktop.App 3.1.19 [C:\\Program Files\\dotnet\\shared\\Microsoft.WindowsDesktop.App]\n Microsoft.WindowsDesktop.App 5.0.1 [C:\\Program Files\\dotnet\\shared\\Microsoft.WindowsDesktop.App]\n Microsoft.WindowsDesktop.App 5.0.4 [C:\\Program Files\\dotnet\\shared\\Microsoft.WindowsDesktop.App]\n Microsoft.WindowsDesktop.App 5.0.8 [C:\\Program Files\\dotnet\\shared\\Microsoft.WindowsDesktop.App]\n Microsoft.WindowsDesktop.App 5.0.9 [C:\\Program Files\\dotnet\\shared\\Microsoft.WindowsDesktop.App]\n Microsoft.WindowsDesktop.App 5.0.12 [C:\\Program Files\\dotnet\\shared\\Microsoft.WindowsDesktop.App]\n Microsoft.WindowsDesktop.App 6.0.0 [C:\\Program Files\\dotnet\\shared\\Microsoft.WindowsDesktop.App]\nRun Code Online (Sandbox Code Playgroud)\n再次使用后dotnet-core-uninstall,一些 skds/runtimes 神奇地重新出现在当前输出中:
PS C:\\WINDOWS\\system32> dotnet-core-uninstall list\n\nThis tool cannot uninstall versions of the runtime or SDK that are\xc2\xa0\n - SDKs installed using Visual Studio 2019 Update 3 or later.\n - SDKs and runtimes installed via zip/scripts.\n - Runtimes installed with SDKs (these should be removed by removing that SDK).\nThe versions that can be uninstalled with this tool are:\n\n.NET Core SDKs:\n 5.0.403 x64 [Used by Visual Studio. Specify individually or use --force to remove]\n 2.1.202 x64 [Used by Visual Studio. Specify individually or use --force to remove]\n\n.NET Core Runtimes:\n\nASP.NET Core Runtimes:\n 5.0.12 x86\n 5.0.10 x64\n 3.1.21 x64\n 2.1.30 x64\n\n.NET Core Runtime & Hosting Bundles:\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1595 次 |
| 最近记录: |