当源文件位于使用ClickOnce with WPF app的子文件夹中时,将文件发布到bin文件夹

当源文件位于使用ClickOnce with WPF app的子文件夹中时,将文件发布到bin文件夹,wpf,clickonce,Wpf,Clickonce,我发现了许多关于StackOverflow和其他地方的文章,指出如果您想使用ClickOnce将文件输出到bin文件夹,您应该设置 BuildAction:Content CopyToOuputDirectory:如果更新,请复制 但是,我的一些二进制文件位于项目根目录中的依赖项子文件夹中,当我发布内容时,它们将被输出到 \dependencies而不是导致我的应用程序无法正常运行 关于如何更改此选项以强制单击一次将特定文件输出到\,而不管源文件位于何处的任何建议。我最终找到了一份我不喜欢但需要

我发现了许多关于StackOverflow和其他地方的文章,指出如果您想使用ClickOnce将文件输出到bin文件夹,您应该设置

BuildAction
Content

CopyToOuputDirectory
如果更新,请复制

但是,我的一些二进制文件位于项目根目录中的
依赖项
子文件夹中,当我发布内容时,它们将被输出到

\dependencies
而不是
导致我的应用程序无法正常运行


关于如何更改此选项以强制
单击一次
将特定文件输出到
\
,而不管
源文件
位于何处的任何建议。

我最终找到了一份我不喜欢但需要继续的工作。为了避免这个问题,我将所需的库作为链接添加到项目的根目录中,并且仍然将
BuildAction
设置为
Content
,将
CopyToOutputDirectory
设置为
Copy if newer

我想我会用一个例子来解释它,因为它可能更有意义

项目路径:C:\Work\MyApp,它包含以下子文件夹:

D:\Work\MyApp\MyApp.csproj D:\Work\MyApp\MyApp.xaml ... D:\Work\MyApp\Bin\Debug D:\Work\MyApp\Bin\Release D:\Work\MyApp\Bin\Release\MyApp.exe D:\Work\MyApp\Dependencies\LibA.dll D:\Work\MyApp\Dependencies\LibB.dll 等等

这些库是第三方工具,实际上包含在它们自己的文件夹中:

D:\Tools\MyThirdPartyLib\Distribution\LibA.dll D:\Tools\MyThirdPartyLib\Distribution\LibB.dll

如果库位于D:\Work\MyApp\Dependencies中,则该库不起作用,因为
ClickOnce
将在以下位置安装该应用:

C:\Users\\AppData\Local\Apps\2.0…\MyApp.exe

并将位于Dependencies子文件夹中的文件安装在:

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

这导致我的应用程序无法运行

为了解决这个问题,我最终将LibA.dll和LibB.dll作为“链接文件”添加到项目的根目录中,并设置它们的
BuildAction
CopyToOutputDirectory
,但不将链接文件指向

D:\Work\MyApp\Dependencies\LibA.dll D:\Work\MyApp\Dependencies\LibB.dll

而是指出:

D:\Tools\MyThirdPartyLib\Distribution\LibA.dll D:\Tools\MyThirdPartyLib\Distribution\LibB.dll

这似乎起到了作用。我唯一不满的是,现在我在visual studio中的项目根目录中列出了10多个文件,我不喜欢这些文件:

MyApp Solution
    - MyApp Project
        - MyApp.csproj
        - MyApp.xaml
        - ...
        - LibA.dll
        - LibB.dll
        - ...
但现在必须这样做


希望它能帮助别人

我最终找到了一份我不喜欢的工作,但我需要继续。为了避免这个问题,我将所需的库作为链接添加到项目的根目录中,并且仍然将
BuildAction
设置为
Content
,将
CopyToOutputDirectory
设置为
Copy if newer

我想我会用一个例子来解释它,因为它可能更有意义

项目路径:C:\Work\MyApp,它包含以下子文件夹:

D:\Work\MyApp\MyApp.csproj D:\Work\MyApp\MyApp.xaml ... D:\Work\MyApp\Bin\Debug D:\Work\MyApp\Bin\Release D:\Work\MyApp\Bin\Release\MyApp.exe D:\Work\MyApp\Dependencies\LibA.dll D:\Work\MyApp\Dependencies\LibB.dll 等等

这些库是第三方工具,实际上包含在它们自己的文件夹中:

D:\Tools\MyThirdPartyLib\Distribution\LibA.dll D:\Tools\MyThirdPartyLib\Distribution\LibB.dll

如果库位于D:\Work\MyApp\Dependencies中,则该库不起作用,因为
ClickOnce
将在以下位置安装该应用:

C:\Users\\AppData\Local\Apps\2.0…\MyApp.exe

并将位于Dependencies子文件夹中的文件安装在:

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

这导致我的应用程序无法运行

为了解决这个问题,我最终将LibA.dll和LibB.dll作为“链接文件”添加到项目的根目录中,并设置它们的
BuildAction
CopyToOutputDirectory
,但不将链接文件指向

D:\Work\MyApp\Dependencies\LibA.dll D:\Work\MyApp\Dependencies\LibB.dll

而是指出:

D:\Tools\MyThirdPartyLib\Distribution\LibA.dll D:\Tools\MyThirdPartyLib\Distribution\LibB.dll

这似乎起到了作用。我唯一不满的是,现在我在visual studio中的项目根目录中列出了10多个文件,我不喜欢这些文件:

MyApp Solution
    - MyApp Project
        - MyApp.csproj
        - MyApp.xaml
        - ...
        - LibA.dll
        - LibB.dll
        - ...
但现在必须这样做


希望它能帮助别人

单击project->Properties->Build->Output->Output Path,结束添加../Debug而不是Debug,或者其他一些相对路径问题不在于生成位置,而在于ClickOnce在安装时如何将包含在子文件夹中的文件输出到同一子文件夹,而我希望将特定文件复制到应用程序的根文件夹中。单击project->Properties->build->Output->Output Path,结束只添加../Debug而不是Debug,或其他一些相对路径问题不在于生成位置,而在于ClickOnce在安装时如何将包含在子文件夹中的文件输出到同一子文件夹,而我希望将特定文件复制到应用程序的根文件夹中,。