添加新項目後,須要對配置管理器進行設置。默認新加的項目只有debug和releasehtml
現加其餘環境(dev、uat...)的配置【經過項目文件.csproj來加,拷貝其餘項目的節點】,而後同步(即每一個都單擊切換一下)數據庫
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Test|AnyCPU'"> <OutputPath>bin\Test\</OutputPath> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'UAT|AnyCPU'"> <OutputPath>bin\UAT\</OutputPath> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Prod|AnyCPU'"> <OutputPath>bin\Prod\</OutputPath> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Testu|AnyCPU'"> <OutputPath>bin\Testu\</OutputPath> </PropertyGroup>
而後從新生成項目,再各個環境切換一下【即同步】。編輯器
即切換配置管理器中的「活動解決方案配置」,下面項目的配置也選擇爲同樣的。ide
爲了更好的編譯不一樣的配置,須要作第二步,App.config 配置轉換工具
參考:網站
http://www.javashuo.com/article/p-fvpjysga-hr.htmlui
http://www.javashuo.com/article/p-qdbdtmkq-gk.htmlspa
問題debug
部署項目時,經常須要根據不一樣的環境使用不一樣的配置文件。例如,在部署網站時可能但願禁用調試選項,並更改鏈接字符串以使其指向不一樣的數據庫。在建立 Web 項目時,Visual Studio 自動生成了 Web.config
、Web.Debug.config
、Web.release.config
這3個不一樣的配置文件,並提供了轉換工具,用於在部署項目時自動轉換配置文件內容。具體能夠參考這2篇文章:如何:在部署 Web 應用程序項目時轉換 Web.config 和 用於 Web 應用程序項目部署的 Web.config 轉換語法 。調試
然而在其餘項目類型中(如控制檯應用程序、Windows 服務),並無現成的配置文件的轉換功能。
作法
一、咱們在項目中添加 App.config
、App.Debug.config
、App.Release.config
這3個配置文件。
二、打開項目所在目錄,用記事本或其餘文本編輯器打開 .csproj
文件。
三、在 最後一個PropertyGroup
標籤下添加以下內容:
<PropertyGroup> <ProjectConfigFileName>App.config</ProjectConfigFileName> </PropertyGroup>
四、在 ItemGroup
標籤中找到和 App.config
、App.Debug.config
、App.Release.config
相關的項目,替換爲
<None Include="App.config" /> <None Include="App.Debug.config"> <DependentUpon>App.config</DependentUpon> </None> <None Include="App.Release.config"> <DependentUpon>App.config</DependentUpon> </None>
五、在最後一個 Import 標籤後面添加:
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets" />
路徑:C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v15.0\Web這裏的v10.0 須要根據本身vs的版原本替換。
【版本不對的話 會彈出錯誤框,仔細看路徑】
六、在 Import 標籤後面添加 Target 標籤:
<Target Name="AfterBuild"> <TransformXml Source="@(AppConfigWithTargetPath)" Transform="$(ProjectConfigTransformFileName)" Destination="@(AppConfigWithTargetPath->'$(OutDir)%(TargetPath)')" /> </Target>
七、切換到 Visual Studio , 從新加載項目。
八、這時查看 Visual Studio 能夠看到 App.config 的組織方式和 Web.config 同樣了。
九、如今就可使用 用於 Web 應用程序項目部署的 Web.config 轉換語法 這篇文章中提到的轉換語法了。
例如須要替換 connectionStrings
, App.config
有以下配置:
<Paths configSource="xxx\Debug\yyy.config" />
只須要修改 App.Release.config
爲以下內容便可:
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> <Paths configSource="xxx\Dev\yyy.config" xdt:Transform="Replace" />
這樣在選擇 Release
配置時,connectionStrings
會自動替換成 App.Release.config
中的值。查看 bin\Release
目錄下的 config 文件能夠進行驗證。