2

我的 Visual Studio 2005 将有关哪些项目和解决方案与 .sln 和 .csproj 文件中的哪些源代码管理存储库一起存储的信息。是否可以将绑定信息存储在某个外部文件中?

我希望将信息存储在解决方案/项目文件之外的原因是为了方便试用 AnknSVN 插件。现在我们的所有东西都在 VSS 6 中,但我想维护 SVN 存储库的实验副本,然后使用此处描述的想法手动同步两者:

http://www.dotnet6.com/blogs/jeroen/archive/2008/04/05/using-subversion-in-a-vss-only-shop.aspx

不幸的是,将绑定存储在 .sln 文件(例如)中会引发麻烦。为了说明,假设我将整个 VSS 存储库复制到一个并行的 SVN 实例中。现在我使用 AnknSvn 在 Visual Studio 中打开 SVN 的主要解决方案;在这个过程中,AnkhSvn 会将 .sln 文件中的源代码控制绑定信息更改为指向 SVN。接下来假设我向解决方案添加了一个新项目 P1。这将导致 Visual Studio 第二次修改 .sln 文件,注意 P1 的存在。假设此时我想将我在 SVN 副本中所做的更改同步回 VSS 存储库。如果源代码控制绑定没有存储在 .sln 文件中,那也不会太糟糕。但是,.sln 文件现在有两个不同的更改,我想将 project-add 更改传播回 VSS,但我没有 不想将源代码控制绑定更改传播回 VSS,因为这会破坏所有 VSS 用户的构建!我不认为没有其他人工干预就可以传播一个更改。相反,如果 Visual Studio 只是将绑定信息存储在 .sln 文件之外,那么我确实希望将所有 .sln 文件更改传播回 VSS,这样就可以了。

4

4 回答 4

3

VisualSVN 不使用本机源代码控制生态系统插件 (SCC),因此不会污染您的解决方案或项目文件。它是商业许可的,但非常合理 < 50 美元。因此允许您继续使用讨厌的 VSS(尽管理想情况下排除 .svn 目录)

于 2008-09-24T22:40:26.227 回答
2

AnkhSVN 2.0 有两种操作模式。

  • 已连接(推荐)。这将绑定信息存储在 .sln 和可选的项目文件中。
  • 断开连接。这不存储绑定。

您可以在 File->Subversion->Change Source Control 中连接和断开解决方案和单个项目。

连接的优点是:

  • 打开解决方案时在 SCC 提供商之间自动切换(例如在 VSS、TFS 和 AnkhSVN 之间)
  • 兼容所有实现 SCC 支持的项目类型。
  • (2.1+) 自动处理主要工作副本之外的项目。(例如 c:\inetpub 中的网站)

注意:如果您之前在解决方案上使用过 AnkhSVN 1.X,您应该手动删除您的 Ankh.load 文件。当 AnkhSVN 2.0 看到 Ankh.load 文件时,它会自动连接您的解决方案。

[跟进:]
在另一个 SCC 实现旁边使用 AnkhSVN 的一种简单方法是创建一个额外的 .sln 文件。AnkhSVN 不使用单个项目的 SCC 字段中的实际值。(只需插入它们即可启用项目以进行完整的 SCC 管理)

于 2008-09-30T23:12:26.323 回答
0

一位同事为删除绑定编写了这个 NAnt 任务

http://www.atalasoft.com/cs/blogs/jake/archive/2008/05/21/2custom-nant-task-for-removing-tfs-bindings.aspx

您可能会适应自定义构建步骤或其他脚本来帮助您。

于 2008-09-24T22:44:26.357 回答
0

IIRC AnkhSVN 和 VSS 都严格通过 .sln / .csproj 文件实现版本控制绑定(VS 的版本控制插件接口便于这种存储)。因此,简短的回答是否定的。

但是,您仍然可以使用 subversion 作为外部版本控制解决方案,就安全性和稳定性而言,VSS 使用命令行(这本书是您的朋友)或TortoiseSVN会好得多。

于 2008-09-24T22:44:48.930 回答