Visual Studio C# 解决方案生成的 $RANDOM_SEED$ 文件是什么?

What is the $RANDOM_SEED$ file generated by Visual Studio build of C# solution?

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

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

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

在解决方案中重建单个项目(只有标准 C# 项目 refs/dependencies + System.Management)时也观察到此行为。

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

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

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

这有点摸不着头脑,但问题是有没有人见过类似的东西?

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

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

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