Gdzie jest Machine.Config?

435

Chcę zastosować zmianę, aby móc używać ustawień Server GC w mojej aplikacji C # 3.5 - mogę to zrobić, edytując machine.configplik.

Jedynym problemem jest to, że nie wiem, gdzie to jest.

Jak mogę znaleźć ścieżkę tego pliku w powtarzalny sposób na wielu różnych komputerach

Jack Kada
źródło

Odpowiedzi:

585

32-bitowy

%windir%\Microsoft.NET\Framework\[version]\config\machine.config

64-bitowy

%windir%\Microsoft.NET\Framework64\[version]\config\machine.config 

[version]powinna być równa v1.0.3705, v1.1.4322, v2.0.50727lub v4.0.30319.

v3.0i v3.5po prostu zawierają dodatkowe zespoły, v2.0.50727więc nie powinno ich być config\machine.config. v4.5.xi v4.6.xsą przechowywane w środku v4.0.30319.

Piotr
źródło
20
Prawdopodobnie warto wspomnieć tylko o dwóch katalogach [wersja], w których znajduje się plik machine.config to v2.0.50727 i v4.0.30319, ponieważ v3.0 i v3.5 używają .NET 2.0 CLR i v4.5.x to spadek zamienników, więc nie mają własnych katalogów szkieletowych. Aha, a jeśli masz pecha, aby nadal używać .NET 1.1, może istnieć katalog Framework / v1.1.4322.
Scott Lerch
@ ScottLerch To nie jest prawda w moim systemie. Istnieje v1.0.3705, v1.1.4322, v2.0.50727, v3.0, v3.5 i v4.0.30319
Kevin Panko
2
@KevinPanko tak, już wspomniałem o zastrzeżeniu około 1.1, ale powinienem również wspomnieć o 1.0 ... po prostu nie miałem do czynienia z żadnym z nich od dłuższego czasu. Nie powinieneś jednak znaleźć pliku machine.config w katalogach v3.0 lub v3.5, jeśli tak, to nie mam pojęcia, dlaczego.
Scott Lerch
Pamiętaj, aby otwierać pliki .config z notatnikiem uruchomionym jako administrator, więc gdy coś zapisujesz, system nie zapisuje twoich zmian w niewłaściwym folderze na podstawie 32- lub 64-bitowej wersji.
Afshin Teymoori
@AfshinTeymoori Nie jestem w 100% pewien, ale jeśli uruchomisz notatnik w trybie innym niż admin, nie powinieneś być w stanie zapisać żadnych zmian, ponieważ nie masz dostępu do zapisu do pliku? (również jeśli działasz w trybie administratora lub nie, nie powinno się zmieniać, jeśli zapisujesz w wersji 32- lub 64-bitowej).
Peter
88

Możesz uruchomić to w PowerShell:

[System.Runtime.InteropServices.RuntimeEnvironment]::SystemConfigurationFile

Które wyświetla to dla .net 4:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config

Zauważ jednak, że może się to zmienić w zależności od tego, czy .net działa jako 32 czy 64-bitowy, co spowoduje odpowiednio \Framework\lub \Framework64\.

Daniel Little
źródło
5
W PowerShell możesz pominąć „System”. i po prostu użyj [Runtime.InteropServices.RuntimeEnvironment]::SystemConfigurationFile. (Jest to także 32-bitowa ścieżka do .NET 4.0. 64-bit jest w… \ Framework64 \… #pedantry)
brianary
2
Zauważ, że to zwróci 64-bitową ścieżkę, jeśli używasz 64-bitowego programu PowerShell.
ForNeVeR
45

Aby mieć absolutną pewność, uderz etykietę na stronie ASP.NET i uruchom ten kod:

labelDebug.Text = System.Runtime.InteropServices.RuntimeEnvironment.SystemConfigurationFile;

Wierzę, że to nie pozostawi wątpliwości!

Posiłek Filanderer
źródło
14
Lub uruchom to w PowerShell[System.Runtime.InteropServices.RuntimeEnvironment]::SystemConfigurationFile
Daniel Little
16

Zależy to częściowo ... moje jest:

C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ CONFIG

i

C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ CONFIG

Timothy Khouri
źródło
3

C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ CONFIG

John Saunders
źródło
2

W aplikacji asp.net użyj tego

using System.Configuration;
Response.Write(ConfigurationManager.OpenMachineConfiguration().FilePath);
Hosein Djadidi
źródło
2
  1. Otwórz polecenie Uruchom Windows. Skrót => klawisz Windows + r
  2. Wpisz „microsoft.net” - otwiera się folder MS .Net
  3. Otwórz folder „Framework” / „Framework64” (w zależności od procesora).
  4. Wybierz konkretny folder wersji FW, np. „V4.0.30319”
  5. Otwórz folder konfiguracji
  6. Machine.config będzie tam dostępny. Twoje zdrowie.
Saikat Chakraborty
źródło
-1

Możesz uruchomić to w PowerShell: skopiuj i wklej w Power Shell [System.Runtime.InteropServices.RuntimeEnvironment] :: SystemConfigurationFile

moje dane wyjściowe to: C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50527 \ config \ machine.config

leniwy programista
źródło