2014-02-14 58 views
2

如果我沒有在標題中正確提問,我很抱歉。我不知道如何提問或需要什麼。用預定義的設置生成一個exe文件

- 假設我有一個名爲「TestApp」的簡單應用程序,用C#編寫。

內部的應用程序,我有下一個變量:

int clientid = 123; 
string apiurl = "http://somesite/TestApp/api.php"; 

時,我有一個新的客戶,我需要創建一個新的特別TestApp.exe只是對於他來說,改變內部的「客戶端ID」變量碼。

這是可能的自動化這個過程?自動更改該變量並導出一個exe文件而不會干擾該過程?

-

我問這個,因爲我相信/或我敢肯定,這是可能的,因爲下一個最典型的例子:

再一次,如果我沒有正確地問我的問題和我的英語不好,盡我所能,我很抱歉。

回答

3

所以,你有兩個部分,以你的問題:

  1. 你想擁有基於客戶端程序中的變量爲您的應用程序
  2. 要自動進行設置更改的過程。

爲使自定義設置:

使用AppSettings

首先,爲System.Configuration組件添加引用。

在您的app.config文件:

<configuration> 
    <appSettings> 
    <add key="ClientID" value="123" /> 
    <add key="ApiUrl" value="http://somesite/TestApp/api.php" /> 
    </appSettings> 
</configuration> 

在你的代碼,閱讀設置:

using System; 
using System.Configuration; 

class Program 
{ 
    private static int clientID; 
    private static string apiUrl; 

    static void Main(string[] args) 
    { 
     // Try to get clientID - example that this is a required field 
     if (!int.TryParse(ConfigurationManager.AppSettings["ClientID"], out clientID)) 
      throw new Exception("ClientID in appSettings missing or not an number"); 

     // Get apiUrl - example that this isn't a required field; you can 
     // add string.IsNullOrEmpty() checking as needed 
     apiUrl = ConfigurationManager.AppSettings["apiUrl"]; 

     Console.WriteLine(clientID); 
     Console.WriteLine(apiUrl); 

     Console.ReadKey(); 
    } 
} 

More about AppSettings on MSDN


要自動設置的創建:

這一切都取決於你想要得到多麼複雜。

  • 當你建立你的項目,你的app.config文件將成爲TestApp.exe.config
  • 您可以使用ConfigurationManager類寫配置文件。
  • 此外,您可以編寫一個小型的Exe文件,它將配置文件寫入自定義設置,並將其作爲構建操作的一部分執行。很多方法可以實現自動化,這取決於您打算如何部署應用程序。

編程寫的app.config文件appSettings部分的一個簡單的例子:

public static void CreateOtherAppSettings() 
{ 
    Configuration config = 
     ConfigurationManager.OpenExeConfiguration("OtherApp.config"); 

    config.AppSettings.Settings.Add("ClientID", "456"); 
    config.AppSettings.Settings.Add("ApiUrl", "http://some.other.api/url"); 

    config.Save(ConfigurationSaveMode.Modified); 
} 
+0

感謝您的快速答覆。但是,我怎麼實際上可以部署應用程序,因爲它是一個獨立的.exe,它有可能在exe文件中自動嵌入user.config? – user3280998

+0

你不會將它嵌入到exe文件中 - 它總是一個單獨的配置文件。您可以爲每個部署生成配置文件,我已經更新了我的答案並正在處理一個示例。 –

+0

@ user3280998:以示例查看更新的答案。這應該足以讓你運行它並找出如何最好地生成配置。我不知道你的項目顯然更具體,但我已經爲你提供了幾個選項和例子。 –