Отключение детерминизма при компиляции в Visual Studio
Добрый день.
При разработке приложений возникает необходимость указывать их версию. Не станем вдаваться в подробности, для чего это необходимо, т.к. подробную информацию об этом можете найти сами.
Разговор пойдет про среду разработки Visual Studio и язык программирования C#.
Начиная с версии 2015 все настройки, связанные с поддержкой версий и встроенным механизмом описания общеязыковой исполняющей среды хранятся в файле AssemblyInfo.cs (в каталоге вашего проекта). Управлять данными настройками можно через свойства проекта или же напрямую через данный файл.
В самом файле в комментариях внизу есть строка: [assembly: AssemblyVersion("1.0.*")]
Так вот, звездочка как раз и означает, что дальше цифры будут генерироваться автоматически при каждом выполнении или сборке (в зависимости от типа проекта).
Если попытаться запустить приложение, то компилятор выдаст ошибку следующего вида:
Ошибка CS8357 Указанная строка версии содержит подстановочные знаки, несовместимые с детерминизмом. Удалите их из строки версии либо отключите детерминизм для этой компиляции.
Ошибка возникает при включенном флаге детерминизма (по умолчанию он как истина). Более подробную информацию можно найти на сайте Microsoft.
Данная ошибка легко исправляется:
1. Запустите среду разработки Visual Studio 2015 (2017-2019).
2. Откройте файл с расширением .csproj в любом текстовом редакторе.
3. Измените следующее значение с true на false: <Deterministic>false</Deterministic>
4. Сохранить csproj-файл и откройте Visual Studio.
5. Откройте ваше решение и все должно теперь прекрасно работать.
Вот такой короткий, но полезный совет.