2011-02-14 117 views
9

作爲我們開發生命週期的一部分,我們在項目中針對C#源代碼運行了大量過程。將自定義信息添加到CSPROJ文件

的過程趕走,目前讀取* .csproj的文件,找到項目中使用的源文件的GUI。這工作正常。

我們現在有一個新的要求,以提供需要時調出web服務的一些驗證過程。 Web服務需要提供一些項目特定的證書。理想情況下,我們可以在* .csproj文件中輸入和存儲這些證書,但我沒有看到擴展它的方法 - 是嗎?

我們真的不希望引入一個新的配置。文件只是爲了這些設置,如果我們可以幫助它。是否有可能存儲這樣的信息是* .csproj文件,如果沒有其他地方可以放置它。

感謝

+0

請不要使用特定的設置,如憑據的.csproj文件 - 憑據使用web.config文件(或app.config)中,作爲憑證可能隨時間而改變。 – 2011-02-14 13:25:16

+1

@moontear,除非作爲OP暗示,證書不是用於代碼,而是用於通過項目「搜索」的過程。在這種情況下,憑證是項目的一個方面,而不是項目中代碼的*執行*。 =) – Rob 2011-02-14 13:28:18

+0

Rob - 你是正確的,這個過程是開發過程的一部分,因此這些證書是「源」的一部分,它們在執行時與應用程序無關。 – 2011-02-14 14:23:46

回答

10

.csproj文件基本上是一個MSBuild file,因爲這樣你可以用自定義值擴展。如果在Visual Studio中右鍵單擊某個項目並選擇「卸載項目」,則該項目將「變灰」,然後可以再次右鍵單擊並選擇Edit [ProjectFileName].csproj。然後,您可以添加類似以下內容:

<PropertyGroup Label="Custom"> 
    <Badger>1</Badger> 
</PropertyGroup> 

當項目被修改,這應該被持久化(即文件添加/刪除),你可以從文件中檢索值,使用的方法你選擇。

1

我知道你解僱,但最明顯的,而且很可能推薦的地方是在配置文件。雖然加密。每個項目

一個配置文件確實爲大多數情況下,是不是一個大的開銷恕我直言。

2

VS項目支持「項目擴展」。這些是直接存儲在csproj/vbproj文件中的自定義數據。你甚至可以很容易地從VS讀取和寫入它們。例如,下面的VS宏寫這樣的自定義設置:

Dim proj As Project = DirectCast(DTE.ActiveSolutionProjects(0), Project) 
proj.Globals.VariableValue("MySettingName1") = "My value1" 
proj.Globals.VariablePersists("MySettingName1") = True 

下讀回:

proj.Globals.VariableValue("MySettingName1").ToString 

而在的csproj文件中的代碼如下所示:

<ProjectExtensions> 
    <VisualStudio> 
     <UserProperties MySettingName1="My value1" /> 
    </VisualStudio> 
    </ProjectExtensions> 

當然,這是持久的,不會被VS覆蓋。

相關問題