[visual-studio-2010] Visual Studio 2010을 통한 .NET Framework 4.5 대상 지정

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

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



답변

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


답변

이것이 유용한 곳을 생각할 수있는 시나리오는 매우 제한적이지만 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?)
    

답변

참고로 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


답변

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와 함께 행복하게 작동한다는 것을 알 수 있습니다.


답변

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

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

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

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

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


답변