Mac에서 .NET 4.0 응용 프로그램을 기본적으로 실행할 수있는 방법이 있습니까?


11

Mac에서 기본적으로 C # /. NET 4.0 코드를 실행하기 위해 Microsoft에서 지원하는 옵션은 무엇입니까? 예, 모노에 대해서는 알고 있지만 무엇보다 Microsoft보다 뒤떨어집니다. Silverlight는 웹 브라우저에서만 작동합니다. VMWare 유형의 솔루션도 그것을 자르지 않습니다.

Microsoft가 Mac 자체에서 .NET을 지원하지 않는 이유에 대한 반 정식 답변이 있습니까? 그들이 Silverlight 및 / 또는 Mono를 구입하여 신속하게 거기에있을 것 같습니다. 기본 Visual Studio가 필요하지 않습니다. 크로스 컴파일 및 원격 디버깅이 좋습니다.

그 이유는 내가 일할 때 미래에 대한 불확실성이 커져 C # 대신 C ++로 훨씬 더 많은 개발이 이루어지기 때문입니다. 새로운 프로젝트는 C ++을 사용하기로 결정했습니다. Mac (또는 iPad)이 요구 사항이된다면 18-24 개월 후에 "미안하다"고 경영진에게 말하고 싶은 사람은 없습니다. 비록 C ++이 오늘날의 생산성 손실을 의미하더라도 (더 확실하게) 안전한 옵션으로 간주됩니다.


2
누구에 의해 지원됩니까?

왜 MS가 그것을 지원하는지 실제로 걱정합니까? IMO Mac을 대상으로하려는 경우 Apple에서 지원하는 경우 더 중요합니다.
대안

C ++를 사용하는 것은 나쁜 생각이 아닙니다. 이식 가능한 코드 기반을 보유하고 각 플랫폼에서 고유 GUI를 사용할 수 있습니다.
mike30

1
이 게시물을 업데이트하려면 MS가 통지 한 것처럼 보이며 다른 OS에서 .NET을 지원하기 시작하지만 어떻게 수행 될지는 확실하지 않습니다. NOV : nevron.com/products-open-vision.aspx를 사용하여 .NET으로 크로스 플랫폼 응용 프로그램을 만들 수 있습니다 (이 회사에서 일하고 있습니다). 일반적으로 Windows에서 C #으로 코딩 한 다음 Wpf, MAC, Silverlight 및 곧 iOS 및 Android 용으로 컴파일 할 수 있습니다. 이 제품에는 무료 (커뮤니티) 버전이 있으므로 생산성을 희생하고 arcane C ++를 고수 할 필요가 없습니다.
밥 밀라노 노프

답변:


17

Microsoft가 Mac 자체에서 .NET을 지원하지 않는 이유에 대한 반 정식 답변이 있습니까?

가장 좋은 대답은 아마도 Mac에서 .NET 만 "지원"하지 않는 것입니다. .NET을 Mac으로 이식하는 데 수억 달러와 몇 년이 소요됩니다.

일부는 완전히 관리되고 포팅이 필요하지 않지만 대부분은 Win32 API (윈도우, 컨트롤, gdi +, 암호화, Active Directory, COM, 엔터프라이즈 서비스, 장치 액세스, 사운드, 비디오, 코덱, 윈폼 등)의 래퍼입니다. 기타).

이 모든 것들은 백엔드에서 추상화되어 OSX의 동등한 기본 라이브러리로 다시 매핑되어야합니다. 물론 깔끔하고 깔끔한 매핑은 없을 것입니다. 따라서 똑같이 작동하도록 해킹에 해킹을 작성해야합니다.

그런 다음 OSX에서 이러한 API가 취약하고 Apple이 이전 버전과의 호환성에별로 좋지 않은 문제가 있으므로 모든 주요 릴리스 (때로는 작은 릴리스 및 핫픽스)마다 해킹을 다시 실행하여 유지 보수 비용이 많이 듭니다.

기본적으로, 그것은 엄청난 양의 돈이며 어쨌든 소유자가 당신에게 불리한 플랫폼에서 거의 이익을 얻지 못합니다. 또한 사람들이 자신의 플랫폼에서 경쟁 업체로 마이그레이션하는 데 도움을주기 위해 돈을 지출하고 싶지는 않습니다.

