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

Nic*_*ker 14 nunit visual-studio test-explorer random-seed nunittestadapter

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

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

删除文件然后重建导致文件重新生成,具有不同的编号.

在解决方案中重建单个项目时也会出现这种情况(一个项目只有标准的C#项目引用/依赖项+ System.Management).

需要注意的是运行命令行构建如 msbuild <sln-file> 没有重新生成文件(完整的解决方案或单个项目的版本).

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

据我们所知,我们的任何源代码,后期构建步骤或内部依赖项都不使用此文件名..NET框架类有很多依赖项,包括Random和RNGCryptoServiceProvider,以及外部依赖项.我们没有所有这些的完整源代码,因此无法详尽检查哪些依赖项负责.

在黑暗中这是一个镜头,但问题是有没有人看到类似的东西?

编辑 我并不感到惊讶,这已经被投票了 - 我很欣赏它是非常开放的,但我现在无法重现这一点,因为它可能会产生潜在的严重后果(随机数发生器攻击?)我还是发布了它.如果我能够复制,我当然会在这里更新.

小智 11

我有同样的文件.经过短暂的调查后,我发现内疚:这个文件是由NUnit 3.x测试适配器创建的.(您可以从NUnit适配器源代码中的AdapterSettings.cs中进行检查).


Cha*_*lie 10

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