Вопрос:
У меня есть встроенные ресурсы (скрипты SQL) в моем приложении, которые используются моей библиотекой DAL, которую я использую в своем приложении.
Теперь встроенные ресурсы находятся в папках SQL / SQL_Server / и SQL / MS_Access /.
Я прочитал их во время выполнения, используя тип сервера (Access, SqlServer) и имя файла.
Это прекрасно работает, потому что встроенное имя ресурса:
myappname.Folder.Subfolder.FileName, например, appname.SQL.MS_Access.Filename
Однако, если я сейчас вызываю эту dll из VB, только имя ресурса:
myappname.FileName
Есть ли способ получить имя папки встроенного ресурса в VB.NET?
Или включить его при компиляции?
Или различать в DAL между хостом VB.NET и хостом C #?
System.Reflection.Assembly asmDataSourceAssembly = System.Reflection.Assembly.GetEntryAssembly();
string strRessourceRoot = null;
foreach (string strThisRessourceName in asmDataSourceAssembly.GetManifestResourceNames())
Затем сравните с strThisRessourceName.ToLower (). EndsWith ("sql.foldername.filename")
Точнее,
Main.exe в C # со встроенными ресурсами + DAL.DLL в C # = работает
Main.exe в VB.NET со встроенными ресурсами + DAL.DLL в C # = не работает , потому что GetManifestResourceNames () получает только имя встроенного ресурса, а не имена папок. В качестве дополнительного побочного эффекта нельзя встраивать несколько файлов с одинаковыми именами в исполняемый файл VB.NET, даже если они находятся в другой папке (ошибка времени компиляции).
(то же самое работает абсолютно нормально в C #).