2

我想知道什麼是爲我的C#winforms項目正確創建開發和生產環境的最佳方法。不幸的是,沒有開發環境。相反,每次我希望創建生產或開發版本時,我都必須指定發佈路徑。另外,由於每個產品或開發版本使用不同的連接字符串,我必須進入代碼並更改它。創建C#Winform開發和生產環境

編輯另一件事我想補充的是,在「測試」可以這麼說將運行從本地的.exe程序將看看源文件,並檢測是否需要更新時製作。我提到這一點的唯一原因是因爲測試人員不會以'DEBUG'模式運行代碼。

任何想法?

在此先感謝!

回答

3

UPDATE

呼,2009年肯定是很久以前的事;)我要離開後人原來的答案,但是,作爲Eric J. already stated in an updated version of his post in 2012Slowcheetah是一個更靈活的方法解決這個問題的它讓你爲每個配置創建多個配置文件。

原來的答覆

因爲我不知道這是可以做到我不能回答發佈的一部分。但是,對於連接字符串部分,您可以創建一個「連接字符串提供程序類」,如果您正在開發中,它將返回開發連接字符串;如果您正在開發中,則會返回生產連接字符串。

我不知道,如果你正在使用的調試和配置管理器版本編譯模式,但它可能是能夠使用帶有預編譯指令:

public class ConnectionStringProvider 
{ 
    public static string GetConnectionString() 
    { 
    #if (DEBUG) 
     return DevConnectionString; 
    #else 
     return ProdConnectionString; 
    #endif 
    } 
} 

如果您使用的是VS2005設置窗格(在項目設置中),您可以在那裏設置2個連接字符串,並使用它來代替常量值。如果您正在使用任何.Net數據源,則始終可以使用DEV連接字符串來創建對象。

此外,連接字符串提供程序可以使用單例模式,但我不確定會有真正的好處。

+0

感謝您的回覆Fred。如果您閱讀我的編輯,您可以看到人員測試不會從調試環境進行測試。這引起了另一個問題,雖然... 我可以指定發佈爲調試或不? – user141594 2009-08-28 13:02:57

+0

好吧,如果它們沒有運行調試代碼,那麼在配置文件中可能會有一個標誌。但是,在這種情況下,您可以只更改連接字符串的服務器...我不認爲您要搜索的內容是在Visual Studio中構建的,但我可能錯了。 – Allov 2009-08-28 13:38:31

+0

如果你看看Eric的帖子,他告訴你可以創建2個以上的編譯預置(調試和發佈),你可以創建一個「Test」編譯設置,並在測試階段使用這個設置。 – Allov 2009-08-28 13:43:31

3

我不知道你所說的

可惜的是,有沒有 開發環境是什麼意思。

不過,我想指出,你可以處理像

同樣的事情,因爲每個督促或開發人員構建使用 不同的連接字符串我必須 然後進入代碼並更改 作爲好。

帶有條件編譯標誌。例如,你可能是這樣的:

#if DEBUG 
connString = "ABC"; 
#else 
connString = "DEF"; 
#endif 

DEBUG可能不是適合您的環境的標誌。您可以定義自己的標誌(如PROD或DEV),並指定是爲特定的構建類型定義它們,還是從構建在IDE之外的命令行指定它們。

UPDATE

由於最初發布這個答案,SlowCheetah已變得可用。它允許爲每個構建配置的app.config/web.config(以及任何其他XML文件,如NLog配置文件)進行XML轉換。因此,如果您已經說過QA構建配置,則可以爲QA設置XML轉換,例如設置QA環境的適當連接字符串。

這是很多首選放置配置字符串和類似的源代碼。

+0

如果您有測試,開發,交錯,生產環境,則不適合 – Kiquenet 2012-09-05 11:04:12

+0

@Kiquenet:嗯,它可以用於多種環境。但是,使用SlowCheetah之類的更好。我適當地更新了我的答案。 – 2012-09-05 20:43:58

1

您可以從配置文件中讀取連接字符串。

然後,您將在PROD和DEV中使用相同的程序文件,只是不同的配置文件。

1

如何使用Virtual PC創建單獨的環境?這現在是最佳做法。

+0

不幸的是,我被困在沒有虛擬環境的情況下,無法滿足我的需求 – user141594 2009-08-28 12:53:56