Assembly.Load не должен требовать путь к файлу, скорее он требует AssemblyName. Если вы знаете, что ваша сборка находится в стандартном пути поиска (то есть в каталоге bin), вам не нужно знать путь к диску сборки ... вам нужно знать только имя сборки. В случае вашей сборки, если вам не нужна конкретная версия, культура и т. Д., Имя сборки должно быть просто "Foo":
Assembly fooAssembly = Assembly.Load("Foo");
Если вам нужно загрузить определенную версию, вы должны сделать следующее:
Assembly fooAssembly = Assembly.Load("Foo, Version=1.1.2, Culture=neutral");
Как правило, вы хотите использовать Assembly.Load, а не Assembly.LoadFrom или Assembly.LoadFile. LoadFrom и LoadFile работают вне стандартного процесса объединения и могут привести к тому, что сборки загружаются более одного раза, загружаются из небезопасных мест и т. Д. Assembly.Load выполняет «стандартную» загрузку, выполняя поиск в стандартных местах сборки, таких как bin, GAC и т. д., и применяет все стандартные проверки безопасности.