none
專案管理 (引用不同版本 dll 錯誤) RRS feed

  • 問題

  • 大家好!

    我的方案裏, 包含了幾個專案! 

    大致結構如圖!

    剛好.....不同的DLL引用到了相同的一個DLL! 如果完全相同也就算了! 但其中還是有點差異

    結果造成了, 我有一部份程式會出錯! 

    我在建置時, 它們會把所有DLL都copy到執行目錄之下! 造成只有一版本存在!

    這個問題要如何解決?

    我可以在建置時, 不同的專案在不同的目錄之下嗎?

    註: 專案2,3只是類別庫而已!

    謝謝!




    • 已編輯 GaryChiang 2019年10月20日 下午 11:15
    2019年10月20日 上午 09:29

解答

  • 目前我的解決方法是!

    1. 在 app.config 設定 privatepath

    2. 在主要專案引用其它dll專案時, "不copy檔案"

    3.在主要專案建立目錄, 將個別的專案內容放入. (同app.config裏的目錄名稱)

    但...這還是有缺點

    A. debug 模式, 我加入的是其它專案的 debug 檔! 當我要用 release 模式時, 我要把它們(debug)全刪除, 再加入 release 版本的!

    B.若dll專案有新增檔案時, 我要手動再去增加, 若忘了! 就會出錯!


    • 已標示為解答 GaryChiang 2019年10月23日 下午 02:57
    2019年10月21日 上午 02:06

所有回覆

  • 目前使用的方法!

    1.在專案1的app.config加入多個dll參考目錄

    2.將所有專案的編譯完成!

    3. "手動"將專案2及專案3所有檔案,copy到個別的dll目錄!

    不知道有什麼比較好的方法?


    2019年10月20日 下午 12:10
  • 一般都能前向相容

    你有試過都是最新版的是否正常嗎?


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2019年10月20日 下午 12:25
  • 這二個版本都被改寫過了! 二個互不相容, 其引用的dll, 並無法改寫! 所以, 有點困擾!
    2019年10月20日 下午 12:35
  • 左邊的畫面參考的是SharpZipLib for .NET Framework 2.0

    右邊的畫面參考的是SharpZipLib for .NET Compact Framework 2.0

    DLL不同, 大小也不同

    2019年10月21日 上午 01:06
  • 但, 它的檔名是一樣的!

    我在建置時, 它會互相覆蓋, 造成其中一個專案的DLL無法執行!

    2019年10月21日 上午 02:01
  • 目前我的解決方法是!

    1. 在 app.config 設定 privatepath

    2. 在主要專案引用其它dll專案時, "不copy檔案"

    3.在主要專案建立目錄, 將個別的專案內容放入. (同app.config裏的目錄名稱)

    但...這還是有缺點

    A. debug 模式, 我加入的是其它專案的 debug 檔! 當我要用 release 模式時, 我要把它們(debug)全刪除, 再加入 release 版本的!

    B.若dll專案有新增檔案時, 我要手動再去增加, 若忘了! 就會出錯!


    • 已標示為解答 GaryChiang 2019年10月23日 下午 02:57
    2019年10月21日 上午 02:06
  • 如果檔案名稱一樣, 可以考慮將這兩個檔案加入的GAC, 檔案名稱一樣也可以加入, 再給專案參考
    2019年10月21日 上午 05:01