VS添加NetStandard dll引用报错instance object was created as immutable
向.NET Core应用添加NetStandard类库DLL报"instance object was created as immutable"错误解决方法
向.NET Core应用程序中直接添加NetStandard类库的DLL文件时,Visual Studio抛出instance object was created as immutable错误、拒绝添加引用,可按以下方案排查解决:
- 优先替换为项目引用:如果持有NetStandard类库的源码,直接在解决方案内通过「添加项目引用」的方式关联类库项目,不要直接引用编译输出的DLL文件。Visual Studio对项目引用会自动做目标框架兼容性校验和元数据处理,不会触发不可变对象修改的内部异常。
- 校验目标框架兼容性:如果必须引用独立DLL文件(无源码仅持有编译产物),先确认框架版本匹配:
- .NET Core 2.1 最高兼容 NetStandard 2.0
- .NET Core 3.1 最高兼容 NetStandard 2.1
版本不匹配时,VS引用校验逻辑会尝试修改只读的程序集元数据对象,直接触发该不可变错误。
- 清理损坏的VS缓存:关闭所有Visual Studio进程,删除解决方案根目录下的隐藏
.vs文件夹,同时删除所有项目下的bin、obj目录,重启VS后再尝试添加引用,多数缓存导致的元数据解析异常可通过该方式修复。 - 手动编辑项目文件绕过UI校验:如果UI添加始终报错,可以直接编辑csproj项目文件添加引用,跳过VS引用添加界面的bug逻辑。在项目文件的
<ItemGroup>节点下添加如下配置,替换为实际的DLL路径和类库名:
<Reference Include="NetStandard类库名"> <HintPath>..\lib\YourClassLibrary.dll</HintPath> </Reference>
保存后执行dotnet restore命令,重新生成项目即可正常识别引用。
注意:如果引用的是NetStandard 1.x版本的类库,建议先将类库升级到NetStandard 2.0及以上版本再引用,1.x版本的依赖解析逻辑和.NET Core 3.0+版本兼容性极差,极易触发这类元数据处理错误。
内容的提问来源于stack exchange,提问作者Tod
相关产品推荐
相关产品推荐

