나는 현재 자 마린의 복사본을 마스터 분기, 그것을 컴파일 양식 다운로드 후 나는 테스트 프로젝트에 대한 참조로이 컴파일 된 어셈블리를 추가 :소스에서 Xamarin Forms를 컴파일하고 어셈블리를 사용하는 방법은 무엇입니까?
- Xamarin.Forms.Core
- Xamarin.Forms.Platform
- 는 Xamarin.Forms.Xaml
테스트 프로젝트는 Visual Studio 자 마린 양식 프로젝트 템플릿을 사용하여 만든
Xamarin.Forms.Platform.Android 프로젝트의 bin \ debug \ 폴더에서 처음 3 개를, Xamarin.Forms.Xaml bin \ debug 폴더에서 마지막 3 개를 사용했습니다.
테스트 프로젝트를 실행하고 정상적으로 실행되면 기본 생성 코드 "Xamarin Forms에 오신 것을 환영합니다!"에서 레이블을 볼 수 있습니다. 요소 유형 Xamarin.Forms이 아닌 :
System.ArgumentException 내가 응용 프로그램을 실행하면
public partial class App : Application { public App() { InitializeComponent(); MainPage = new NavigationPage(new ContentPage()); } }
, 그것은 나에게 오류를 제공합니다
다음으로, 난 그냥이 같은 MainPage 수정 .View
매개 변수 이름 : 요소
t 이 행에 hrow :
void IVisualElementRenderer.SetElement(VisualElement element)
{
if (!(element is TElement))
throw new ArgumentException("element is not of type " + typeof(TElement), nameof(element));
SetElement((TElement)element);
}
이상한입니다.
요소의 유형은 Xamarin.Forms.NavigationPage
하고 스택 추적
누군가가 컴파일 된 어셈블리와 테스트 프로젝트를 실행 도와 줄 수있다?
업데이트 # 1 :
호출 스택의 두번째 항목이가 NavigationPage
요소에 대한 등록 렌더러 (NavigationPageRenderer
)를 얻을 수 아니라고 보여줍니다 대신에 기본 렌더러 (DefaultRenderer
)를 만드는 것하는 요소의 유형 (NavigationPage
)을 처리 할 수 없으므로 예외가 발생합니다.
따라서 NavigationPage
의 경우 Registrar
에 해당 렌더러 (NavigationPageRenderer
)가 없습니다.
public static IVisualElementRenderer CreateRenderer(VisualElement element)
{
UpdateGlobalContext(element);
IVisualElementRenderer renderer = Registrar.Registered.GetHandler<IVisualElementRenderer>(element.GetType()) ?? new DefaultRenderer();
renderer.SetElement(element);
return renderer;
}
내 느낌은 자 마린 양식을 구축 할 때 약 내가 잘 모르는 것 같아요 빌드 단계가있을 수 있습니다.
그런 다음 어떤 유형입니까? 어떤 OS를 구축하고 있습니까? NuGet의 Xamarin.Forms를 사용하면 코드가 작동합니까? – Cheesebaron
@Cheesebaron 질문에 대한 답변을 편집했습니다. diff를 참조하십시오. – JamesL
저는 Windows 10을 사용 중이며 XAmarin Forms 프로젝트 템플릿 (Android 4.0.3)과 동일한 Android 버전을 타겟팅하고 있습니다. 나는 설정에서 아무것도 변경하지 않았다. 코드는 Nuget의 Xamarin.Forms에서 제대로 작동합니다. – JamesL