在同一解决方案中找不到引用项目的类型或名称空间

时间:2018-10-23 08:39:06

标签: c# visual-studio-2017

我在VS 2017中遇到了一个令人难以置信的令人讨厌的问题。某种程度上,这些问题总是困扰着我。

我今天打开了我的解决方案,其中包含几个项目,发现一个项目无缘无故丢失(当我打开解决方案时,它总是存在的。)

因此,我只需右键单击“解决方案资源管理器”并添加一个现有项目(简单)即可重新添加该项目。

现在,当我尝试运行该项目(OrderGetter)时,它无法使用

进行构建
  

找不到类型或名称空间名称'Utilities'(您是否缺少using指令或程序集引用?)

Utilties是我的解决方案中的另一个项目:

enter image description here

它确实存在并且过去一直有效。为什么这个问题现在必须发生并发生?

Eveb weirder,错误不断从错误窗口中消失,但是当我尝试构建时,弹出窗口告诉我我有错误,我必须检查输出窗口以查看发生了什么。

我尝试了以下方法:

  • 清洁溶液
  • 清洁项目
  • 构建/重建解决方案
  • 构建/重建项目
  • 关闭所有标签,重新启动VS
  • 删除/重新添加引用
  • 卸载项目,从csproj文件中删除引用,然后在重新加载项目之前将其重新添加到VS UI中
    • 检查csproj GUID是否匹配

我可以在Solution.sln中看到以下内容:

Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MVCQCPage", "MVCQCPage\MVCQCPage.csproj", "{FF699AAD-EA97-4984-9DB2-70F2CA41CA16}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharedLibrary", "SharedLibrary\SharedLibrary.csproj", "{0E6DE04C-97A2-4C18-AB83-098C383DF9C7}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AspNet.Identity.SQLite", "..\..\..\..\Downloads\Firefox\Asp.Net.Identity.SQLite-master\Asp.Net.Identity.SQLite-master\AspNet.Identity.SQLite\AspNet.Identity.SQLite.csproj", "{35DAC40A-38D0-43BD-8DCF-34E4061F0A75}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AspNet.Identity.SQLite.EF", "..\..\..\..\Downloads\Firefox\Asp.Net.Identity.SQLite-master\Asp.Net.Identity.SQLite-master\AspNet.Identity.SQLite.EF\AspNet.Identity.SQLite.EF.csproj", "{D34D1279-F264-4A90-B4A5-2AAE4DE5D0D6}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PublicSite", "..\..\..\..\Downloads\Firefox\Asp.Net.Identity.SQLite-master\Asp.Net.Identity.SQLite-master\PublicSite\PublicSite.csproj", "{18D9B36C-50A0-4753-9522-A1C282C70B3E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Utilities", "Utilities\Utilities.csproj", "{4473F366-D894-425D-AFE2-75EC883AC0E7}"
EndProject
Project("{F5034706-568F-408A-B7B3-4D38C6DB8A32}") = "Scripts", "Scripts\Scripts.pssproj", "{6CAFC0C6-A428-4D30-A9F9-700E829FEA51}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TurboTime", "TurboTime\TurboTime.csproj", "{05FFA6B7-8ACE-4FDF-83DB-75FBF7C46E64}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TurboTimeConsole", "TurboTimeConsole\TurboTimeConsole.csproj", "{F5B79240-155C-4E8B-B8F7-BFFBC9EFE9EB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OrderGetter", "OrderGetter\OrderGetter.csproj", "{BBD80E29-721A-4423-A21E-4B6C51D153FF}"
EndProject

Utilites.csproj中,我看到GUId是

<ProjectGuid>{4473F366-D894-425D-AFE2-75EC883AC0E7}</ProjectGuid>

OrderGetter.csproj正在引用

    <ProjectReference Include="..\Utilities\Utilities.csproj">
  <Project>{4473f366-d894-425d-afe2-75ec883ac0e7}</Project>
  <Name>Utilities</Name>
</ProjectReference>

因此,GUID相同,除了一个是大写字母,另一个是小写字母。是什么意思?

您可以清楚地看到确实引用了该项目:

enter image description here

为什么会这样?

1 个答案:

答案 0 :(得分:0)

如果上述方法无效,则可以在文本编辑器中打开解决方案以及项目文件,并检查项目文件是否设置了正确的引用。

每个项目都有一个唯一的GUID

<ProjectGuid>{12D33B77-30A1-4D07-9DA4-8789AF6746F5}</ProjectGuid>

引用项目使用此GUID以及引用该项目的路径:

<ProjectReference Include="..\Data Binding Demo\C#\databindinglab.csproj">
  <Project>{12D33B77-30A1-4D07-9DA4-8789AF6746F5}</Project>
  <Name>databindinglab</Name>
</ProjectReference>

检查受影响的项目,并确保文件名和GUID匹配。

如果这样做没有帮助,请删除所有引用,保存并关闭项目,然后再次添加每个引用。