首页 > 解决方案 > 在发布模式下构建以 xamarin.forms 编码的 UWP 应用会导致内部编译器错误:指定的转换无效

问题描述

我的代码中发生了一些非常烦人的事情。

在与框架斗争了几个月后,我构建了一个应用程序,Xamarin.Forms只是发现当我现在完成时,我无法在发布模式下构建我的应用程序以将其部署到商店。

该应用程序在调试模式下运行良好,但在 UWP 项目中无法在发布模式下构建。5 天以来,我一直在努力寻找一种在发布模式下构建我的应用程序的方法。但无论我在所有论坛中看到哪种解决方案以及遇到的 stackoverflow 问题,这个错误都不会闪烁。

当我在发布模式下构建应用程序时 IDE 显示的错误是:

内部编译器错误:指定的转换无效。

它没有告诉我更多的信息。IDE 没有给我任何额外的错误消息。几天来,我一直在努力应用我在网上找到的与此类似的解决方案,但没有任何效果。

我尝试了所有可以在网上找到的方法,但没有任何效果。

我通常不会在论坛上提问,除非它变得至关重要。如果我没有得到任何解决方案,我将被迫删除这个项目并浪费我所做的几个月的编码,并永远放弃 Xamarin 并转向在工具方面有更好声誉的 Flutter。

标签: c#deploymentxamarin.formsuwprelease-mode

解决方案


首先,请不要发这么多。我们理解您对此感到沮丧,但 Caps Lock 无助于让我们更加认真地对待它。我也知道 Flutter 是新的“镇上酷人”,但它也有一系列问题。跨平台开发并不简单,Flutter 确实只支持两个平台,而 Xamarin.Forms 覆盖面更广,必然会带来更多的复杂性。

我的第一个建议是在 Visual Studio 选项中更详细地更改构建输出,因为这可能会发现这里的实际问题。当谈到发布模式时,问题通常来自用于反射的类型,但编译器看不到已使用,因此将它们丢弃。然而,通常这些错误会在运行时出现。在您的情况下,我会建议以下几点:

  • 首先也是最重要的 - 尝试删除项目binobj的文件夹。这可能会有所帮助,因为它们有时会与较旧的库混在一起并产生冲突。
  • 如果您一直在使用 Git 之类的源代码控制进行构建(我希望您这样做了),我建议您回到一些早期提交,然后尝试在那里构建发布模式。如果项目构建,请跳转到一些较新的提交并重试。如果没有,请尝试更早的提交。这样做的目的是查明何时引入了错误,这将极大地帮助您搜索问题的根源。
  • 如果您没有使用任何源代码管理 - 请记住下次再使用。但是,这一次您将不得不以“旧方式”进行操作。创建一个新项目,并从原始项目中慢慢减少代码,尝试在每个步骤中进行发布构建。希望这将使您能够找到罪魁祸首代码,然后您将能够在原始项目中修复它

您绝对可以在此处发布您的发现,我们将很乐意为您提供进一步的帮助 - 比如在您缩小范围后在代码文件中查明实际问题。

我怀疑您的问题来自自动生成的 XAML,所以一定要确保将注意力集中在.xaml一个一个添加它们的文件上。


推荐阅读