我在StackOverflow和其他地方发现了很多文章,说明如果你想使用ClickOnce将文件输出到bin文件夹,你应该设置
BuildAction
:Content
CopyToOuputDirectory
:Copy if newer
但是我的一些二进制文件位于项目根目录中的Dependencies
子文件夹中,当我发布内容时,它们会被输出到
<wpf app folder>\dependencies
而不是<wpf app folder>
导致我的应用无法正常运行。
有关如何更改此内容以强制ClickOnce
将特定文件输出到<wpf app folder>\
的任何建议,无论Source files
位于何处。
答案 0 :(得分:0)
我最终找到了一个我不喜欢的解决方法,但我需要继续前进。为了解决这个问题,我将所需的库作为链接添加到项目的根目录中,并将BuildAction
设置为Content
,将CopyToOutputDirectory
设置为Copy if newer
。
我以为我用一个例子解释它,因为它可能会更有意义。
项目路径:C:\ Work \ MyApp,它包含以下子文件夹:
d:\工作\ MyApp的\ MyApp.csproj d:\工作\ MyApp的\ MyApp.xaml ... d:\工作\ MyApp的\斌\调试 d:\工作\ MyApp的\ BIN \发布 d:\工作\ MyApp的\ BIN \发布\ MyApp.exe的 d:\工作\ MyApp的\ Depedencies \ LibA.dll d:\工作\ MyApp的\ Depedencies \ LibB.dll 等...
这些库是第三方工具,实际上包含在它们自己的文件夹中:
d:\工具\ MyThirdPartyLib \ Distributation \ LibA.dll d:\工具\ MyThirdPartyLib \ Distributation \ LibB.dll
通过让D:\ Work \ MyApp \ Dependencies中的库无效,ClickOnce
会将应用程序安装在:
C:\ Users \\ AppData \ Local \ Apps \ 2.0 ... \ MyApp.exe
并安装了位于Dependencies子文件夹中的文件:
C:\用户\\应用程序数据\本地\应用\ 2.0 ... \依赖性\ LibA.dll C:\用户\\应用程序数据\本地\应用\ 2.0 ... \依赖性\ LibB.dll
这导致我的应用无法正常工作。
为了解决这个问题,我最终将LibA.dll和LibB.dll添加到我的项目的根目录中作为&#34;链接文件&#34;并设置他们的BuildAction
和CopyToOutputDirectory
,但不要将链接的文件指向
d:\工作\ MyApp的\ Depedencies \ LibA.dll d:\工作\ MyApp的\ Depedencies \ LibB.dll
而是指着他们:
d:\工具\ MyThirdPartyLib \ Distributation \ LibA.dll d:\工具\ MyThirdPartyLib \ Distributation \ LibB.dll
这似乎已经成功了。我唯一关注的是,现在我在视觉工作室的项目根目录中列出了10个奇怪的文件,我不喜欢这样:
MyApp Solution
- MyApp Project
- MyApp.csproj
- MyApp.xaml
- ...
- LibA.dll
- LibB.dll
- ...
但现在必须这样做。
希望它能帮助别人!