Visual Studio 2010을 통한 .NET Framework 4.5 대상 지정


169

오늘은 Visual Studio 2010에서 사용할 수있을 것으로 기대되는 컴퓨터에 .NET Framework 4.5를 설치했습니다. Visual Studio 2010에서는 문제가되지 않는 작은 업데이트 일뿐입니다. 불행히도 특정 4.0을 수동으로 제거하지도 않습니다. 해당 4.5 어셈블리를 추가하면 원래 4.0 어셈블리가 여전히 프로젝트에서 참조됩니다.

Visual Studio 2010에서 버전 4.5를 대상으로 할 수 있습니까? 그렇다면 그렇다면 어떻게해야합니까? 리본을 정말로 사용하고 싶습니다 ...


.NET v4.5 지원을 위해 Visual Studio 2012로 업그레이드해야합니다.
Arran

VS 2010 콘솔 응용 프로그램에서 System.Threading.Tasks.Task.Run () 메서드를 사용하려고 할 때이 제한 사항에 대해 알게되었습니다. 프로젝트가 .Net framework 4.0을 대상으로하는 경우이 메소드는 Task 클래스에 표시되지 않으며 원하는 경우 VS2010이 .Net framework 4.5를 대상으로 할 수 없음을 알고 있습니다.
RBT

답변:


194

Visual Studio 2010 이전의 각 버전의 Visual Studio는 특정 .NET 프레임 워크에 연결되어 있습니다. Visual Studio 2010 이상에서는 이전 프레임 워크 버전을 대상으로 지정할 수 있지만 이후 릴리스에는 사용할 수 없습니다. .NET 4.5를 사용하려면 Visual Studio 2012를 사용해야합니다.


9
.NET 3.0은 VS 버전간에 출시되었으며 VS2005에서 사용할 수 있습니다.
교활한 그리폰

9
무엇 수수께끼 : vs2012 +로 마이그레이션는 MSI 설치 프로그램을 배포하는 사랑 VS2010 설치 프로젝트 손실의 비용으로 .NET 4.5의 낌새를 활용하는 것은 ... ... 더 sidegrade 같은 느낌 "업그레이드"
입학 허가서 (eCoE)

6
@ecoe-설치 및 배포 프로젝트 유형을 다시 표시하는 VS 2013 확장이 있습니다. visualstudiogallery.msdn.microsoft.com/…
ajawad987

2
이것은 올바르지 않습니다. 이 기능을 사용하기 위해 업그레이드 할 필요는 없습니다. 새 참조를 추가 한 다음 .NET 4.5 폴더 (C : \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \\. Net Framework \ 4.5)로 이동하면됩니다. 거기에 참조가 있습니다. 그냥 추가하면 작동합니다
Hermes Trismegistus

2
VS 2010의 @HermesTrismegistus "Target Framework = 다른 프레임 워크 설치"를 클릭하면 microsoft.com/net/download/visual-studio-sdks 웹 사이트로 이동합니다. 어떤 폴더로도 이동할 수 없습니다. 어떻게해야합니까? VS 2010에서 4.5를 타겟팅 할 수 있어야합니다. Tks.
Echeban

67

