Para obtener el directorio bin, string path = Assembly.GetExecutingAssembly().Location;
hace NOT siempre funciona (especialmente cuando el ensamblaje de ejecución se ha colocado en un directorio temporal de ASP.NET).
su lugar, debe utilizar string binPath = System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "bin");
Además, probablemente debería tomar la FileLoadException y BadImageFormatException en consideración.
Aquí es mi función de trabajo:
public static void LoadAllBinDirectoryAssemblies()
{
string binPath = System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "bin"); // note: don't use CurrentEntryAssembly or anything like that.
foreach (string dll in Directory.GetFiles(binPath, "*.dll", SearchOption.AllDirectories))
{
try
{
Assembly loadedAssembly = Assembly.LoadFile(dll);
}
catch (FileLoadException loadEx)
{ } // The Assembly has already been loaded.
catch (BadImageFormatException imgEx)
{ } // If a BadImageFormatException exception is thrown, the file is not an assembly.
} // foreach dll
}
Es posible que también desee para agregar una marca de verificación para asegurarse de no agregar también el ensamblado que está ejecutando realmente :) – Wolfwyrd
La variable 'ruta' contiene el nombre de archivo del directorio, debe acortarse con' Path.GetDirectoryName (ruta) ' – cjk
Es sido actualizado para reflejar el comentario anterior. –