Xamarin Android中的“LinkAssemblies”任务意外失败

时间:2016-05-20 07:30:09

标签: xamarin.android

我正在尝试使用REST API发布数据。该应用程序过去运行完美,但现在我已添加代码来执行POST,我收到一个新错误。是否有人能够帮助解释出现了什么问题,并提出一个可以让我成功完成POST请求的替代方案?

以下是我尝试使用Release配置中启用的链接器构建应用程序时出现的错误:

.hover-to-show span { 
    opacity: 0;
   position: absolute;
  line-height: 20px;
    transition: all .2s ease-in-out;
}

.hover-to-show {
  position: relative;
  display: block;
  height: 0;
  }

.hover-to-show-link:hover .hover-to-show span{
  -webkit-animation: show 2s forwards; /* Safari 4+ */
  -moz-animation:    show 2s forwards; /* Fx 5+ */
  -o-animation:      show 2s forwards; /* Opera 12+ */
  animation:         show 2s forwards; /* IE 10+, Fx 29+ */
}

.hover-to-show-link:hover .hover-to-show {
  -webkit-animation: grow 2s forwards; /* Safari 4+ */
  -moz-animation:    grow 2s forwards; /* Fx 5+ */
  -o-animation:      grow 2s forwards; /* Opera 12+ */
  animation:         grow 2s forwards; /* IE 10+, Fx 29+ */
}

@-webkit-keyframes show {
  0%   { opacity: 0; }
  100% { opacity: 1; }
}
@-moz-keyframes show {
  0%   { opacity: 0; }
  100% { opacity: 1; }
}
@-o-keyframes show {
  0%   { opacity: 0; }
  100% { opacity: 1; }
}
@keyframes show {
  0%   { opacity: 0; }
  100% { opacity: 1; }
}

@-webkit-keyframes grow {
  0%   { height: 0; }
  100% { height: 20px; }
}
@-moz-keyframes grow {
  0%   { height: 0; }
  100% { height: 20px; }
}
@-o-keyframes grow {
  0%   { height: 0; }
  100% { height: 20px; }
}
@keyframes grow {
  0%   { height: 0; }
  100% { height: 20px; }
}

1 个答案:

答案 0 :(得分:2)

您可能在Xamarin.Android应用中添加了对桌面.NET程序集的引用。 Xamarin.Android配置文件中不提供System.Windows.Forms命名空间。 (即使在禁用链接时应用程序构建成功,理论上它仍会在运行时失败,只要它尝试运行引用System.Windows.Forms的代码命名空间。)

要解决此问题,您需要从Xamarin.Android项目中删除对桌面.NET程序集的引用,并确保针对Xamarin.Android配置文件或支持的PCL配置文件编译所有其他引用的程序集

documentation中所述:

  

Xamarin.Android ABI与为不同配置文件编译的现有程序集兼容。您必须重新编译源代码以生成针对Xamarin.Android配置文件的程序集(就像您需要重新编译源代码以单独定位Silverlight和.NET 3.5一样)。

(可移植类库是此规则的特殊例外。)

如果您当前正在使用System.Windows.Forms命名空间中的类型来执行POST请求,那么您将需要切换到其他类型。例如,System.Net.Http.HttpClient中的PostAsync()方法之一可能效果很好。