我相信每个人都熟悉使用大多数解决方案模板中的Debug和Release配置。 以Debug模式构建项目时使用Debug配置,使用Release模式构建项目时使用Release配置,这一点似乎很明显。然而,可能不太清楚的是切换配置时实际发生了什么,或者如何添加自己的自定义配置。今天,我们将深入了解构建配置的世界,看看它们如何能大大提高您的构建时间和生产率。

什么是配置?

简单地说,配置是一组项目属性。在默认的Debug配置中,例如, debugging会启用,在Release配置中不会启用Debug。您可以设置在每个配置中使用的链接器选项,要构建什么架构(CPU),等等。您还可以进一步定义平台,以便根据是否为设备或仿真器构建,可以有单独的项目设置。换言之,你也可以在你的项目中,通过配置|平台来进行每一个项目的设置。

如何编辑配置?

如何编辑和添加一个配置,我们将从一个模板Android项目开始:

在VS for Mac中创建一个新的“Android App”: New Project > Android > App > Android App.
在VS for Windows 创建一个 “Single-View App (Android)”: 创建new project… > Android > Single-View App (Android).

该模板创建了一个简单的Android应用程序,其中有一个点击计数的按钮。它有两个配置默认设置,Debug和Release,和一个平台,AnyCPU。这些只是没有任何内在含义的名字,除了考虑使用配置时。随后我们将增加两个新配置,名字叫DebugDevice 和DebugEmulator。这将使我们能够在调试到设备(ARM)或仿真器(x86)时快速设置所需的项目选项/属性。 每个只为设备或仿真器所需的架构构建,减少开发期间的构建时间。

首先,让我们看看两个默认Debug和Release配置之间有什么不同。为此,右键单击“解决方案资源管理器”中的项目并选择“选项”(VS for Mac)或“属性”(VS for Windows),打开项目属性。一旦项目选项/属性打开,您将在下拉列表中看到配置和平台字段,选择要查看属性设置的配置和平台。

下拉可能不存在(VS for Mac)或禁用(VS for Windows),这意味着您选择的设置页面上的设置是全局的,即它们将应用于所有配置和平台。你能够在构建>全局设置而查看(VS for Mac)或者在应用设置页查看(VS for Windows)。 默认Debug和Release配置的项目设置中的大部分差异在上面所示的Android构建/ Android选项设置页面中。打开项目选项/属性,在左侧选择Android构建(VS for Mac)/ Android选项(VS for Windows)。确保在配置下拉的顶部选择Debug。注意在VS for Mac中选择了“Use Shared Mono Runtime”或者在VS for Windows中选择了“Use  Shared Runtime” ,以及 “Fast  Assembly Deployment” (VS for Mac) / “Use Fast Deployment” (VS for  Windows) 选项。

这些都是调试时的好选择,因为它们在开发应用程序时会减少构建和部署时间,但是他们根本不擅长构建一个Release版本,因为终端用户不太可能在他们的Android设备上安装一个共享的单运行时,所以应用程序根本就不能运行,因为根本就没有运行时。对于Release 构建你要禁用这个选项。如果现在在配置中选择Release版,在顶部下拉,您将看到默认Release版本配置禁用了这些选项。

您可以检查各个配置的链接器行为:

在VS for Mac: 在Android构建页面中选择“Linker”选项卡。你将看到在Debug配置中 “Linking Behaviour”设置为 “Don’t Link” 面在Release配置中设置为 “Link SDK assemblies only” 。
在VS for Windows: 在Android选项页面中滚动到“Linker Properties” 一节。你将看到在Debug配置中 “Linking” 选项被设置为 “None” 而在Release配置中设置为 “SDK assemblies only”。

这些默认选项允许在调试期间更快地生成,并为您的版本构建提供更小的应用程序包。
在高级选项卡(Mac)/按钮(Windows)允许你设置当你构建Debug或Release时使用哪种CPUs(ABIs)。请注意,默认情况下Debug配置允许为所有可能的CPUs构建。您构建的每一个CPU都需要时间,因此,精简这一点可能很好,所以我们只为CPU构建,我们将运行应用程序。如果我们只测试x86仿真器,然后我们只能建立x86和取消选择其他不需要的Abis。继续取消选择所有但x86使用高级选项/按钮。