이것이 유용한 곳을 생각할 수있는 시나리오는 매우 제한적이지만 VS2012 또는 그 효과를 구매할 자금을 얻을 수 없다고 가정 해 봅시다. 이 경우 Windows 7 이상과 VS 2010을 사용하는 경우 다음 해킹을 사용할 수 있습니다. 작동하는 것처럼 보입니다 (그러나이 방법을 사용하여 응용 프로그램을 아직 완전히 배포하지는 않았습니다).

  1. 프로젝트 파일을 백업하십시오 !!!

  2. .NET 4.5 SDK가 포함 된 Windows 8 SDK 를 다운로드하여 설치하십시오 .

  3. VS2010에서 프로젝트를 엽니 다.

  4. 프로젝트 Compile_4_5_CSharp.targets에 다음 내용으로 이름이 지정된 텍스트 파일을 작성하십시오 . (또는 여기에서 다운로드 하십시오 . 파일 이름에서 ".txt"확장자를 제거하십시오) :

    <Project DefaultTargets="Build"
     xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    
        <!-- Change the target framework to 4.5 if using the ".NET 4.5" configuration -->
        <PropertyGroup Condition=" '$(Platform)' == '.NET 4.5' ">
            <DefineConstants Condition="'$(DefineConstants)'==''">
                TARGETTING_FX_4_5
            </DefineConstants>
            <DefineConstants Condition="'$(DefineConstants)'!='' and '$(DefineConstants)'!='TARGETTING_FX_4_5'">
                $(DefineConstants);TARGETTING_FX_4_5
            </DefineConstants>
            <PlatformTarget Condition="'$(PlatformTarget)'!=''"/>
            <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
        </PropertyGroup>
    
        <!-- Import the standard C# targets -->
        <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
    
        <!-- Add .NET 4.5 as an available platform -->
        <PropertyGroup>
           <AvailablePlatforms>$(AvailablePlatforms),.NET 4.5</AvailablePlatforms>
        </PropertyGroup>
    </Project>
    
  5. 프로젝트를 언로드하십시오 (오른쪽 클릭-> 언로드).

  6. 프로젝트 파일을 편집하십시오 (마우스 오른쪽 버튼 클릭-> * .csproj 편집).

  7. 프로젝트 파일에서 다음을 변경하십시오.

    ㅏ. Microsoft.CSharp.targets4 단계에서 작성된 대상 파일로 기본값 을 바꾸십시오.

    <!-- Old Import Entry -->
    <!-- <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> -->
    
    <!-- New Import Entry -->
    <Import Project="Compile_4_5_CSharp.targets" />
    

    비. 기본 플랫폼을.NET 4.5

    <!-- Old default platform entry -->
    <!-- <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> -->
    
    <!-- New default platform entry -->
    <Platform Condition=" '$(Platform)' == '' ">.NET 4.5</Platform>
    

    씨. AnyCPU프로젝트 속성에 지정된 다른 프레임 워크를 타겟팅 할 수 있도록 플랫폼을 추가하십시오 . <ItemGroup>파일 의 첫 번째 태그 바로 앞에 추가해야 합니다.

    <PropertyGroup Condition="'$(Platform)' == 'AnyCPU'">
        <PlatformTarget>AnyCPU</PlatformTarget>
    </PropertyGroup>
    
    .
    .
    .
    <ItemGroup>
    .
    .
    .
    
  8. 변경 사항을 저장하고 *.csproj파일을 닫으십시오 .

  9. 프로젝트를 다시로드하십시오 (오른쪽 클릭-> 프로젝트 다시로드).

  10. 구성 관리자 (빌드-> 구성 관리자)에서 프로젝트에 ".NET 4.5"플랫폼이 선택되어 있는지 확인하십시오.

  11. 여전히 구성 관리자에서 ".NET 4.5"에 대한 새 솔루션 플랫폼을 작성하고 ( "모든 CPU"를 기반으로 할 수 있음) 솔루션에 ".NET 4.5"가 선택되어 있는지 확인하십시오.

  12. 프로젝트를 빌드하고 오류를 확인하십시오.

  13. 빌드가 완료되었다고 가정하면 소스 코드에 4.5 특정 클래스에 대한 참조를 추가하여 실제로 4.5를 대상으로하고 있는지 확인할 수 있습니다.

    using System;
    using System.Text;
    
    namespace testing
    {
        using net45check = System.Reflection.ReflectionContext;
    }
    
  14. ".NET 4.5"플랫폼을 사용하여 컴파일하면 빌드가 성공해야합니다. "Any CPU"플랫폼에서 컴파일 할 때 컴파일러 오류가 발생합니다.

    Error 6: The type or namespace name 'ReflectionContext' does not exist in
    the namespace 'System.Reflection' (are you missing an assembly reference?)
    

3
이것은 작동하더라도 리본 디자이너와 같은 UI 요소가 xaml과 다른 오류없이 작동합니까? srsly 그냥 업그레이드.
익명 타입

1
David Woodward의 답변 외에도 <OutputPath>bin\</OutputPath>아래 오류가 발생했을 때 첫 번째 PropertyGroup 에 다음 을 추가 했습니다. OutputPath 속성이 프로젝트 'project name'에 대해 설정되지 않았습니다.
mparkuk

이것은 실제로 작동합니다. 그러나 .NET Framework 4.5.1을 설치 한 후 VS2010에서 Moles를 계속 실행할 수 있도록 그냥 사용하고 있습니다.
콘래드 클라크

1
11 단계를 성공적으로 수행하는 방법, "... 새 솔루션 플랫폼 생성 ..."을 파악할 수 없었지만 11 단계를 무시하면 지침이 전반적으로 성공적이라는 것을 알 수있었습니다.
Tony Pulokas

