2012-09-12 109 views
156

今天,我在我的機器上安裝了.NET Framework 4.5,希望能夠從Visual Studio 2010使用它,因爲它只是一個小的更新,不會對視覺造成問題 工作室  2010.不幸的是,我不是,即使手動刪除某些4.0,並添加相應的4.5程序集導致原來的4.0程序集仍在項目中引用。通過Visual Studio 2010針對.NET Framework 4.5

是否有可能從視覺對象版本4.5   Studio   2010如果是,如何?我真的很喜歡使用功能區...

+0

您必須升級到Visual Studio 2012 for .NET v4.5支持。 – Arran

+0

當我嘗試在System.Threading.Tasks.Task.Run()方法中使用System.Threading.Tasks.Task.Run()方法時, VS 2010控制檯應用程序,如果你的項目是以.Net framework 4.0爲目標的話,這個方法不會顯示在Task類上,然後你意識到如果你願意的話VS2010不能以.Net framework 4.5爲目標 – RBT

回答

187

Visual Studio 2010之前的Visual Studio的每個版本都綁定到特定的.NET框架。 (VS2008是.NET 3.5,VS2005是.NET 2.0,VS2003是.NET1.1)Visual Studio 2010及更高版本允許定位以前的框架版本,但不能用於將來的版本。您必須使用Visual Studio 2012才能使用.NET 4.5。

+8

不完全正確 - .NET 3.0在VS版本之間發佈,並且可以在VS2005中使用。 –

+1

是的,但只能通過擴展。它從一開始就沒有嵌入到VS 2005中(並且因此沒有完全優化)。 – thefellow3j

+5

什麼是難題:遷移到vs2012 +來利用.net 4.5的精美,以犧牲部署msi安裝程序的心愛的vs2010安裝項目爲代價...「升級」感覺更像是一個側向... – ecoe

63

我可以想到這種情況很有用,但我們可以假設你無法獲得購買VS2012的資金,或者出現這種情況。如果是這樣的話,你有Windows 7+和VS 2010,你可以使用下面這些似乎可行的hack(但我還沒有完全使用這種方法部署應用程序)。

  1. 備份您的項目文件!

  2. 下載並安裝包含.NET 4.5 SDK的Windows 8 SDK

  3. 在VS2010中打開您的項目。

  4. 在您的項目中創建一個名爲Compile_4_5_CSharp.targets的文本文件,其中包含以下內容。 (或者只是下載here - 確保從文件名稱中刪除「.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.targets替換爲步驟4中創建的目標文件

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

    b。將默認平臺更改爲.NET 4.5

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

    c。添加AnyCPU平臺以允許定位項目屬性中指定的其他框架。這應該只是第一<ItemGroup>標籤之前的文件

    <PropertyGroup Condition="'$(Platform)' == 'AnyCPU'"> 
        <PlatformTarget>AnyCPU</PlatformTarget> 
    </PropertyGroup> 
    
    . 
    . 
    . 
    <ItemGroup> 
    . 
    . 
    . 
    
  8. 中添加保存更改並關閉*.csproj文件。

  9. 重新載入您的項目(右鍵 - >重新載入項目)。

  10. 在配置管理器(Build - > Configuration Manager)中,確保爲您的項目選擇了「.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"平臺的構建應該成功。當您在「任何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只是升級。 –

+0

這確實有效。但是我只是使用它,所以我可以在安裝.NET Framework 4.5.1後繼續在VS2010上運行Moles。 –

+1

除了David Woodward的回答外,我在第一個PropertyGroup中添加了' bin \',當發生下面的錯誤時:OutputPath屬性未設置爲項目'項目名'。 – mparkuk

7

僅供參考,如果你想創建一個VS2010安裝程序包,遺憾的是它僅面向.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框架4.5

378675 =的.NET Framework 4.5.1與Windows 8.1

安裝

378758 =安裝在Windows 8,Windows 7 SP1或Window上的.NET Framework 4.5.1小號Vista SP2的

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使用的名爲「Referenced Assemblies」的程序集緩存。 VS 2010的這個文件緩存位於\ Reference Assemblies \ Microsoft \ Framework.NetFramework \ v4.0。 Visual Studio從該位置加載框架程序集,而不是從框架安裝目錄加載。當微軟表示VS 2010不支持DNFW 4.5時,他們認爲的意思是是因爲在安裝DNFW 4.5時不會更新此目錄。一旦你用更新的DNFW 4.5文件替換了這個位置的文件,你會發現VS 2010將很高興地使用DNFW 4.5。

1

來自另一個搜索。爲我工作!

「如果您的操作系統支持.NET 4.5,則可以使用Visual Studio 2010並支持它。

右鍵單擊您的解決方案以添加參考(與您一樣)。當對話框顯示,選擇瀏覽,然後導航到以下文件夾:

C:\ Program Files文件(x86)的\參考大會\微軟\框架\ .Net框架\ 4.5

你會發現它在那裏。「

+2

在句子「你會在那裏找到它」,它是什麼?我們選擇哪個文件夾中的哪個文件?他們中的一個會讓我們在VS 2010中使用.net 4.5嗎? –

+0

您會找到名稱空間程序集。你可以添加你想要的任何一個。例如,我需要使用一種處理ZIP文件的方法。所以我找到了DLL「System.IO.Compression.dll」,並將其添加到我的項目中。然後,我可以明確列出我的代碼中的名稱空間並使用我需要的方法。 –

+0

這對我不起作用。如果您刪除對系統的引用,然後瀏覽到.Net 4.5 System.dll並將其添加爲參考,則VS仍然會選擇4.0 System.dll Capt Nasty在此頁面上的答案適用於我,例如,將System.dll從C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.6複製到C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \框架\ .NETFramework \ V4.0。請注意,這是一個令人討厭的黑客行爲,可能會產生意想不到的後果。 – Jinlye

相關問題