以只读方式打开Visual Studio项目

时间:2009-09-20 07:31:28

标签: visual-studio-2008 svn tortoisesvn csproj

情景:

我正在使用svn:externals从CodePlex获取Microsoft.Practices.ServiceLocation。但是,在我自己的项目中引用csproj文件会导致从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文件夹上执行Release lock会产生一条消息,指出“没有什么可以解锁。没有文件在此工作副本中有锁定”。如果我在根目录执行命令,结果相同。

执行清理没有改变任何内容。

我正在使用TortoiseSVN。

  1. 我是否可以告诉Visual Studio 2008将项目/目录视为只读以避免升级?
  2. 我可以执行一个秘密的Subversion命令来使其工作吗?
  3. 为什么更新的文件更改会导致树冲突?
  4. 编辑: 我用Google搜索了一些,发现Subversion文档解释了http://svnbook.red-bean.com/nightly/en/svn.tour.treeconflicts.html处的树冲突。我改变了我的第三个问题,因为我不明白为什么我在更新那些已经改变的文件时会遇到树冲突。

2 个答案:

答案 0 :(得分:2)

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

对于我主要用于库的项目,我没有把开源项目放到我的解决方案中 - 只是我在源文件夹文件夹中保存在源代码控制库中的dll。

调试时,可以在VS2008中单步执行库代码,而无需实际打开2005项目文件;所以不需要更新。

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

我只在开源项目中使用tortoise进行svn-update并且不会发生冲突。 Svn会将任何更改合并到我的副本中。如果我有开源项目所需的更改,我提交补丁并且不从我的副本提交。

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

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

答案 1 :(得分:1)

Visual Studio 2008非常乐意打开一个只读解决方案(这是正常的,非签出的用法)。

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

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