57

在 FxCop 10 之后,Microsoft 停止为 FxCop 提供单独的安装程序。官方目前只能在安装 Visual Studio 2013 / 2015 / 2017 后运行代码分析(FxCop 12.0 / 14.0 / 15.0)。但是,我们坚持不要在构建代理上安装 Visual Studio(安装需要保留在 -与我们在开发人员计算机上获得的内容同步等)。

那么我将如何让 FxCop 12.0 / 14.0 / 15.0 在构建代理上工作,最好不安装其他任何东西?不过,我会接受将一些二进制文件和 msbuild 文件添加到源代码控制中。否则:有没有办法只使用 Visual Studio 2013 / 2015 / 2017 安装程序安装 FxCop 的东西?

注意:我们使用 Teamcity 作为构建服务器。

答案

由于特定环境和 FxCop 版本有多个有效答案,我冒昧地将它们链接到此处以便于访问:

4

5 回答 5

52

对于FxCop 14.0 / VS2015 看到这个答案


在不安装 Visual Studio 2013 的情况下运行 FxCop 12.0

好的,我已经投入了 6 个小时,现在它正在工作。我已将所有必要的可执行文件、dll 和 msbuild 目标添加到源代码控制中。

这些是我必须添加到源代码控制的文件:(请考虑这可能违反某些许可协议)

(source control)\dev\tools\FxCop
│
├[amd64]
│   │
│   └msdia120.dll
├[Engines]
│   │
│   ├IntrospectionAnalysisEngine.dll
│   └PhoenixAnalysisEngine.dll
├[Msbuild]
│   │
│   ├fxcoptask.dll
│   ├Microsoft.CodeAnalysis.Targets
│   ├Microsoft.VisualStudio.CodeAnalysis.dll
│   └Microsoft.VisualStudio.CodeAnalysis.Sdk.dll
├[Repository]
│   │
│   ├[Compatibility]
│   │   │
│   │   ├Desktop2.0.xml
│   │   ├Desktop2.0SP1.xml
│   │   ├Desktop2.0SP2.xml
│   │   ├Desktop3.0.xml
│   │   ├Desktop3.0SP1.xml
│   │   ├Desktop3.0SP2.xml
│   │   ├Desktop3.5.xml
│   │   └Desktop3.5SP1.xml
│   └system32.bin
├[Rules]
│   │
│   ├DataflowRules.dll
│   ├DesignRules.dll
│   ├GlobalizationRules.dll
│   ├InteroperabilityRules.dll
│   ├MaintainabilityRules.dll
│   ├MobilityRules.dll
│   ├NamingRules.dll
│   ├PerformanceRules.dll
│   ├PortabilityRules.dll
│   ├ReliabilityRules.dll
│   ├SecurityRules.dll
│   ├SecurityTransparencyRules.dll
│   └UsageRules.dll
├[Xml]
│   │
│   ├CodeAnalysisReport.xsl
│   ├FxCopReport.xsl
│   └VSConsoleOutput.xsl
├Architecture-msil.dll
├CodeAnalysis.dll
├CustomDictionary.xml
├FxCopCmd.exe
├FxCopCmd.exe.config
├FxCopCommon.dll
├FxCopSdk.dll
├Microsoft.Cci.dll
├Microsoft.VisualStudio.CodeAnalysis.Common.dll
├Microsoft.VisualStudio.CodeAnalysis.DataflowModels.dll
├Microsoft.VisualStudio.CodeAnalysis.dll
├Microsoft.VisualStudio.CodeAnalysis.Interop.dll
├Microsoft.VisualStudio.CodeAnalysis.Phoenix.dll
├Microsoft.VisualStudio.CodeAnalysis.Phoenix.xml
├msdia120.dll
├mssp7en.dll
├mssp7en.lex
├phx.dll
└Runtime-vccrt-win-msil.dll

