使用“添加为链接”将外部依赖项捆绑到Click Once应用程序

时间:2017-01-09 20:10:35

标签: .net wpf clickonce

在引用另一个项目ProjectWPF的WPF应用程序ProjectB中,ProjectB输出是一个DLL(插件),我必须将其包含在名为' PlugIns'的文件夹中。在ProjectWPF'的根源。

现在,我找到了一种使用 Add as Link 功能添加文件的方法。我所做的是在ProjectWPF项目中创建了一个名为PlugIns的文件夹。然后我添加现有项目...并浏览到ProjectB中包含DLL的文件夹 - 在本例中为bin / Debug版本。然后将链接文件的属性设置为“内容”和“始终复制”。

当我构建项目时,一切正常,ProjectWPF项目的bin Debug和bin Release文件夹包含我的PlugIns文件夹,该文件夹包含DLL。

当我使用ClickOnce发布ProjectWPF,然后通过运行Setup.exe安装它并浏览应用程序目录时,我可以看到包含DLL的文件夹PlugIns。因此,添加为链接功能确实有效。

但是,这个插件DLL只是Debug版本的副本。即使我在ProjectWPF中切换到Release,也总是抓住我最初链接到的Debug版本。我想要的是它为我在(发布版本或调试版本)中的构建模式获取适当的版本

有没有更好的方法在Debug和Release版本之间进行管理? 或者是否有更好的方法在ClickOnce应用程序中嵌入外部依赖项(如插件)?

P.S。这是.NET 4.5或更高版本

1 个答案:

答案 0 :(得分:1)

您不需要添加引用,即使是部署工作的链接也是如此。生成清单后,使用Manifest Manager Utility打开它。 然后按照以下步骤操作:

  1. 打开生成的清单
  2. 使用工具栏或菜单添加ProjectB.dll。在此步骤中,您可以创建名为Plugin的文件夹,并将其用作发布的dll的目标文件夹。
  3. 使用Click Once兼容证书保存并签署清单。如果您没有,可以从VS或命令提示符创建它。
  4. 你可以看看here。虽然本文档指向WPF Prism应用程序,但它对使用ClickOnce生成的任何清单WPF或Winform都有效。