問題:在我的應用程序,這習慣我的DAL的DLL,我在我的應用程序中使用嵌入式的ressource與C#
我有嵌入ressources(SQL腳本)。
現在嵌入式資源駐留在文件夾SQL/SQL_Server /和SQL/MS_Access /中。
我在運行時使用服務器類型(Access,SqlServer)和文件名讀出它們。
這工作正常,因爲嵌入的資源名是: myappname.Folder.Subfolder.FileName,例如, appname.SQL.MS_Access.Filename
但是,如果我現在請從VB這個dll,該ressourcename只是: myappname.FileName
有沒有辦法讓在VB中嵌入的ressource的文件夾名稱.NET?
或編譯時包含它?
或者區分VB.NET主機和C#主機之間的DAL?
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#與嵌入ressources + DAL.DLL在C#= 在C#中嵌入ressources + DAL.DLL工作
MAIN.EXE在VB.NET = 不工作因爲GetManifestResourceNames()只得到了嵌入式ressources的文件名,而不是文件夾名稱爲好。作爲附加的副作用,即使它們位於不同的文件夾(編譯時錯誤),也不能在VB.NET exe中嵌入多個具有相同名稱的文件。 (同樣的事情在C#中工作得非常好)。
? –
@Rowland肖:添加。 –
這就是你的C#代碼;你說的VB代碼不工作?如果你的SQL腳本也被編譯到DAL程序集中,那麼你使用'GetEntryAssembly()'似乎很奇怪? –