따라서 완벽한 크로스 플랫폼 선택이 남아 있습니다.

  • 앞으로도 이식이 필요한 C ++
  • Microsoft 지원을 위해 브라우저에서 Silverlight
  • Mono. .NET의 건전한 하위 집합을 지원하기 위해 노력하지만 Microsoft는 아닙니다.

5
You spend hundreds of millions of dollars and several years porting .NET to the Mac.실례합니다? 그 숫자는 조금 높아 보입니다 ... 모노 프레임 워크 (더 많은 OS를 지원함)가 그렇게 많이 들지 않았다고 확신합니다.
Bobby

1
@Bobby : 그게 내가 생각하는 것입니다. Mono + Silverlight는 대부분의 방식으로 보입니다. 그것에 주류가 적은 물건 (암호화, AD 등)을 위해 P / Invoke 및 / 또는 C ++ / CLI를 추가하면 합리적인 비용으로 꽤 합리적인 솔루션을 얻을 수 있다고 생각합니다. 내 주장은 Microsoft DOES가 사람들이 OSX에 익숙해 지도록 돈을 쓰고 싶어한다는 것입니다. 그렇지 않으면 Windows에서 C # /. NET 사용을 중지합니다.
Ðаn

@Dan : Microsoft는 세상과 호환되기를 원하지 않습니다. 그렇지 않으면 세상이 다른 것을 사용할 수 있습니다. ;)
Bobby

15
Mono 프레임 워크는 완벽하게 테스트되고 문서화되고 지원되는 솔루션이 아닙니다. 오픈 소스에 "충분히 좋은"것과 Microsoft에 기대하는 품질에는 차이가 있습니다. 그들이 사용자가 요구하는 수준으로 그것을하기 위해 수억 달러가 쉽게들 것이다. 투자를 줄이기 위해 할 수있는 일은 .NET 프레임 워크의 인기 있고 이식 가능한 하위 집합을 선택하여 수행하는 것입니다. 그것이 그들이 선택한 것을 "Silverlight"라고 부릅니다.
jpobst

@ jpobst 그러나 아직 MS가 그 일을 한 것처럼 보입니다 ... 그리고 더?
Ðаn

14

아니요. Silverlight는 OS X에서 .Net 의 유일한 Microsoft 옵션입니다. Mono는 생각만큼 "지연"되지 않습니다. 예를 들어 .Net 4.0 및 C # 4를 지원합니다. 그러나 UI 툴킷 (WinForms 및 WPF)은 OS X에서 잘 지원되지 않습니다. Mono는 WPF를 전혀 지원하지 않습니다. 전체 렌더링 엔진을 다시 작성하지 않고서는 Microsoft도 마찬가지였습니다. 그래도 괜찮습니다. 기본 Mac 응용 프로그램을 작성하려면 기본 UI (아마도 MonoMac 사용)를 작성해야합니다.


경영진은 Mono 옵션을 사용하는 경향이별로 없습니다. 그리고 Windows (또는?)와 같은 날에 .NET 4.0을 지원하지 않았습니다.
Ðаn

Silverlight가 이미 WPF와 같은 방식으로 있지 않습니까? 예. Mac 모양과 느낌을 얻으려면 XAML이 달라야합니다.
Ðаn

2
@Dan : 요즘 Mono가 움직이는 방식, Microsoft가 출시 할 때 최신 버전의 .NET 용 앱 개발을 시작하면 Mono는 앱이 출시 될 때까지 동일한 버전을 지원합니다.
아논.

표지 아래 @Dan SL과 WPF가 가능한 한 병합하려고합니다. 기술적 인 차이가 있지만 기본 개념은 플랫폼 간입니다.
Aaron McIver

6
회사 경영진이 Mono를 사용하지 않으려는 경우 기존 C # 4.0으로 작성된 데스크톱 응용 프로그램을 그렇게 간단하게 만들 수 없습니다.
Ramhound

5

아니요. 모노는 최선의 선택입니다.

DotGNU와 같은 다른 오픈 소스 프로젝트도 도움이 될 수 있습니다. http://www.gnu.org/software/dotgnu/ 그러나 이들 중 어느 것도 MSFT를 지원하지 않습니다.


4

Silverlight는 브라우저 만이 아닙니다 . 버전 3 OOB 가 존재하고 Microsoft 지원 플랫폼이 필수 인 경우 취할 경로입니다.

