转Package Reference后项目仍出现Assembly Remapping警告的排查求助
程序集重映射警告排查思路
检查项目文件(.csproj/.vbproj)的隐藏配置
- 搜索项目文件里的
bindingRedirect节点,转换Package Reference后可能残留旧的重映射配置——哪怕删了web.config,项目文件的<PropertyGroup>或<ItemGroup>下也可能还留着相关内容。 - 查找
PackageReference之外的旧引用,比如Reference节点,说不定有没清理干净的旧程序集引用。
- 搜索项目文件里的
清理Visual Studio缓存
- 删除解决方案的
.vs隐藏文件夹,这里存着VS的缓存配置,可能残留旧的映射信息。 - 清理NuGet本地缓存,用命令
dotnet nuget locals all --clear,或者直接在VS的NuGet包管理器里清空缓存。
- 删除解决方案的
排查间接依赖的程序集
- 用
dotnet list package --include-transitive命令查看项目的所有间接依赖,说不定某个依赖包内部自带了程序集重映射配置,触发了警告。 - 对比有警告和无警告的项目的依赖差异,找出可疑的共同依赖包,尝试更新或替换它。
- 用
查看MSBuild详细日志
- 在VS里开启详细编译日志:工具->选项->项目和解决方案->生成并运行,把MSBuild项目生成输出详细程度设为“详细”,编译时查看日志里关于程序集重映射的具体条目,定位触发警告的程序集和来源。
检查解决方案级别的配置文件
- 查看解决方案根目录下的
Directory.Build.props或Directory.Build.targets文件,这些文件会作用于所有项目,可能存在全局的程序集重映射配置。 - 检查
NuGet.Config文件里的特殊配置,会不会导致依赖解析出现异常。
- 查看解决方案根目录下的
内容的提问来源于stack exchange,提问作者Gary Williams
相关产品推荐
相关产品推荐

