2

我有一个存储在 Subversion 存储库中的项目。

在这个存储库中,在不同的文件夹中,我有一组在我的许多项目中使用的库。这些库存储为二进制文件,即。dll、pdb 和 xml。

这是一个示例布局:

<repo-url>
    \Libraries
        \SQLite
        \SystemHooks
        \Moq

在应用程序项目中,我添加了一个“libs”目录,然后将一个 svn:externals 引用属性添加到该目录以拉入我需要的库。

例如,对于我现在正在处理的这个项目,它提示了这个问题,我需要 SystemHooks 库,所以在我的应用程序项目文件夹结构中,它现在看起来像这样:

SketchingMode         <-- solution folder, other projects here as well
    SketchingMode     <-- app project folder
        libs
            SystemHooks

这样做的好处是我可以更轻松地更新库,并且只需将 -rXYZ 说明符用于外部定义以避免拉入比我准备接受的新版本,并且每个文件仍然只有一个副本/我的存储库中的版本。

在这种特殊情况下,坏事是 SystemHooks 目录中的一个 dll(如果我也想要 pdb,则为 2 个)需要复制到输出目录,而不是项目引用。

引用正常工作,但是一旦我将此目录中的一个文件标记为“内容”和“始终复制”或“如果较新则复制”,那么 libs 和 SystemHooks 目录结构也会被复制到输出目录。

因此,在构建之后,我的磁盘目录结构如下所示:

SketchingMode         <-- solution folder, other projects here as well
    SketchingMode     <-- app project folder
        libs
            SystemHooks
        bin
            Debug               <-- main build output here
                libs
                    SystemHooks <-- 1-2 files in here

避免这种情况的唯一方法是使用构建后步骤并仅添加必要的复制语句吗?或者我可以以某种方式调整项目文件以避免复制这样的完整结构吗?

为了清楚起见,在 bin\Debug 目录中,我不希望那里有另一层 libs\SystemHooks,并且当前复制到 bin\Debug\libs\SystemHooks 文件夹的所有文件都需要复制到bin\Debug 文件夹。

4

1 回答 1

2

将 libs 目录签出到解决方案级别而不是项目级别怎么样?这就是我们所做的,因为库程序集往往被多个项目使用;直接放在一个项目的目录中不会产生高度可共享的资源。

SketchingMode solution
  SketchingMode proj
    bin
      Debug
      Release
  Libs
    SystemHooks
于 2008-12-29T16:09:08.940 回答