zoukankan      html  css  js  c++  java
  • .NET添加新项目-配置不同环境参数

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

    添加新项目后,需要对配置管理器进行设置。默认新加的项目只有debug和release

    现加其他环境(dev、uat...)的配置【通过项目文件.csproj来加,拷贝其他项目的节点】,然后同步(即每个都单击切换一下)

    <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Test|AnyCPU'">
    
        <OutputPath>binTest</OutputPath>
    
      </PropertyGroup>
    
      <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'UAT|AnyCPU'">
    
        <OutputPath>binUAT</OutputPath>
    
      </PropertyGroup>
    
      <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Prod|AnyCPU'">
    
        <OutputPath>binProd</OutputPath>
    
      </PropertyGroup>
    
      <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Testu|AnyCPU'">
    
        <OutputPath>binTestu</OutputPath>
    
      </PropertyGroup>
    View Code

    然后重新生成项目,再各个环境切换一下【即同步】。

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

    为了更好的编译不同的配置,需要做第二步,App.config 配置转换

    App.config 配置转换

    参考:

    https://www.cnblogs.com/peterYong/p/7496900.html

    https://www.cnblogs.com/tianciliangen/p/6015842.html

    问题

    部署项目时,常常需要根据不同的环境使用不同的配置文件。例如,在部署网站时可能希望禁用调试选项,并更改连接字符串以使其指向不同的数据库。在创建 Web 项目时,Visual Studio 自动生成了 Web.configWeb.Debug.configWeb.release.config这3个不同的配置文件,并提供了转换工具,用于在部署项目时自动转换配置文件内容。具体可以参考这2篇文章:如何:在部署 Web 应用程序项目时转换 Web.config 和 用于 Web 应用程序项目部署的 Web.config 转换语法 。

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

    做法

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

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

    3、在 最后一个PropertyGroup 标签下添加如下内容:

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

    4、在 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>

    5、在最后一个 Import 标签后面添加:

    <Import Project="$(MSBuildExtensionsPath)MicrosoftVisualStudiov10.0WebMicrosoft.Web.Publishing.targets" />

    路径:C:Program Files (x86)Microsoft Visual Studio2017EnterpriseMSBuildMicrosoftVisualStudiov15.0Web这里的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="xxxDebugyyy.config" />

    只需要修改 App.Release.config 为如下内容即可:

    <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
      <Paths configSource="xxxDevyyy.config"  xdt:Transform="Replace" />

    这样在选择 Release 配置时,connectionStrings 会自动替换成 App.Release.config 中的值。查看 binRelease 目录下的 config 文件可以进行验证。

  • 相关阅读:
    spring2.5 mvc使用注解upload上传文件
    从5点来分析搜索引擎算法
    搜索引擎算法研究专题六:HITS算法
    搜索引擎算法研究专题五:TFIDF详解
    搜索引擎算法研究专题二:HITS算法及其衍生算法分析
    搜索引擎算法研究专题一:基于页面分块的搜索引擎排序算法改进
    搜索引擎算法研究专题三:聚集索引与非聚集索引介绍
    Spring最佳实践9.1 集成邮件服务
    搜索引擎算法研究专题四:随机冲浪模型介绍
    搜索引擎算法研究专题七:Hilltop算法
  • 原文地址:https://www.cnblogs.com/peterYong/p/11491290.html
Copyright © 2011-2022 走看看