# AdvancedConfigurationExtension **Repository Path**: DuHongfeng/AdvancedConfigurationExtension ## Basic Information - **Project Name**: AdvancedConfigurationExtension - **Description**: 配置文件生成界面技术,使用高级脚本 - **Primary Language**: C# - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2020-10-18 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #### 众所周知,我们的配置文件是用的XML\JSON 等技术,这里的代表是微软系,微软都喜欢用XML(MSBUILD/XAML等技术) #### 很多情况下,XML/JSON已经够用了,但是往往有写场景下,为了扩展,要求配置文件具有一定的逻辑处理功能。 #### 典型的例子是:界面生成技术,根据配置文件生成界面。Visual Studio的C++项目文件就是个典型的例子。 #### 配置文件定义了要给界面上显示的属性.比如在VS下(以下称之为Host,Host代表着我们的应用程序),配置文件里有定义了AndroidSdkVersion这样个元素。 #### 按我们以往的需求,直接可以就把AndroidSdkVersion显示到UI界面。 #### 但是如果有这样一个需求:当前VS(HOST)的构建平台是Win32的时候,该元素不显示。只有在构建平台是Android的时候,该元素显示。 #### 两种做法:第一个:HOST端做处理。第二个:配置文件端做处理。 #### 关于配置脚本端做处理,其中一个解决方案是MsBuild,大家可以看下,它是怎么实现的一些简单的逻辑,我认为很丑陋也很麻烦: #### #### https://docs.microsoft.com/zh-cn/previous-versions/visualstudio/visual-studio-2008/ms171468(v=vs.90) #### 如下一个简单的逻辑 `Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "` #### --------- #### 那个扩展性比较好,我相信各位一眼就能看出来吧。 #### 于是就有了本仓库,采用的技术是C# Script(没错,就是C#做脚本)。 #### 有了这样一个东西,我们上述的需求就能很好地解决 #### 大概原理我想大家也明白,VS(HOST)在调用配置界面脚本的时候,把当前的构建平台 作为参数一并传进去. #### 当脚本执行完毕后,VS(HOST)就可以获取到当前要显示那些元素了。 #### 有两个例子,一个DemoForConsole 一个DemoForWinform ### 如有疑问:QQ 408260925