我们可以将Visual Studio源代码控件的绑定信息保留在.sln和.csproj文件之外吗?
我的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文件现在有两个不同的更改,我想将项目添加的更改传播回VSS,但是我不想将源代码控制绑定更改传播回VSS,因为那样会破坏为所有VSS用户构建!我认为没有其他人工干预,没有办法传播一个变更。相比之下,如果Visual Studio只是将绑定信息存储在.sln文件外部,那么我确实想将所有.sln文件更改传播回VSS,这没关系。
解决方案
VisualSVN不使用本机源代码控制生态系统插件(SCC),因此不会污染解决方案或者项目文件。它是商业许可的,但价格非常合理,低于$ 50。因此,允许我们继续使用讨厌的VSS(尽管理想情况下排除.svn目录)
一位同事写了这个NAnt任务来删除绑定
http://www.atalasoft.com/cs/blogs/jake/archive/2008/05/21/2custom-nant-task-for-removing-tfs-bindings.aspx
我们可能可以适应自定义构建步骤或者其他脚本来。
IIRC AnkhSVN和VSS都严格通过.sln / .csproj文件实现版本控制绑定(VS的版本控制插件接口有助于这种存储)。因此,简短的答案是"否"。
但是,我们仍然可以将subversion用作外部版本控制解决方案,就安全性和稳定性而言,使用命令行(本书是朋友)或者TortoiseSVN优于VSS。
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管理)