我知道这方面有很多线索,但我尝试了所有可能的解决方案,但没有成功。
我有一个包含多个项目的解决方案。项目
A
引用了项目 B
。在我的A.csproj
中:
<ProjectReference Include="..\B\B.csproj">
<Project>{795b8266-e62c-4d04-b8eb-cfrf5a31f55x}</Project>
<Name>B</Name>
</ProjectReference>
我最近将两个项目目标框架从
.Net Framework 4.6.1
升级到.Net Framework 4.8
。B
时,它构建成功,但是当我构建项目A
时,我收到很多类型的错误代码CS0246 The type or namespace name 'B' could not be found (are you missing a using directive or an assembly reference?)
.MSBuild solution.sln
从 VS 开发人员命令提示符构建解决方案时,我没有收到任何错误,此外,如果我将引用从“ProjectReference”更改为对 dll 的常规引用(浏览它),则会出现该错误消失。
<Reference Include="B, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\B\bin\Release\B.dll</HintPath>
</Reference>
我希望能够直接从 UI 而不是从 CMD 构建解决方案,并且我不想对引用进行更改,因为我有更多具有相同错误的引用,并且我不太确定这是否是将项目引用更改为浏览的引用是个好主意。
我尝试做的事情:
A
和 B
以及其他项目都使用 .NET 4.8Update-Package –reinstall
B
在项目 A
%LocalAppData%\Microsoft\VisualStudio\2019\ComponentModelCache
我正在发布、混合平台模式下构建
在查看 dotnet 升级后对
A.csproj
所做的更改后,我看到此块中的更改:<PropertyGroup>
<VisualStudioVersion>10.0</VisualStudioVersion>
<VSToolsPath>$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" />
之后:
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
dotnet升级后因某种原因被消除的标签中的3个条件导致了该问题。