Mono는 지연 될 수 있지만 생각할 수있는 것처럼 .NET 스택에서 제거되지는 않으며 실행 가능한 옵션으로 캐스트해서는 안됩니다.

Microsoft가 전체 .NET 스택을 구현하지 않는 이유에 대해; ROI.


그러나 Silverlight와 너무 가까워 보이는 것처럼 보입니다. 왜 일을 끝내지 않겠습니까? 이는 컴파일러, CLR 등을 모노 리버스 엔지니어링하는 것보다 모든 사람에게 훨씬 더 좋아 보일 것입니다.
Ðаn

1
SL은 전체 .NET 스택이 아닙니다. SL 런타임과 전체 .NET 스택은 완전히 다른 동물입니다.
Aaron McIver

예,하지만 SL에서 제안한대로 OOB와 같은 작업을 이미 수행 할 수 있으므로 .NET 스택의 나머지 (1 / 3 ~ 40 %?)를 이식 하지 않는 이유 는 무엇입니까? 아니면 SL은 플래시를 죽이려는 시도에 지나지 않을까요?
Ðаn

@Dan 기업이 클라우드로 물건을 밀고있을 때 ... 마지막으로해야 할 일은 클라우드에서 실행할 수없는 스택을 포팅하는 것입니다. SL은 여러 브라우저에서 실행될 수 있습니다. 당신은 구글과 같은 다른 사람들과 논쟁 할 수 있습니다 브라우저 내에서 작업에 대한 추진은 실제입니다. 그렇다면 지금이 시대에 널리 퍼진 가상화와 함께 시장 점유율이 10 % 미만인 OS에 전체 스택을 이식하기로 선택한 이유는 무엇입니까?
Aaron McIver

Microsoft는 (아마도) 오늘날 C # 및 .NET을 통해 최고의 개발 환경을 보유하고 있습니다. 그러나 Mac / iPad / cloud 등을 둘러싼 불확실성 때문에 저와 같은 회사는 점점 멀어지고 있습니다. C ++가 훨씬 안전 해 보입니다.
Ðаn

3

Microsoft의 이익의 대부분은 Windows와 Office의 두 제품에서 비롯됩니다. 플랫폼 간 호환성으로 인해 Windows가 손상 될 수 있습니다.

크로스 플랫폼을 실행하는 동일한 코드를 실제로 원한다면 웹 앱을 작성하십시오. 그래도 들리는 것처럼 들리지 않습니다. "경우에 따라"가 좋은 이유는 아닙니다. 스코프 크립입니다.

16 개월 후에 Mac OS X 또는 iOS를 대상으로하기로 결정하더라도 기존 C ++ 코드를 가져 와서 좋은 (또는 기능적인) 기본 앱으로 바꿀 수 있다고 생각하십니까? 전체 화면 게임을하고 있지 않다면 대답은 '아니요'입니다.

C #으로 시간을 절약하고 Mac으로 이동하기로 결정한 경우 Objective-C 및 Cocoa를 사용하여 Mac 방식으로 다시 작성하십시오.


1
"경우에 따라서"는 현실이다; C ++에 더 안전한 옵션이있을 때 관리에 "oops"를 알리려는 사람은 없습니다.
Ðаn

1
인터페이스 코드가 제대로 분리되어 있다고 가정하면 C ++ 코드를 Mac으로보다 쉽게 ​​옮길 수 있습니다. Cocoa를 사용하여 Objective-C에서 인터페이스를 다시 작성하고 나머지에 연결하면 많은 작업이 완료됩니다.
David Thornley

@David : 따라서이 질문의 문제는 더 많은 C ++, (많은) 적은 C #입니다. 나는 (정말로) C #을 좋아한다!
Ðаn

여기 교차 플랫폼 문제는 많은 사람들이 여전히 Java를 사용하고 C #으로 이동하지 않는 이유입니다.
Brian Knoblauch

1

Microsoft가 Mac 자체에서 .NET을 지원하지 않는 이유에 대한 반 정식 답변이 있습니까?

MS가 보물 코딩에 소비하는 것을 정당화하는 시장은 어디에 있습니까? 이를 위해서는 심각한 수백만 달러의 급여를 인하해야합니다. 수정 및 업데이트와 함께 진행중인 프로세스

그리고 무엇을 위해? 자랑 권리? 그들이 얻는 것은 사람들이 Windows for Apple을 버리고 여전히 앱을 실행할 수있는 능력입니다.

