.NET添加新項目-配置不同環境參數
添加新項目-配置不同環境參數
添加新項目后,需要對配置管理器進行設置。默認新加的項目只有debug和release

現加其他環境(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>
然后重新生成項目,再各個環境切換一下【即同步】。
即切換配置管理器中的“活動解決方案配置”,下面項目的配置也選擇為一樣的。
為了更好的編譯不同的配置,需要做第二步,App.config 配置轉換
App.config 配置轉換
參考:
http://www.rzrgm.cn/peterYong/p/7496900.html
http://www.rzrgm.cn/tianciliangen/p/6015842.html
問題
部署項目時,常常需要根據不同的環境使用不同的配置文件。例如,在部署網站時可能希望禁用調試選項,并更改連接字符串以使其指向不同的數據庫。在創建 Web 項目時,Visual Studio 自動生成了 Web.config、Web.Debug.config、Web.release.config這3個不同的配置文件,并提供了轉換工具,用于在部署項目時自動轉換配置文件內容。具體可以參考這2篇文章:如何:在部署 Web 應用程序項目時轉換 Web.config 和 用于 Web 應用程序項目部署的 Web.config 轉換語法 。
然而在其他項目類型中(如控制臺應用程序、Windows 服務),并沒有現成的配置文件的轉換功能。
做法
1、我們在項目中添加 App.config、App.Debug.config、App.Release.config 這3個配置文件。
2、打開項目所在目錄,用記事本或其他文本編輯器打開 .csproj 文件。
3、在 最后一個PropertyGroup 標簽下添加如下內容:
<PropertyGroup> <ProjectConfigFileName>App.config</ProjectConfigFileName> </PropertyGroup>
4、在 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>
5、在最后一個 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的版本來替換。
【版本不對的話 會彈出錯誤框,仔細看路徑】
6、在 Import 標簽后面添加 Target 標簽:
<Target Name="AfterBuild"> <TransformXml Source="@(AppConfigWithTargetPath)" Transform="$(ProjectConfigTransformFileName)" Destination="@(AppConfigWithTargetPath->'$(OutDir)%(TargetPath)')" /> </Target>
7、切換到 Visual Studio , 重新加載項目。
8、這時查看 Visual Studio 可以看到 App.config 的組織方式和 Web.config 一樣了。

9、現在就可以使用 用于 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 文件可以進行驗證。

浙公網安備 33010602011771號