复制它们如下:

  • 整个 FxCop 安装文件夹内容来自

    %programfiles(x86)%\Microsoft Visual Studio 12.0\Team Tools\Static Analysis Tools\FxCop

  • 从 Visual Studio 2013 C++ redist 或任何其他地方:(另请参阅法律信息)将 msdia120 x86 和 x64 复制到:

    msdia120.dll (874 KiB)

    amd64\msdia120.dll (1.07 MiB)

  • 从安装了 VS2013 的计算机的全局程序集缓存 ( C:\Windows\Microsoft.NET\assembly\GAC_MSIL\_NameOfTheAssembly_\) 中,将以下 DLL 复制到:(确保 DLL 是 12.0 版!)

    Msbuild\Microsoft.VisualStudio.CodeAnalysis.dll

    Msbuild\Microsoft.VisualStudio.CodeAnalysis.Sdk.dll

  • 所有文件从%programfiles(x86)%\MSBuild\Microsoft\VisualStudio\v12.0\CodeAnalysis

    Msbuild\fxcoptask.dll

    Msbuild\Microsoft.CodeAnalysis.Targets

(此外,您需要适当的 Windows (7.1 / 8.1) SDK 来构建安装在构建代理上的 .net 4.0 / 4.5 应用程序)

此外,我们必须调整项目 msbuild 文件,如下所示:

<!--Must import code analysis target before importing csharp targets, so that the correct code analysis targets gets imported. -->
<Import Project="$(ProjectBuildScriptDir)Custom.CodeAnalysis.targets"/>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets"/>

这就是我们的 Custom.CodeAnalysis.targets 包含的内容:

  <PropertyGroup>
    <!-- Code analysis settings. -->
    <CodeAnalysisCulture>en-US</CodeAnalysisCulture>

    <!-- change this so it points to your ruleset or remove it entirely -->
    <CodeAnalysisRuleSet>$(SourcesDir)Custom.ruleset</CodeAnalysisRuleSet>

    <!-- this must refer to the source control directory where you copied FxCopCommand.exe (and the rest of the FxCop files and directories...) to -->
    <CodeAnalysisPath>$(ToolsDir)FxCop\</CodeAnalysisPath>

    <!-- this must refer to the source control directory where you copied fxcoptask.dll, Microsoft.CodeAnalysis.Targets, Microsoft.VisualStudio.CodeaAnalysis.dll and Microsoft.VisualStudio.CodeaAnalysis.Sdk.dll to -->
    <CodeAnalysisTargets>$(CodeAnalysisPath)Msbuild\Microsoft.CodeAnalysis.Targets</CodeAnalysisTargets>
  </PropertyGroup>
  <!-- configure this according to your wishes -->

  <PropertyGroup Condition="'$(Configuration)' == 'Release'">
    <CodeAnalysisTreatWarningsAsErrors>false</CodeAnalysisTreatWarningsAsErrors>
    <RunCodeAnalysis>true</RunCodeAnalysis>
  </PropertyGroup>

  <!-- Report code analysis results to TeamCity -->
  <Target Name="ReportCodeAnalysisResults" AfterTargets="RunCodeAnalysis" Condition="'$(RunCodeAnalysis)' == 'true' And '$(IsRunningOnTeamCity)' == 'true'">
    <Message Text="##teamcity[importData type='FxCop' path='$(CodeAnalysisLogFile)']" Importance="High" />
  </Target>

</Project>
于 2014-02-12T14:49:54.777 回答
37

!!对于FxCop 12.0 / VS2013,请参阅此答案

在不安装 Visual Studio 2015 的情况下运行 FxCop 14.0

