В среде IDE C # для этого есть опция «Определенная версия = Ложь». Недоступно в C ++ / CLI IDE. Честно говоря, это не настоящая проблема. Возможно, вы неправильно используете атрибут [AssemblyVersion]. Эта версия связана с общедоступными классами в сборке. Если вы сделаете какие-либо изменения в открытых членах этих классов, вы получите потенциально опасное изменение, которое может привести к сбою кода, который зависит от этих классов.
В этой точке , если вы измените [AssemblyVersion]. И любой проект, который использует сборку, должен обновить свою справочную сборку и должен быть перекомпилирован.
В противном случае неразрывное изменение, такое как исправление ошибки или подстройка невидимых классов, создает новый файл, который в остальном полностью совместим с любым проектом, который его использует. Вам следует обновить номер [AssemblyFileVersion]. Который в проекте C ++ / CLI требует обновления неуправляемого ресурса Version. Изменение соответствующего файла .rc может быть автоматизировано, или вы можете использовать # define.
Обратите внимание, что базовые сборки .NET в версии 2.0 вели себя так же. Их версия [AssemblyVersion] оставалась на уровне 2.0.0.0 в версиях 3.0, 3.5 и 3.5 SP1. Их версия файла началась с 2.0.50727.42. И за последние 5 лет многократно увеличился, до 2.0.50727.4927, давай или бери.
Напомним, что ошибка VS2010, с которой вы связаны, не является ошибкой. Это просто никогда не срабатывало раньше, провал молчал. Это недостаток системы сборки C ++, mt.exe встраивает манифест после сборки со строгим именем. И ломает строгое имя в процессе, потому что это меняет хеш файла. VS2010 на самом деле является улучшением, он предупреждает об этом, а не молча пропускает сломанное строгое имя. Вам не нужно откладывать подпись, вы можете подать в отставку только с -Ra в событии после сборки.