簡體   English   中英

如何在C#代碼中嵌入文件的內容?

[英]How to embed content of the file in the C# code?

問題

我有一個包含這樣的文本的文件(沒有別的)

2010-10-05

我想將此文件(內容)嵌入到C#代碼中,因此我可以將此文本分配給常量(字符串MyDate),然后使用此常量。

背景

我試圖實現的是保持程序的相關信息 - 無論是在網站上還是在程序內。

解決方案必須是:

  • 死得很簡單
  • 自動
  • 光滑

我想到的最簡單的,就是保持文件“版本”與版本(實際發布日期,因為它更有意義恕我直言),這樣的文件可以在網站上顯示沒有問題(PHP)。 我想我管理寫的.bat文件很小,可以在每次構建時自動生成這樣的文件。

但是如何在C#代碼中使用它(嵌入)?

我想要實現這個或替代解決方案,但不比這個更復雜。

解決方法

我已經知道了幾個解決方法,比如:

  • 不僅可以創建具有日期的文件,還可以創建可以直接編譯的小型C#代碼
  • 在安裝程序中包含此文件,並在安裝后讀取它,以獲取版本信息

但是我也不覺得“干凈”。 我需要更順暢的東西:-)

背景的背景

我的程序一方面應該通知用戶“嘿,有更新版本的程序”,另一方面當瀏覽網頁時,應該在頁面上顯示有關發布日期的信息。

事實

  • 版本:構建日期,也是發布日期
  • 網站:Linux,HTML和PHP
  • 程序:VS 2010,C#4.0,單個exe
  • 安裝程序:高級安裝程序

編輯 - 解決方案

我試圖完全避免這個問題,並依賴文件的時間戳 - 它可以工作,因為當你在午夜之前構建exe並在之后創建安裝包時,只有一個弱點。 但是,將文件上傳到ftp服務器這樣的計划 - 你必須確保ftp服務器支持時間戳修改,你不能使用SFTP協議。

所以,我最終創建了“版本”文件而沒有嵌入它(因為我不知道如何) - 我在網站上用PHP腳本和執行時用C#代碼讀取內容。

預先感謝您的幫助。

如果使用資源文件(.resx文件),則可以將其編譯到程序集中。

MSDN: 添加和編輯資源(Visual C#)

要解決檢查更新的問題,您可以:使用WebClient從您的站點加載頁面,並檢查版本信息。

要解決顯示版本信息的問題,您只需在安裝程序中保留一個名為versioninfo.txt的文本文件,然后在運行時加載/顯示該文件,或者如@Daniel所述,您可以使用資源將文本文件編譯為二進制。

您的問題似乎有兩個部分:

1)自動為您的程序生成內部版本號/版本

2)有一個Web服務,它將檢查內部版本號是否是最新版本。

對於第1部分,有多種解決方案,例如通過資源自動包含文件和預構建事件,甚至使用MS自動遞增構建號。

第二部分涉及與您的網站共享該信息。 只要您“發布”最新版本的程序並且可能是手動事件,就必須發生這種情況。 您可以編寫一個“發布”程序來讀取程序的MS內部版本號或嵌入式資源,並將其寫入您將用作Web服務的后端存儲的內容。

然后,Web服務對來自已安裝程序的請求進行轉換,並檢查是否存在更高版本。

編輯

再思考一下。 您只需要每次構建程序時增加的MS內部版本號。 將其視為索引保存在您網站上的數據的關鍵。 程序將版本號發送到Web服務,如果有更新版本,則Web服務返回較新的版本號加上其發布日期。

但是,您可能仍希望在程序中嵌入發布日期,以便將其顯示在about框中,而無需轉到Web服務來查找該信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM