【问题标题】:Where Is Machine.Config?Machine.Config 在哪里?
【发布时间】:2011-01-20 11:52:00
【问题描述】:

我想应用更改,以便我可以为我的 C# 3.5 应用程序使用服务器 GC 设置 - 我可以通过编辑 machine.config 文件来做到这一点。

唯一的问题是我不知道那在哪里。

如何在多个不同的机器上以可重复的方式找到该文件的路径

【问题讨论】:

    标签: .net garbage-collection


    【解决方案1】:

    32 位

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

    64 位

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

    [version] 应等于 v1.0.3705v1.1.4322v2.0.50727v4.0.30319

    v3.0v3.5 只包含v2.0.50727 的附加程序集,因此不应该有config\machine.configv4.5.xv4.6.x 存储在 v4.0.30319 中。

    【讨论】:

    • 可能值得一提的是,您可以在其中找到 machine.config 的仅有的两个 [version] 目录是 v2.0.50727 和 v4.0.30319,因为 v3.0 和 v3.5 使用 .NET 2.0 CLR 和 v4.5.x 是替代品,因此没有自己的框架目录。哦,如果你不幸仍在使用 .NET 1.1,那么可能会有一个 Framework/v1.1.4322 目录。
    • @ScottLerch 在我的系统上不是这样。有 v1.0.3705、v1.1.4322、v2.0.50727、v3.0、v3.5 和 v4.0.30319
    • @KevinPanko 是的,我已经提到了关于 1.1 的警告,但也应该提到 1.0 ......只是很长一段时间没有处理其中任何一个。但是,您不应该在 v3.0 或 v3.5 目录中找到 machine.config,如果您这样做了,那么我不知道为什么。
    • 请记住以管理员身份运行记事本打开 .config 文件,这样当您保存某些内容时,系统不会将您的更改保存在基于 32 位或 64 位的错误文件夹中。
    • @AfshinTeymoori 我不是 100% 确定,但是如果您在非管理员模式下运行记事本,您应该根本无法保存任何更改,因为您没有文件的写入权限? (如果您以 32 位或 64 位保存,则如果您在 admin 中运行也不应该更改)。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      不过,这半取决于...我的是:

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

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

      【讨论】:

        【解决方案4】:

        为了万无一失,请在 ASP.NET 页面上贴一个标签并运行以下代码:

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

        我相信这将毫无疑问!

        【讨论】:

        • 或者在powershell中运行这个[System.Runtime.InteropServices.RuntimeEnvironment]::SystemConfigurationFile
        【解决方案5】:

        您可以在 powershell 中运行它:

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

        为 .net 4 输出这个:

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

        但是请注意,这可能会根据 .net 是以 32 位还是 64 位运行而改变,这将分别导致 \Framework\\Framework64\

        【讨论】:

        • 在 PowerShell 中,您可以省略“系统”。只需使用[Runtime.InteropServices.RuntimeEnvironment]::SystemConfigurationFile。 (这也是 .NET 4.0 的 32 位 路径。64 位在…\Framework64\…#pedantry)
        • 请注意,如果您运行的是 64 位 PowerShell,这将返回 64 位路径。
        【解决方案6】:

        在你的 asp.net 应用中使用这个

        using System.Configuration;
        Response.Write(ConfigurationManager.OpenMachineConfiguration().FilePath);
        

        【讨论】:

          【解决方案7】:

          您可以在 powershell 中运行它: 在 power shell 中复制和粘贴 [System.Runtime.InteropServices.RuntimeEnvironment]::SystemConfigurationFile

          我的输出是: C:\Windows\Microsoft.NET\Framework\v2.0.50527\config\machine.config

          【讨论】:

            【解决方案8】:
            1. 打开 Windows 运行命令。快捷键=> windows 键 + r
            2. 键入“microsoft.net” - 打开 MS .Net 文件夹
            3. 打开“Framework”/“Framework64”文件夹(根据您的处理器)。
            4. 选择特定的固件版本文件夹,例如“v4.0.30319”
            5. 打开配置文件夹
            6. Machine.config 将在那里可用。 干杯。

            【讨论】:

              【解决方案9】:

              这是一个迟到的回复,但如果有人仍然希望打开 machine.config 并查看/更新配置,这里有一个使用 powershell 进行 IIS 配置的示例

              $machineConfig = [System.Configuration.ConfigurationManager]::OpenMachineConfiguration()
              
              $deployment = $machineConfig.GetSection("system.web/deployment")
              
              $deplyment.Retail = $true
              
              $machineconfig.save()
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2012-07-25
                • 1970-01-01
                • 1970-01-01
                • 2010-09-21
                • 2012-10-05
                • 1970-01-01
                相关资源
                最近更新 更多