16

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

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

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

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

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

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

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

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

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

4

2 回答 2

12

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

于 2016-11-02T14:41:46.967 回答
11

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

于 2016-11-03T20:19:29.973 回答