У меня есть этот существующий код:
Private Function GetTypeFromName(ByVal FullTypeName As String, ByVal AssemblyName As String) As Type
Dim DirStr = New FileInfo(System.Reflection.Assembly.GetExecutingAssembly.Location).DirectoryName
Dim Asm = [Assembly].LoadFile(DirStr & "\" & AssemblyName & ".dll")
Return Asm.GetType(FullTypeName)
End Function
Результатом вызова этой подпрограммы является тип, который затем будет создан и использован в приложении.
ПредыдущийИспользование и предположения
Этот код ранее использовался в приложении Winforms для определения типа на основе данных, загруженных из файла конфигурации и переданных в эту функцию.
Обычно запрашиваемая сборка выполняетсяна него уже ссылается приложение, но это не всегда так.
Как вы можете видеть, код в настоящее время ожидает, что имя сборки будет передано без суффикса ".dll" или пути, и далее предполагается, чтонаходиться в той же папке, что и исполняющая сборка.
Эти предположения были верны до сих пор.
Все меняется
Теперь я выполняюэтот код из Web App , и кажется, что папка исполняемой сборки ...
C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\<assemblyName>\ae5faeca\7d2a827f\assembly\dl3\212260f8\0af7415f_9747cc01\<assemblyName>.DLL
... и далее в этой папке нет других dll.
Я ожидал, что эта папка будет папкой bin моего веб-приложения и что все остальные сборки будут доступны оттуда.
Итак ... Как загрузить тип из другой сборки, когдав веб-приложении?