在公司實習過程當中,常常遇到三個問題:html
通常公司都會配置開發/測試/Lab/線上四個環境,以後無論時開發什麼項目,都與環境分不開邊。這個和dll版本控制暫且記下,之後碰到想寫的再寫。工具
引用依賴是今天踩到的一個坑:我新建了一個項目A,引用了類庫B,然而類庫B中引用了類庫C,那麼你須要在項目A中引用項目C。具體能夠看文末附的轉載的一篇文章。測試
文章連接:vs dll引用機制spa
vs2012編譯的時候,遇到一個問題就是項目A中運行時缺失dll的問題,項目A引用類庫B,類庫B引用了x,y等dll,編譯A項目的時候,出現x沒拷貝到bin 目錄。
經過跟蹤編譯輸出發現,x沒拷貝的緣由是y這個dll也引用了x,並且y引用的x版本高於當前B引用的。這樣在編譯的時候,就會出現提示x版本1.0.0.0與x版本0.9.3.0出現衝突,選擇x版本1.0.0.0 由於此版本更高(圖1),而後開始遍歷相關路徑(圖2)去尋找該1.0.0.0版本的dll,這個編譯機制應該是vs出於引用高版本dll以向下兼容的目的。
具體以下圖所示
clipboard
圖1
image
圖2
查看編譯輸出的方法 打開vs的工具--選項 選擇診斷或者詳細,能捕捉到編譯時更多的操做動做,具體以下圖3
image
圖3
可是類庫B也引用了x和y,b編譯時卻能夠在bin文件獲得x的輸出,若是是依照上面的編譯機制,x也是不能編譯輸出的,這裏vs採用了以下機制,即類庫B引用的x版本0.9.0.0雖然低於y引用的x 1.0.0.0,但在這裏x是直接引用在類庫B裏,那這樣x 0.9.0.0即爲主版本,那這時會將該0.9.0.0版本的x編譯到類庫B的bin文件目錄下。
image
在項目obj/bin文件目錄下 會有」項目名.csproj.FileListAbsolute.txt」的文件,裏面是編譯時輸出到bin文件目錄下的dll列表。