2017-05-15 58 views
0

我的Visual Studio ASP.NET C#解決方案/項目的設置是這樣的:VS 2015/C# - 包括(但不進行編譯)在項目源文件建立

> MySolution 
    > MyProject 
     * MyFolder 
     * MyPages 
     * MyScripts 
     ... 
     MyConfig.cs <-- This file 
    ... 
--- End MyProject/MySolution 

我有這個項目的編譯,但在這個過程中,當我需要它時,它也會編譯MyConfig.cs文件。

這個文件包含了各種形式的幾個屬性,在整個應用程序中使用,我想它是留在源代碼的形式,以便它可以很容易地編輯爲純文本的服務器上,如果需要的話無需重建/重新部署解決方案/項目。

我試着將文件的屬性,特別是「Build Action」&「Copy to Output Directory」設置爲「Content」和「Always」,「Compile」和「Always」,「AdditionalFiles」和「總是」......分別。一切都沒有成功。我不確定爲了實現這種行爲需要進行更改。

任何幫助或幫助表示讚賞。謝謝

+1

所以我會問一個明顯的問題:爲什麼使用源代碼來管理配置設置而不是使用內置的配置子系統?源代碼似乎很容易出現拼寫錯誤 - 想想在正常開發過程中每天打破構建的次數......藉助IDE ......具有錯誤突出顯示。 –

+2

如果您在服務器上包含源代碼,那麼您如何期望成爲應用程序的一部分?用戶進行更改後,他們將在服務器*上編譯它*?這似乎很荒謬。如果它是一個ASP.NET項目,請像使用其他應用程序一樣使用.config文件或創建settings.json文件。當它不屬於C#時,保持它是愚蠢的。 – mason

+0

如果您打算做這樣的事情,那麼您需要查看託管擴展框架http://mef.codeplex.com/或CSharpCodeProvider類https://msdn.microsoft.com/en-us/library/ microsoft.csharp.csharpcodeprovider.aspx。此外,如何從構建排除文件:https://msdn.microsoft.com/en-us/library/ms171455.aspx –

回答

0

更改構建類型爲內容或沒有應該是足夠的,但智能並不總是捕捉這種變化。在重建之前,您需要先關閉文件。之後您可以重新打開它,不應該在編輯器中編譯或錯誤檢查。

+0

@SC我試過這個,但是在我引用MyConfig.cs中的屬性的情況下,項目不會編譯說類/屬性不存在(即缺少一個程序集引用)。使用MyConfig.cs的文件需要也被設置爲「內容」構建行爲呢? – B1313

+0

是的,如果你不想讓它們編譯。否則你有一個不一致的目標。如果不是這樣,你需要考慮一些已經發布的評論,說明你爲什麼要做你正在做的事情,以及更好的方法。 –

+0

我不確定您是否知道,但是您可以創建由模型支持的自定義配置部分,以允許配置文件匹配您的複雜配置屬性類型。你仍然可以在服務器上編輯它,而無需重新編譯或重新打包(假設這是一個你正在討論的app.config,它會變成YourApplication.exe.config)。 –

相關問題