祝贺你,您现在刚刚编辑了一个配置。编辑配置就像打开项目选项/属性一样简单,选择要更改设置的配置,并更改这些设置。

如何添加配置?

如果调试过程中只需选择一个配置,就可以轻松地选择在哪一个体系结构上构建,这不是很好吗?如果调试设备我选择一个配置,DebugDevice,如果是为模拟器构建,我选择DebugEmulator。让我们把那个设置好。

Visual Studio for Mac:

在Visual Studio for Mac中添加一个配置:

  1. 在解决方案浏览器中双击解决方案来打开解决方案选项。
  2. 选择左侧的 Build > Configurations on the left (不是 Run > Configurations).
  3. 因为我们需要Debug配置的变体,在“配置”列表中选择Debug并单击“Copy”。这将拷贝当前的Debug设置到你的新配置中。
  4. 输入这个配置的名字,比如DebugDevice。
  5. 平台保持默认的Any CPU选项。
  6. 点击“OK”。
  7. 在DebugEmulator配置中重复4-8步。

Visual Studio (Windows):

在 Visual Studio (Windows)中添加一个配置:

  1. 通过Build > Configuration Manager菜单中,打开配置管理器。
  2. 点击Active Solution Configuration下拉框并选择 “New”。
  3. 在名字字段输入 DebugDevice。
  4. 在 “Copy settings from”下拉列表选择Debug。
  5. 确保选中了 “Create new project configurations” 选项。
  6. 点击OK。
  7. 2 – 6  在名字字段使用ebugEmulator,并重复2 – 6步。

现在,在列表中你将看到四个配置项,Debug, DebugDevice, DebugEmulator, 以及Release。


现在,您只需打开Android项目选项并对这两个新配置进行所需的更改:

  1. 打开  Android 项目选项。
  2. 选择Android Build (Mac) / Android Options (Windows) > Advanced 选项卡。
  3. 从配置下拉列表选择DebugDevice.
  4. 除了armeabi-v7a之外支持ABIs都取消选择。
  5. 从配置下拉列表选择DebugEmulator.
  6. 除了x86之外所有支持的ABIs都取消选择。

你可以现在无论何时你想调试使用实际的Android设备的选择DebugDevice,你可以当你想调试一个x86模拟器选择DebugEmulator。您的调试构建会更快,因为您只为所需的体系结构构建。

祝贺您,现在已经添加了两个配置,并为特定调试场景设置它们。

如何添加平台?

我们所做的工作是可行的,但是在设备或仿真器的构建之间定义平台而不是配置可能更好。您会注意到这是默认的IOS项目。有iOS项目定义两个平台,iPhone 和iPhoneSimulator。如果我们喜欢,我们也可以这样做。对于这个练习,开始一个新的Xamarin形式工程,PCL或共享型不该锻炼。

Visual Studio for Mac:

在Xamarin/Visual Studio for Mac添加一个平台:

  1. 在解决方案浏览器中通过双击解决方案打开解决方案选项。
  2. 在左侧选择Build > Configurations  (不是Run > Configurations)。
  3. 选择General 选项卡。
  4. 因为我们想要Debug配置的变体,在配置列表选择Debug并点击 “Copy”.。这将拷贝当前的Debug设置到你的新配置中:
  5. 输入配置名字,在这个选项中保存和Debug相同的配置,因为我们只想添加一个平台而不是一个配置。
  6. 在平台字段输入名字AndroidDevice.
  7. 确保 “Create Configurations for all solution items” 选项没被选中。我们只需要这个平台的Android项目。如果选择了这个选项,我们也会将这个平台添加到iOS项目中。
  8. 点击“OK”。
  9. 在名为AndroidEmulator的平台中重复步骤4-8.
  10. 因为我们没有向项目添加这个新平台(步骤7),我们需要在Android项目中重复步骤4-8,Options > Build > Configurations。为AndroidDevice  和ndroidEmulator 平台都这样做。

