Skip to content

Commit 288f1eb

Browse files
committed
?addDefaultProbingLocation
1 parent cf75876 commit 288f1eb

File tree

5 files changed

+29
-10
lines changed

5 files changed

+29
-10
lines changed

examples/BasicProvider.DesignTime/BasicProvider.Provider.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ open System.Reflection
99

1010
[<TypeProvider>]
1111
type BasicErasingProvider (config : TypeProviderConfig) as this =
12-
inherit TypeProviderForNamespaces (config, assemblyReplacementMap=[("BasicProvider.DesignTime", "BasicProvider")])
12+
inherit TypeProviderForNamespaces (config, assemblyReplacementMap=[("BasicProvider.DesignTime", "BasicProvider")], addDefaultProbingLocation=true)
1313

1414
let ns = "BasicProvider.Provided"
1515
let asm = Assembly.GetExecutingAssembly()

examples/ComboProvider/ComboProvider.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ type SomeRuntimeHelper2() =
1717

1818
[<TypeProvider>]
1919
type ComboErasingProvider (config : TypeProviderConfig) as this =
20-
inherit TypeProviderForNamespaces (config)
20+
inherit TypeProviderForNamespaces (config, addDefaultProbingLocation=true)
2121

2222
let ns = "ComboProvider"
2323
let asm = Assembly.GetExecutingAssembly()

examples/StressProvider/StressProvider.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ type Server (name : string) =
2121

2222
[<TypeProvider>]
2323
type StressErasingProvider (config : TypeProviderConfig) as this =
24-
inherit TypeProviderForNamespaces (config)
24+
inherit TypeProviderForNamespaces (config, addDefaultProbingLocation=true)
2525

2626
let ns = "StressProvider"
2727
let asm = Assembly.GetExecutingAssembly()

src/ProvidedTypes.fs

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14548,7 +14548,7 @@ namespace ProviderImplementation.ProvidedTypes
1454814548
open ProviderImplementation.ProvidedTypes.AssemblyReader
1454914549
open ProviderImplementation.ProvidedTypes.UncheckedQuotations
1455014550

14551-
type TypeProviderForNamespaces(config: TypeProviderConfig, namespacesAndTypes: list<(string * list<ProvidedTypeDefinition>)>, assemblyReplacementMap: (string*string) list, sourceAssemblies: Assembly list) as this =
14551+
type TypeProviderForNamespaces(config: TypeProviderConfig, namespacesAndTypes: list<(string * list<ProvidedTypeDefinition>)>, assemblyReplacementMap: (string*string) list, sourceAssemblies: Assembly list, addDefaultProbingLocation: bool) as this =
1455214552

1455314553
let ctxt = ProvidedTypesContext.Create (config, assemblyReplacementMap, sourceAssemblies)
1455414554

@@ -14617,15 +14617,24 @@ namespace ProviderImplementation.ProvidedTypes
1461714617
do AppDomain.CurrentDomain.add_AssemblyResolve handler
1461814618
#endif
1461914619

14620-
new (config, namespaceName, types, ?sourceAssemblies, ?assemblyReplacementMap) =
14620+
// By default add the location of the TPDTC assembly (which is assumed to contain this file)
14621+
// as a probing location.
14622+
do if addDefaultProbingLocation then
14623+
let thisAssembly = Assembly.GetExecutingAssembly()
14624+
let folder = thisAssembly.Location |> Path.GetDirectoryName
14625+
probingFolders.Add folder
14626+
14627+
new (config, namespaceName, types, ?sourceAssemblies, ?assemblyReplacementMap, ?addDefaultProbingLocation) =
1462114628
let sourceAssemblies = defaultArg sourceAssemblies [ Assembly.GetCallingAssembly() ]
1462214629
let assemblyReplacementMap = defaultArg assemblyReplacementMap []
14623-
new TypeProviderForNamespaces(config, [(namespaceName,types)], assemblyReplacementMap=assemblyReplacementMap, sourceAssemblies=sourceAssemblies)
14630+
let addDefaultProbingLocation = defaultArg addDefaultProbingLocation false
14631+
new TypeProviderForNamespaces(config, [(namespaceName,types)], assemblyReplacementMap=assemblyReplacementMap, sourceAssemblies=sourceAssemblies, addDefaultProbingLocation=addDefaultProbingLocation)
1462414632

14625-
new (config, ?sourceAssemblies, ?assemblyReplacementMap) =
14633+
new (config, ?sourceAssemblies, ?assemblyReplacementMap, ?addDefaultProbingLocation) =
1462614634
let sourceAssemblies = defaultArg sourceAssemblies [ Assembly.GetCallingAssembly() ]
1462714635
let assemblyReplacementMap = defaultArg assemblyReplacementMap []
14628-
new TypeProviderForNamespaces(config, [], assemblyReplacementMap=assemblyReplacementMap, sourceAssemblies=sourceAssemblies)
14636+
let addDefaultProbingLocation = defaultArg addDefaultProbingLocation false
14637+
new TypeProviderForNamespaces(config, [], assemblyReplacementMap=assemblyReplacementMap, sourceAssemblies=sourceAssemblies, addDefaultProbingLocation=addDefaultProbingLocation)
1462914638

1463014639
member __.TargetContext = ctxt
1463114640

src/ProvidedTypes.fsi

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -457,7 +457,12 @@ namespace ProviderImplementation.ProvidedTypes
457457
/// <param name="assemblyReplacementMap">
458458
/// Optionally specify a map of assembly names from source model to referenced assemblies.
459459
/// </param>
460-
new: config: TypeProviderConfig * namespaceName:string * types: ProvidedTypeDefinition list * ?sourceAssemblies: Assembly list * ?assemblyReplacementMap: (string * string) list -> TypeProviderForNamespaces
460+
///
461+
/// <param name="addDefaultProbingLocation">
462+
/// Optionally specify that the location of the type provider design-time component should be used to resolve failing assembly resolutions.
463+
/// This flag or an equivalent call to RegisterProbingFolder is generally needed for any type provider design-time components loaded into .NET Core tooling.
464+
/// </param>
465+
new: config: TypeProviderConfig * namespaceName:string * types: ProvidedTypeDefinition list * ?sourceAssemblies: Assembly list * ?assemblyReplacementMap: (string * string) list * ?addDefaultProbingLocation: bool -> TypeProviderForNamespaces
461466

462467
/// <summary>Initializes a type provider.</summary>
463468
/// <param name="sourceAssemblies">
@@ -469,7 +474,12 @@ namespace ProviderImplementation.ProvidedTypes
469474
/// <param name="assemblyReplacementMap">
470475
/// Optionally specify a map of assembly names from source model to referenced assemblies.
471476
/// </param>
472-
new: config: TypeProviderConfig * ?sourceAssemblies: Assembly list * ?assemblyReplacementMap: (string * string) list -> TypeProviderForNamespaces
477+
///
478+
/// <param name="addDefaultProbingLocation">
479+
/// Optionally specify that the location of the type provider design-time component should be used to resolve failing assembly resolutions.
480+
/// This flag or an equivalent call to RegisterProbingFolder is generally needed for any type provider design-time components loaded into .NET Core tooling.
481+
/// </param>
482+
new: config: TypeProviderConfig * ?sourceAssemblies: Assembly list * ?assemblyReplacementMap: (string * string) list * ?addDefaultProbingLocation: bool -> TypeProviderForNamespaces
473483

474484
/// Invoked by the type provider to add a namespace of provided types in the specification of the type provider.
475485
member AddNamespace: namespaceName:string * types: ProvidedTypeDefinition list -> unit

0 commit comments

Comments
 (0)