我有一个包含这些命名空间的4个项目的解决方案:
命名空间TPCO
命名空间TPCO.Controllers
命名空间TPCO.Models
命名空间TPCO.Core.Data
命名空间TPCO.Core.Domain
命名空间TPCO.Core.Models
命名空间TPCO.Data
命名空间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应用程序的文件夹结构之外吗?
答案 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引用,则将其从项目的引用中删除,并将其作为项目引用添加回来。