Visual Studio - 发布时出现 aspnet_merge.exe 错误

问题描述

我在 VS 2015、2017 和 2019 上遇到过这个问题,所以我相信这不是我的设置所特有的。

aspnet_merge(0,0): Error occurred: An error occurred when merging assemblies: Object reference not set to an instance of an object

这会在以下运行后发生:

C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\aspnet_merge.exe (project location)\TempPackageBuildDir\obj\Debug\AspnetCompileMerge\TempBuildDir -o (name of assembly) -copyattrs (repository location)\..\..\TempPackageBuildDir\obj\Debug\AssemblyInfo\AssemblyInfo.dll -a -debug

我可以在另一台机器上运行这个完全相同的命令,它运行没有问题。我之前已经能够通过将 website.publishproj 中的输出目录明确设置为

解决这个问题
<PropertyGroup>
    <OutputPath>$(MSBuildProjectDirectory)\..\..\TempPackageBuildDir\</OutputPath>
</PropertyGroup>

但几天后问题又回来了。我的机器上缓存了一些不好的东西,我没有足够的知识来知道它是什么。

任何见解将不胜感激,

解决方法

其实,这个问题与你的项目和VS环境有关。请尝试以下步骤:

1) clean all nuget caches 或直接删除 C:\Users\xxx\.nuget\packages

关闭,删除 .vs 隐藏文件夹、binobj 文件夹。

另外,删除C:\Users\<user>\AppData\Local\Temp\Temporary ASP.NET Files

下的所有文件

然后,重启VS,在Tools-->Nuget Package Manager-->Package下运行update-package -reinstall经理控制台

如果您引用了任何程序集 dll,请先将其删除,然后再重新添加。

确保所有 Merge 的 DLL 都没有损坏。

2)工具-->导入和导出设置-->重置所有设置下重置所有vs设置强>

3) 禁用任何第三方安装的扩展程序以检查是否有一个导致该问题。

4) repair vs 来自 vs_installer

此外web.config 文件上的 check whether you have these。如果有,请删除它们。