2009-09-20 264 views
0

场景:打开Visual Studio项目为只读

我使用SVN:外部组件从CodePlex上抢Microsoft.Practices.ServiceLocation。但是,在我自己的项目中引用csproj-file会导致从2005年到2008年的升级。这使得我的项目文件副本与基本副本不同,并且我无法从subversion更新项目。

的... \ DEPS \ Microsoft.Practices.ServiceLocation结果更新:

Command   Update 
Tree conflict ...\deps\Microsoft.Practices.ServiceLocation\ServiceLocatorProvider.cs 
Tree conflict ...\deps\Microsoft.Practices.ServiceLocation\ServiceLocatorImplBase.cs 
Tree conflict ...\deps\Microsoft.Practices.ServiceLocation\ServiceLocator.cs 
Tree conflict ...\deps\Microsoft.Practices.ServiceLocation\Readme.txt 
Tree conflict ...\deps\Microsoft.Practices.ServiceLocation\Properties 
Tree conflict ...\deps\Microsoft.Practices.ServiceLocation\Microsoft.Practices.ServiceLocation.csproj 
Tree conflict ...\deps\Microsoft.Practices.ServiceLocation\IServiceLocator.cs 
Tree conflict ...\deps\Microsoft.Practices.ServiceLocation\ActivationException.Desktop.cs 
Tree conflict ...\deps\Microsoft.Practices.ServiceLocation\ActivationException.cs 
Completed  At revision: 43682 
warning!   One or more files are in a conflicted state. 

的......更新\ DEPS结果:

Command   Update 
Completed  At revision: 0 

的更新根结果:

Command   Update 
External   ...\deps\Microsoft.Practices.ServiceLocation 
External failed ...\deps\Microsoft.Practices.ServiceLocation 
Error    Working copy '...\deps\Microsoft.Practices.ServiceLocation' locked 
Error    Please execute the 'Cleanup' command. 
Completed   ...\deps\Microsoft.Practices.ServiceLocation - at revision: 0 

餐间声称工作拷贝已经被锁定,似乎是错误的,执行发行锁定Microsoft.Practices.ServiceLocation文件夹会生成一条消息,指出“没有什么可解锁的。没有文件在这个工作拷贝的锁。”同样的结果,如果我在根用户身份执行命令。

执行清理什么也没有改变。

我使用TortoiseSVN。

  1. 我可以告诉Visual Studio 2008只能将项目/目录视为只读以避免升级?
  2. 是否有一个秘密的Subversion命令可以执行此操作?
  3. 为什么更改了havnt的文件更新会导致树冲突?

编辑︰ 我GOOGLE了一些,并发现Subversion文件解释树冲突在http://svnbook.red-bean.com/nightly/en/svn.tour.treeconflicts.html。我改变了我的第三个问题,因为我不明白为什么我在更新已更改的文件时遇到树冲突。

回答

1

Visual Studio 2008将非常高兴地打开只读解决方案(这是正常的,未检出的使用情况)。

但VS2008无法打开VS 2005解决方案文件,因此它总是尝试升级。您似乎正在寻找一种方法,在未进行升级的情况下于2008年打开2005年解决方案,我认为这不可能。

要么获得VS 2005的副本(这可能是Express版本),要么整个升级Codeplex项目(记住VS 2008将以.NET 2.0为目标)。

+0

如果我要安装Visual Studio 2005(非快车),将其整合到同一个环境,让我打开项目,而不升级? (就像有两个“项目引擎”活跃在相同的devenv.exe进程?) – sisve 2009-09-20 15:30:04

+0

我不知道SNV整合,但每个并排VS的端版本都有自己单独的配置(如使用Team Foundation客户端,有是每个VS版本的独立客户端安装)。 – Richard 2009-09-20 16:41:24

2

根据您对项目的参与程度以及是否要更改项目有几种选择。

对于我主要用于图书馆的项目,我没有将开放源代码项目放入我的解决方案 - 只是我在源文件夹中的源代码管理存储库中保存的dll。

当您正在调试时,您可以在VS2008中进入库的代码而无需实际打开2005项目文件;所以不需要更新。

当我确实需要处理开源库的代码时,我打开它自己的解决方案。如果它需要更新到VS2008,我会让它 - 这是没有什么大不了的,因为只有项目文件被更改 - 而不是源代码。由于它在源代码控制中,因此您可以始终将项目文件还原为原始文件或重命名新的副本并将2个csproj文件并排保存。

我只能做一个svn更新与开源项目龟没有得到冲突。 Svn会将所有更改合并到我的副本中。如果我有开源项目所需的更改,我会提交一个补丁并且不要从我的副本提交。

如果这是一个项目,你是一个活跃的开发者和其他团队成员需要留在VS2005,那么你可以加载VS2005并排没有问题。我在同一台机器上安装了4-5份VS - 唯一的缺点是磁盘空间。

这听起来像你可能需要做项目的重新检出到一个新的文件夹,如果你有太多的冲突。然后你可以使用一个好的差异工具手动解决冲突 - 我使用WinMerge。