이 일로 누군가 이익을 얻으려면 애플이 될 것입니다. 사람들이 자신의 플랫폼으로 쉽게 전환하고 개발자 (DEVELOPERS DEVELOPERS)가 코드를 작성할 수 있도록합니다. 그러나 당신은 SJ가 쓰레기를 준다고 생각합니까? 그들은 오히려 i 를 붙잡을 새로운 물건을 발명하고 싶었습니다. 게다가 대부분의 프레임 워크는 OS이며 CLR 사양은 누구나 자유롭게 구현할 수 있습니다. 더러운 NDA를 붙일 수는 없습니다.


"Microsoft에 포함 된 기능"의 일부는 사람들이 Windows에서 최고의 도구를 사용하도록 유지하는 것입니다. C # /. NET은 사내 앱으로 강등 될 것입니다. 수년 동안 C #을 사용해온 개발자는 C ++을 다시 작성하고 있습니다. 비용은 이미 Silverlight 및 / 또는 Mono와 함께 2/3 정도 인 것 같습니다.
Ðаn

모노는 오픈 소스 플랫폼이며 .NET의 소스가 릴리스되었지만 .NET Framework는 오픈 소스가 아닙니다. Microsoft는 여러 가지 이유로 Mono를 구입할 수 없습니다. 가장 큰 이유는 단일 100 % 오픈 소스 응용 프로그램이 없다는 것입니다. Silverlight는 .NET 내에서 하나의 언어 일 뿐이며 Microsoft가 Flash를 대체하기를 원하기 때문에 이것이 다중 플랫폼 인 이유를 알고 있습니다. 또한 애플이 운영 체제에서 이것을 허용하지 않기 위해 손을 움직 였다는 점도 덧붙여 야한다.
Ramhound

1
@Dan은 "당신의 고민에 대한 해결책"이 "모든 언어를 지배하는 하나의 언어"가 아니라 "플랫폼과 무관하게 배포하는 방법"이라고 들었습니다. 대부분의 사람들은 UI를 로직에서 분리하여 하나는 플랫폼별로, 다른 하나는 내부 튜브의 서비스로 포함 하여이 작업을 수행합니다.
바가지

1
@Dan 나는 그것에 대한 해결책을 가지고 있습니다 ... Mac을 코딩하지 마십시오. 본인이 직접 작성하고 서명 한 개인적인 비 개발 용 계약이 있습니다. 나는 C #을 코딩 할 수 없다는 것을 완전히 싫어하므로 그렇게하지 마십시오. 그러나 때때로 당신은 당신이해야 할 일을해야하고, 만약 소원이 물고기라면 우리는 우리가 원하지만 가질 수없는 많은 것들을 묘사하기 위해 다른 동요를 생각해야합니다.
바가지

1
@Dan kindasorta. 그들은 실제로 데스크탑을 건드리지 않았습니다 (아직). 그러나 나는 5 년의 차이가 무엇인지에 놀랐습니다.
바가지

0

당신은 MonoMac 프로젝트는 유용하게 찾을 수 있습니다 - http://www.mono-project.com/MonoMac

Mac App Store에 배포 할 수있는 Cocoa 응용 프로그램 Mono 스타일을 개발할 수 있습니다.

Objective-C에 익숙하지 않지만 시간 제한 시나리오에서 애플리케이션을 제공해야하는 .NET / Mono / Java에 익숙한 개발자에게는이 방법을 강력하게 고려할 것입니다.


0

없음

크로스 컴파일 가능한 C ++ 응용 프로그램을 작성하는 것이 좋습니다. 기쁨이있을 수도 있습니다. 또는 wxWidgets와 함께 Ruby를 사용하는 것이 좋습니다.

.NET은 크로스 플랫폼 개발 및 장기 제품 유지 관리에있어 나쁜 제안이라고 생각합니다. 비록, 당신은 그것에 응용 프로그램을 신속하게 낼 수 있습니다. :-/

Wish Delphi는 여전히 주요 경쟁자였습니다.


1
나사로에 대해 들어 본 적이 있습니까?
Happy Coder

또한 Java 책임자?
페르난도 곤잘레스 산체스

0

Mac에서 .NET을 기본적으로 실행하려면 BootCamp를 사용하여이를 수행 할 수 있습니다 (예 : Mac에서 Windows를 실행하고 Windows에서 .NET 응용 프로그램을 실행).

