2011-02-24 5 views
3

나는 모든 NET 프레임 워크와 응용 프로그램이 호환되도록해야합니다 또한 2, 3, 3.5, 4공존 및 WPF

내가 응용 프로그램을 개발하려는이있는 PC로 수행 할 때 오직 프레임 워크 2가 설치되어 있습니다. GUI는 Windows Forms로 만들어졌지만, PC가 프레임 워크 3 이상을 사용하고 있다면 GUI는 WPF로 끝납니다.


NET 2 및 Windows Forms를 사용하여 응용 프로그램을 개발했습니다. 이 응용 프로그램을 NET 3, 4 및 3.5로 테스트했으며 제대로 작동합니다.

최근 데이터 바인딩 패러다임을 사용하여 인터페이스를 개발했기 때문에 GUI를 WPF로 업데이트했습니다. 이러한 변경은 간단했습니다. 이 선택을 통해 Windows Forms에서 WPF로 쉽게 전환 할 수있었습니다.


나는이 가이드를 사용하는 프레임 워크를 수행 할 (윈도우 폼에 대한) 하나의 응용 프로그램을 작성하는 문제를 극복 : http://msdn.microsoft.com/it-it/library/w671swch%28v=VS.100%29.aspx.

이제 PC가 NET 3.5 이상이면 WPF로 만든 GUI를 사용하여 응용 프로그램을 설치했는지 확인하고 싶습니다.

http://msdn.microsoft.com/it-it/library/433ysdt1.aspx과 같은 가이드 라인을 따르려고했으나 실패했습니다. 진행 방법에 대해 매우 혼란 스럽습니다.


응용 프로그램은 PC에 아무 것도 설치하지 않아야합니다.

미리 감사드립니다. Talao.

+0

아야. 이것들은 꽤 번거로운 요구 사항입니다 ... – Paddy

+0

당신의 업데이 트를 감안할 때, 당신이 시도한 것과 당신의 특정 문제가 게시하는 가치가있을 수 있습니다. 원래의 질문은 매우 일반적이었습니다. 이제는 매우 구체적으로 보이지만 답변을 제공하는 데 필요한 세부 사항이 부족합니다. –

+0

업데이트가 있으면 동의해야합니다. 그것을 .net 2.0 이상의 응용 프로그램으로 빌드하십시오. 또한 .net 4.0 이상으로 별도의 응용 프로그램을 빌드하십시오. 단일 응용 프로그램에서 두 가지를 모두 지원하려면 개발할 가치가 없습니다. MVC/MVP를 사용하면 가능하지만 WinForms와 WPF가 다르다는 점에 동의합니다. 따라서 뷰에는 테스트해야하는 코드가 포함될 것입니다. – JonWillis

답변

1

제가 생각할 수있는 가장 간단한 해결책은 MVC/MVP 패턴을 사용하여 GUI를 개발하는 것입니다. 보기는 Winform 양식 또는 WPF 양식입니다. 그런 다음 각보기를 WinForm 양식 및 WPF 양식으로 개발했습니다.

응용 프로그램을 시작할 때 Environment.Version을 호출하여 프레임 워크 버전을 가져옵니다. 이 버전을 기반으로 WPF 또는 Winform보기로로드하도록 응용 프로그램에 지시 할 수 있습니다. 3.5 프레임 워크보다 크거나 같으면 WPF를 사용하고 그렇지 않으면 WinForm 뷰를 사용하십시오.

다른 접근법은 WinForms를 WPF 컨트롤 안에 넣을 수있는 호환 컨트롤을 사용하지만 WPF 컨트롤을 잃어 버릴 수 있습니다. 따라서 대부분의 WPF 응용 프로그램에 몇 가지 WinForm 컨트롤을 가져 오는 것이 좋습니다.

+0

그래픽 뷰티와 같은 WPF 기능을 활용하기 위해 WPF를 사용하지 않는 한 솔직히이 작업을 수행하면 아무런 이점이 없습니다. 한 가지 이점은 MVC/MVP 패턴이없는 MVVM과의 데이터 바인딩입니다. 적어도 뷰를 생성하는 측면에서 워크로드를 두 배로하는 것을 의미합니다. 최소한 비즈니스 로직은 분리되어 있으며 뷰를 디자인하기위한 드래그/드롭 연습이어야합니다. – JonWillis

+0

그것은 또한 당신이 .net 2.0에 존재하지 않는 비즈니스 로직에서 어떤 언어 기능도 사용할 수 없다는 것을 의미합니다. – Paddy

+0

Very true! 더 많은 .net 프레임 워크 버전을 지원하려면 가장 낮은 버전 번호로 제한하십시오. 보기와 같은 특별한 경우를 제외하고는 각 버전에 대한 코드를 작성해야합니다. – JonWillis

3

응용 프로그램이 모든 버전과 호환되어야한다면 실제로 말하는 것은 .NET 2 응용 프로그램이어야합니다. .NET 3 (이상) 응용 프로그램은 시작시 필요한 어셈블리를 찾지 못하기 때문에 다른 방법으로는 작동하지 않습니다.

그렇다면 .NET 3은 .NET 2에 기반하므로 프레임 워크를 사용할 수있는 경우 .NET 3 어셈블리를 동적으로로드 할 수있는 방법을 찾을 수있을 것입니다. 그래도 예쁜 것은 아니지.

그러나 이것을 관리하더라도 응용 프로그램의 기본 요소는 WinForms 및 WPF에서 매우 다르므로 코드을 다시 작성하고 있음을 알 수 있습니다. 단순히 MVC 애플리케이션의 뷰를 대체하는 것만으로는 충분하지 않을 수 있습니다 (정말로 복잡한 뷰를 기꺼이 작성하지 않는 한 ...).

제 제안은 두 가지 응용 프로그램을 작성하거나 환경 설정으로 .NET 4에 작성하고 설치 프로그램의 일부로 프레임 워크를 포함하는 것입니다. 이것은 상용 응용 프로그램이라고 가정하면 WinForms를 사용하거나 그냥 사용하는 것입니다. 개발 오버 헤드가 가치가 있다고 생각할 수 없습니다.

+0

불행히도 응용 프로그램은 PC에 아무 것도 설치하지 말고 거기에있는 것을 사용하십시오. – McTALAO

0

사용자 인터페이스별로 하나씩 여러 개의 응용 프로그램을 만들 것을 고려 했습니까? 비즈니스 로직과 사용자 인터페이스가 분리되어 있다면, 이것보다 문제가 많지는 않습니다.

그런 다음 설치 관리자는 대상 시스템을 분석하고 Winforms 또는 WPF가 설치 될 실행 파일을 결정합니다.

+0

이상적으로 응용 프로그램은 WPF로 이동할 준비가되어 있어야합니다. 응용 프로그램을 설치 한 후 사용자는 Framework 3.5 이상을 설치할 수 있습니다.이 경우 응용 프로그램은 WPF로 만든 GUI로 이동해야합니다. – McTALAO