gpt4 book ai didi

c# - Nant:如何构造 svn:externals 以构建引用第 3 方 dll 的类库

转载 作者:太空宇宙 更新时间:2023-11-03 11:53:50 26 4
gpt4 key购买 nike

我正在使用 subversion 和 nant(以及 visual studio IDE)

我一直在遵循建议的项目结构 http://blog.jpboodhoo.com/NAntStarterSeries.aspx它提倡自包含的颠覆目录,开发人员可以在其中进行结帐并立即一步构建项目。

我的 repo 结构是这样的:

/Repo
/MainProject
/trunk
/doc <-- documentation
/lib <-- binary-only DLLs
/src <-- source code for MainProject
/tools <-- holds tools like nant, nunit, etc
...
/ClassLibrary1
/trunk
/doc
/lib
/src
/tools
...
/ClassLibrary2
/trunk
/doc
/lib
/src
/tools

目前尚不清楚的是如何构建一个包含类库的项目,这些类库又引用第三方库 dll 本身。

目前,我有一个主项目,其工作目录如下

例子:

/MainProject
/build
/lib
/src
/MainProject
/ClassLibrary1 <-- svn external to svn://server/repo/ClassLibrary1/trunk/src
/ClassLibrary2 <-- svn external to svn://server/repo/ClassLibrary2/trunk/src
/tools
...

构建 MainProject 时,我编译类库并将 dll 输出到构建文件夹。但是,类库本身具有它们引用的第 3 方纯二进制 DLL。

我的问题是为了构建 MainProject,我必须以某种方式将类库中的第 3 方 DLL 获取到构建输出中。我该怎么做?

想法:1. 我应该将这些第 3 方 dll 的副本存储在 MainProject 的 lib 文件夹中吗?2. 或者我的 svn:external 引用应该指向类库项目的主干而不是 src 以便我可以访问类库的 lib 文件夹?3. 我应该对单个文件使用 svn:externals 的 subversion 1.6 功能吗?

最佳答案

我个人引入了引用库的主干。(实际上,我引入了标签的根,但这不是重点)。

如果您保留所需 dll 的单独副本,那么您实际上并没有允许引用的库确定它自己需要什么,因为所有这些逻辑在项目中都是重复的。如果您使用多个外部引用或文件外部来引入代码和 dll,也会发生同样的事情。

我的原则是 - 库知道它需要什么,对库的单个外部引用可以获取该库及其所需的一切。

这样一来,如果您更改库的引用,您可以确信所有项目都会选择它。 (如果 IDE 不支持这个,那是 IDE 的问题,而不是 subverion 的问题)。作为一个项目,您也可以确信,如果您更改所指向的库的版本,您也会自动获得正确的引用,并且不需要调试构建失败来找出问题所在.

关于c# - Nant:如何构造 svn:externals 以构建引用第 3 方 dll 的类库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1274895/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com