none
DLL檔加入程式參考後是否還需一併保留 RRS feed

  • 問題

  • 各位先進好,

    小弟想請教一個C#的問題,假設我A專案程式中已參考了ftp.dll及encode.dll,接著我把這支程式編譯成另外一支total.dll的檔案讓另一個B專案的C#程式參考,如此一來我是否只需要將total.dll這個檔案複製到B專案下,讓B專案加入參考即可? 還是我必需連同ftp.dll和encode.dll一併複製到B專案中才能正常執行? 感謝!
    2011年9月1日 上午 04:02

解答

  • 我又做一個測試, 所以狀況是這樣.

    當你加入 Total.dll為參考時, 如果在這個total.dll所在目錄中有另外兩個 dll, VS會一併處理, 如果沒有, 就得手動複製了.


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    • 已標示為解答 阿紫 2011年9月1日 上午 07:01
    2011年9月1日 上午 06:27
    版主

所有回覆

  • 需要一起複製
    • 已提議為解答 阿尼 2011年9月1日 上午 04:42
    2011年9月1日 上午 04:05
  • 如果ftp.dll&encode.dll沒放到GAC的話,是需要一起Copy的!

    如果該dll在GAC的話,就不用哦!

     


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/
    • 已提議為解答 阿尼 2011年9月1日 上午 04:42
    2011年9月1日 上午 04:27
  • 感謝樓上二位的回覆,再請問一下假設將ftp.dll、encode.dll、total.dll三個檔案複製到B專案中的話通常是建議放在哪個路徑下呢? 是否與sln檔放在同一個根目錄下比較好? 
    2011年9月1日 上午 05:15
  • 你如果加入參考, 通常在編譯的時候, 它們就會跟著被複製到你的exe檔的輸出目錄中//

    ex: ...\bin\debug  或 ...\bin\release


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2011年9月1日 上午 05:17
    版主
  • 感謝版主的回覆,想再確認一下

    所以我從B專案中只需把3個dll檔先複製到sln方案目錄之下,再開啟B專案只將total.dll加入參考(不必加入原本二個dll檔),假設是從release的方式去編譯的話就會在/bin/realse下產生totall.dll、ftp.dll、encode.dll這三個檔案了,這樣應該沒錯吧。

    多謝各位的協助

    2011年9月1日 上午 05:30
  • (非GAC組件狀態)理論上, 當你加入了 total.dll 為參考後, 這個B專案在編譯時應該會一併把 total.dll, ftp.dll, encode.dll 都複製到輸出目錄, 應該不須要另外的程序才對.

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2011年9月1日 上午 05:39
    版主
  • 版主您好,

    不好意思我有點弄混了,由於第一二篇回覆的意思是要吧3個dll檔全都先復製到B專案之下再加入total.dll參考,但您的意思是指說我只需從B專中加入total.dll的參考(不用另外將ftp.dll & encode.dll複製到B專案下),之後編輯時B專案/bin/release之下便會自動產生這3個dll的檔案,這樣的解譯不知道有沒有問題


    2011年9月1日 上午 05:55
  • 這麼說吧..

    你的專案A 參考了, ftp.dll 和 encode.dll , 所以在你的專案A的輸出目錄應該會出現三個Dll, 也就是 ftp.dll, encode.dll, 和 total.dll

    然後你的專案B加入了total.dll 參考 (來源目錄應該就是專案A的輸出目錄), 此時你編譯專案B, 在你的專案B輸出目錄就會出現 b.exe, total.dll, ftp.dll, encode.dll

    你可以簡單的用個專案驗證一下, 就知道是不是這樣了.


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2011年9月1日 上午 06:08
    版主
  • 使用 Visual Studio IDE 環境編譯時,如果是使用 參考Project 的方式,VS 會在 B 專案下自動複製所引用到的 dll.

    如果是使用檔案方式來參考 dll 的話,就需要自己手動複製其他的檔案了。

    總之,測試一下 VS 幫我們作了什麼事情。

    2011年9月1日 上午 06:10
  • 我剛剛測試是用檔案參考, 亦即我在上文中提到的方式, 它有一併把所有的DLL參考過來, PS: 我用的是VS2010

    另一個可能的情況我沒測, 因為我全部在同一個方案, 我來測測看不同方案好了.


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2011年9月1日 上午 06:20
    版主
  • 我又做一個測試, 所以狀況是這樣.

    當你加入 Total.dll為參考時, 如果在這個total.dll所在目錄中有另外兩個 dll, VS會一併處理, 如果沒有, 就得手動複製了.


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    • 已標示為解答 阿紫 2011年9月1日 上午 07:01
    2011年9月1日 上午 06:27
    版主
  • 各位好,

    我從B專案加入total.dll參考的方式為瀏覽選擇A專案的目錄去選取total.dll檔,但從B專案編輯時會出現找不到ftp.dll & encode.dll裡面method的問題,到B專案/bin/release下也只看的到total.dll

    2011年9月1日 上午 06:32
  • 你的A專案編譯時不會出現ftp.dll 和 encode.dll在輸出目錄 ? 你有改過參考的屬性嗎 ? 到這畫面確認一下


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2011年9月1日 上午 06:36
    版主
  • 各位好,

    我從B專案加入total.dll參考的方式為瀏覽選擇A專案的目錄去選取total.dll檔,但從B專案編輯時會出現找不到ftp.dll & encode.dll裡面method的問題,到B專案/bin/release下也只看的到total.dll


    我找到原因了,正如版主所提到的,從B專案在選取檔案參考total.dll時,ftp.dll & encode.dll必須確定與total.dll在同一個目錄之下,如此一下在B專案編譯時便會自動在/bin/release下產生這3個dll檔案,感謝各位了
    2011年9月1日 上午 06:41