.NET添加新项目-配置不一样环境参数

添加新项目-配置不一样环境参数

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

而后从新生成项目,再各个环境切换一下【即同步】。编辑器

即切换配置管理器中的“活动解决方案配置”,下面项目的配置也选择为同样的。ide

为了更好的编译不一样的配置,须要作第二步,App.config 配置转换工具

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.configWeb.Debug.configWeb.release.config这3个不一样的配置文件,并提供了转换工具,用于在部署项目时自动转换配置文件内容。具体能够参考这2篇文章:如何:在部署 Web 应用程序项目时转换 Web.config 和 用于 Web 应用程序项目部署的 Web.config 转换语法 。调试

然而在其余项目类型中(如控制台应用程序、Windows 服务),并无现成的配置文件的转换功能。

作法

一、咱们在项目中添加 App.configApp.Debug.configApp.Release.config 这3个配置文件。

二、打开项目所在目录,用记事本或其余文本编辑器打开 .csproj 文件。

三、在 最后一个PropertyGroup 标签下添加以下内容:

<PropertyGroup>
  <ProjectConfigFileName>App.config</ProjectConfigFileName>
</PropertyGroup>

四、在 ItemGroup 标签中找到和 App.configApp.Debug.configApp.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 文件能够进行验证。

相关文章
相关标签/搜索