¿Dónde está Machine.Config?

435

Quiero aplicar un cambio para poder usar la configuración del servidor GC para mi aplicación C # 3.5. Puedo hacerlo editando el machine.configarchivo.

El único problema es que no sé dónde está eso.

¿Cómo puedo encontrar la ruta de este archivo de forma repetible en varias máquinas diferentes?

Jack Kada
fuente

Respuestas:

585

32 bits

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

64 bits

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

[version]debe ser igual a v1.0.3705, v1.1.4322, v2.0.50727o v4.0.30319.

v3.0y v3.5solo contienen conjuntos adicionales para v2.0.50727que no haya config\machine.config. v4.5.xy v4.6.xse almacenan en el interior v4.0.30319.

Peter
fuente
20
Probablemente valga la pena mencionar los dos únicos directorios [de versión] en los que encontrará un machine.config en v2.0.50727 y v4.0.30319, ya que v3.0 y v3.5 usan .NET 2.0 CLR y v4.5.x son colocar reemplazos para no tener sus propios directorios de framework. Ah, y si tiene la mala suerte de seguir usando .NET 1.1, puede haber un directorio Framework / v1.1.4322.
Scott Lerch
@ScottLerch Eso no es cierto en mi sistema. Hay v1.0.3705, v1.1.4322, v2.0.50727, v3.0, v3.5 y v4.0.30319
Kevin Panko
2
@KevinPanko sí, ya mencioné la advertencia sobre 1.1, pero también debería haber mencionado 1.0 también ... simplemente no he tenido que lidiar con ninguno de ellos en mucho tiempo. Sin embargo, no debería encontrar un machine.config en sus directorios v3.0 o v3.5, si lo hace, entonces no tengo idea de por qué.
Scott Lerch
Recuerde abrir archivos .config con un bloc de notas que se ejecuta como administrador para que cuando guarde algo, el sistema no guarde los cambios en una carpeta incorrecta basada en 32 o 64 bits.
Afshin Teymoori
@AfshinTeymoori No estoy 100% seguro, pero si ejecuta el bloc de notas en modo no administrativo, ¿no debería poder guardar ningún cambio ya que no tiene acceso de escritura al archivo? (también si se ejecuta en admin o no, no debería cambiar si guarda en 32 o 64 bits).
Peter
88

Puede ejecutar esto en powershell:

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

Lo que genera esto para .net 4:

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

Sin embargo, tenga en cuenta que esto puede cambiar dependiendo de si .net se ejecuta como 32 o 64 bits, lo que resultará en \Framework\o \Framework64\respectivamente.

Daniel Little
fuente
55
En PowerShell, puede omitir el "Sistema". y solo utilízalo [Runtime.InteropServices.RuntimeEnvironment]::SystemConfigurationFile. (También esa es específicamente la ruta de 32 bits para .NET 4.0. 64 bits está en ... \ Framework64 \ ... #pedantry)
brianary
2
Tenga en cuenta que esto devolverá la ruta de 64 bits si está ejecutando PowerShell de 64 bits.
ForNeVeR
45

Para estar absolutamente seguro, coloque una etiqueta en una página ASP.NET y ejecute este código:

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

¡Creo que esto no dejará ninguna duda!

ComedorFilanderer
fuente
14
O ejecute esto en powershell[System.Runtime.InteropServices.RuntimeEnvironment]::SystemConfigurationFile
Daniel Little
16

Sin embargo, casi depende ... el mío es:

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

y

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

Timothy Khouri
fuente
3

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

John Saunders
fuente
2

En su aplicación asp.net use esto

using System.Configuration;
Response.Write(ConfigurationManager.OpenMachineConfiguration().FilePath);
Hosein Djadidi
fuente
2
  1. Abra el comando Ejecutar de Windows. Atajo => tecla de windows + r
  2. Escriba "microsoft.net": se abre la carpeta MS .Net
  3. Abra la carpeta "Framework" / "Framework64" (según su procesador).
  4. Seleccione una carpeta de versión de FW específica, por ejemplo, "v4.0.30319"
  5. Abrir carpeta de configuración
  6. Machine.config estará disponible allí. Salud.
Saikat Chakraborty
fuente
-1

Puede ejecutar esto en powershell: copiar y pegar en power shell [System.Runtime.InteropServices.RuntimeEnvironment] :: SystemConfigurationFile

la salida de la mina es: C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50527 \ config \ machine.config

lazydeveloper
fuente