c# - 在发布模式下构建以 xamarin.forms 编码的 UWP 应用会导致内部编译器错误:指定的转换无效
问题描述
我的代码中发生了一些非常烦人的事情。
在与框架斗争了几个月后,我构建了一个应用程序,Xamarin.Forms
只是发现当我现在完成时,我无法在发布模式下构建我的应用程序以将其部署到商店。
该应用程序在调试模式下运行良好,但在 UWP 项目中无法在发布模式下构建。5 天以来,我一直在努力寻找一种在发布模式下构建我的应用程序的方法。但无论我在所有论坛中看到哪种解决方案以及遇到的 stackoverflow 问题,这个错误都不会闪烁。
当我在发布模式下构建应用程序时 IDE 显示的错误是:
内部编译器错误:指定的转换无效。
它没有告诉我更多的信息。IDE 没有给我任何额外的错误消息。几天来,我一直在努力应用我在网上找到的与此类似的解决方案,但没有任何效果。
- 我已经更新了 IDE
- 更新了所有包
- 已删除 UWP 项目上的自定义渲染器
- 我浏览了代码的每一部分,以找到我可能在哪里做出了糟糕的演员表
我尝试了所有可以在网上找到的方法,但没有任何效果。
我通常不会在论坛上提问,除非它变得至关重要。如果我没有得到任何解决方案,我将被迫删除这个项目并浪费我所做的几个月的编码,并永远放弃 Xamarin 并转向在工具方面有更好声誉的 Flutter。
解决方案
首先,请不要发这么多。我们理解您对此感到沮丧,但 Caps Lock 无助于让我们更加认真地对待它。我也知道 Flutter 是新的“镇上酷人”,但它也有一系列问题。跨平台开发并不简单,Flutter 确实只支持两个平台,而 Xamarin.Forms 覆盖面更广,必然会带来更多的复杂性。
我的第一个建议是在 Visual Studio 选项中更详细地更改构建输出,因为这可能会发现这里的实际问题。当谈到发布模式时,问题通常来自用于反射的类型,但编译器看不到已使用,因此将它们丢弃。然而,通常这些错误会在运行时出现。在您的情况下,我会建议以下几点:
- 首先也是最重要的 - 尝试删除项目
bin
中obj
的文件夹。这可能会有所帮助,因为它们有时会与较旧的库混在一起并产生冲突。 - 如果您一直在使用 Git 之类的源代码控制进行构建(我希望您这样做了),我建议您回到一些早期提交,然后尝试在那里构建发布模式。如果项目构建,请跳转到一些较新的提交并重试。如果没有,请尝试更早的提交。这样做的目的是查明何时引入了错误,这将极大地帮助您搜索问题的根源。
- 如果您没有使用任何源代码管理 - 请记住下次再使用。但是,这一次您将不得不以“旧方式”进行操作。创建一个新项目,并从原始项目中慢慢减少代码,尝试在每个步骤中进行发布构建。希望这将使您能够找到罪魁祸首代码,然后您将能够在原始项目中修复它
您绝对可以在此处发布您的发现,我们将很乐意为您提供进一步的帮助 - 比如在您缩小范围后在代码文件中查明实际问题。
我怀疑您的问题来自自动生成的 XAML,所以一定要确保将注意力集中在.xaml
一个一个添加它们的文件上。
推荐阅读
- google-tag-manager - 执行后阻塞GTM而不刷新页面
- riscv - RISC-V中如何使用mstatus.FS降低上下文保存和恢复浮动寄存器的成本
- c# - 如何使用 C# 或 cmd 将程序添加到控制面板程序中
- c# - 我有一个要在处理父表单的面板时销毁的表单,我该怎么做?
- c# - 在 XDocument 中加载时,XML 标头被删除
- node.js - 抓取后如何将整个数据作为 json 文件获取
- nginx - RTMP中如何限制每个流的输出带宽
- three.js - 用threejs计算两个向量之间0-PI * 2范围内的角度
- html - 浏览器将字符 :3333 添加到一个特定的 HTML 属性值
- c++ - 在 android studio 中添加静态库 .lib 和 .a 文件