最近接触了CRM PCF的开发,但是将代码拉到本地后一直无法打包,组内无法解决后联系微软工程师帮助,在微软工程师的帮助下顺利解决。
具体报错信息如下
微软工程师回复如下:
Case总结如下。
问题
本地环境无法使用 msbuild 来构建 PCF 应用,报错:
System.NullReferenceException: Object reference not set to an instance of an object.
原因
这是 Nuget 本身的一个 known issue 导致的,其实和 D365 关联不大,当您的 nuget 配置中的 soirce 包含本地源时,nuget 的 protocolVersion=“3” 和其不兼容,具体您可以参考 stackoverflow 和 nuget 开源社区的 issue
- https://stackoverflow.com/questions/33269430/nuget-object-reference-not-set-to-an-instance-of-an-object
- https://github.com/NuGet/Home/issues/3537
建议
- 打开 nuget 配置文件(windows 下一般目录在 %appdata%\NuGet\NuGet.Config),找到本地 nuget source,去除 protocolVersion=“3”,比如修改前是这样 ,修改后应该改为
- 由于这并不是 D365 产品本身的问题,所以我们对此修复并不提供支持,后续如果您比较关注这个 known issue 何时修复,可以继续跟进我在原因中发的 Github 的 issue 链接来检查开源社区何时对此进行支持