命名空间+反射:未能加载文件或程序集“database.SQLServerDAL”或它的某一个依赖项。系统找不到指定的文件..
2011-05-26 09:45 沐海 阅读(3452) 评论(0) 编辑 收藏 举报public static object CreateObject( string AssemblyPath, string ClassNamespace) { object objType = DataCache.GetCache(ClassNamespace); //从缓存读取 if (objType == null ) { try { objType = Assembly.Load(AssemblyPath).CreateInstance(ClassNamespace); //反射创建 DataCache.SetCache(ClassNamespace, objType); // 写入缓存 } catch {} } return objType; } |
在项目中。AssemblyPath 加载的位置 是 database.SQLServerDAL。而如果只是简单的创建了类库之后,它默认的命名空间不带有databse. 所以还要再设置项目属性的命名空间为databse.SQLServerDAL.而且。所有在database中的项目。例如 BLL. IDAL.SQLServerDAL.Model 等也必须加上database.
为什么要写database吗那?
首先:我们在动软生成三层的时候,定义的命名空间是database;那么命名空间和项目中文件夹的关系那?我来描述一下。database是我们在动软中添加的。我们把这些项目放在database(解决方案里的我们建立的一个文件夹)下。而utility文件夹下的DBUtility类的命名空间就是DBUtility并不是 utility.DBUtility.正在这里可以看出。命名空间和文件夹的名称并不是一定有对应关系。但: 例如 Web项目下的Default.aspx.cs文件。它的命名空间就是Web. 这里就可以看到。项目生成时,怎么分辨所有的类的引用那?根据其命名空间。所有就把文件夹路径引入到命名空间。因为文件夹路径首先是唯一的,其实可以保证我们可以很快的找到它(以文件夹的形式)。那么。在这里。动软既然已经添加其命名空间。只有两种方法:1.CS文件中。把 namespace 修改。去掉 database<img src= "https://pic002.cnblogs.com/images/2011/146292/2011052609440062.jpg" >2.针对项目---属性----命名空间。添加上 database(如果已经引用很多的话。建议使用这种方式)------------------------------------------------------------------------------------------------------------------------------命名空间和程序集<div class = "content" ><pre class = "reply-text mb10" >命名空间: 就像你硬盘里的文件夹, 不同的文件夹下存放不同的文件(类),这样就可以避免文件全部堆在一个地方引起混乱(同理, 这样你就可以为不同的模块建立命名空间,这样就可以使类和容易管理), 并且可以避免多个同名文件无法放在一个文件夹下。 程序集: .NET编写的DLL和EXE就是程序集。 程序集包括: 1、程序集清单,包含程序集元数据。 2、类型元数据。 3、实现这些类型的 Microsoft 中间语言 (MSIL) 代码。 4、资源集。 所以这两个概念其实是不同的东西,没有什么联系。 只是一般建立类库项目(DLL)的时候会用默认的命名空间来命名程序集文件,这样很容易使人把这两个东西联系起来。</pre> </div> 命名空间: 就像你硬盘里的文件夹, 不同的文件夹下存放不同的文件(类),这样就可以避免文件全部堆在一个地方引起混乱(同理, 这样你就可以为不同的模块建立命名空间,这样就可以使类和容易管理), 并且可以避免多个同名文件无法放在一个文件夹下。 程序集: .NET编写的DLL和EXE就是程序集。 程序集包括: 1、程序集清单,包含程序集元数据。 2、类型元数据。 3、实现这些类型的 Microsoft 中间语言 (MSIL) 代码。 4、资源集。 所以这两个概念其实是不同的东西,没有什么联系。 只是一般建立类库项目(DLL)的时候会用默认的命名空间来命名程序集文件,这样很容易使人把这两个东西联系起来。---------------------------------------------------------------------------------------------------------------------------------------- |
<appSettings> <!--<add key= "DAL" value= "database.SQLServerDAL" /> 如果值为database的命名空间,则必须在 SQLServerDAL中命名空间加上 database--> <add key= "DAL" value= "database.SQLServerDAL" /> <add key= "connStr" value= "server=server;database=WaterMananger;uid=sa;pwd=123123" /> </appSettings> |
本人声明:
个人主页:沐海(http://www.cnblogs.com/mahaisong)
以上文章都是经过本人设计实践和阅读其他文档得出。如果需要探讨或指教可以留言或加我QQ!欢迎交流!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器