我们注意到在某个开发机器上,使用 Visual Studio (2015 update 3) 调试生成 C# 解决方案时,将会在每个构建的 DLL 旁边生成一个 $RANDOM_SEED$ 文件。
该文件的内容只是一个单独的数字,例如:
删除这些文件并重新构建会导致该文件重新生成,并带有不同的数字。
当重新构建解决方案中的单个项目时(仅具有标准 C# 项目引用/依赖项 + System.Management 的项目),也观察到了这种行为。
请注意,运行命令行构建,例如:
这可能有点无从下手,但问题是是否有人见过类似的情况? 编辑:我并不惊讶这已被投票降低 - 我明白这是相当开放式的问题,但由于我目前无法复现这个问题,而且它可能有潜在的严重后果(随机数生成器攻击?),我还是发布了这篇文章。如果我能够复制,我当然会在这里更新。
该文件的内容只是一个单独的数字,例如:
1443972318
。删除这些文件并重新构建会导致该文件重新生成,并带有不同的数字。
当重新构建解决方案中的单个项目时(仅具有标准 C# 项目引用/依赖项 + System.Management 的项目),也观察到了这种行为。
请注意,运行命令行构建,例如:
msbuild <sln-file>
并不能重新生成文件(对于完整解决方案或单个项目的构建)。
重启 VS 后,该文件不再重新生成。
据我们所知,这个文件名没有在我们的源代码、后构建步骤或内部依赖项中使用。包括 Random 和 RNGCryptoServiceProvider 在内的 .NET 框架类有很多依赖项,还有外部依赖项。我们没有所有这些的完整源代码,因此不可能详尽地检查哪些依赖项负责。这可能有点无从下手,但问题是是否有人见过类似的情况? 编辑:我并不惊讶这已被投票降低 - 我明白这是相当开放式的问题,但由于我目前无法复现这个问题,而且它可能有潜在的严重后果(随机数生成器攻击?),我还是发布了这篇文章。如果我能够复制,我当然会在这里更新。
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.discoveryengine.x86.exe
- Nick Baker