Как встроить содержимое файла в код C #? - PullRequest
2 голосов
/ 09 ноября 2010

Задача

У меня есть файл, который содержит такой текст (больше ничего)

2010-10-05

Я хотел бы встроить этот файл (содержимое) в код C #, чтобы я мог присвоить этот текст константе (строка MyDate), а затем использовать эту константу.

Фон

Я стараюсь синхронизировать информацию о программе - как на веб-сайте, так и внутри программы.

Решение должно быть:

  • очень просто
  • автоматический
  • гладкий

Самое простое из того, о чем я подумал, - это сохранить «версию» файла с версией (на самом деле это дата выпуска, потому что это более значимо ИМХО), такой файл можно без проблем отобразить на веб-сайте (PHP). Я думаю, что мне удается написать крошечный файл .bat для автоматической генерации такого файла при каждой сборке.

Но как его использовать (встраивать) в код C #?

Я бы хотел достичь именно этого или альтернативного решения, но не более сложного, чем это.

Обходные

Я уже знаю несколько обходных путей, например:

  • создание не только файла с просто датой, но и небольшого фрагмента кода на C #, который можно напрямую скомпилировать
  • включая этот файл в установщике и после прочтения установки, чтобы получить информацию о версии

Но оба не чувствуют себя "чистыми" и я. Мне нужно что-то более плавное: -)

Фон фона

Моя программа должна уведомлять пользователя «эй, есть более новая версия программы» с одной стороны, с другой стороны, при просмотре веб-сайта информация о дате выпуска должна отображаться на странице.

Факты

  • версия: дата сборки, которая также является датой выпуска
  • веб-сайт: Linux, HTML и PHP
  • программа: VS 2010, C # 4.0, одиночный exe
  • Установщик: Расширенный Установщик

Редактировать - решение

Я пытался полностью избежать этой проблемы и полагаться на временные метки файлов - это могло сработать, потому что только один слабый момент был бы в том случае, если вы собираете exe до полуночи, а создаете установочный пакет после. Однако загрузка файлов на ftp-сервер разрушает такой план - вы должны убедиться, что ftp-сервер поддерживает изменение метки времени, и вы не можете использовать протокол SFTP.

Итак, я закончил тем, что создал файл версии и не встраивал его (потому что я не знаю как) - я читал содержимое как с помощью PHP-скрипта на веб-сайте, так и с помощью кода C # при выполнении.

Заранее благодарю за помощь.

Ответы [ 3 ]

6 голосов
/ 09 ноября 2010

Если вы используете файл ресурсов (файлы .resx), его можно скомпилировать в сборку.

MSDN: Добавление и редактирование ресурсов (Visual C #)

1 голос
/ 09 ноября 2010

Ваш вопрос, кажется, состоит из двух частей:

1) Автоматически генерирует номер сборки / версию для вашей программы

2) Наличие веб-службы, которая проверяет, является ли номер сборки последней версией.

Для части 1 существует несколько решений, таких как автоматическое включение файлов через ресурсы и события предварительной сборки или даже использование MS, автоматически увеличивающей номера сборки.

Вторая часть предусматривает обмен этой информацией с вашим сайтом. Это должно происходить всякий раз, когда вы «публикуете» свою последнюю версию программы, и, вероятно, это ручное событие. Вы могли бы написать «публикующую» программу, которая считывает номер сборки MS или встроенный ресурс вашей программы и записывает это в то, что вы когда-либо будете использовать в качестве внутреннего хранилища для вашей веб-службы.

Затем веб-служба отправляет запросы от установленных программ и проверяет, существует ли более поздняя версия.

редактировать

Думая об этом еще немного. Все, что вам нужно, это номер сборки MS, который увеличивается каждый раз при сборке программы. Думайте об этом как о ключе к индексации данных, хранящихся на вашем сайте. Программа отправляет номер версии веб-службе, и, если существует более новая версия, веб-служба возвращает более новый номер версии плюс дату публикации.

Однако вы все равно можете добавить дату публикации в вашу программу, чтобы отобразить ее в окне «About», не обращаясь к веб-службе для поиска этой информации.

1 голос
/ 09 ноября 2010

Чтобы решить проблему проверки обновлений, вы можете: использовать WebClient для загрузки страницы с вашего сайта и проверить информацию о версии.

Чтобы решить проблему отображения информации о версии, вы можете просто оставить текстовый файл с именем versioninfo.txt в вашем установщике и загрузить / отобразить его во время выполнения или, как указано @Daniel, вы можете использовать ресурс для компиляции текстовый файл в двоичный файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...