1 / 1 / 0
Регистрация: 03.02.2011
Сообщений: 29
|
|
1 | |
Как вставить дату текущей компиляции?29.03.2011, 13:39. Показов 12604. Ответов 20
Метки нет (Все метки)
В некоторых программах есть строка мол "Copiled бла-бла-бла". Как сделать так, чтобы компилятор C# тоже вставлял текущую дату в исходник при компилировании (интересует это для заголовка WinForms и просто консольных приложений).
0
|
29.03.2011, 13:39 | |
Ответы с готовыми решениями:
20
Как вставить содержимое файла в *.cs при компиляции? [РЕШЕНО]GCC+makefile=вставить в *.bin дату компиляции? Как сравнить дату с текущей? Как вычесть из текущей даты, дату в документе? |
Padawan
473 / 323 / 30
Регистрация: 30.01.2010
Сообщений: 1,841
|
||||||
29.03.2011, 13:43 | 2 | |||||
0
|
гроза ленивых студентов
456 / 411 / 51
Регистрация: 27.03.2011
Сообщений: 823
|
|||||||||||
29.03.2011, 14:13 | 3 | ||||||||||
Johnny_D, я так понимаю, человеку нужно, чтобы у него на формах отображалось время компиляции, а не время запуска приложения...
если я правильно понимаю, то один из путей такой: узнать имя исполняемого файла (не забить жестко, а именно узнать, ибо юзер файл может переименовать), затем узнать время последнего изменения этого файла (когда мы запускаем экзешник мы ведь его не изменяем изменяется он только при компиляции)... если теория верна, то можно использовать такой код:
1
|
Padawan
473 / 323 / 30
Регистрация: 30.01.2010
Сообщений: 1,841
|
|
29.03.2011, 14:15 | 4 |
znake, логично, я поспешил тут.
0
|
194 / 193 / 17
Регистрация: 07.11.2010
Сообщений: 477
|
|
29.03.2011, 14:47 | 5 |
Но это не совсем то... дату файла можно поменять (иногда меняется при копировании, скачивании некоторыми программами). И версия программы сразу изменится, а это нехорошо
0
|
гроза ленивых студентов
456 / 411 / 51
Регистрация: 27.03.2011
Сообщений: 823
|
|
29.03.2011, 14:52 | 7 |
Leax, а версия программы то изменится от чего?!
а относительно даты файла...меняется по идее лишь дата создания, открытия при этих процессах...ибо система их перезаписывает при таких раскладах...вот если бы прога сама себя качала из инета (при обновлении) - то, может это бы и меняло данный атрибут, но! при скачивании обновления мы и так качаем новую версию с новой датой компиляции... ну либо я где-то ошибаюсь - не знаю...посмотрел, пару раз файл по разным папкам покопировал - вроде нормально все осталось...
0
|
194 / 193 / 17
Регистрация: 07.11.2010
Сообщений: 477
|
|
29.03.2011, 14:53 | 8 |
nio, но вопрос остался открытым: как при компиляции программы сохранять текущие данные (например, текущую дату), чтобы потом их можно было прочитать в программе во время выполнения exe-файла. Может есть какие-то специальные директивы компилятора?
1
|
1 / 1 / 0
Регистрация: 03.02.2011
Сообщений: 29
|
|
29.03.2011, 15:03 [ТС] | 10 |
Я тоже об этом и думаю. Ибо дата создания/изменения меняется и сбивается иногда при копировании.
0
|
179 / 175 / 14
Регистрация: 17.01.2011
Сообщений: 349
|
||||||
29.03.2011, 15:25 | 11 | |||||
Ticksy, на иностранных форумах эта тема не раз поднималась. Общая суть решения сводилась к следующему алгоритму:
есть версия сборки и версия файла, допустим, версию файла мы используем по назначению. Тогда берем определенную дату (допустим, 1 января 2000 года) и считаем разницу в днях\секундах\любых удобных единицах от этой даты до текущего дня. И записываем разницу в версию сборки, которую все равно не используем. Затем при запуске программы извлекаем версию сборки, прибавляем её с помощью стандартной функции к известной начальной дате и получаем дату компиляции. Добавлено через 16 минут Нашел интересное решение, берет время из верхнего колонтитула исполняемого файла. Сам пока разбираюсь, вот решение, как есть:
0
|
194 / 193 / 17
Регистрация: 07.11.2010
Сообщений: 477
|
|||||||||||||||||||||
29.03.2011, 23:24 | 12 | ||||||||||||||||||||
Придумал отличное решение! Сделано немного через задницу, но поэтому - универсальное!
Суть такая: 1. cоздаем вспомогательный проект Prepare, который сохраняет текущую дату в текстовый файл "mydata.txt" и закрываем его.
3. Создаем в проекте новый текстовый ресурс mydata: - заходим в свойства проекта "Project\ TestResource Propeties ..." (внизу меню). - далее: TestResource\ Resources; затем вверху: Add Resource \ Add New Text File - на запрос имени вводим mydata - появится пустое окно, которое сразу закрываем (Вверху делаем правый клик по закладке mydata.txt - выбираем Close) - в окне ресурсов должен появиться элемент mydata. - выделяем его мышкой и копируем в буфер его свойство FileName (у меня, например, D:\Мои документы\Visual Studio 2008\Projects\TestResource\TestResource\Resources\mydata.txt). Теперь у нас есть путь к файлу ресурса 4. Настраиваем этот ресурс так, чтобы он включался в код exe-файла: - открываем Solution explorer (меню View\ Solution Explorer) - в списке ресурсов (Resources) должен быть файл mydata.txt - кликаем на нём правой кнопкой - выбираем Properties - настраиваем: Build Action = Embedded Resource 3. Теперь настраиваем в свойствах проекта свойство Pre-build event command line (в свойствах проекта слева закладка Build Events). - в поле Pre-build event command line пишем: d:\Prepare.exe - закрываем и сохраняем наш основной проект 4. Исправляем вспомогательный проект Prepare - вносим реальный полный путь к файлу mydata.txt основного проекта TestResources - исправляем код
- закрываем вспомогательный проект Prepare - копируем файл prepare.exe в d:\prepare.exe 5. Открываем основной проект TestResources и добавляем в код для теста строки:
- перед компиляцией выполняется файл prepare.exe, который сохраняет дату в текстовый файл mydata.txt - т.к. mydata.txt является файлом-ресурсом, то он включается в код компилируемого exe-файла основного проекта - при запуске основного проекта происходит чтение из прикомпилированного ресурса - задача решена! Таким образом, во время компиляции файла можно сохранить любую информацию, которая впоследствии может быть прочитана уже во время выполнения exe-файла З.Ы.: можно сделать еще лучше, если в prepare.exe использовать параметры командной строки для указания места хранения файла-ресурса основного проекта
1
|
17686 / 12872 / 3365
Регистрация: 17.09.2011
Сообщений: 21,138
|
||||||
29.04.2014, 10:11 | 15 | |||||
AntonChik, hepper, откопали же тему трехлетней давности!
Ну, раз уж подняли. Дату и время компиляции можно вшить в версию приложения, достаточно в свойствах проекта в закладке Assembly очистить поле Revision и в поле Build прописать "*" (без кавычек). Если это сделать, то студия автоматом пропишет дату компиляции в версию продукта в следующем формате: Build = количество дней с 1 января 2000 года. Revision = количество секунд с полуночи, деленное на два. После чего достать ее в коде — две строчки:
3
|
2 / 2 / 0
Регистрация: 18.06.2016
Сообщений: 143
|
|
30.12.2016, 15:46 | 16 |
kolorotur, Может не в тему, но: Visual Studio 2015 - такого я там не нашёл, в той последовательности что вы описали. Только в "Публикация" - есть намёк на указаные параметры, только "*" не хочет принимать.
0
|
17686 / 12872 / 3365
Регистрация: 17.09.2011
Сообщений: 21,138
|
|
30.12.2016, 15:54 | 17 |
В свойствах проекта на самой первой закладке (Application) есть кнопка Assembly Information — вам туда
1
|
2 / 2 / 0
Регистрация: 18.06.2016
Сообщений: 143
|
|
30.12.2016, 16:17 | 18 |
а. Тяжело быть тупым. . .
Добавлено через 13 минут А оно ругается: "Версия сборки", "Версия файла сборки" - Недопустимый формат версии. При "Чистом поле" или *.
0
|
17686 / 12872 / 3365
Регистрация: 17.09.2011
Сообщений: 21,138
|
|
30.12.2016, 16:28 | 19 |
1
|
2 / 2 / 0
Регистрация: 18.06.2016
Сообщений: 143
|
|
30.12.2016, 16:57 | 20 |
Зафурычило!
0
|
30.12.2016, 16:57 | |
30.12.2016, 16:57 | |
Помогаю со студенческими работами здесь
20
Как узнать полную дату понедельника текущей недели? Как изменить дату компиляции Как вставить дату в форму? Как вставить дату и время Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |