【问题标题】:What is the $RANDOM_SEED$ file generated by Visual Studio build of C# solution?由 Visual Studio 构建的 C# 解决方案生成的 $RANDOM_SEED$ 文件是什么?
【发布时间】:2017-03-14 20:01:20
【问题描述】:

我们注意到,在某台开发机器上,C# 解决方案的 Visual Studio(2015 更新 3)调试版本会在每个构建的 DLL 旁边生成一个 $RANDOM_SEED$ 文件。

文件的内容只是一个数字,例如 1443972318

删除文件然后重建会导致文件被重新生成,但编号不同。

在解决方案中重建单个项目(仅具有标准 C# 项目引用/依赖项 + System.Management 的项目)时也观察到此行为。

请注意,运行命令行构建,例如 msbuild <sln-file> 没有重新生成文件(用于构建完整的解决方案或单个项目)。

VS重启后,文件不再重新生成。

据我们所知,我们的任何源代码、构建后步骤或内部依赖项中都没有使用此文件名。 .NET 框架类有很多依赖项,包括 Random 和 RNGCryptoServiceProvider,还有外部依赖项。我们没有所有这些的完整源代码,因此无法彻底检查是否有任何依赖项负责。

这有点像在黑暗中拍摄,但问题是有人见过类似的东西吗?

编辑 我对这被否决并不感到惊讶 - 我很欣赏它是开放式的,但由于我目前无法重现这一点,并且它可能会产生潜在的严重后果(随机数生成器攻击?)我还是发布了它。如果我能够复制,我当然会在这里更新。

【问题讨论】:

  • 不太可能是 Microsoft 文件,不是它们的命名约定。构建和想要做一些随机但可重复的事情的逻辑交叉点很小。查看那些机器上使用的单元测试运行器。
  • 我今天也看到了。不过不知道它是从哪里来的。
  • 我使用了这里提到的第 3 方工具serverfault.com/a/20992 - 结果是 vstest.discoveryengine.x86.exe 创建了该文件。我已经使用单个 C# 类库项目在一个新的解决方案中进行了 repro'd。甚至不需要构建,只需打开解决方案并等待测试资源管理器窗口更新就足够了。确切的exe是:C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.discoveryengine.x86.exe

标签: visual-studio nunit random-seed test-explorer nunittestadapter


【解决方案1】:

我有相同的文件。 经过短暂的调查,我发现有罪: 此文件由 NUnit 3.x 测试适配器创建。 (可以在 NUnit 适配器源代码的 AdapterSettings.cs 中查看)。

【讨论】:

【解决方案2】:

文件由nunit使用,以确保我们使用相同的随机种子值来在发现和执行过程中生成随机测试用例。这是必需的,因为IDE使用两个不同的进程来执行适配器。在vstest.console.exe下运行适配器时,它实际上不是必需的(或创建的)。

【讨论】:

    猜你喜欢
    • 2011-06-07
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    相关资源
    最近更新 更多