通常 config 設定會在陸續在專案檔建立後就會陸續建立其他環境,若是先將專案檔一開始全數建好,再建立相對應的環境設定,那麼不會有設定檔少套用的問題。然而如果是先將設定檔全數建好,再慢慢回頭補建專案檔,有可能會造成設定檔會無法套在專案上的問題。
首先建立 TestConfig, ClassLibrary 這兩個專案在一個專案檔裡,而一開始的確也只有 debug/release 兩個設定檔的環境
接著我們想建立一個新的設定檔給 PRD,建立後的確也能完美的套用在既有的這兩個 TestConfig, ClassLibrary 專案檔上 (只要針對要轉換的 config 右鍵選擇 add config transforms 即會產生)
再來我們加上了一個專案叫做 ConsoleDemo 的專案,這時候就會發現 PRD 的設定檔無法套用在這個專案上
先檢查 sln 的檔案是否有什麼問題, 在 GlobalSection 的確也有這三個設定檔,而這三個專案檔也都相對有了這三組的設定檔,到目前為止都沒什麼問題
然而我們再往下檢查 .csrpoj 的專案檔,即會發現在 PropertyGroup 的確少了新的設定檔,不知這是否為 VS IDE 的 bug?
將 PRD 的設定補上後
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'PRD|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\PRD\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
再針對 config 檔重新執行 add config transforms 即可產生出我們要的環境設定轉換檔案了