Onde está o Machine.Config?

435

Quero aplicar uma alteração para que eu possa usar as configurações do Server GC para meu aplicativo C # 3.5 - posso fazer isso editando o machine.configarquivo.

O único problema é que não sei onde é.

Como posso encontrar o caminho desse arquivo de forma repetível em várias máquinas diferentes

Jack Kada
fonte

Respostas:

585

32 bits

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

64 bits

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

[version]deve ser igual a v1.0.3705, v1.1.4322, v2.0.50727ou v4.0.30319.

v3.0e v3.5apenas contém montagens adicionais para v2.0.50727que não haja config\machine.config. v4.5.xe v4.6.xsão armazenados dentro v4.0.30319.

Pedro
fonte
20
Provavelmente vale a pena mencionar os únicos dois diretórios [version] nos quais você encontrará um machine.config é v2.0.50727 e v4.0.30319, pois as v3.0 e v3.5 usam o .NET 2.0 CLR e o v4.5.x substitua as substituições para não ter seus próprios diretórios de estrutura. Ah, e se você tiver azar de continuar usando o .NET 1.1, pode haver um diretório Framework / v1.1.4322.
Scott Lerch
@ ScottLerch Isso não é verdade no meu sistema. Há v1.0.3705, v1.1.4322, v2.0.50727, v3.0, v3.5 e v4.0.30319
Kevin Panko
2
@ KevinPanko sim, eu já mencionei a ressalva sobre 1.1, mas também deveria ter mencionado a 1.0 também ... só não tive que lidar com nenhum desses há muito tempo. Você não deve encontrar um machine.config nos diretórios v3.0 ou v3.5; se o fizer, não faço ideia do porquê.
22714 Scott
Lembre-se de abrir arquivos .config com um bloco de notas sendo executado como administrador; portanto, quando você salva algo, o sistema não salva as alterações na pasta errada com base em 32 ou 64 bits.
Afshin Teymoori
@AfshinTeymoori Não tenho 100% de certeza, mas se você executar o bloco de notas no modo não administrador, não poderá salvar as alterações, pois não tem acesso de gravação ao arquivo? (também se você executar no admin ou não, não deverá mudar se salvar em 32 ou 64 bits).
Peter Peter
88

Você pode executar isso no PowerShell:

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

O que gera isso para o .net 4:

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

Observe, no entanto, que isso pode mudar dependendo de .net estar sendo executado como 32 ou 64 bits, o que resultará em \Framework\ou \Framework64\respectivamente.

Daniel Little
fonte
5
No PowerShell, você pode omitir o "Sistema". e apenas use [Runtime.InteropServices.RuntimeEnvironment]::SystemConfigurationFile. (Também é especificamente que o 32-bit caminho para .NET 4.0 64 bits é em ... \ Framework64 \ ... #pedantry.)
brianary
2
Observe que isso retornará o caminho de 64 bits se você estiver executando o PowerShell de 64 bits.
ForNeVeR
45

Para ter certeza absoluta, coloque um Label em uma página ASP.NET e execute este código:

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

Eu acredito que isso não deixará dúvidas!

Refeições casuais
fonte
14
Ou executar este no PowerShell[System.Runtime.InteropServices.RuntimeEnvironment]::SystemConfigurationFile
Daniel Little
16

Depende semi-embora ... o meu é:

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

e

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

Timothy Khouri
fonte
3

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

John Saunders
fonte
2

No seu aplicativo asp.net, use este

using System.Configuration;
Response.Write(ConfigurationManager.OpenMachineConfiguration().FilePath);
Hosein Djadidi
fonte
2
  1. Abra o comando Executar do Windows. Atalho => tecla do Windows + r
  2. Digite "microsoft.net" - pasta MS .Net é aberta
  3. Abra a pasta "Framework" / "Framework64" (com base no seu processador).
  4. Selecione uma pasta específica da versão do FW, por exemplo, "v4.0.30319"
  5. Abrir pasta de configuração
  6. Machine.config estará disponível lá. Felicidades.
Saikat Chakraborty
fonte
-1

Você pode executar isso no PowerShell: copiar e colar no Power Shell [System.Runtime.InteropServices.RuntimeEnvironment] :: SystemConfigurationFile

minha saída é: C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50527 \ config \ machine.config

lazydeveloper
fonte