首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >System.Addin和ClickOnce

System.Addin和ClickOnce
EN

Stack Overflow用户
提问于 2008-12-12 22:00:46
回答 5查看 1.1K关注 0票数 2

在ClickOnce中使用System.Addins API时,我有一个恼人的构建过程。使用System.Addins需要特定的目录结构,并且主项目不直接引用适配器、视图和契约,这与ClickOnce体系结构不兼容。

构建过程中令人恼火的部分是,我必须通过构建后事件将.dlls从插件组件复制到主应用程序项目的目录中,然后从主项目手动引用这些文件,以便ClickOnce将它们包括在内。首先,这需要两次构建迭代才能正确构建,其次,它干扰了源代码管理(我必须从源代码管理中排除复制的外接程序dll文件,否则对它们所做的任何更改都需要签出)。

所以,我的问题是,有没有办法绕过这个黑客攻击?更优雅的东西?

EN

回答 5

Stack Overflow用户

发布于 2008-12-30 14:35:00

我不能完全回答您的问题,但是您似乎是通过Visual Studio创建ClickOnce部署的。我会抛弃这种方法,转而使用MageUI。它是一个独立的可执行文件,可以在框架SDK中找到,它将生成应用程序和部署清单文件。它带有一个gui版本(mageui.exe)和一个命令行版本(mage.exe)。

Mage可能不会摆脱你的构建后事件,但它应该不需要引用文件来让ClickOnce看到它们。

票数 3
EN

Stack Overflow用户

发布于 2008-12-12 23:07:48

谢谢你的输入,我目前正在按照你提到的方式做;在我的项目中创建文件夹,并包括我需要的dll。它可以工作,但它是一个丑陋的解决方案,而且它干扰了源代码控制。

我意识到了ClickOnce的局限性,我希望有一种方法可以绕过它。例如,我在某处读到,我可以使用部署项目来创建特定结构中所需的适当依赖项。问题是,一旦它被部署到公众中,就没有简单的方法(在ClickOnce中)来更新这些依赖项。

票数 0
EN

Stack Overflow用户

发布于 2009-10-27 18:32:48

我使用的解决方案是所有项目都有一个单独的输出文件夹。每个项目都将自己的文件放在正确的子文件夹中。应用程序引导程序项目也将他的dll放在输出(根)文件夹中。然后,当您为引导程序创建click-ones时,它将获取输出文件夹中的所有内容。

最困难的部分是将所有的dll放在正确的位置(并且每个dll只有一次)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/364295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档