首页新闻找找看学习计划

.net core2.2项目生成成功发布失败的问题

0
悬赏园豆:20 [已解决问题] 解决于 2019-05-04 06:13

.net core2.2项目,其引用依赖的其它项目为netstandard2.0,vs2017最新版,相关SDK也安装了。

开发过程中,生成没有问题,dotnet run也正常。但发布失败,提示错误:

C:\Program Files\dotnet\sdk\2.2.106\Sdks\Microsoft.NET.Sdk.Publish\build\netstandard1.0\TransformTargets\Microsoft.NET.Sdk.Publish.TransformFiles.targets(144,5): 错误 MSB4018: “TransformAppSettings”任务意外失败。
System.NullReferenceException: 未将对象引用设置到对象的实例。
在 Microsoft.NET.Sdk.Publish.Tasks.AppSettingsTransform.UpdateDestinationConnectionStringEntries(String destinationAppSettingsFilePath, ITaskItem[] destinationConnectionStrings)
在 Microsoft.NET.Sdk.Publish.Tasks.TransformAppSettings.TransformAppSettingsInternal()
在 Microsoft.NET.Sdk.Publish.Tasks.TransformAppSettings.Execute()
在 Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
在 Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext()

然后新建了两个空项目,一个.netstandard项目,一个.net core的web应用并引用,生成发布成功,系统环境没有问题。

空皮的主页 空皮 | 初学一级 | 园豆:195
提问于:2019-05-03 22:55
< >
分享
最佳答案
0

排查问题:

1、先看了下生成发布过程中的警告提示,就几个加了 Obsolete 的地方,但先把 Obsolete 去掉下,依然发布失败;

2、整个解决方案中的项目(目前生产环境中运行的),之前均为 .netcore2.1 ,之后升级到了core 2.2,然后把其中的部分项目 改为了 netstandard2.0。在解决方案中,再新加了一个core2.2 web的示例项目并引用其它项目(代码逻辑层面并没去引用),然后生成发布成功,问题应该在这个web项目了。

3、笨方法,逐个删除web项目下的程序文件,删除一组文件就发布试一下,删到最后,当删除 appsettings.json 后终于发布成功。看来问题就是这个 appsettings.json 文件了,从新建的实例项目(可以正常发布)中直接把 appsettings.json 复制过来,再次发布,依然失败。这下有点懵逼了。发布配置文件、appsettings.json文件里的内容格式、所有项目的引用包括nuget都检查了一遍,也没发现什么问题。

4、再继续看了下发布失败的提示,发现在 Tasks.AppSettingsTransform.UpdateDestinationConnectionStringEntries(String destinationAppSettingsFilePath, ITaskItem[] destinationConnectionStrings 中提到的 DestinationConnectionStrings,再次查看 PublishProfiles 下的配置文件(.pubxml.user)中有 DestinationConnectionStrings 内容,然后在 appsettings.json 加上 ConnectionStrings 节点 或者 删除 .pubxml.user 文件中的 DestinationConnectionStrings。发布成功。

PS:之前 appsettings.json 中是有 ConnectionStrings 相关配置的节点的,后来项目修改,这个节点就改为了别的名字和结构。好吧,折腾2个多小时,问题算是解决了。

错误提示还是必须认真再认真的看,当时看提示,发现全是 Microsoft. 没看到有自己解决方案中相关程序的提示,所以忽略掉了。并且一直是边做项目,遇到问题针对问题找文档,没系统深入的去学习了解框架相关,很多基础系统的东西很薄弱。

还得继续加油!

空皮 | 初学一级 |园豆:195 | 2019-05-04 06:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册