我有一个相当大的系统需要部署,有大量的组件,并且构建得相当可扩展。有一组核心组件对任何事情都是必需的,而其他组件组则做更专业的事情(到每一组都是它们自己的应用程序-这不一定是现在的事实,但我们正朝着那个方向发展……)
当我部署时,我想尝试将一些结构融入到事物中。我的想法是:
App1
例如,...\App1中的文件无疑将在...\Core中具有依赖文件,但显然我希望避免将这些文件重新分发到...\App1文件夹。我想让App1从核心文件夹中捡起它们。
我很想看看这是否可能。
以下是一些限制和观察:
目前,每个组件都是使用静态引用构建的。比起放弃这个立场,我更倾向于将所有东西部署到一个文件夹中。此外,我不想修改任何假设这种部署结构的程序代码。因此,诸如使用Assembly.LoadFrom或巧妙地设置appDomain路径之类的大量更改已经过时。
不过,我可以接受app.config条目,因为这些条目可以在安装过程中编写。
我看过(并且经过了非常简短的测试),乍一看,它看起来很理想,但由于它是子目录的限制,它最终变得不合适了。
我看过了--我没有完全读到这篇文章,因为我必须注册十几个核心程序集才能让我立即离开(尽管这么说了,如果我准备好了麻烦的话,我很可能会得到我想要的东西)。
有人能建议我可以考虑的其他方法吗?
蒂娅,皮特
发布于 2011-04-14 09:21:04
最后,我几乎得到了我想要的,但没有完全得到。我最终得到了我想要的所有文件夹结构.
App1
....but必须将主要可执行文件放在"MyBigSystem“文件夹中,即
App1.exe
文件\ MyCompany \ MyBigSystem \ MyBigSystem文件\ MyCompany \ MyBigSystem \ App2.exe
我在可执行文件的配置文件中用<probing>条目来补充这个结构。
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="Core"/>
</assemblyBinding>
</runtime>这似乎保持了根文件夹的整洁,我可以合理地希望。它还允许App6访问App1中的依赖库,例如,如果这是必要的话。(正是出于这个原因,我避开了GAC -如果我们的应用程序依赖于应用程序,我可以看到我们必须拥有GAC的一切,这将是不合适的。)
在此方法中,除了信任之外,没有任何代码更改。主要的挑战是获得VS安装项目,以便将除了.exe和.exe.config之外的所有东西都放在子文件夹中。
发布于 2011-04-08 16:18:25
您可能需要编译而不是发布。使用第三方安装程序将是最简单的。安装盾牌很不错。
发布于 2011-04-08 16:25:25
如果您正在使用Eclipse,您可以创建一个用于Core的项目作为源库,并将其包含在所有其他项目中。
https://stackoverflow.com/questions/5597906
复制相似问题