然后,您必须将解决方案定制平台映射到项目自定义平台:

  1. 打开Solution Options > Build > Configurations > Configuration Mappings 选项卡。
  2. 在最顶层的平台字段选择选择AndroidDevice 平台.
  3. 在Android应用项目的配置列,选择Debug|AndroidDevice。
  4. 在顶端的平台字段选择AndroidEmulator平台。
  5. 在Android应用项目的配置列,选择Debug|AndroidEmulator.

现在,在主配置下拉列表,你将看到 Debug|AndroidDevice and Debug|AndroidEmulator。
.

您可以为每一个平台编辑设置,就像之前设置的配置一样,只要选择要编辑平台中的构建设置的正确平台就可以了。在Project Options > Android Build (Mac) 设置页。

Visual Studio (Windows):

添加自定义平台不直接在Visual Studio是Xamarin Studio。你可以在解决方案级别添加自定义平台的名称,但它添加在项目层面需要一些编辑的.csproj文件。 以下是如何在VisualStudio中实现所有这些:

添加解决方案级平台:

  1. 通过 Build > Configuration Manager 菜单打开Configuration Manager。
  2. 点击Active Solution Platform下拉列表并选择“New”.
  3. 在名字字段输入AndroidDevice.
  4. 在“Copy settings from”下拉列表选择AnyCPU。
  5. 确保没有选中 “Create new project configurations” 选项。在Android应用项目没有选择一个AndroidDevice平台时,如果选中它,你将会得到一个错误。
  6. 点击OK。
  7. 在名字字段使用Androidmulator,重复步骤2 – 6。

现在最困难的部分是在Android应用程序项目中添加新的平台。

  1. 卸载Android应用项目(右击项目并选择卸载)。
  2. 编辑AppName.csproj 文件(右键点击项目并选择 “编辑.csproj”)。
  3. 在打开的项目标记下面粘贴下列XML:

    点击(此处)折叠或打开

    1. PropertyGroup Condition=" '$(Platform)' == 'AndroidDevice' ">
    2. DefineConstants>AndroidDevice/DefineConstants>
    3. PlatformTarget>AnyCPU/PlatformTarget>
    4. /PropertyGroup>
    5. PropertyGroup Condition=" '$(Platform)' == 'AndroidEmulator' ">
    6. DefineConstants>AndroidEmulator/DefineConstants>
    7. PlatformTarget>AnyCPU/PlatformTarget>
    8. /PropertyGroup>

  4. 寻找以下元素:

    点击(此处)折叠或打开

    1. PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">

  5. 选择文本的所有上述PropertyGroup包括开幕式和闭幕PropertyGroup标签并将它复制。
  6. 粘贴文本两次右下方的propertygroup标签上面复制的结局。

  7. 编辑已粘贴的属性组,更改:

    点击(此处)折叠或打开

    1. PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">

    点击(此处)折叠或打开

    1. PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AndroidDevice' ">

    上面是针对第一处拷贝的修改,下面是对第二处拷贝的修改

    点击(此处)折叠或打开

    1. PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AndroidEmulator' ">

  8. 不需要,但最好为每个平台单独outputpath,因此改变:

    点击(此处)折叠或打开

    1. OutputPath>bin\Debug/OutputPath>

    点击(此处)折叠或打开

    1. OutputPath>bin\AndroidDevice\Debug/OutputPath>

    这是针对第一处拷贝的修改。

    点击(此处)折叠或打开

    1. OutputPath>bin\AndroidEmulator\Debug/OutputPath>

    这是对第二处拷贝的修改。

然后,您必须将解决方案定制平台映射到项目自定义平台:

  1. 再次打开Configuration Manager。
  2. 为活动解决方案平台选择AndroidDevice.
  3. Android应用项目的平台列,选择AndroidDevice。
  4. 为活动解决方案平台选择AndroidEmulator.
  5. 在Android应用项目的平台列选择AndroidEmulator。

