当我发布ClickOnce应用程序时,缺少其中一个项目中包含的引用之一。
如果我转到我的项目的属性 - >应用程序文件,这个缺失的引用甚至没有列在这里。
我的bin / Release文件夹有一个.exe.manifest文件,我注意到它也从这里丢失了。
但是,当我构建项目时,DLL实际上已复制到我的bin / Release文件夹中。
如何确保它还部署了这种必需的依赖项?
答案 0 :(得分:4)
我终于找到了解决这个问题的方法,我希望它能解决你的问题。 就我而言,我正在编辑一个有多个项目的旧应用程序,但主项目及其后端项目在这里是最重要的。 后端添加在主项目的“参考”部分中。 在后端,导入了第三方dll,但是这个dll需要另外两个dll。 所以这3个dll被添加到后端项目的References部分。
此时,其他2个dll中的一个未显示在ClickOnce的“应用程序文件”部分中。 我想出了几种方法来修复它,但最优雅的方法是在主项目的Reference部分添加这个dll。
答案 1 :(得分:0)
如How to: Specify Which Files Are Published by ClickOnce中所述,将引用的Copy Local属性值更改为True。
添加引用时,如下指定对程序集(.dll文件)的引用:如果Copy Local为False,则默认情况下将其标记为GAC中必须存在的先决条件程序集(先决条件(自动))应用程序已安装。如果Copy Local为True,则程序集默认标记为应用程序程序集(Include(Auto)),并在安装时复制到应用程序文件夹中。仅当“隔离”属性设置为“True”时,COM引用才会显示在“应用程序文件”对话框中(作为.ocx文件)。默认情况下,它将被包含在内。
答案 2 :(得分:0)
我知道这是一个老问题,但是对于任何有类似问题的人来说。我认为这是解决问题的一种更清洁的方法。
我遇到了类似的问题,我为使ClickOnce与令人讨厌的.dll一起部署所做的一切都失败了。
最终,我不得不手动部署。
See walk-through here.
那对我来说非常适合。但是,对于我自己的一生,我仍然想知道为什么无法将该流程添加到VS(我使用的是2017社区)。