В среде 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 в событии после сборки.