gpt4 book ai didi

c# - VB.NET 与 C# 中的嵌入式资源

转载 作者:行者123 更新时间:2023-11-30 22:36:34 32 4
gpt4 key购买 nike

问题:

我在我的应用程序中嵌入了资源(SQL 脚本),这些资源由我在我的应用程序中使用的 DAL dll 使用。

现在嵌入式资源驻留在文件夹 SQL/SQL_Server/和 SQL/MS_Access/中。

我在运行时使用服务器类型(Access、SqlServer)和文件名读取它们。

这很好用,因为嵌入的资源名称是:myappname.Folder.Subfolder.FileName,例如应用程序名.SQL.MS_Access.文件名

但是,如果我现在从 VB 调用这个 dll,则资源名称仅为:我的应用程序名称.文件名

有没有办法在 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")比较

更准确地说:
带有嵌入式资源的 C# 中的 Main.exe + C# 中的 DAL.DLL = works
VB.NET 中带有嵌入式资源的 Main.exe + C# 中的 DAL.DLL = 不工作 因为 GetManifestResourceNames() 仅获取嵌入式资源的文件名,而不是文件夹名称。作为一个额外的副作用,不能在 VB.NET exe 中嵌入多个具有相同名称的文件,即使它们位于不同的文件夹中(编译时错误)。(同样的事情在 C# 中工作得很好)。

最佳答案

VB 编译器不会将子文件夹隐式映射为子命名空间,因此,要实现子命名空间低于程序集默认命名空间的效果(通过项目属性配置,默认为项目名称),您需要在文件名中包含子命名空间

关于c# - VB.NET 与 C# 中的嵌入式资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6925510/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com