2017-09-12 69 views
0

我在StackOverflow和其他地方發現了很多文章,指出如果您想使用ClickOnce將文件輸出到bin文件夾,應該設置在當源文件位於使用ClickOnce和WPF應用程序的子文件夾中時,將文件發佈到bin文件夾

BuildActionContent

​​:Copy if newer

,但我的一些二進制文件位於位於我的項目的根和Dependencies子文件夾,當我發佈的內容,他們正在輸出特洛伊

<wpf app folder>\dependencies而不是在<wpf app folder>導致我的應用程序無法正常工作。

有關如何將此更改爲強制ClickOnce將特定文件輸出到<wpf app folder>\的任何建議,而不考慮Source files的位置。

+0

點擊project - > Properies - > Build - > Output-> Output Path,結束時只添加../Debug而不是Debug或其他相對路徑 – sTrenat

+0

這個問題不在構建位置,而在於ClickOnce的輸出方式當我希望將特定文件複製到應用程序的根文件夾中時,將安裝在子文件夾中的文件安裝到同一子文件夾中。 – Thierry

回答

0

我終於找到了我不喜歡的解決方法,但我需要繼續前進。爲了避免這個問題,我將所需的庫作爲鏈接添加到我的項目的根目錄,並仍將BuildAction設置爲ContentCopyToOutputDirectoryCopy if newer

我想我會用一個例子來解釋它,因爲它可能會更有意義。

項目路徑:C:\工作\ MyApp的,它包含以下子文件夾:

d:\工作\ MyApp的\ MyApp.csproj d:\工作\ MyApp的\ MyApp.xaml .. D:\ Work \ MyApp \ Bin \ Debug D:\ Work \ MyApp \ Bin \ Release D:\ Work \ MyApp \ Bin \ Release \ MyApp.exe D:\ Work \ MyApp \ Depedencies \ LibA。 dll D:\ Work \ MyApp \ Depedencies \ LibB.dll etc ...

這些庫是第三方工具,實際上包含在它們自己的文件夾中:

d:\工具\ MyThirdPartyLib \ Distributation \ LibA.dll d:\工具\ MyThirdPartyLib \ Distributation \ LibB.dll

通過具有d庫:\工作\ MyApp的\依賴也無法正常工作ClickOnce將安裝在應用程序:

C:\用戶\\應用程序數據\本地\ APPS \ 2.0 \ MyApp.exe的

和它安裝定位於依賴子文件夾中的文件:

C:\ Users \\ AppData \ Local \ Apps \ 2.0 ... \ Dependencies \ LibA.dll C:\ Users \\ AppData \ Local \ Apps \ 2.0 ... \ Dependencies \ LibB.dll

這導致我的應用程序無法工作。

要解決它,我最終加入LibA.dll和LibB.dll到我的項目的根目錄爲「鏈接文件」,並設置其BuildActionCopyToOutputDirectory而不是由鏈接文件指向

d :\工作\ MyApp的\ Depedencies \力霸。DLL d:\工作\ MyApp的\ Depedencies \ LibB.dll

而是他們指出:

d:\工具\ MyThirdPartyLib \ Distributation \ LibA.dll d:\工具\ MyThirdPartyLib \ Distributation \ LibB .dll

而這似乎已經做到了。我大約只牛的是,現在我已經得到了我在Visual Studio項目的根,我不喜歡列出的10個怪文件:

MyApp Solution 
    - MyApp Project 
     - MyApp.csproj 
     - MyApp.xaml 
     - ... 
     - LibA.dll 
     - LibB.dll 
     - ... 

但它將對現在要做的。

希望它可以幫助別人!

相關問題