Я хочу знать, как установить номер версии существующего двоичного файла без необходимости пересоздавать его исходный код.Как обновить номер версии файла C# DLL без повторной компиляции?
ответ
Во-первых, я хотел бы сказать, что считаю, что это может быть ужасной идеей ... это может быть истолковано как мошенничество.
Сказав это, пожалуйста, обратитесь к сообщению How to update assembly version of a dll without compiling in c#? на MSDN. Согласно Конраду, вы можете «просто отредактировать файл напрямую, чтобы изменить информацию о версии» (хотя он советует против этого).
Только что попробовал это, я могу подтвердить, что DLL файл может быть открыт в текстовом редакторе, и что версия файла может быть отредактированы. Информация о текстовой версии находится в конце файла.
Я могу только предположить, что есть также двоичные версии файлов, скрытые где-то в файле, потому что после изменения текстовых версий окно свойств Windows больше не отображает информацию о версии продукта на вкладке «Сведения». Я предполагаю, что это потому, что текстовая версия больше не соответствует скрытой двоичной версии (просто догадка). Как ни странно, dll все еще работало после редактирования, но я бы по-прежнему не советовал делать это.
Просто интересно (и IANAL), но почему это было бы незаконным/мошенничеством? –
@pwny, потенциально потому, что конкретная версия файла/dll может иметь лицензионные/договорные обязательства и ограничения, связанные с ним. Изменяя номер версии файла, вы потенциально можете создать непересекающийся между контрактом и двоичным кодом (контракт применяется к DLL V1, но DLL сообщается как V2, который имеет разные обязательства).Я не легализую, но это мой прием. –
относительно вашего первого абзаца: посмотрите, почему я использую его в своем ответе. Ничего плохого в этом нет, не говоря уже об ужасной идее. Однако, конечно, мы не знаем, что OP планирует с ним сделать: P – stijn
Использование reshacker.exe возможно полностью заменить ресурс versioninfo
в dlls. (Я использую это, например, для установки версии DLL, выпущенной набором инструментов компилятора Matlab, что намного проще, чем пытаться выяснить, как сделать с ней сделку mcc). Я просто попробовал тот же принцип для сборок, и он работает так же хорошо, и информация о версии должным образом отображается в проводнике, и приложение все еще работает.
Вы можете сделать это только через gui, но вот как я использую его из скриптов сборки. Сначала убедитесь, что у вас есть файл .res, испущенный rc.exe
, содержащий полный ресурс VERSIONINFO (см. here для примера того, как должен выглядеть такой файл rc). Затем создать INI-файл, содержащий:
[FILENAMES]
Exe=path/to/dll
SaveAs=path/to/dll
log=res.log
[COMMANDS]
-delete versioninfo, 1,
-addoverwrite path/to/dll/version.res, versioninfo, 1,
и запустить
reshacker -script patho/to/script
и он заменит информацию о версии в пути/к/длл с информацией от пути/к/длл/version.res. Проверьте res.log, чтобы убедиться, что что-то не так.
- 1. C# update DLL без повторной компиляции проекта
- 2. Добавление экспорта в DLL без повторной компиляции
- 3. Как обновить SWF без повторной компиляции FLA
- 4. Изменение значения параметров dll без повторной компиляции
- 5. C# редактируемые ресурсы без повторной компиляции
- 6. Обновить исполняемый файл с новым файлом lib без повторной компиляции
- 7. Отладка приложения без повторной компиляции
- 8. .NET заменяет зависимые сборки без повторной компиляции?
- 9. Изменение изображения без повторной компиляции
- 10. Ошибки при повторной компиляции в .dll
- 11. Включить номер версии при компиляции общих объектов
- 12. Программно получить номер версии DLL
- 13. Способы добавления функциональности в приложение C# без повторной компиляции
- 14. Как узнать номер версии DLL в MSBuild?
- 15. Возможно ли изменить файл settings.settings без повторной компиляции в .NET?
- 16. Visual Studio и .DLL Номер версии
- 17. номер версии библиотеки DLL в .NET
- 18. C#: как установить номер версии сборки
- 19. мин Номер версии без установки
- 20. java - можно ли выбрать номер версии при компиляции файла?
- 21. Как обновить номер версии в дополнении Plone?
- 22. Как обновить номер версии в Maven POMs
- 23. Добавление функциональности Readline без повторной компиляции Python
- 24. Автоматически включать текущий номер версии при компиляции
- 25. JavaEE6 включить/отключить webfilter без повторной компиляции
- 26. Перестроить без повторной компиляции предварительно скомпилированных заголовков
- 27. Изменение строки подключения без повторной компиляции
- 28. Изменение интерфейса CORBA без повторной компиляции
- 29. Зависимость впрыска, смена реализации без повторной компиляции
- 30. Исправление двоичного кода без повторной компиляции в VS2005
Эти управляемые (.NET) dlls? Если они управляются - они подписаны? – RQDQ
Почему вы хотите изменить версию no существующего двоичного кода? Если вы хотите обновить двоичный файл, просто замените его на новую версию. – Nolonar
В каком-то смысле я надеюсь, что это невозможно. –