private const string LibraryNameSuffix = ".so";
#endif
- internal static IEnumerable<LibraryNameVariation> DetermineLibraryNameVariations(string libName, bool isRelativePath)
+ internal static IEnumerable<LibraryNameVariation> DetermineLibraryNameVariations(string libName, bool isRelativePath, bool forSystemApi = false)
{
// This is a copy of the logic in DetermineLibNameVariations in dllimport.cpp in CoreCLR
{
private const string LibraryNameSuffix = ".dll";
- internal static IEnumerable<LibraryNameVariation> DetermineLibraryNameVariations(string libName, bool isRelativePath)
+ internal static IEnumerable<LibraryNameVariation> DetermineLibraryNameVariations(string libName, bool isRelativePath, bool forSystemApi = false)
{
// This is a copy of the logic in DetermineLibNameVariations in dllimport.cpp in CoreCLR
yield return new LibraryNameVariation(string.Empty, string.Empty);
+ // Follow LoadLibrary rules if forSystemApi is true
if (isRelativePath &&
+ (!forSystemApi || libName.Contains('.') && !libName.EndsWith('.')) &&
!libName.EndsWith(".dll", StringComparison.OrdinalIgnoreCase) &&
!libName.EndsWith(".exe", StringComparison.OrdinalIgnoreCase))
{