日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

未能加载文件或程序集“SqlServerDal”或它的某一个依赖项。系统找不到指定的文件。...

發(fā)布時(shí)間:2025/4/16 windows 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 未能加载文件或程序集“SqlServerDal”或它的某一个依赖项。系统找不到指定的文件。... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

今天遇到一個(gè)挺怪的問題,采用了工廠模式后,出去找不到程序集的問題:
未能加載文件或程序集“Tianyige.SqlServerDAL”或它的某一個(gè)依賴項(xiàng)。系統(tǒng)找不到指定的文件。

解決思路:
以前遇到過這類問題,問題在于對(duì)程序集和命名空間名稱混淆了,比如:命名空間叫SQLServerDAL,而程序集可能叫“Tianyige.SQLServerDAL”,或者叫成“SqlServerDAL”,都會(huì)發(fā)生找不到對(duì)象的錯(cuò)誤。解決方法是對(duì)應(yīng)好程序集的名稱:
Assembly.Load("Tianyige.SqlServerDAL").CreateInstance("Tianyige.SqlServerDAL.Category");通過bin文件夾下找到相應(yīng)的DLL,確定其名稱。
而這次名稱對(duì)應(yīng)好了,看得我眼都花了,一點(diǎn)錯(cuò)沒有,還是有問題。最后將錯(cuò)誤提示中的文件的dll文件[Tianyige.SqlServerDAL]復(fù)制到網(wǎng)站APP下的bin目錄中,問題得以解決。

模仿pet shop4做了個(gè)工廠模式的簡單例子,初步了解其中流程,做個(gè)總結(jié)。
一、創(chuàng)建項(xiàng)目IDAL,包含若干接口如 IOrder,是有關(guān)Order的數(shù)據(jù)庫操作接口。
二、創(chuàng)建項(xiàng)目SQLServerDAL,其中包含一個(gè)Order類,繼承IOrder接口,具體實(shí)現(xiàn)該接口中聲明的若干函數(shù)。
三、創(chuàng)建項(xiàng)目DALFactory,就是一個(gè)數(shù)據(jù)庫接口工廠,負(fù)責(zé)根據(jù)選擇的數(shù)據(jù)庫類型(在web.config中獲取如<add key="WebDAL" value="SQLServerDAL"/>)來創(chuàng)建相應(yīng)數(shù)據(jù)庫操作接口實(shí)例。如下述代碼:
??????? public static IOrder CreateOrder()
??????? {
??????????? string path = "SQLServerDAL";
??????????? string className = path + ".Index";
??????????? return (IOrder)Assembly.Load(path).CreateInstance(className);
??????? }
四、創(chuàng)建項(xiàng)目BLL,負(fù)責(zé)業(yè)務(wù)邏輯實(shí)現(xiàn)。其中需要調(diào)用數(shù)據(jù)庫操作函數(shù)的時(shí)候聲明
private static IOrder iOrder = DataAccess.CreateOrder();
然后調(diào)用IOrder中聲明(SQLServerDAL.Order類中定義)的函數(shù)。
上面就是一個(gè)基本的過程,其中需要注意幾點(diǎn):
1、數(shù)據(jù)接口工廠DALFactory中CreateOrder函數(shù)聲明成static,其他有關(guān)的地方也要用static,因?yàn)榇颂幨抢梅瓷鋭?dòng)態(tài)加載程序集,所以加載一次就夠了,網(wǎng)上偶然看了資料,據(jù)說即使多次執(zhí)行加載語句也只會(huì)加載一次。
2、會(huì)出現(xiàn)“未能加載文件或程序集“SQLServerDAL”或它的某一個(gè)依賴項(xiàng)。系統(tǒng)找不到指定的文件”的情況。其實(shí)原因賊簡單,就是無法找到該程序集,主要是沒理解它運(yùn)行的機(jī)制,其實(shí)如果
Assembly.Load(path).CreateInstance(className);
寫成
Assembly.Load(“SQLServerDAL.dll").CreateInstance(className);
就清楚了,這找的不是一個(gè)名稱空間,而是在bin里的一個(gè)dll文件。而項(xiàng)目SQLServerDAL默認(rèn)生成的dll文件的名字是SQLServerDAL.dll,于是就會(huì)出現(xiàn)以上的錯(cuò)誤。那么只要在該項(xiàng)目屬性里把程序集名稱改成“SQLServerDAL“就行了。
編程的路太長了,很多的基礎(chǔ)要打,太多的技術(shù)要學(xué),快失去信心了!

轉(zhuǎn)載于:https://www.cnblogs.com/strivers/archive/2010/11/27/1889633.html

總結(jié)

以上是生活随笔為你收集整理的未能加载文件或程序集“SqlServerDal”或它的某一个依赖项。系统找不到指定的文件。...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。