先决条件:

  • MSBuild 14.0 --> 安装Microsoft Build Tools 2015
  • 适用于 Visual Studio 2015 x86的 Visual C++ Redistributable(始终需要 x86 版本,具体取决于构建,也可能需要 x64 redist。如果缺少它,则错误消息可能很神秘,例如System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.VisualStudio.CodeAnalysis.Interop.dll' or one of its dependencies. The specified module could not be found.)。除了安装整个 redist,您还可以单独复制必要的 DLL,但此时我不知道需要哪些。找出哪些完全丢失是非常棘手和耗时的。

根据您要构建的内容:

  • 适当的 Windows SDK,例如Windows 10 SDK
  • 适当的 .net SDK / 目标(.NET Framework 4.6 SDK 包含在 Windows 10 SDK 中)

要添加到源代码管理的文件

这些是我必须添加到源代码控制的文件:(请考虑这可能违反某些许可协议)

(source control)\tools\FxCop14
│
├[Engines]
│   │
│   ├IntrospectionAnalysisEngine.dll
│   └PhoenixAnalysisEngine.dll
├[Msbuild]
│   │
│   ├fxcoptask.dll
│   ├Microsoft.CodeAnalysis.Targets
│   ├Microsoft.VisualStudio.CodeAnalysis.dll
│   └Microsoft.VisualStudio.CodeAnalysis.Sdk.dll
├[Repository]
│   │
│   ├[Compatibility]
│   │   │
│   │   ├Desktop2.0.xml
│   │   ├Desktop2.0SP1.xml
│   │   ├Desktop2.0SP2.xml
│   │   ├Desktop3.0.xml
│   │   ├Desktop3.0SP1.xml
│   │   ├Desktop3.0SP2.xml
│   │   ├Desktop3.5.xml
│   │   └Desktop3.5SP1.xml
│   └system32.bin
├[Rules]
│   │
│   ├DataflowRules.dll
│   ├DesignRules.dll
│   ├GlobalizationRules.dll
│   ├InteroperabilityRules.dll
│   ├MaintainabilityRules.dll
│   ├MobilityRules.dll
│   ├NamingRules.dll
│   ├PerformanceRules.dll
│   ├PortabilityRules.dll
│   ├ReliabilityRules.dll
│   ├SecurityRules.dll
│   ├SecurityTransparencyRules.dll
│   └UsageRules.dll
├[x64]
│   │
│   └msdia140.dll (1349 KB)
├[Xml]
│   │
│   ├CodeAnalysisReport.xsl
│   ├FxCopReport.xsl
│   └VSConsoleOutput.xsl
├Architecture-msil.dll
├CodeAnalysis.dll
├CustomDictionary.xml
├FxCopCmd.exe
├FxCopCmd.exe.config
├FxCopCommon.dll
├FxCopSdk.dll
├Microsoft.Cci.dll
├Microsoft.VisualStudio.CodeAnalysis.Common.dll
├Microsoft.VisualStudio.CodeAnalysis.DataflowModels.dll
├Microsoft.VisualStudio.CodeAnalysis.dll
├Microsoft.VisualStudio.CodeAnalysis.Interop.dll
├Microsoft.VisualStudio.CodeAnalysis.Phoenix.dll
├Microsoft.VisualStudio.CodeAnalysis.Phoenix.xml
├msdia140.dll (1057 KB)
├mssp7en.dll
├mssp7en.lex
├phx.dll
└Runtime-vccrt-win-msil.dll

复制它们如下:

  • 整个 FxCop 安装文件夹内容来自

    %programfiles(x86)%\Microsoft Visual Studio 14.0\Team Tools\Static Analysis Tools\FxCop

  • 从 Visual Studio 2015 C++ redist 或任何其他地方:(另请参阅法律信息)将 msdia140 x86 和 x64 复制到:

    msdia140.dll (1057 KiB)

    amd64\msdia140.dll (1349 KiB)

  • 从安装了 VS2015 的计算机的全局程序集缓存 ( C:\Windows\Microsoft.NET\assembly\GAC_MSIL\_NameOfTheAssembly_\) 中,将以下 DLL 复制到:(确保 DLL 是 14.0 版!)

    Msbuild\Microsoft.VisualStudio.CodeAnalysis.dll

    Msbuild\Microsoft.VisualStudio.CodeAnalysis.Sdk.dll

  • 所有文件从%programfiles(x86)%\MSBuild\Microsoft\VisualStudio\v14.0\CodeAnalysis

    Msbuild\fxcoptask.dll

    Msbuild\Microsoft.CodeAnalysis.Targets

此外,我调整了项目 msbuild 文件 (*.csproj),如下所示(提示:我与之前使用 VS2013 的方式略有不同。这不是因为 FxCop 14 的工作方式不同,而是因为这样我可以通过 a 包含 fxcop nuget 包并使用标准 nuget 功能将 .targets 文件导入到 .csproj):

<!-- Microsoft.CSharp.targets import is contained in csproj by default. This just goes to show the sequence -->
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets"/>

<!-- now this must be added -->
<Import Project="$(ProjectBuildScriptDir)Custom.CodeAnalysis.targets"/>

这就是我们的 Custom.CodeAnalysis.targets 包含的内容:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

    <!-- Code analysis settings. -->
    <PropertyGroup>
        <!-- this must reference the path where you copied the FxCop stuff to -->
        <FxCopDir>..\FxCop14\</FxCopDir> 
        <CodeAnalysisCulture>en-US</CodeAnalysisCulture>
        <CodeAnalysisRuleSet>$(SolutionDir)FxCop.ruleset</CodeAnalysisRuleSet>
        <!-- you can and should use another condition here. Otherwise code analysis will be run on every build in VS as well. -->
        <!-- in my build setup i do something like Condition=IsRunningOnTeamCity => true -->
        <RunCodeAnalysis>true</RunCodeAnalysis> 
        <CodeAnalysisTreatWarningsAsErrors Condition="'$(IsRunningOnTeamCity)' != 'true'">true</CodeAnalysisTreatWarningsAsErrors>
    </PropertyGroup>

    <Import Project="$(FxCopDir)Msbuild\Microsoft.CodeAnalysis.Targets" />

    <Target Name="CodeAnalysisLogHeader" BeforeTargets="RunCodeAnalysis" Condition="$(RunCodeAnalysis) == 'true'">
        <Message Text="Text, Executing Code Analysis (FxCop) on $(MsBuildProjectName)" Importance="High" />
    </Target>

    <!-- Report code analysis results to TeamCity -->
    <Target Name="ReportCodeAnalysisResults" AfterTargets="RunCodeAnalysis" Condition="$(RunCodeAnalysis) == 'true' AND '$(IsRunningOnTeamCity)' == 'true'">
        <Message Text="##teamcity[importData type='FxCop' path='$(MSBuildProjectDirectory)\$(CodeAnalysisLogFile)']" Importance="High" />
    </Target>

</Project>
于 2015-08-19T11:15:04.980 回答
8

在不安装 Visual Studio 的情况下使用 FxCop 进行 SonarQube 分析

如果您在 SonarQube 质量配置文件中启用了任何 FxCop 规则,SonarQube 需要 FxCop 14.0。

这些步骤主要基于@BatteryBackupUnit 的出色回答

  1. 在构建机器上安装Microsoft Build Tools 2015 。

  2. 在构建机器上安装Microsoft Visual C++ 2015 Redistributable Update 3,包括 x86 和 x64。

  3. 在构建机器上导入以下注册表文件(如果不是 C:,则更新驱动器号):


Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\WDExpress\14.0\Setup\EDev]
"StanDir"="C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\Team Tools\\Static Analysis Tools\\"
"FxCopDir"="C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\Team Tools\\Static Analysis Tools\\FxCop\\"
  1. 将所有%programfiles(x86)%\Microsoft Visual Studio 12.0\Team Tools\Static Analysis Tools(不仅仅是 FxCop 子目录)复制到构建机器上的相同位置。

  2. 复制%programfiles(x86)%\MSBuild\Microsoft\VisualStudio\v14.0\CodeAnalysis到构建机器上的相同位置。

  3. 从安装 VS2015 的计算机的全局程序集缓存 (C:\Windows\Microsoft.NET\assembly\GAC_MSIL_NameOfTheAssembly_) 复制Microsoft.VisualStudio.CodeAnalysis.dllMicrosoft.VisualStudio.CodeAnalysis.Sdk.dll(确保 DLL 为 14.0 版!)。要么复制到C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\CodeAnalysis构建机器上,要么安装到构建机器的 GAC 中。

