Xamarin Forms에서 HttpClient (SendAsync)를 사용하여 비디오를 업로드하기위한 진행률 표시기를 만들려고 노력했지만 도움을 요청해야합니다.사용자 정의 HttpContent가 빌드되지 않습니다. - 어셈블리를 사용할 수 없습니다. (mtouch)
업로드 자체가 정상적으로 작동하고 다른 모든 API가 호출되지만 업로드 진행 상황을 추적하기 위해 HttpContent
사용자 지정을 만들려고하면 프로젝트가 더 이상 빌드되지 않습니다.
오류 MT3001 : 어셈블리를 AOT 수 없습니다 '. [...] 아이폰 OS/OBJ/아이폰/디버그/빌드 iphone7.2-10.1.1/엠 터치 캐시/구축/theproject.dll' StreamContent 또는 ByteArrayContent를 사용 (MT3001) (theproject.iOS)
대신 프로젝트 빌드,하지만 난 그것을 진행 상황을 추적하기 위해 노력 얻을 수 없습니다. 나는 희망 올바르게 스트림에 내 바이트의 변환하여이를 사용
public class ProgressableContent : HttpContent
{
private const int defaultBufferSize = 4096;
private Stream content;
private int progress;
public ProgressableContent(Stream content)
{
this.content = content;
}
protected override Task SerializeToStreamAsync(Stream stream, TransportContext context)
{
return Task.Run(async() =>
{
var buffer = new byte[defaultBufferSize];
var size = content.Length;
var uploaded = 0;
using (content) while (true)
{
var length = content.Read(buffer, 0, buffer.Length);
if (length <= 0) break;
uploaded += length;
progress = (int)((float)uploaded/size * 100);
await stream.WriteAsync(buffer, 0, length);
}
});
}
protected override bool TryComputeLength(out long length)
{
length = content.Length;
return true;
}
}
:
//... building httpMessage.
httpMessage.Content = new ProgressableContent(await byteArrayContent.ReadAsStreamAsync());
//...
var response = await _httpClient.SendAsync(httpMessage, Cancellation.Token);
//...
질문 (들) :
코드의 조각은 (이것은 최소한의 예입니다) 어떻게 든 오류가 발생합니까? 이 작업을 수행하는 "더 나은"방법이 있습니까?
모노 터치가 불평하기 때문에 Xamarin.iOS로 태그를 지정하십시오.
어떤 버전의'Xamarin.iOS'를 사용하고 있습니까? 증분 빌드 도움말을 비활성화합니까? Check this this and linked issues : https://bugzilla.xamarin.com/show_bug.cgi?id=43689 – SushiHangover
@SushiHangover Xamarin.iOS 버전. 10.2.0.4 (Xamarin Indie), 증분 빌드를 사용할 수 없습니다. – Mackan