为什么会说“已经在解决方案中打开了具有该名称的项目”?

时间:2009-05-28 21:12:37

标签: visual-studio tfs

我最近将VSS数据库迁移到TFS 2008.使用Source Control Explorer,我获得了包含12个项目的最新版本的解决方案。

当我在VS 2005中打开解决方案时,找不到两个项目。我不确定为什么找不到这两个项目,但认为最简单的方法是删除并重新添加它们到解决方案中。

当我这样做时,VS给了我一个“这个名字的项目已在解决方案中打开”。该项目未出现在解决方案资源管理器中,并且未在.sln文件中列出。

有什么想法吗?

12 个答案:

答案 0 :(得分:36)

我遇到了这个问题,我可以使用以下步骤解决它:

  1. 从解决方案中删除项目。
  2. 重新启动visual studio。
  3. 将项目作为现有项目添加到解决方案中。

答案 1 :(得分:21)

我有同样的消息......好像它来自(.csproj)项目文件。在第一个属性组下面有一个名为

的部分
<ProjectTypeGuids>...</ProjectTypeGuids> 

通常告诉Visual Studio以某种特定方式处理该项目。可以找到一些Guids here

首先制作该文件的备份副本。然后删除该部分可以帮助您像往常一样打开项目。因为Visual Studio似乎认为项目不是ProjectTypeGuids中指定的类型。

答案 2 :(得分:11)

如果有人使用AnkhSVN而不是TFS,那么.sln文件也需要以下几行:

GlobalSection(SubversionScc) = preSolution
    Svn-Managed = True
    Manager = AnkhSVN - Subversion Support for Visual Studio
EndGlobalSection

在“全球”部分。

答案 3 :(得分:4)

删除.suo文件。构建解决方案添加项目。

答案 4 :(得分:3)

这对我有用:

  1. 删除每个项目中的<ProjectTypeGuids>...</ProjectTypeGuids>部分
  2. 重新打开每个项目,然后保存以覆盖现有项目文件,最后退出
  3. 重新打开解决方案文件
  4. 祈祷(可选)

答案 5 :(得分:3)

我不得不说删除<ProjectTypeGuids>...</ProjectTypeGuids>部分可能会产生一些问题。 事实上,这样的部分定义了项目的类型,如果删除,可能会禁用某些功能。 例如,如果您的项目最初定义为智能设备(C#),则在删除上述部分后,设备上的调试可能无法正常工作。

答案 6 :(得分:2)

我会尝试手工编辑项目/解决方案文件,它们是文本,非常容易阅读。您可以在记事本中编辑该文件。要在visual studio中以文本形式打开文件,您需要先关闭解决方案。然后执行file-&gt;打开并选择sln文件,但不要点击打开按钮,按右侧有箭头并选择打开...从那里你可以选择源代码编辑器(文本)。 / p>

答案 7 :(得分:1)

当我将网站迁移到网络应用程序项目时,我遇到了同样的问题。

  1. 卸载网络应用。
  2. 添加现有网站。
  3. 重新加载网络应用

答案 8 :(得分:1)

当我将运行vs2010的项目移动到另一台笔记本电脑时,以下工作对我有用。

我删除了以下内容并且有效:

<ProjecctType>Guid of sorts</ProjectType>
<SccProjectName>Svn</SccProjectName>
<SccLocalPath>Svn</SccLocalPath>
<SccAuxPath>Svn</SccAuxPath>
<SccProvider>SubversionScc</SccProvider>

答案 9 :(得分:1)

对于那些在处理VSTO项目时寻找此事的人......

在打开项目之前,请务必在计算机中安装Office工具。

答案 10 :(得分:1)

我通过更改Windows&#39;解决了这个问题。区域设置。而不是&#34;英语(欧洲)&#34;,我使用&#34;英语(美国)&#34;。其他人报告了类似的行为,例如来自&#34;俄罗斯(乌克兰)&#34;到&#34;俄罗斯(俄罗斯)&#34;等 -AlessandroSegala

为我工作。

参考:here

答案 11 :(得分:0)

就我而言,它已损坏vbproj文件。第一行缺失:

<?xml version="1.0" encoding="utf-8"?>

添加此行后,我必须关闭解决方案,删除.vs文件夹,然后再次打开。