如果你看到Phx.FatalError这一切 - 最后一个仪式......vs_profiler_x64_enu.exeProgram Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Performance Tools\Setups构建机器复制并安装它。

与@BatteryBackupUnit 说明的偏差:

  1. 需要整个Static Analysis Tools目录,而不仅仅是 FxCop 子目录。
  2. 无需在 FxCop 下嵌套 Msbuild 子文件夹,您需要将其放置在原始位置。
  3. 只要安装了 Visual C++ 2015 Redistributable,就似乎没有必要将文件复制msdia120.dll到FxCop 目录中。amd64\msdia140.dll
  4. 没有对项目文件 (*.csproj) 进行与 FxCop 相关的修改。
  5. 没有Custom.CodeAnalysis.targets文件。
于 2016-06-09T08:12:32.293 回答
3

在不安装 Visual Studio 2017 的情况下运行 FxCop 15.0

先决条件:

  • MSBuild 15.0 --> 安装Microsoft Build Tools 2017,您可能还想在这里查看
  • Visual C++ Redistributable for Visual Studio 2017 x86此处 带有 C++ 的 Visual Studio 2017。----注意:x86 版本始终是必需的,根据构建,可能还需要 x64 redist。如果它丢失,则错误消息可能很神秘,例如System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.VisualStudio.CodeAnalysis.Interop.dll' or one of its dependencies. The specified module could not be found.)。除了安装整个 redist,您还可以单独复制必要的 DLL,但此时我不知道需要哪些。找出哪些完全丢失是非常棘手和耗时的。

