Sourcetree 실행 안됨 해결하기

Smite·2023년 7월 1일
post-thumbnail

넌 또 왜 그러니🤔

잘 사용하고 있는 소스트리가 어느새 갑자기 스플래시 스크린만 나타나고 프로그램이 다운되는 현상이 발생하고 있다.
실행 중인 프로세스에서도 소스트리를 찾아볼 수 없고 프로세스가 종료되고 있다.


🔍원인 파악

로그를 확인하기 위하여 sourcetree.log파일을 확인해보았는데 다음과 같았다.

sourcetree.log

ERROR [2023-06-30 15:30:25,213] [1] [Sourcetree.Composition.VSMef.Net48.VSMefCompositionManager] [Log] - Unable to load MEF components
System.InvalidOperationException: 시퀀스에 요소가 없습니다.
   위치: System.Linq.Enumerable.First[TSource](IEnumerable`1 source)
   위치: Microsoft.VisualStudio.Composition.PartDiscovery.GetElementTypeFromMany(Type type)
   위치: Microsoft.VisualStudio.Composition.RuntimeComposition.RuntimeImport.get_ImportingSiteTypeWithoutCollection()
   위치: Microsoft.VisualStudio.Composition.RuntimeComposition.RuntimeImport.get_IsLazy()
   위치: Microsoft.VisualStudio.Composition.RuntimeComposition.RuntimeImport.get_LazyFactory()
   위치: Microsoft.VisualStudio.Composition.RuntimeExportProviderFactory.RuntimeExportProvider.GetValueForImportSite(RuntimePartLifecycleTracker importingPartTracker, RuntimeImport import)
   위치: Microsoft.VisualStudio.Composition.RuntimeExportProviderFactory.RuntimeExportProvider.RuntimePartLifecycleTracker.SatisfyImports()
   위치: Microsoft.VisualStudio.Composition.ExportProvider.PartLifecycleTracker.SatisfyImmediateImports()
   위치: Microsoft.VisualStudio.Composition.ExportProvider.PartLifecycleTracker.MoveNext(PartLifecycleState nextState)
   위치: Microsoft.VisualStudio.Composition.ExportProvider.PartLifecycleTracker.MoveToState(PartLifecycleState requiredState)
   위치: Microsoft.VisualStudio.Composition.ExportProvider.PartLifecycleTracker.GetValueReadyToExpose()
   위치: Microsoft.VisualStudio.Composition.RuntimeExportProviderFactory.RuntimeExportProvider.<>c__DisplayClass15_0.<GetExportedValueHelper>b__0()
   위치: Microsoft.VisualStudio.Composition.RuntimeExportProviderFactory.RuntimeExportProvider.GetValueForImportElement(RuntimePartLifecycleTracker importingPartTracker, RuntimeImport import, RuntimeExport export, Func`3 lazyFactory)
   위치: Microsoft.VisualStudio.Composition.RuntimeExportProviderFactory.RuntimeExportProvider.GetValueForImportSite(RuntimePartLifecycleTracker importingPartTracker, RuntimeImport import)
   위치: Microsoft.VisualStudio.Composition.RuntimeExportProviderFactory.RuntimeExportProvider.RuntimePartLifecycleTracker.<CreateValue>b__10_0(RuntimeImport import)
   위치: System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
   위치: System.Linq.Buffer`1..ctor(IEnumerable`1 source)
   위치: System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
   위치: Microsoft.VisualStudio.Composition.RuntimeExportProviderFactory.RuntimeExportProvider.RuntimePartLifecycleTracker.CreateValue()
   위치: Microsoft.VisualStudio.Composition.ExportProvider.PartLifecycleTracker.Create()
   위치: Microsoft.VisualStudio.Composition.ExportProvider.PartLifecycleTracker.MoveNext(PartLifecycleState nextState)
   위치: Microsoft.VisualStudio.Composition.ExportProvider.PartLifecycleTracker.MoveToState(PartLifecycleState requiredState)
   위치: Microsoft.VisualStudio.Composition.ExportProvider.PartLifecycleTracker.GetValueReadyToExpose()
   위치: Microsoft.VisualStudio.Composition.RuntimeExportProviderFactory.RuntimeExportProvider.<>c__DisplayClass15_0.<GetExportedValueHelper>b__0()
   위치: Microsoft.VisualStudio.Composition.RuntimeExportProviderFactory.RuntimeExportProvider.GetValueForImportElement(RuntimePartLifecycleTracker importingPartTracker, RuntimeImport import, RuntimeExport export, Func`3 lazyFactory)
   위치: Microsoft.VisualStudio.Composition.RuntimeExportProviderFactory.RuntimeExportProvider.GetValueForImportSite(RuntimePartLifecycleTracker importingPartTracker, RuntimeImport import)
   위치: Microsoft.VisualStudio.Composition.RuntimeExportProviderFactory.RuntimeExportProvider.RuntimePartLifecycleTracker.<CreateValue>b__10_0(RuntimeImport import)
   위치: System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
   위치: System.Linq.Buffer`1..ctor(IEnumerable`1 source)
   위치: System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
   위치: Microsoft.VisualStudio.Composition.RuntimeExportProviderFactory.RuntimeExportProvider.RuntimePartLifecycleTracker.CreateValue()
   위치: Microsoft.VisualStudio.Composition.ExportProvider.PartLifecycleTracker.Create()
   위치: Microsoft.VisualStudio.Composition.ExportProvider.PartLifecycleTracker.MoveNext(PartLifecycleState nextState)
   위치: Microsoft.VisualStudio.Composition.ExportProvider.PartLifecycleTracker.MoveToState(PartLifecycleState requiredState)
   위치: Microsoft.VisualStudio.Composition.ExportProvider.PartLifecycleTracker.GetValueReadyToExpose()
   위치: System.Lazy`1.CreateValue()
   위치: System.Lazy`1.LazyInitValue()
   위치: Microsoft.VisualStudio.Composition.NetFxAdapters.MefV1ExportProvider.<>c__DisplayClass12_0.<UnwrapExport>b__1()
   위치: System.ComponentModel.Composition.Primitives.Export.get_Value()
   위치: System.ComponentModel.Composition.ReflectionModel.ImportingItem.Cast(Type type, Export export)
   위치: System.ComponentModel.Composition.ReflectionModel.ReflectionComposablePart.SetImport(ImportingItem item, Export[] exports)
   위치: System.ComponentModel.Composition.Hosting.ImportEngine.PartManager.TrySetImport(ImportDefinition import, Export[] exports)
   위치: System.ComponentModel.Composition.Hosting.ImportEngine.TrySatisfyImportSubset(PartManager partManager, IEnumerable`1 imports, AtomicComposition atomicComposition)
   위치: System.ComponentModel.Composition.Hosting.ImportEngine.TrySatisfyImportsStateMachine(PartManager partManager, ComposablePart part)
   위치: System.ComponentModel.Composition.Hosting.ImportEngine.TrySatisfyImports(PartManager partManager, ComposablePart part, Boolean shouldTrackImports)
   위치: System.ComponentModel.Composition.Hosting.ImportEngine.SatisfyImportsOnce(ComposablePart part)
   위치: System.ComponentModel.Composition.Hosting.CompositionContainer.SatisfyImportsOnce(ComposablePart part)
   위치: System.ComponentModel.Composition.AttributedModelServices.SatisfyImportsOnce(ICompositionService compositionService, Object attributedPart)
   위치: Sourcetree.Composition.VSMef.Net48.VSMefCompositionManager.<Compose>d__5.MoveNext()

핵심은 [Log] - Unable to load MEF components System.InvalidOperationException: 시퀀스에 요소가 없습니다. 이 부분 같다.
Windows 업데이트 이후 캐시 파일이 손상이 되어 문제가 발생한 거 같다.


해결방법

소스트리 캐시 파일인 Composition.cache파일을 삭제해 주면 된다.

# 소스트리 캐시 경로
C:\Users\<USER>\AppData\Local\Atlassian\SourceTree.exeUrl<UID>\<소스트리 버전>

삭제된 캐시 파일은 소스트리를 실행하면 새로 캐시 파일이 생기니 걱정하지 않아도 된다.

0개의 댓글