2010-07-20 60 views
3

我有一個在Visual Studio Express 2010中創建的C#項目。此程序使用依賴/調用C++ dll的第三方C#類。我只是將filename.dll複製到項目文件夾的bin/debug和bin/release文件夾中,並且應用程序運行良好。C#項目2010,在其他計算機上的獨立可執行文件

我假設我可以將該項目的發行版可執行文件複製到另一臺計算機並運行它,只要filename.dll與可執行文件在同一目錄中即可。但是,在安裝了正確框架的另一臺計算機上嘗試此操作時,該程序會因system.dllnotfoundexception而崩潰。

奇怪的是,我的朋友報告說,該程序在安裝了Visual Studio的計算機上運行,​​但沒有沒有,儘管我沒有真正看到這個。

這可能是什麼原因造成的?我怎樣才能讓發行版可執行文件在另一臺機器上運行?

感謝您的回覆! -Chase

+1

檢查是否有任何有用的錯誤消息 – 2010-07-20 07:04:06

回答

1

如果你的C++ DLL是由Visual Studio它可能依賴於CRT構建,兩件事情要檢查這裏:

  • 如果它取決於釋放或調試CRT。除了調試目的,Microsoft不會授予您分發調試版本的權利,因此可能會造成問題。
  • 女巫版這取決於
    • 從VS2010的最後一個版本可以在同一目錄中的可執行文件(msvcp100.dll用於C++ msvcr100被複制。dll對於C)
    • 以前的版本需要作爲並行程序集安裝,因此必須安裝它們才能運行它們的安裝程序(某些版本,如VS2005,其中一些版本包含在框架安裝中,但其他版本如VS2005 SP1需要安裝單獨)

在任何情況下調試此類問題的最好的辦法就是有問題的計算機上安裝Dependency Walker(免費),讓它告訴你缺什麼DLL。

4

確保您安裝了Visual C++運行時(VS2005,VS2008,VS2010)。

0

最簡單的(儘管可能不是最好的)解決方案是將解決方案添加到您的解決方案。安裝項目將幫助您找到任何依賴關係,並在安裝過程中使其可用。

你需要採取的步驟如下:

  1. 安裝項目添加到您的解決方案(在添加項目中找到... /安裝模板)
  2. 右鍵單擊該項目,選擇「添加/項目輸出...「並添加程序的啓動項目。
  3. 右鍵單擊該項目並選擇「查看/自定義操作」。
  4. 右鍵單擊根節點,選擇「添加自定義操作...」,然後從「應用程序文件夾」中添加「來自[您的項目名稱]的主輸出」。

現在編譯時,會創建一個.msi安裝程序。在另一臺計算機上運行此安裝程序,並且您的程序將被安裝並可運行。要卸載,請再次運行安裝程序,或從「控制面板」下的「添加/刪除程序」中刪除該程序。

相關問題