根据您要构建的内容:

  • 适当的 Windows SDK,例如Windows 10 SDK
  • 适当的 .net SDK / 目标(.NET Framework 4.6 SDK 包含在 Windows 10 SDK 中)

要添加到源代码管理的文件

这些是我必须添加到源代码控制的文件:(请考虑这可能违反某些许可协议)

(source control)\tools\FxCop15
│
├[Engines]
│   │
│   ├IntrospectionAnalysisEngine.dll
│   └PhoenixAnalysisEngine.dll
├[Msbuild]
│   │
│   ├fxcoptask.dll
│   ├Microsoft.CodeAnalysis.Targets
│   ├Microsoft.VisualStudio.CodeAnalysis.dll
│   └Microsoft.VisualStudio.CodeAnalysis.Sdk.dll
├[Repository]
│   │
│   ├[Compatibility]
│   │   │
│   │   ├Desktop2.0.xml
│   │   ├Desktop2.0SP1.xml
│   │   ├Desktop2.0SP2.xml
│   │   ├Desktop3.0.xml
│   │   ├Desktop3.0SP1.xml
│   │   ├Desktop3.0SP2.xml
│   │   ├Desktop3.5.xml
│   │   └Desktop3.5SP1.xml
│   └system32.bin
├[Rules]
│   │
│   ├DataflowRules.dll
│   ├DesignRules.dll
│   ├GlobalizationRules.dll
│   ├InteroperabilityRules.dll
│   ├MaintainabilityRules.dll
│   ├MobilityRules.dll
│   ├NamingRules.dll
│   ├PerformanceRules.dll
│   ├PortabilityRules.dll
│   ├ReliabilityRules.dll
│   ├SecurityRules.dll
│   ├SecurityTransparencyRules.dll
│   └UsageRules.dll
├[x64]
│   │
│   └msdia140.dll (1349 KB)
├[Xml]
│   │
│   ├CodeAnalysisReport.xsl
│   ├FxCopReport.xsl
│   └VSConsoleOutput.xsl
├Architecture-msil.dll
├CodeAnalysis.dll
├CustomDictionary.xml
├FxCopCmd.exe
├FxCopCmd.exe.config
├FxCopCommon.dll
├FxCopSdk.dll
├Microsoft.Cci.dll
├Microsoft.VisualStudio.CodeAnalysis.Common.dll
├Microsoft.VisualStudio.CodeAnalysis.DataflowModels.dll
├Microsoft.VisualStudio.CodeAnalysis.dll
├Microsoft.VisualStudio.CodeAnalysis.Interop.dll
├Microsoft.VisualStudio.CodeAnalysis.Phoenix.dll
├Microsoft.VisualStudio.CodeAnalysis.Phoenix.xml
├msdia140.dll (1057 KB)
├mssp7en.dll
├mssp7en.lex
├phx.dll
└Runtime-vccrt-win-msil.dll

