【问题标题】:Subversion, external references, binaries, and MSBuild/Visual StudioSubversion、外部引用、二进制文件和 MSBuild/Visual Studio
【发布时间】:2008-10-21 19:37:51
【问题描述】:

我有一个存储在 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 文件夹。

【问题讨论】:

  • 为什么讨厌构建后步骤?这似乎是问题的自然解决方案。
  • 我已经做了这一步,但是如果有办法只用我想知道的属性来完成同样的事情。
  • 我们对二进制文件使用了类似的方案,但从未见过您描述的问题。

标签: visual-studio visual-studio-2008 svn copy external


【解决方案1】:

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

SketchingMode solution
  SketchingMode proj
    bin
      Debug
      Release
  Libs
    SystemHooks

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-10
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多