dotnet 升级 4.8 后缺少 ProjectReference 的程序集引用

问题描述 投票:0回答:1

我知道这方面有很多线索,但我尝试了所有可能的解决方案,但没有成功。
我有一个包含多个项目的解决方案。项目

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

升级后,当我在VS中构建项目
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 构建解决方案,并且我不想对引用进行更改,因为我有更多具有相同错误的引用,并且我不太确定这是否是将项目引用更改为浏览的引用是个好主意。

我尝试做的事情:

  1. 确保没有 .NET 目标框架不匹配,两个项目
    A
    B
    以及其他项目都使用 .NET 4.8
  2. 在 Nuget 包管理器 CMD 中运行
    Update-Package –reinstall
  3. 删除了引用并将其添加回来
  4. 清理解决方案并再次构建
  5. 卸载两个项目并重新加载它们
  6. 在管理模式下重新启动VS
  7. 删除项目并重新克隆它
  8. 将解决方案重新定位到不同的 Windows SDK 版本
  9. 检查了构建顺序并确保项目
    B
    在项目
    A
  10. 之前构建
  11. 已删除
    %LocalAppData%\Microsoft\VisualStudio\2019\ComponentModelCache

我正在发布、混合平台模式下构建

c# visual-studio .net-4.8
1个回答
0
投票

在查看 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个条件导致了该问题。

© www.soinside.com 2019 - 2024. All rights reserved.