문제

이론적으로 다음과 같은 코드를 컴파일할 수 있는 코드가 있다고 가정해 보겠습니다. 어느 .net 프레임워크 버전.원한다면 "Hello World"를 생각해 보세요.

하지만 실제로 코드를 컴파일하면 코드에 대해 실행되는 실행 파일을 얻게 됩니다. 특정한 버전.

컴파일된 exe가 찾은 버전에 상관없이 실행되도록 정렬할 수 있는 방법이 있나요?나는 대답이 '아니오'라고 강하게 의심하지만 틀렸다는 것이 입증되면 기쁠 것입니다 ...


편집하다:글쎄, 나는 우리 계단 아래로 갈 것이다.나는 이후의 프레임워크가 이전 버전에서 컴파일된 exe를 행복하게 실행할 것이라는 것을 전혀 몰랐습니다.모든 답변에 감사드립니다!

도움이 되었습니까?

해결책

이것이 맞는지는 확실하지 않지만 가장 낮은 버전으로 컴파일하려고 합니다. 더 높은 버전은 더 낮은 버전의 exe를 실행할 수 있어야 합니다.

다른 팁

ScuttGu의 게시물 읽기 VS 2008 다중 타겟팅 지원

우리가 VS 2008 릴리스에서 시작하는 큰 변화 중 하나는 우리가 "멀티 타겟팅"이라고 부르는 것을 지원하는 것입니다. 즉, Visual Studio는 이제 여러 버전의 .NET 프레임 워크를 대상으로하고 개발자가 시작할 수 있습니다. 새로운 기능을 활용하여 Visual Studio가 제공하는 새로운 버전의 .NET Framework 라이브러리를 사용하기 위해 항상 기존 프로젝트 및 배포 된 응용 프로그램을 업그레이드 할 필요없이 제공하는 새로운 기능을 활용합니다.

이제 기존 프로젝트를 열거 나 VS 2008을 사용하여 새로운 프로젝트를 만들 때.무엇보다도 해당 버전의 프레임 워크에서 작동하지 않는 기능, 컨트롤, 프로젝트, 항목 테마 및 어셈블리 참조가 숨겨지고 응용 프로그램을 구축하면 컴파일을 수행 할 수 있음을 의미합니다. 구형 버전의 .NET 프레임 워크 만 설치 한 컴퓨터에 출력 및 복사하면 응용 프로그램이 작동한다는 것을 알 수 있습니다.

이렇게 하면 VS2008을 사용하여 .NET 2.0, 3.0 및 3.5 모두에서 작동하는 .NET 2.0 프로젝트를 개발할 수 있습니다.

측면 다중 타겟팅과 함께 프레임워크는 이전 버전과 호환되므로 1.0으로 컴파일된 항목은 1.1 및 2에서 실행됩니다.1.1에서 컴파일된 것은 2에서도 실행됩니다.등.

알아요 @존 보커 .Net 클래스 라이브러리의 경우 정확합니다..Net 1.1에 대해 클래스 라이브러리를 컴파일한 다음 .Net 2.0 이상의 프로젝트에서 사용할 수 있습니다.

실행 파일에도 마찬가지라고 생각됩니다.

2005 및 2008에서는 예(CLR 2.0)

2003년에는 없습니다..CLR 1.1로 컴파일되기 때문입니다.

이론적으로 #if(DOTNET35) 등을 사용하여 일부 코드를 작성하여 컴파일러 지식 외부의 기능을 사용하지 않고 앱에서 원하는 컴파일러를 실행할 수 있습니다.그러나 나는 이것의 유용성에 의문을 제기합니다.

AFAIK, 모든 .NET 버전(버전 1.x 제외)은 동일한 바이트코드로 컴파일됩니다.C#의 경우 모든 새로운 기능은 단순히 구문 설탕이며 컴파일 시 C# 2.0 구문으로 변환됩니다.문제가 발생할 수 있는 주요 지점은 C# 3.0 또는 3.5 특정 DLL을 사용할 때입니다..NET 2.0 프레임워크에서는 제대로 작동하지 않으므로 사용할 수 없습니다.

이 문제에 대한 해결 방법이 실제로 생각나지 않습니다. 죄송합니다. :(

사용자가 설치한 .NET 프레임워크와 관련하여 .NET 3.5 SP1에서 사용할 수 있는 클라이언트 프로필에 대한 새로운 옵션도 있습니다.이를 통해 기본적으로 필요한 파일(전체 .NET 프레임워크의 하위 집합)을 다운로드하고 설치하는 작은(277k) 부트스트랩 프로그램을 제공할 수 있습니다.

소규모 .NET 설치 생성에 대한 자세한 내용과 일반적인 팁을 보려면 이 훌륭한 문서를 참조하세요. Scott Hanselman의 블로그 항목.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top