Di mana direktori .NET Framework 4.5?

146

Saya telah menginstal Windows 8, Visual Studio 2012 tetapi tidak memiliki direktori v4.5 di %WINDIR%\Microsoft.NET\Framework.

Apakah saya melakukan sesuatu yang salah, atau apakah .NET 4.5 berbeda dari yang lain?

Jika itu karena saya belum menginstal alat, apakah ada seperangkat alat yang berbeda untuk diunduh? Sejauh yang saya tahu, saya bisa membangun aplikasi .NET 4.5 OK.

Nick Randell
sumber
1
@ Gustavo, tolong hentikan pengeditan tag itu menjadi pertanyaan. Nama produk bukan 2011, tetapi 11, dan sudah ada tag yang ada.
Charles
1
.NET 4.5 adalah pengganti di tempat. Lihat posting blog ini .
Vijay
kemungkinan rangkap: stackoverflow.com/questions/9546353/…
Houman

Jawaban:

152

.NET 4.5 adalah pengganti di tempat untuk 4.0 - Anda akan menemukan majelis di direktori 4.0.

Lihat blog oleh Rick Strahl dan Scott Hanselman tentang topik ini.

Anda juga dapat menemukan versi spesifik di:

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework
Oded
sumber
1
Terima kasih, tetapi bagaimana dengan halaman ini dari MSDN. msdn.microsoft.com/en-us/library/bb397428 . Itu menyebutkan direktori 4.5.0.0?
Nick Randell
@NickRandell - Anda bertanya tentang majelis. Artikel itu tentang SDK / tools.
Oded
@NickRandell - Dan karena itu tidak ada di sistem Anda, lihat versi majelis di direktori 4.0 untuk melihat apakah mereka memang 4,5 (seperti yang dijelaskan dalam blog yang ditautkan).
Oded
Saya pasti mendapat 4,5 di direktori itu, tetapi ada ide tentang alat?
Nick Randell
5
FYI: Saya baru saja menginstal v4.5.2 pada Windows Server 2008 R2 saya. Majelis sebenarnya dalam C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319, seperti yang ditunjukkan oleh Jon Skeet.
harsimranb
86

EDIT: Jawaban ini benar hingga pertengahan 2013, tetapi Anda mungkin memiliki versi yang lebih baru sejak perubahan msbuild besar . Lihat jawaban dari Jonny Leeds untuk lebih jelasnya.

Versi di bawah C:\Windows\Microsoft.NET\Framework\v4.0.30319sebenarnya adalah .NET 4.5. Agak aneh, tapi pasti mscorlibada mengandung AsyncTaskMethodBuilderdll yang digunakan untuk async.

.NET 4.5 secara efektif menimpa .NET 4.

Jon Skeet
sumber
Apakah ini masih berlaku dengan rilis resmi?
Earlz
@Kiquenet: Saya menduga itu telah menghapus rilis final; ini tersedia sebagai paket nuget terpisah.
Jon Skeet
ini hampir benar - tetapi msbuild telah pindah - lihat posting saya di bawah ini
JonnyRaa
@JonnyLeeds: Terima kasih - telah menambahkan referensi ke posting blog.
Jon Skeet
28

.NET 4.5 bukan versi berdampingan, ia menggantikan majelis untuk 4.0. Sama seperti .NET 3.0, 3.5 dan 3.5SP1 menggantikan rakitan untuk 2.0. Dan menambahkan beberapa yang baru. Versi CLR masih 4.0.30319. Anda hanya peduli pada rakitan referensi, mereka ada di c: \ program files \ rakitan referensi.

Hans Passant
sumber
Saya pikir 3.0 dan 3.5 baru saja menambahkan majelis - tidak mengganti (katakanlah) mscorlib seperti halnya 4,5. Atau apakah itu mungkin benar untuk 3.0 tetapi tidak 3.5?
Jon Skeet
@ Jon - tidak, mereka benar-benar diganti. Itu menyebabkan beberapa kesengsaraan karena [MajelisVersi] tidak berubah. Kelebihan WaitHandle.WaitOne (int) yang ditambahkan sangat terkenal. Ada langkah-langkah balasan di .NET 4 untuk menghindari masalah ini, rakitan referensi tidak lagi merupakan salinan dari perakitan GAC-ed. Mereka spesial, tidak mengandung IL.
Hans Passant
Untuk pengujian di berbagai versi, apakah ada alternatif mudah untuk mesin virtual? Dan apakah Pembaruan Windows secara otomatis memperbarui ke 4.5 secara default?
Tuntable
2
Itu terlihat seperti pertanyaan, bukan komentar. Pertanyaan ada di bagian atas halaman, klik tombol Tanya Pertanyaan untuk meletakkannya di sana.
Hans Passant
17

Sementara jawaban di atas benar, perlu dicatat bahwa MSBuild telah berubah dan tidak lagi disertakan dengan kerangka kerja .net, ia hadir baik berdiri sendiri atau dengan studio visual. Akibatnya binernya telah dipindahkan ... sehingga yang Anda dapatkan di bawah direktori 4.0.303619 sebenarnya adalah yang lama!

Saya baru saja tertangkap oleh ini - saya menemukan pengalihan mengikat otomatis hanya bekerja ketika berjalan dari VisualStudio tetapi tidak ketika menjalankan msbuild dari baris perintah ... petunjuknya adalah bahwa pengalihan yang mengikat ditambahkan dalam VS 2013 (untuk membaca itu. kerangka kerja 4.5). Jika Anda membuka prompt perintah vs Anda akan melihatnya sekarang mendapatkannya dari file program seperti yang disebutkan artikel lainnya. Padahal saya menggunakan file batch di jalur saya yang tertaut ke versi lama.

Nomor versi

Di bawah kerangka kerja:

PS C:\Windows\Microsoft.NET\Framework\v4.0.30319> .\msbuild.exe -version
Microsoft (R) Build Engine version 4.0.30319.33440
[Microsoft .NET Framework, version 4.0.30319.34014]
Copyright (C) Microsoft Corporation. All rights reserved.

4.0.30319.33440PS C:\Windows\Microsoft.NET\Framework\v4.0.30319>

Di bawah file program:

PS C:\Program Files (x86)\MSBuild\12.0\Bin> .\MSBuild.exe -version
Microsoft (R) Build Engine version 12.0.21005.1
[Microsoft .NET Framework, version 4.0.30319.34014]
Copyright (C) Microsoft Corporation. All rights reserved.

12.0.21005.1PS C:\Program Files (x86)\MSBuild\12.0\Bin>
JonnyRaa
sumber
5

Halaman web salah dan saya telah menunjukkan ini ke MS dan mereka akan mengubahnya.

Seperti yang telah dinyatakan di atas. NET 4.5 adalah pembaruan 4.0 di tempat sehingga Anda hanya akan memiliki Microsoft.NET \ Framework \ v4.0.30319.

ToolVersion untuk MSBuild tetap di "4.0".

Adam
sumber
3

Cara resmi untuk mengetahui apakah Anda memasang 4,5 (dan bukan 4.0) ada di kunci registri:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full

Relesae DWORD harus lebih besar dari 378675 Ini adalah dokumen Microsoft untuk itu

semua jawaban lain untuk memeriksa versi minor setelah 4.0.30319.xxxxx tampaknya benar (msbuild.exe -versi, atau properti clr.dll), saya hanya perlu sesuatu yang didokumentasikan (bukan blog)

code7amza
sumber
Catatan \ v4 \, bukan \ v4.0 \ yang berbeda!
Tuntable