2013-03-01 12 views
0

我正在爲現有的.Net應用程序編寫一個API,以便將該應用程序用作其他自定義應用程序的「引擎」(可能是由客戶編寫)。前提是「引擎」將始終安裝並在目標機器上運行。如何編寫.Net應用程序的API - 無法訪問配置文件

我的方法是在'引擎'應用程序的VS解決方案中創建一個新項目,該類庫提供公共方法來將應用程序自己庫的細粒度功能聚合到更高級別的簡化方法調用中要使用的第三方應用程序作者。

API在'引擎'解決方案的環境中運行良好,單元測試正常工作。然而,當我嘗試在VS解決方案之外創建一個簡單的「自定義」應用程序時,使用對API的引用來提供我需要的服務,我遇到了一個問題 - 除非我的自定義應用程序具有「引擎」的副本app.config(sic)文件在編譯之前,引擎會在嘗試訪問其配置文件時引發異常。

很明顯,期望第三方開發者擁有app.config文件是不切實際的,而且有點不雅,希望他們不得不將引擎的配置文件複製到他們的解決方案中並對其進行重命名。

有沒有更乾淨的方法來做到這一點?目標是讓自定義應用程序僅需要對API程序集的引用,並且引擎可以像正常使用那樣「正常工作」。最好避免使用二進制遠程處理,Web服務和COM(假設他們將解決問題)。

哦,這是所有的.NET 3.5 & VS2008 TIA

+0

我的第一個想法是:儘量保持引擎儘可能乾淨,所以避免引擎的任何配置文件。所有配置參數必須由第三方開發者通過設置引擎「環境」的API傳遞。所以你的引擎就像黑匣子一樣。 – michele 2013-03-01 11:43:11

+0

不可能 - '引擎'是一個既定的應用程序,是一個給定的,並且有一個複雜的配置文件。無法改變這一點。應用程序開發人員不應該知道引擎需要什麼才能工作。 – haughtonomous 2013-03-01 12:21:44

回答

0

是,使用的NuGet。 如果您將程序集打包到NuGet程序包中,您可以添加configuration file transform,它將自動添加/更新引擎的配置屬性。然後,當你的消費者從你的本地NuGet服務器上獲取你的引用時,他們將獲得程序集引用和配置轉換。

我會建議爲你的引擎做一個正式的配置部分,以便你知道你只是在NuGet包中管理它的配置。

+0

爲.Net應用程序編寫API的官方策略是什麼? – haughtonomous 2013-03-01 12:23:17

+0

我不爲微軟工作,所以我不知道「官方」策略:),但是......這取決於。如果您將API部署爲需要開發人員參考的庫(彙編),那麼我會說NuGet正在成爲最佳實踐。 – 2013-03-01 12:33:58

+0

過去,通常會下載二進制文件,然後從解決方案根目錄的lib文件中進行引用。消費開發人員手動添加所需程序集的任何配置。這種配置通常在API文檔中指定。 – 2013-03-01 12:36:37

相關問題