使用subversion和Nant来建造。我有一个主要的项目,取决于几个子项目。子项目作为独立的项目存在于subversion中。
,我的问题是:是否应该在主项目中构建nant构建脚本,构建所有引用的子项目及其本身?或者,这些子项目知道如何构建自己吗?我以某种方式从主构建文件调用子项目构建文件,并以某种方式将所有输出组装到主项目构建输出中?
我现在有了大型项目构建文件,构建了所有的子项目。也就是说,我对构建文件中的每个子项目都有nant目标。然而,这似乎在主构建文件和子项目之间建立了紧密的耦合。如果我能说“子项目知道如何构建自己”,并要求他们从主项目构建自己并组装输出,那就太好了。
作为参考,我的存储库如下所示:
/Repo
/MainProject
/trunk
/doc <-- documentation
/lib <-- binary-only DLLs (usually 3rd party)
/src <-- source code for MainProject
/svn-externals <-- hold references to other projects in repository
...
/ClassLib1
/trunk
/doc
/lib
/src
/svn-externals
...
/ClassLib2
/trunk
/doc
/lib
/src
/svn-externals
...
/ClassLibCommon
/trunk
/doc
/lib
/src
/svn-externals我正在使用subversion svn-externals属性引入子项目。所以我的作品是这样的:
/MainProject
/build
/doc
/lib
/src
/MainProject
/svn-externals
/ClassLib1 <-- svn external to svn://xyz/repo/ClassLib1/trunk
/doc
/lib
/src
/svn-externals
/ClassLibCommon <- svn external to svn://xyz/repo/ClassLibCommon/trunk
...
/ClassLib2 <-- svn external to svn://xyz/repo/ClassLib2/trunk
/doc
/lib
/src
/svn-externals
/ClassLibCommon <- svn external to svn://xyz/repo/ClassLibCommon/trunk
...发布于 2009-09-23 21:55:22
你的问题的答案当然是“视情况而定”。
您没有说的是如何在您的解决方案中引用“子项目”,或者它们是否被其他解决方案(主要项目)使用?它们是项目参考吗?如果是这样的话,让nant调用MSBuild来构建解决方案。这将构建基于这些依赖项的所有子项目。我只能假设这就是你设置它的方式。
就我个人而言,如果我有一个看起来像您的设置,我就不会使用项目引用,也不会对每个项目的所有代码进行外部处理。我会像对待第三方DLL一样对待这些子项目。
如果这样做,您将使用DLL引用。这使子项目与您的主要项目脱钩。这就是我要去的方式,特别是如果那些子项目被其他项目引用的话。
是的,现在你得做些别的决定.例如如何将这些存储在源代码管理中。库文件夹中可以有外部文件..。或者,您可以将DLL的副本放入lib文件夹。这还取决于您希望如何控制版本控制。
此外,如果您使用某种类型的CI (如CC.Net ),则无需提及。如果您这样做了,您可以让它触发主项目的重建,如果有任何子项目被修改。
https://stackoverflow.com/questions/1416747
复制相似问题