8

참고로 VS2010에서 Installer 패키지를 만들려면 불행히도 .NET 4 만 대상으로합니다.이 문제를 해결하려면 NET 4.5를 시작 조건으로 추가해야합니다.

설치 프로그램의 실행 조건에 다음을 추가하십시오 (오른쪽 클릭,보기, 실행 조건).

"검색 대상 시스템"에서 마우스 오른쪽 버튼을 클릭하고 "레지스트리 검색 추가"를 선택하십시오.

Property: REGISTRYVALUE1
RegKey: Software\Microsoft\NET Framework Setup\NDP\v4\Full
Root: vsdrrHKLM
Value: Release

새로운 "시작 조건"을 추가하십시오.

Condition: REGISTRYVALUE1>="#378389"
InstallUrl: http://www.microsoft.com/en-gb/download/details.aspx?id=30653
Message: Setup requires .NET Framework 4.5 to be installed.

어디:

378389 = .NET Framework 4.5

378675 = Windows 8.1과 함께 설치된 .NET Framework 4.5.1

378758 = Windows 8, Windows 7 SP1 또는 Windows Vista SP2에 설치된 .NET Framework 4.5.1

379893 = .NET Framework 4.5.2

시작 조건 참조 : http://msdn.microsoft.com/en-us/library/vstudio/xxyh2e6a(v=vs.100).aspx


3

VS2010 / DNFW 4.5 통합으로 어려움을 겪고 마침내이 작업을 수행했습니다. VS 2008부터는 "참조 된 어셈블리"라는 Visual Studio에서 사용되는 어셈블리 캐시가 도입되었습니다. VS 2010의이 파일 캐시는 \ Reference Assemblies \ Microsoft \ Framework.NetFramework \ v4.0에 있습니다. Visual Studio는 프레임 워크 설치 디렉토리가 아닌이 위치에서 프레임 워크 어셈블리를로드합니다. Microsoft는 VS 2010 DNFW 4.5을 지원하지 않는 것을 말할 때 그들이 무엇을 의미하는 것은 DNFW 4.5가 설치되어있는 경우이 디렉토리가 업데이트되지 않는다는 것입니다. 이 위치의 파일을 업데이트 된 DNFW 4.5 파일로 바꾸면 VS 2010이 DNFW 4.5와 함께 행복하게 작동한다는 것을 알 수 있습니다.


0

다른 검색에서. 나를 위해 일했다!

"OS가 .NET 4.5를 지원하는 경우 Visual Studio 2010을 사용할 수 있으며이를 지원합니다.

솔루션을 마우스 오른쪽 버튼으로 클릭하여 참조를 추가하십시오. 대화 상자가 표시되면 찾아보기를 선택한 후 다음 폴더로 이동하십시오.

C : \ Program Files (x86) \ 참조 어셈블리 \ Microsoft \ Framework \ .Net Framework \ 4.5

그곳에서 찾을 수 있습니다. "


6
"당신은 거기에서 찾을 것이다"라는 문장에서, "그것은"무엇입니까? 해당 폴더에서 어떤 파일을 선택합니까? 그중 하나가 VS 2010에서 .net 4.5를 대상으로 할 수 있습니까?
Jeff Roe

네임 스페이스 어셈블리를 찾을 수 있습니다. 원하는 것을 추가 할 수 있습니다. 예를 들어 ZIP 파일 작업을위한 방법을 사용해야했습니다. 그래서 dll "System.IO.Compression.dll"을 찾아 내 프로젝트에 추가했습니다. 그런 다음 코드에 네임 스페이스를 명시 적으로 나열하고 필요한 메소드를 사용할 수 있습니다.
Hermes Trismegistus

1
이것은 나를 위해 작동하지 않습니다. System에 대한 참조를 제거한 다음 .Net 4.5 System.dll을 찾아 참조로 추가해도 VS는 여전히 4.0 System.dll Capt Nasty의 답변을 선택합니다. 예를 들어 복사 C : \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.6의 System.dll을 C : \ Program Files (x86) \ Reference Assemblies \ Microsoft \의 System.dll 위에 놓습니다. 프레임 워크 \ .NET 프레임 워크 \ v4.0. 이 방법은 불쾌한 해킹이며 의도하지 않은 결과를 초래할 수 있습니다.
Jinlye
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.