其他项目的命名空间不可用

时间:2018-02-16 16:00:04

标签: c# asp.net-mvc

我有一个包含这些命名空间的4个项目的解决方案:

项目名称TPCO

  

命名空间TPCO
  命名空间TPCO.Controllers
  命名空间TPCO.Models

项目名称TPCO.Core

  

命名空间TPCO.Core.Data
  命名空间TPCO.Core.Domain
  命名空间TPCO.Core.Models

项目名称TPCO.Data

  

命名空间TPCO.Data

项目名称TPCO.Tests

  

命名空间TPCO.Tests.Controllers

TPCO.Core和TPCO.Data项目最初是ASP.Net Web应用程序的一部分。我将它们导入到包含TPCO和TPCO.Test项目的ASP.Net MVC5应用程序解决方案中。

出于某种原因,我看不到来自TPCO的TPCO.Core或TPCO.Data的任何命名空间。我也无法从TPCO.Core或TPCO.Data项目中看到TPCO,TPCO.Controllers或TPCO.Models。但是,我可以从TPCO.Data看到TPCO.Core。*,反之亦然。

从TPCO.Tests,我只能看到TPCO和TPCO.Tests项目的名称空间。

所有项目都有相同的目标框架,每个:Namespace not available in other project
此外,TPCO.Core和TPCO.Data中的所有类都标记为public

发生了什么,我该如何解决这个问题?可能是TPCO.Core和TPCO.Data项目位于引起此问题的MVC应用程序的文件夹结构之外吗?

1 个答案:

答案 0 :(得分:2)

检查项目如何相互引用。它们应设置为项目引用。如果将它们设置为dll引用,则VS正在特定文件夹中查找已编译的dll。

我认为最简单的检查方法是在记事本中打开.csproj。找到参考的ItemGroup并确保它是一个项目。

项目参考:

  <ProjectReference Include="..\DataInterface\DataInterface.csproj">
    <Project>{b0c3500f-6d72-46f5-a8e9-5283fa116db2}</Project>
    <Name>DataInterface</Name>
  </ProjectReference>

DLL参考:

  <Reference Include="DataInterface">
    <SpecificVersion>False</SpecificVersion>
    <HintPath>..\Dlls\DataInterface.dll</HintPath>
  </Reference>

然后,如果它是dll引用,则将其从项目的引用中删除,并将其作为项目引用添加回来。