在ClickOnce中使用System.Addins API时,我有一个恼人的构建过程。使用System.Addins需要特定的目录结构,并且主项目不直接引用适配器、视图和契约,这与ClickOnce体系结构不兼容。
构建过程中令人恼火的部分是,我必须通过构建后事件将.dlls从插件组件复制到主应用程序项目的目录中,然后从主项目手动引用这些文件,以便ClickOnce将它们包括在内。首先,这需要两次构建迭代才能正确构建,其次,它干扰了源代码管理(我必须从源代码管理中排除复制的外接程序dll文件,否则对它们所做的任何更改都需要签出)。
所以,我的问题是,有没有办法绕过这个黑客攻击?更优雅的东西?
发布于 2008-12-30 14:35:00
我不能完全回答您的问题,但是您似乎是通过Visual Studio创建ClickOnce部署的。我会抛弃这种方法,转而使用MageUI。它是一个独立的可执行文件,可以在框架SDK中找到,它将生成应用程序和部署清单文件。它带有一个gui版本(mageui.exe)和一个命令行版本(mage.exe)。
Mage可能不会摆脱你的构建后事件,但它应该不需要引用文件来让ClickOnce看到它们。
发布于 2008-12-12 23:07:48
谢谢你的输入,我目前正在按照你提到的方式做;在我的项目中创建文件夹,并包括我需要的dll。它可以工作,但它是一个丑陋的解决方案,而且它干扰了源代码控制。
我意识到了ClickOnce的局限性,我希望有一种方法可以绕过它。例如,我在某处读到,我可以使用部署项目来创建特定结构中所需的适当依赖项。问题是,一旦它被部署到公众中,就没有简单的方法(在ClickOnce中)来更新这些依赖项。
发布于 2009-10-27 18:32:48
我使用的解决方案是所有项目都有一个单独的输出文件夹。每个项目都将自己的文件放在正确的子文件夹中。应用程序引导程序项目也将他的dll放在输出(根)文件夹中。然后,当您为引导程序创建click-ones时,它将获取输出文件夹中的所有内容。
最困难的部分是将所有的dll放在正确的位置(并且每个dll只有一次)
https://stackoverflow.com/questions/364295
复制相似问题