我有一个存储在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个)需要复制到输出目录,而不是项目引用。
引用正常工作,但是一旦我将此目录中的一个文件标记为“Content”和“Copy always”或“Copy if newer”,则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文件夹。
答案 0 :(得分:2)
如何将libs目录检出解决方案而不是项目?这就是我们所做的,因为库组件往往被多个项目使用;直接放在一个项目的目录中不会产生高度可共享的资源。
SketchingMode solution
SketchingMode proj
bin
Debug
Release
Libs
SystemHooks