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