【问题标题】:Error building a Release version when referencing a Web Service引用 Web 服务时构建发布版本时出错
【发布时间】:2012-05-31 20:23:47
【问题描述】:

如果我创建一个新的 Mono Android 应用程序,然后将解决方案的 Active Config 更改为 Release,然后右键单击并选择构建,应用程序构建正常。

如果我随后按照this tutorial 添加对http://soatest.parasoft.com/calculator.wsdl 的网络引用,那么如果我再次构建我会收到错误:

错误 1 ​​无法加载文件或程序集 'mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' 或其依赖项之一。强名称验证失败。 (HRESULT 异常:0x8013141A)
C:\Users\Administrator\Documents\Visual Studio 2010\Projects\MonoAndroidApplication3\MonoAndroidApplication3\SGEN

如果我将 Active 配置改回 Debug 然后构建,则解决方案构建良好。 但是,在引用任何 Web 服务时,我根本无法构建发布配置。这给我带来了问题,因为我无法部署我的应用程序的发布版本。

我尝试过使用 VS2010 和 MonoDevelop 2.6 Beta 2,都报同样的错误。

【问题讨论】:

    标签: xamarin.android


    【解决方案1】:

    我无法弄清楚为什么会发生这种情况,但您可以通过转到项目属性的“构建”选项卡并关闭“生成序列化程序集”来解决它。

    【讨论】:

    • 感谢您的回复,关闭生成序列化程序集确实让我构建了应用程序的发布版本。但是,当使用发布版本时,Web 服务调用给了我错误。即使关闭了生成序列化程序集,调试版本仍然可以正常工作。在我的测试应用程序中使用soatest.parasoft.com/calculator.wsdl 调用服务时出现错误:Systen.Net.WebException: Error: NameResolutionFailure at System.Net.HttpWebRequest.EndGetRequestStream(IAsyncResult asyncResult) [0x00000] in :0跨度>
    • 转到您的项目属性,添加 Android Manifest,并指定您需要 INTERNET 权限。这是在Debug模式下默认添加以支持调试,但如果您的应用程序确实需要使用互联网,则需要在Release模式下手动添加。
    • 谢谢,成功了,我的 Release 版本现在可以在我的手机上运行了!
    • 我在使用 MonoDevelop 时遇到了同样的问题。我在文件的 Release 部分添加了以下行:Off
    【解决方案2】:

    生成序列化程序集阻止您构建。

    我在选择释放目标时得到了 NameResolutionFailure,因为我没有在应用程序的选项中设置 INTERNET 权限:

    1. 右键单击您的项目
    2. 选择选项
    3. 选择左侧项目“Mono for Android Application”
    4. 通过选中旁边的复选标记设置所需权限:“INTERNET”。

    这似乎对调试版本有效,因为它用于将调试器连接到应用程序。

    您必须在 Release 构建配置中自行设置。

    【讨论】:

      猜你喜欢
      • 2011-09-03
      • 1970-01-01
      • 2011-07-10
      • 1970-01-01
      • 1970-01-01
      • 2020-06-20
      • 2019-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多