2016-07-27 3 views
1

VS2015 (업데이트 3 포함)를 사용하여 "빈 응용 프로그램 (유니버설 윈도우)"을 만들었습니다.UWP : DLL에서 페이지로드

그런 다음 동일한 솔루션에 "클래스 라이브러리 (유니버설 윈도우)"프로젝트를 추가하고 "빈 응용 프로그램"프로젝트의 MainPage.xaml을 "클래스 라이브러리"프로젝트의 "보기"폴더로 이동했습니다. XAML과 CS 모두에서 네임 스페이스를 변경하여 "보기"포함).

마지막으로 "빈 응용 프로그램"프로젝트에서 "클래스 라이브러리"프로젝트를 참조하고 "Views"네임 스페이스에 "using"을 app.xaml.cs에 추가하고 "빈 응용 프로그램"프로젝트를 실행하려고했습니다. .

System.AccessViolationException : "보호 된 메모리를 읽거나 쓰려고 시도했습니다. 종종 다른 메모리가 손상되었음을 나타냅니다."

"빈 응용 프로그램"프로젝트와 "클래스 라이브러리"프로젝트 모두 대상 버전이 "10.0 (10586)"이고 최소 버전이 "10.0 (10240)"인 Universal Windows를 대상으로합니다. 두 프로젝트는 PRISM은 물론 ".NET Framework 4.5", "ASP.NET Core 1.0", "Windows 8", "Windows Phone 8.1", "Windows Phone Silverlight 8", "Xamarin .Android ","Xamarin.iOS "및"Xamarin.iOS (Classic) "- Prism.Core에있는 것과 동일한 대상 목록입니다.

허용되지 않는 조치를 취하고 있습니까? 내가 원하는 것은 기능 그룹을 기반으로 별도의 DLL로 내 의견을 무너 뜨릴 수있을 것입니다.

+0

탐색 방법을 표시 할 수 있습니까? 프리즘 사용? – Bart

+0

@Bart, 아직 PRISM을 사용하지 않음 - 참조로 추가하여 사용하기 시작할 수 있습니다. 시작으로 변경하는 경우 app.xaml.cs에 Views 네임 스페이스를 추가하여 기본 시작 (rootFrame.Navigate (typeof (MainPage), e.Arguments)) 코드가 실행되도록합니다. PRISM에 대한 모든 참조를 제거한 후 문제가 지속됩니다. –

답변

0

문제를 재현 할 수있었습니다. 이것은 intresting입니다. 저는 모든 XAML Pages를 DLL로 옮겨서 깨끗한 솔루션을 구축하고 다른 응용 프로그램 계층을 빌드하고 오늘이 질문을 보았습니다. 이것은 나를 위해 붉은 깃발을 일으키기 때문에 문서와이 문제를 해결하는 방법을 찾기 시작했습니다. 연구 3 시간 후, 나는 온라인으로 검색하는 대신 자신이 그것을 할 수있는 방법을 찾아 내 UWP 솔루션에서 내 MainPage에 콘텐츠 컨트롤 만들기와 함께 생각했다.

<Page 
    x:Class="App8.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="using:App8" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d"> 

    <ContentControl x:Name="MainControl" /> 
</Page> 

그리고 이것은 내 코드입니다.

public sealed partial class MainPage : Page 
{ 
    public MainPage() 
    { 
     this.InitializeComponent(); 
     this.Loaded += MainPage_Loaded; 
    } 

    private void MainPage_Loaded(object sender, RoutedEventArgs e) 
    { 
     MainControl.Content = new ClassLibrary1.MainPage(); 
    } 
}