现在你将要开放的Android项目属性和编辑配置|平台设置,只有建立相关的体系结构,比如AndroidDevice的armeabi-v7s和AndroidEmulator的x86,就像你简易的创建一个新配置。

配置Mapping

当我们添加上面的配置时,我匀将它添加到解决方案级别,通过在Mac选择“Create Configurations for all solution items”和在Windows选择 “Create new project configurations”将他们添加到每一个项目中 (或者手动添加它们到.csproj 文件)。这样,新配置在项目和解决方案级别上都是可用的。通过在Windows中使用Configuration Manager或者在Mac中使用Solution Options > Build > Configurations > Configuration Mappings选项卡将映射解决方案级别配置到项目级别配置中。 您将看到,对于每个项目,您可以选择在配置下拉列表中选择活动解决方案配置时将构建哪个项目配置。

还可以设置每个解决方案配置生成的项目。如果您有一个多个应用程序项目的解决方案,您可以添加一个配置,只用于构建当时需要的项目。  对于Xamarin Forms 应用(或者对于包含多个平台的某些解决方案),您可能需要添加只构建IOS项目的配置(如果使用了PCL项目),一个只构建Android项目(如果使用了PCL项目)。这将再次加快构建时间,因此您只为正在调试的平台构建。

在 .csproj 文件中配置和MSBuild属性

我们简单地接触的.csproj文件自UI没有提供这样的办法在Xamarin Studio在Visual Studio应用程序项目中添加自定义平台时。主要是你会不会编辑.csproj文件但我觉得它是有用的至少接触的项目.csproj文件受影响的当你切换活动配置|平台IDE。

当我们添加一个自定义平台之上,我们两次拷贝和粘贴一个PropertyGroup添加到新平台并且设置新平台的构建输出路径。所使用的每个配置的属性组是一套简单的MSBuild属性和值时将使用相应的配置|平台组合选择建立。例如,下面的属性组时将使用的Debug|AnyCPU 时选中Configuration|Platform:

点击(此处)折叠或打开

  1. PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
  2. ...
  3. /PropertyGroup>

当遇到条件 '$(Configuration)|$(Platform)' == 'Debug|AnyCPU',然后在那组MSBuild属性的值将被使用。例如,您会在上面的属性组中找到下面的内容:

点击(此处)折叠或打开

  1. AndroidLinkMode>None/AndroidLinkMode>

这集的链接器选项“None”当使用Debug|AnyCpu Configuration|Platform组合。你的配置和平台的真的只是一个让你把一堆MSBuild属性只是选择为你建立一个配置|平台特定的值。如果从命令行生成,您可以手动设置任何可用的MSBuild属性使用/p:MSBuildProperty=value 语法。换句话说,如果您想从命令行构建Debug|AnyCPU Configuration|Platform 同时还想使用 “Link SDK Assemblies Only”,你将按照如下方式配置(Windows):

点击(此处)折叠或打开

  1. MSBuild.exe MySolution.csproj /p:Configuration=Debug /p:Platform=AnyCPU /p:AndroidLinkMode=SdkOnly

…或者在Mac:

点击(此处)折叠或打开

  1. MSBuild MySolution.csproj /p:Configuration=Debug /p:Platform=AnyCPU /p:AndroidLinkMode=SdkOnly

你看到的任何属性都定义在.csproj文件中的一个PropertyGroup定义,可能通过命令行构建时使用/p:PropertyName=PropertyValue 开切换一个值。在MSBuild命令行引用 中查阅更多信息。

总结

你已经学会了如何创建自定义配置平台以及如何编辑,编译选项你想为一个特定的情况下都可以设置仅仅通过选择适当的配置|平台组合