하드웨어가 아닌 Mac OS X를 의미한다면 VMWare 또는 Parallels를 사용하여 OS X의 Windows에서 .NET 응용 프로그램 (에뮬레이션으로)을 실행할 수 있습니다. 둘 다 응용 프로그램이 실행중인 것처럼 보이게하는 시각적 모드를 가지고 있습니다. OS X 내에서 (Windows 응용 프로그램처럼 보이고 동작하지만 각 OS에 대한 사용자 정의 인터페이스없이 크로스 플랫폼 비 웹 응용 프로그램을 작성하는 경우 항상 해당 문제가 발생합니다).

가상화 된 경우에도 Windows에서 앱을 실행하기 때문에이 작업을 수행하면 동일한 "지원"을 얻을 수 있습니다. 물론, 앱을 실행하는 사람은 가상화 소프트웨어와 Windows의 사본이 필요하며 OS X 앱처럼 동작하지 않는 앱을 ​​기꺼이 사용해야하지만 "기본" Mac에서 실행되는 .NET


0

댄, 난 당신이 할 수 있다고 생각하지 않습니다. 그러나 가능한 해결책 (여전히 수증기)은 Embarcadero Rad Studio C ++ Builder를 사용하는 것입니다. Embarcadero Rad Studio C ++ Builder는 시각적 응용 프로그램을 개발하기위한 훌륭한 VCL (.net의 많은 부분이 기반으로 함)을 제공하며 크로스 플랫폼 지원이 나오도록 RUMORED입니다. 다음 릴리스에서.

이것은 Windows에서 개발되며 Mac 또는 Linux를 대상으로합니다. 또는 그들의 로드맵이 말합니다.

C ++ 환경은 합리적이며 VCL을 기반으로 개발하면 이론적으로 응용 프로그램은 다른 플랫폼에서만 작동합니다.

물론 실제로 선적되기 전까지는 이것이 얼마나 효과적인지 여전히 남아 있습니다.


-2

대답은 '아니오.

실제로 귀하의 경우는 .NET을 선택 하지 않을 때의 좋은 예 인 것 같습니다 .


아무도 미래를 예측할 수 없으며 "과도한"위험을 감수하기를 원하지 않습니다.
Ðаn

@ 단 : 그리고 요점은? 당신은 저에게 동의하는 것 같습니다 ...?
가브리엘 마가 나

-3

OS 용으로 개발하려면 올바른 도구를 사용하십시오. Mac 용으로 모노로 작성된 전문적인 앱은 없습니다. 반면에 많은 비전문가 개발자는 많은 도구를 사용하여 많은 쓰레기를 생성합니다. OSX 용으로 작성된 모노 앱 리뷰를보십시오. 개발자는 OSX 플랫폼에 맞게 해킹 된 불완전한 프레임 워크를 사용하여 작성하고 있습니다. 쓰기 시작-C #을 사용한 경우 목표 C는 빠른 학습입니다.

Mac의 전문 개발자는 C ++, Objective C, Cocoa 및 Xcode를 사용합니다. 나는 여러 플랫폼에서 개발하고 각각 고유 한 도구를 가지고 있습니다. Mac 및 iOS에 Xcode를 사용하십시오.

부수적 인 메모 Xcode가 Visual Studio가 아니기 때문에 그것은 안정적이 아니며 사과에 대한 수치입니다. 그러나 그가 익숙하지 않을 때 잘 작동합니다. Microsoft 도구를 능가하는 것은 매우 어렵지만 Linux, iOS, OSX, AIX 등이 아닌 Windows 용으로 작성되었습니다.


1
"Xcode는 안정적이지 않고 Apple에게는 불명예"와 같은 문구를 백업해야한다는 사실을 알고 있습니까? Xcode를 사용한 모든 사람이 자신의 개인적인 경험을 바탕으로 Xcode를 사용해 본 적이 있기 때문입니다. 주제에 대해 개인적인 의견을 표명 한 후에도 귀하가 익숙하지 않은 것 같지만 2013 년에는 실제로 해결책이 있다는 것을 알지 못합니다. 물론이 솔루션은 실제로 Mono하고 Xamarin.Mac있지만 솔루션입니다. 현재 버전의 Mono는 거의 100 % .NET 4.0을 완전히 구현 한 것으로, 포팅되지 않을 주요 기능 (WPF)이 거의 없습니다.
Ramhound 2013
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.