Что такое файл $RANDOM_SEED$, сгенерированный сборкой Visual Studio для C#?

Мы заметили, что на определенной машине разработчика в отладочной сборке Visual Studio (обновление 3) решения C# генерировался файл $RANDOM_SEED$ вместе с каждой встроенной DLL.

Содержимое файла - это просто одно число, например1443972318

Удаление файла (-ов) и последующая перестройка привели к тому, что файл был восстановлен с другим номером.

Такое поведение также наблюдалось при перестройке отдельного проекта в решении (тот, который имеет только стандартный проект C# refs/dependencies + System.Management).

Обратите внимание, что запуск сборки командной строки, например,msbuild <sln-file>не восстанавливал файл (для сборки полного решения или отдельного проекта).

После перезапуска VS файл больше не восстанавливается.

Насколько нам известно, это имя файла не используется ни в одном из наших исходных кодов, шагов после сборки или внутренних зависимостей. Существует довольно много зависимостей от классов платформы.NET, включая Random и RNGCryptoServiceProvider, а также внешние зависимости. У нас нет полного исходного кода для всего этого, поэтому невозможно полностью проверить, какая из этих зависимостей ответственна.

Это немного выстрел в темноте, но вопрос в том , видел ли кто-нибудь что-нибудь подобное?

РЕДАКТИРОВАТЬ Я не удивлен, что это было понижено - я ценю, что это довольно открытый конец, но, поскольку я в настоящее время не могу воспроизвести это и, поскольку это может иметь потенциально серьезные последствия (атака генератора случайных чисел?), Я опубликовал его в любом случае, Если я могу воспроизвести, я, конечно, обновлю здесь.

2 ответа

Решение

У меня есть тот же файл. После непродолжительного расследования я признал себя виновным: этот файл создан тестовым адаптером NUnit 3.x. (Вы можете проверить это в AdapterSettings.cs из исходного кода адаптера NUnit).

Файл используется NUnit, чтобы гарантировать, что мы используем одно и то же значение случайного начального числа для генерации случайных тестовых случаев как в процессе обнаружения, так и в процессе выполнения. Это необходимо, поскольку среда IDE использует два разных процесса для запуска адаптера. На самом деле это не требуется (или не создается) при запуске адаптера под vstest.console.exe.

Другие вопросы по тегам