【Xamarin】揭秘生成配置相关推荐

  1. Xamarin如何生成Android项目的APK

    Xamarin如何生成Android项目的APK 首先需要选择Release模式生成项目.然后从"生成"菜单中选择Export Android Package命令,就可以导出APK ...

  2. 传奇GOM引擎登录器生成配置教程

    传奇GOM引擎登录器生成配置教程 本课教学流程与方法也适用于GEE引擎登录器的配置,略过第一步直接使用版本里自带的登录器配置器即可 我们讲第三课的时候站长已经为VIP学员附带了GOM引擎登录器更新包( ...

  3. 表情包可视化编辑、生成配置信息数据工具

    合成GIF图片 - 表情包 后续,用于快速.便捷生成 img_config.js 中 要生成的GIF每一帧数据(写入头像图片信息参数): 1.先上传 写入GIF中头像 标准图,同时获取图片信息,更新 ...

  4. 使用moveit_setup_assistant生成配置包之后,在功能包内打开终端运行roslaunch demo.launch,报错 RLException: error loading <rosp

    使用moveit_setup_assistant生成配置包之后,在功能包内打开终端运行roslaunch demo.launch,报错 RLException: error loading tag: ...

  5. android创建类的包名称,如何知道/配置Xamarin Android生成的程序包名...

    如果您未通过属性指定Xamarin,Xamarin会自动生成类ID 一些例子: 活动命名: [Activity(Label = "ActivityNaming", Name = & ...

  6. Xamarin 学习笔记 - 配置环境(Windows iOS)

    2019独角兽企业重金招聘Python工程师标准>>> 本文翻译自CodeProject文章:https://www.codeproject.com/Articles/1223980 ...

  7. Linux内核入门-如何获取Linux内核源代码、生成配置内核

    如何获取Linux内核源代码 如何获取Linux内核源代码 下载Linux内核当然要去官方网站了,网站提供了两种文件下载,一种是完整的Linux内核,另一种是内核增量补丁,它们都是tar归档压缩包.除 ...

  8. 支付宝支付 开放平台设置以及公钥私钥生成配置

    支付宝支付-开放平台配置: 拿应用公钥去生成支付宝公钥, 注意配置文件要填的公钥是支付宝公钥. AES密钥设置了就不能删除,但是可以不用,也不影响. 下面去配置私钥: 点击打开文件位置, 去掉首尾的红 ...

  9. XAMARIN模拟器的配置与连接

    Android模拟器 模拟器运行特别慢怎么办? Xamarin自带的模拟器在调试时速度很慢,严重影响我撸代码的心情 .其实VS自带的模拟器速度是很快的,速度慢可能 是配置不当.很多同学的模拟器可能是这 ...

最新文章

  1. Windows下RabbitMQ安装及注意事项
  2. java多线程解决应用挂死的问题
  3. PHP 8 确认支持 JIT
  4. 什么是堆和栈以及区别详解
  5. 使用序列化查找对象中的脏字段
  6. 项目日报模板_新建区重点易涝区能力建设项目2020年11月18日日报
  7. JetBrains IDEA实用快捷键
  8. BIO,NIO和AIO的区别
  9. 如何把hadoop源码关联到eclipse工程中
  10. Python Pandas模块教程
  11. python根据词性进行词频统计_如何根据词性来确定语篇中的词频?
  12. [4G5G专题-77]:流程 - 4G LTE 接入网的随机接入流程
  13. google提供的blog搜索网址
  14. linux rarp命令,通过源码理解Rarp协议(基于linux1.2.13)
  15. 算术右移与逻辑右移的转换
  16. 织梦后台内容编辑器不显示
  17. 《回眸2022·圆满收官||展望2023·砥砺奋发》
  18. [模板匹配霍夫变换]——模板匹配分析、霍夫变换分析
  19. 书籍特别推荐:2018-06薛兆丰经济学讲义+魔鬼经济学(四本)
  20. 如何彻底关掉pycharm的警告

热门文章

  1. 漫画设计模式:什么是 “职责链模式” ?
  2. 你不知道的z-index
  3. 在SQL 2005中用T-SQL插入中文数据时出现的问号或乱码的解决方案[转]
  4. 企业上云需跨越哪些“雷区”?
  5. 查看Linux服务器下的内存使用情况
  6. 快速排序的递归和非递归
  7. 38.6. Web IRC
  8. Java任务调度框架Quartz
  9. 接入新浪、腾讯微博和人人网的Android客户端实例 接入新浪、腾讯微博和人人网的Android客户端实例...
  10. cookie JS验证码