复制它们如下:

  • 整个 FxCop 安装文件夹内容来自

    %programfiles(x86)%\Microsoft Visual Studio\2017\ **INSERT EDITION HERE** \Team Tools\Static Analysis Tools\FxCop

  • 来自 Visual Studio 2017 C++ redist(或您的 Visual Studio 2017 安装,如果您已安装 VC++ 工作负载:%ProgramFiles(x86)%\Microsoft Visual Studio\2017\\VC\Redist\MSVC\14.12.25810)或任何其他地点:(另见法律信息)将 msdia140 x86 和 x64(我的版本为 14.12.25810.0)复制到:

    msdia140.dll (1.12 MiB)

    amd64\msdia140.dll (1.42 MiB)

  • 所有文件从%programfiles(x86)%\\Microsoft Visual Studio\2017\ **INSERT EDITION HERE** \MSBuild\Microsoft\VisualStudio\v15.0\CodeAnalysis

    Msbuild\fxcoptask.dll

    Msbuild\Microsoft.CodeAnalysis.Targets

    Msbuild\Microsoft.VisualStudio.CodeAnalysis.dll

    Msbuild\Microsoft.VisualStudio.CodeAnalysis.Sdk.dll

此外,我调整了项目 msbuild 文件 (*.csproj),如下所示:

<!-- Microsoft.CSharp.targets import is contained in csproj by default. This just goes to show the sequence -->
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets"/>

<!-- now this must be added -->
<Import Project="$(ProjectBuildScriptDir)Custom.CodeAnalysis.targets"/>

这就是我们的 Custom.CodeAnalysis.targets 包含的内容:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

    <!-- Code analysis settings. -->
    <PropertyGroup>
        <!-- this must reference the path where you copied the FxCop stuff to -->
        <FxCopDir>..\FxCop15\</FxCopDir> 
        <CodeAnalysisCulture>en-US</CodeAnalysisCulture>
        <CodeAnalysisRuleSet>$(SolutionDir)FxCop.ruleset</CodeAnalysisRuleSet>
        <!-- you can and should use another condition here. Otherwise code analysis will be run on every build in VS as well. -->
        <!-- in my build setup i do something like Condition=IsRunningOnTeamCity => true -->
        <RunCodeAnalysis>true</RunCodeAnalysis> 
        <CodeAnalysisTreatWarningsAsErrors Condition="'$(IsRunningOnTeamCity)' != 'true'">true</CodeAnalysisTreatWarningsAsErrors>
    </PropertyGroup>

    <Import Project="$(FxCopDir)Msbuild\Microsoft.CodeAnalysis.Targets" />

    <Target Name="CodeAnalysisLogHeader" BeforeTargets="RunCodeAnalysis" Condition="$(RunCodeAnalysis) == 'true' OR $(RunCodeAnalysisOnce) == 'true'">
        <Message Text="Text, Executing Code Analysis (FxCop) on $(MsBuildProjectName)" Importance="High" />
    </Target>

</Project>

Visual Studio 路径的注意事项:

Visual Studio 安装的路径取决于版本。它包括专业版和企业版。AFAIR 社区版有不同的路径,但也不支持 FxCop。欢迎指正:-)

于 2018-03-05T16:45:33.460 回答
1

TFS有一个非常简单的方法:

在构建机器上,添加一个环境变量:FXCOPDIR,将其指向:(C:\Program Files (x86)\Microsoft Visual Studio 12.0\Team Tools\Static Analysis Tools\FxCop只需从您的开发机器复制此文件夹)。

在这个目录中有一个名为: 的文件FxCopCmd.exe,即使没有安装 vs,TFS Build 也会自动选择它。您可能需要重新启动服务器一次或两次,但构建最终会起作用。您还需要确保将两个 dll 安装到 gac:Microsoft.VisualStudio.CodeAnalysis.dll 和 Microsoft.VisualStudio.CodeAnalysis.Sdk.dll 第一个可以在上面提到的路径中找到,但后者是我得到它的唯一方法是我从我的开发机器上的 gac 中抓住它。(您可以通过修改注册表来禁用特殊的 gac 文件夹视图,只需 google 即可)。

于 2014-07-29T16:50:44.257 回答