C# 从.Net Framework 4.7升级到4.8后,使用MSBuild发布项目时出错

C# 从.Net Framework 4.7升级到4.8后,使用MSBuild发布项目时出错,c#,asp.net,.net,msbuild,.net-4.8,C#,Asp.net,.net,Msbuild,.net 4.8,我正在将Asp.Net网站项目从4.7升级到.NETFramework 4.8。升级后,项目从VisualStudio成功生成,并且在本地计算机上运行时没有任何问题。使用MSBuild发布同一项目时,出现以下错误: (AspNetMerge目标)-> aspnet\u merge:发生错误:合并程序集时出错:不允许未解析的程序集引用:System.Net.Http。 使用的MsBuild命令是: msbuild.exe“D:\Enterprise\Enterprise.sln”/nologo/

我正在将Asp.Net网站项目从4.7升级到.NETFramework 4.8。升级后,项目从VisualStudio成功生成,并且在本地计算机上运行时没有任何问题。使用MSBuild发布同一项目时,出现以下错误:

(AspNetMerge目标)->
aspnet\u merge:发生错误:合并程序集时出错:不允许未解析的程序集引用:System.Net.Http。

使用的MsBuild命令是:
msbuild.exe“D:\Enterprise\Enterprise.sln”/nologo/nr:false/t:Build/p:DeployOnBuild=true/p:Configuration=Release/p:PublishProfile=VSO

此处引用的VSO.pubxml文件具有以下配置:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>FileSystem</WebPublishMethod>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish />
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <publishUrl>..\..\Publish\Web</publishUrl>
    <DeleteExistingFiles>False</DeleteExistingFiles>
    <PrecompileBeforePublish>True</PrecompileBeforePublish>
    <EnableUpdateable>False</EnableUpdateable>
    <DebugSymbols>False</DebugSymbols>
    <WDPMergeOption>MergeAllOutputsToASingleAssembly</WDPMergeOption>
    <UseMerge>True</UseMerge>
    <SingleAssemblyName>MergedAssembly</SingleAssemblyName>
  </PropertyGroup>
</Project>

文件系统
释放
任何CPU
真的
假的
..\..\Publish\Web
假的
真的
假的
假的
合并AllOutput到单个程序集
真的
合并装配
您可以看到
设置为
true
,这将把输出合并到单个程序集。
我试图完全禁用merge,这解决了这个问题,但我希望保持merge选项处于启用状态,因为它在之前的发布管道中是以这种方式配置的。任何帮助都将不胜感激。

System.Net.Http
是一个给普通开发人员带来很多问题的库。在NuGet软件包更新之后或者在瞄准新的.NET框架之后,它有许多令人难以置信的问题

不幸的是,没有解决所有这些问题的灵丹妙药。这取决于导致这一错误的许多因素

最有可能导致此类错误的原因是什么 这很可能是配置文件的
部分。project.NET Framework重定目标后,存在无法使用旧版本的依赖程序集解析的NuGet包

你能试试什么 使用以下工作流在新的.NET Framework版本上重定项目的目标:

  • 更改项目/解决方案中的.NET Framework版本
  • 更新NuGet软件包(在软件包管理器控制台中:
    更新软件包
  • 重新安装NuGet软件包(在软件包管理器控制台中:
    更新软件包-重新安装
  • 重建项目/解决方案
  • 检查
    警告
    窗口中的一些记录,如
    发现同一从属程序集的不同版本之间存在冲突
    。双击这些记录并在每个弹出窗口上按Yes
  • 重新生成项目/解决方案

  • 现在,您的项目已正确地重定向到新的.NET Framework版本,并且所有依赖项都已更新。错误必须消失。

    我已通过安装Microsoft.Aspnet.Merge NuGet软件包解决了此问题(别忘了单击预览复选框)


    您引用的system.net.http版本是什么?您的项目中是否有对system.net.http的nuget引用?这是唯一适合我的解决方案。我已将一个web项目转换为dotnet 4.7.2,构建将在合并时失败,并且无法解析对System.Core的引用。我已将所有项目更新为4.7.2,解决了所有程序集冲突,清除了缓存,重新安装了所有nuget软件包。。。一切都无济于事。终于尝试了你的方法(感谢“包含预发布”提示)。我真的很想知道你在哪里找到这个!也许有更多关于这个主题的信息!不过还是谢谢你。