添加新项目后,须要对配置管理器进行设置。默认新加的项目只有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 文件能够进行验证。