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