Skip to content

Commit bdddede

Browse files
authored
Allow MEF components to supply assembly path resolvers (#79218)
1 parent b783820 commit bdddede

File tree

3 files changed

+11
-8
lines changed

3 files changed

+11
-8
lines changed

src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/HostWorkspace/VSCodeAnalyzerLoaderProviderFactory.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,9 @@ namespace Microsoft.CodeAnalysis.LanguageServer.HostWorkspace;
1717
internal sealed class VSCodeAnalyzerLoaderProviderFactory(
1818
ExtensionAssemblyManager extensionAssemblyManager,
1919
ILoggerFactory loggerFactory,
20-
[ImportMany] IEnumerable<IAnalyzerAssemblyResolver> externalResolvers)
21-
: AbstractAnalyzerAssemblyLoaderProvider(externalResolvers)
20+
[ImportMany] IEnumerable<IAnalyzerAssemblyResolver> externalResolvers,
21+
[ImportMany] IEnumerable<IAnalyzerPathResolver> assemblyPathResolvers)
22+
: AbstractAnalyzerAssemblyLoaderProvider(externalResolvers, assemblyPathResolvers)
2223
{
2324
protected override IAnalyzerAssemblyLoaderInternal WrapLoader(IAnalyzerAssemblyLoaderInternal baseLoader)
2425
=> new VSCodeExtensionAssemblyAnalyzerLoader(baseLoader, extensionAssemblyManager, loggerFactory.CreateLogger<VSCodeExtensionAssemblyAnalyzerLoader>());

src/Workspaces/Core/Portable/Workspace/Host/Metadata/IAnalyzerAssemblyLoaderProvider.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,13 @@ internal abstract class AbstractAnalyzerAssemblyLoaderProvider : IAnalyzerAssemb
3838
#if NET
3939
private readonly Lazy<IAnalyzerAssemblyLoaderInternal> _shadowCopyLoader;
4040
private readonly ImmutableArray<IAnalyzerAssemblyResolver> _assemblyResolvers;
41+
private readonly ImmutableArray<IAnalyzerPathResolver> _assemblyPathResolvers;
4142

42-
public AbstractAnalyzerAssemblyLoaderProvider(IEnumerable<IAnalyzerAssemblyResolver> assemblyResolvers)
43+
public AbstractAnalyzerAssemblyLoaderProvider(IEnumerable<IAnalyzerAssemblyResolver> assemblyResolvers, IEnumerable<IAnalyzerPathResolver> assemblyPathResolvers)
4344
{
4445
_assemblyResolvers = [.. assemblyResolvers];
4546
_shadowCopyLoader = new(CreateNewShadowCopyLoader);
47+
_assemblyPathResolvers = [.. assemblyPathResolvers];
4648
}
4749

4850
public IAnalyzerAssemblyLoaderInternal SharedShadowCopyLoader
@@ -51,7 +53,7 @@ public IAnalyzerAssemblyLoaderInternal SharedShadowCopyLoader
5153
public IAnalyzerAssemblyLoaderInternal CreateNewShadowCopyLoader()
5254
=> this.WrapLoader(AnalyzerAssemblyLoader.CreateNonLockingLoader(
5355
Path.Combine(Path.GetTempPath(), nameof(Roslyn), "AnalyzerAssemblyLoader"),
54-
pathResolvers: default,
56+
_assemblyPathResolvers,
5557
_assemblyResolvers));
5658
#else
5759
private readonly Lazy<IAnalyzerAssemblyLoaderInternal> _shadowCopyLoader;
@@ -80,8 +82,8 @@ internal sealed class DefaultAnalyzerAssemblyLoaderProvider : AbstractAnalyzerAs
8082
#if NET
8183
[ImportingConstructor]
8284
[Obsolete(MefConstruction.ImportingConstructorMessage, error: true)]
83-
public DefaultAnalyzerAssemblyLoaderProvider([ImportMany] IEnumerable<IAnalyzerAssemblyResolver> assemblyResolvers)
84-
: base(assemblyResolvers)
85+
public DefaultAnalyzerAssemblyLoaderProvider([ImportMany] IEnumerable<IAnalyzerAssemblyResolver> assemblyResolvers, [ImportMany] IEnumerable<IAnalyzerPathResolver> assemblyPathResolvers)
86+
: base(assemblyResolvers, assemblyPathResolvers)
8587
{
8688
}
8789
#else

src/Workspaces/Remote/ServiceHub/Host/RemoteAnalyzerAssemblyLoaderService.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ internal sealed class RemoteAnalyzerAssemblyLoaderService : AbstractAnalyzerAsse
2020
#if NET
2121
[ImportingConstructor]
2222
[Obsolete(MefConstruction.ImportingConstructorMessage, error: true)]
23-
public RemoteAnalyzerAssemblyLoaderService([ImportMany] IEnumerable<IAnalyzerAssemblyResolver> assemblyResolvers)
24-
: base(assemblyResolvers)
23+
public RemoteAnalyzerAssemblyLoaderService([ImportMany] IEnumerable<IAnalyzerAssemblyResolver> assemblyResolvers, [ImportMany] IEnumerable<IAnalyzerPathResolver> assemblyPathResolvers)
24+
: base(assemblyResolvers, assemblyPathResolvers)
2525
{
2626
}
2727
#else

0 commit comments

Comments
 (0)