首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何解决在Windows 2019上的VisualStudio2022上构建Azure DevOps代码时显示的下列错误

如何解决在Windows 2019上的VisualStudio2022上构建Azure DevOps代码时显示的下列错误
EN

Stack Overflow用户
提问于 2021-11-24 15:04:49
回答 4查看 4.8K关注 0票数 3

未找到##errorC:\Program文件\Microsoft Visual ##errorC:\Program Error MSB3644:未找到.NETFramework、Version=v4.5的引用程序集。要解决这个问题,请安装此框架版本的Developer (SDK/Targeting ),或者重新定向您的应用程序。您可以在.下载.NET框架开发人员包

EN

Stack Overflow用户

发布于 2021-12-23 19:32:40

我也有这个问题。这是我试图解决这个问题的(不成功的)进展。

在VisualStudio2022CommunityVisualStudio2022将我的解决方案的所有项目从不同版本的.NET框架切换到现在的所有针对".NET框架4.8“的项目后,我也会遇到这个问题。

我的错误(几乎与OP相同):

C:\ Files\dotnet\sdk\6.0.101\Microsoft.Common.CurrentVersion.targets(1217,5):错误MSB3644:找不到.NETFramework、Version=v2.0的引用程序集。要解决这个问题,请安装此框架版本的Developer (SDK/Targeting ),或者重新定向您的应用程序。您可以在C:\Users\MyUsername\source\repos\MyRepo1\Source\Libs\MyLibs\MyLibProject\MyLibProject.csproj下载.NET框架开发人员包

此错误提到文件C:\Program Files\dotnet\sdk\6.0.101\Microsoft.Common.CurrentVersion.targets第1217行的第5列,这将导致以下部分的<GetReferenceAssemblyPaths

代码语言:javascript
运行
复制
<Target
      Name="GetReferenceAssemblyPaths"
      DependsOnTargets="$(GetReferenceAssemblyPathsDependsOn);GetFrameworkPaths">

    ...

    <!-- By default if there is no root path set then the task will assume it is Program Files\Reference Assemblies\Microsoft\Framework-->
    <GetReferenceAssemblyPaths
        Condition="'$(TargetFrameworkMoniker)' != '' and ('$(_TargetFrameworkDirectories)' == '' or '$(_FullFrameworkReferenceAssemblyPaths)' == '')"
        TargetFrameworkMoniker="$(TargetFrameworkMoniker)"
        RootPath="$(TargetFrameworkRootPath)"
        TargetFrameworkFallbackSearchPaths="$(TargetFrameworkFallbackSearchPaths)"
        BypassFrameworkInstallChecks="$(BypassFrameworkInstallChecks)"
        >
      <Output TaskParameter="ReferenceAssemblyPaths" PropertyName="_TargetFrameworkDirectories"/>
      <Output TaskParameter="FullFrameworkReferenceAssemblyPaths" PropertyName="_FullFrameworkReferenceAssemblyPaths"/>
      <Output TaskParameter="TargetFrameworkMonikerDisplayName" PropertyName="TargetFrameworkMonikerDisplayName" Condition="'$(TargetFrameworkMonikerDisplayName)' == ''"/>
    </GetReferenceAssemblyPaths>

    ...

</Target>

我知道像$(TargetFrameworkMoniker)这样的部分是变量。为了确定这些计算结果,我进入Visual,打开csproj文件,转到"Build >Pre命令行“并输入echo "TargetFrameworkMoniker" = "$(TargetFrameworkMoniker)"。然后,我保存并构建项目,忽略错误,而转到窗口"Output“,查看这些变量的计算结果。我对每个变量都这样做。下面是上面相同的代码,但是变量现在是它们实际评估的内容(对我而言):

代码语言:javascript
运行
复制
<Target
      Name="GetReferenceAssemblyPaths"
      DependsOnTargets="$(GetReferenceAssemblyPathsDependsOn);GetFrameworkPaths">

    ...

    <!-- By default if there is no root path set then the task will assume it is Program Files\Reference Assemblies\Microsoft\Framework-->
    <GetReferenceAssemblyPaths
        Condition="'.NETFramework,Version=v4.8' != '' and ('' == '' or '' == '')"
        TargetFrameworkMoniker=".NETFramework,Version=v4.8"
        RootPath=""
        TargetFrameworkFallbackSearchPaths=""
        BypassFrameworkInstallChecks=""
        >
      <Output TaskParameter="ReferenceAssemblyPaths" PropertyName="_TargetFrameworkDirectories"/>
      <Output TaskParameter="FullFrameworkReferenceAssemblyPaths" PropertyName="_FullFrameworkReferenceAssemblyPaths"/>
      <Output TaskParameter="TargetFrameworkMonikerDisplayName" PropertyName="TargetFrameworkMonikerDisplayName" Condition="'' == ''"/>
    </GetReferenceAssemblyPaths>

    ...

</Target>

除了".NET Framework4.8“之外,我没有看到任何其他建议,所以我现在不知道如何继续下去。

票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70098410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档