揭秘生成配置

我相信每個(gè)人都熟悉使用大多數(shù)解決方案模板中的Debug和Release配置。 以Debug模式構(gòu)建項(xiàng)目時(shí)使用Debug配置,使用Release模式構(gòu)建項(xiàng)目時(shí)使用Release配置,這一點(diǎn)似乎很明顯。然而,可能不太清楚的是切換配置時(shí)實(shí)際發(fā)生了什么,或者如何添加自己的自定義配置。今天,我們將深入了解構(gòu)建配置的世界,看看它們?nèi)绾文艽蟠筇岣吣臉?gòu)建時(shí)間和生產(chǎn)率。

七臺(tái)河網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),七臺(tái)河網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為七臺(tái)河1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的七臺(tái)河做網(wǎng)站的公司定做!

揭秘生成配置

揭秘生成配置

什么是配置?

簡(jiǎn)單地說(shuō),配置是一組項(xiàng)目屬性。在默認(rèn)的Debug配置中,例如, debugging會(huì)啟用,在Release配置中不會(huì)啟用Debug。您可以設(shè)置在每個(gè)配置中使用的鏈接器選項(xiàng),要構(gòu)建什么架構(gòu)(CPU),等等。您還可以進(jìn)一步定義平臺(tái),以便根據(jù)是否為設(shè)備或仿真器構(gòu)建,可以有單獨(dú)的項(xiàng)目設(shè)置。換言之,你也可以在你的項(xiàng)目中,通過(guò)配置|平臺(tái)來(lái)進(jìn)行每一個(gè)項(xiàng)目的設(shè)置。

如何編輯配置?

如何編輯和添加一個(gè)配置,我們將從一個(gè)模板Android項(xiàng)目開(kāi)始:

在VS for Mac中創(chuàng)建一個(gè)新的“Android App”: New Project > Android > App > Android App.
在VS for Windows 創(chuàng)建一個(gè) “Single-View App (Android)”: 創(chuàng)建new project… > Android > Single-View App (Android).

該模板創(chuàng)建了一個(gè)簡(jiǎn)單的Android應(yīng)用程序,其中有一個(gè)點(diǎn)擊計(jì)數(shù)的按鈕。它有兩個(gè)配置默認(rèn)設(shè)置,Debug和Release,和一個(gè)平臺(tái),AnyCPU。這些只是沒(méi)有任何內(nèi)在含義的名字,除了考慮使用配置時(shí)。隨后我們將增加兩個(gè)新配置,名字叫DebugDevice 和DebugEmulator。這將使我們能夠在調(diào)試到設(shè)備(ARM)或仿真器(x86)時(shí)快速設(shè)置所需的項(xiàng)目選項(xiàng)/屬性。 每個(gè)只為設(shè)備或仿真器所需的架構(gòu)構(gòu)建,減少開(kāi)發(fā)期間的構(gòu)建時(shí)間。

首先,讓我們看看兩個(gè)默認(rèn)Debug和Release配置之間有什么不同。為此,右鍵單擊“解決方案資源管理器”中的項(xiàng)目并選擇“選項(xiàng)”(VS for Mac)或“屬性”(VS for Windows),打開(kāi)項(xiàng)目屬性。一旦項(xiàng)目選項(xiàng)/屬性打開(kāi),您將在下拉列表中看到配置和平臺(tái)字段,選擇要查看屬性設(shè)置的配置和平臺(tái)。 

揭秘生成配置

揭秘生成配置

下拉可能不存在(VS for Mac)或禁用(VS for Windows),這意味著您選擇的設(shè)置頁(yè)面上的設(shè)置是全局的,即它們將應(yīng)用于所有配置和平臺(tái)。你能夠在構(gòu)建>全局設(shè)置而查看(VS for Mac)或者在應(yīng)用設(shè)置頁(yè)查看(VS for Windows)。 默認(rèn)Debug和Release配置的項(xiàng)目設(shè)置中的大部分差異在上面所示的Android構(gòu)建/ Android選項(xiàng)設(shè)置頁(yè)面中。打開(kāi)項(xiàng)目選項(xiàng)/屬性,在左側(cè)選擇Android構(gòu)建(VS for Mac)/ Android選項(xiàng)(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) 選項(xiàng)。

 這些都是調(diào)試時(shí)的好選擇,因?yàn)樗鼈冊(cè)陂_(kāi)發(fā)應(yīng)用程序時(shí)會(huì)減少構(gòu)建和部署時(shí)間,但是他們根本不擅長(zhǎng)構(gòu)建一個(gè)Release版本,因?yàn)榻K端用戶不太可能在他們的Android設(shè)備上安裝一個(gè)共享的單運(yùn)行時(shí),所以應(yīng)用程序根本就不能運(yùn)行,因?yàn)楦揪蜎](méi)有運(yùn)行時(shí)。對(duì)于Release 構(gòu)建你要禁用這個(gè)選項(xiàng)。如果現(xiàn)在在配置中選擇Release版,在頂部下拉,您將看到默認(rèn)Release版本配置禁用了這些選項(xiàng)。

您可以檢查各個(gè)配置的鏈接器行為:

在VS for Mac: 在Android構(gòu)建頁(yè)面中選擇“Linker”選項(xiàng)卡。你將看到在Debug配置中 “Linking Behaviour”設(shè)置為 “Don’t Link” 面在Release配置中設(shè)置為 “Link SDK assemblies only” 。
在VS for Windows: 在Android選項(xiàng)頁(yè)面中滾動(dòng)到“Linker Properties” 一節(jié)。你將看到在Debug配置中 “Linking” 選項(xiàng)被設(shè)置為 “None” 而在Release配置中設(shè)置為 “SDK assemblies only”。

這些默認(rèn)選項(xiàng)允許在調(diào)試期間更快地生成,并為您的版本構(gòu)建提供更小的應(yīng)用程序包。
在高級(jí)選項(xiàng)卡(Mac)/按鈕(Windows)允許你設(shè)置當(dāng)你構(gòu)建Debug或Release時(shí)使用哪種CPUs(ABIs)。請(qǐng)注意,默認(rèn)情況下Debug配置允許為所有可能的CPUs構(gòu)建。您構(gòu)建的每一個(gè)CPU都需要時(shí)間,因此,精簡(jiǎn)這一點(diǎn)可能很好,所以我們只為CPU構(gòu)建,我們將運(yùn)行應(yīng)用程序。如果我們只測(cè)試x86仿真器,然后我們只能建立x86和取消選擇其他不需要的Abis。繼續(xù)取消選擇所有但x86使用高級(jí)選項(xiàng)/按鈕。

祝賀你,您現(xiàn)在剛剛編輯了一個(gè)配置。編輯配置就像打開(kāi)項(xiàng)目選項(xiàng)/屬性一樣簡(jiǎn)單,選擇要更改設(shè)置的配置,并更改這些設(shè)置。

如何添加配置?

如果調(diào)試過(guò)程中只需選擇一個(gè)配置,就可以輕松地選擇在哪一個(gè)體系結(jié)構(gòu)上構(gòu)建,這不是很好嗎?如果調(diào)試設(shè)備我選擇一個(gè)配置,DebugDevice,如果是為模擬器構(gòu)建,我選擇DebugEmulator。讓我們把那個(gè)設(shè)置好。

Visual Studio for Mac:

在Visual Studio for Mac中添加一個(gè)配置:

  1. 在解決方案瀏覽器中雙擊解決方案來(lái)打開(kāi)解決方案選項(xiàng)。

  2. 選擇左側(cè)的 Build > Configurations on the left (不是 Run > Configurations).
    揭秘生成配置

  3. 因?yàn)槲覀冃枰狣ebug配置的變體,在“配置”列表中選擇Debug并單擊“Copy”。這將拷貝當(dāng)前的Debug設(shè)置到你的新配置中。

  4. 輸入這個(gè)配置的名字,比如DebugDevice。

  5. 平臺(tái)保持默認(rèn)的Any CPU選項(xiàng)。

  6. 點(diǎn)擊“OK”。

  7.  在DebugEmulator配置中重復(fù)4-8步。

Visual Studio (Windows):

在 Visual Studio (Windows)中添加一個(gè)配置:

  1. 通過(guò)Build > Configuration Manager菜單中,打開(kāi)配置管理器。

  2. 點(diǎn)擊Active Solution Configuration下拉框并選擇 “New”。
    揭秘生成配置

  3. 在名字字段輸入 DebugDevice。

  4. 在 “Copy settings from”下拉列表選擇Debug。

  5. 確保選中了 “Create new project configurations” 選項(xiàng)。
    揭秘生成配置

  6. 點(diǎn)擊OK。

  7.  2 – 6  在名字字段使用ebugEmulator,并重復(fù)2 – 6步。

現(xiàn)在,在列表中你將看到四個(gè)配置項(xiàng),Debug, DebugDevice, DebugEmulator, 以及Release。    

揭秘生成配置
揭秘生成配置

現(xiàn)在,您只需打開(kāi)Android項(xiàng)目選項(xiàng)并對(duì)這兩個(gè)新配置進(jìn)行所需的更改:

  1. 打開(kāi)  Android 項(xiàng)目選項(xiàng)。

  2.  選擇Android Build (Mac) / Android Options (Windows) > Advanced 選項(xiàng)卡。

  3. 從配置下拉列表選擇DebugDevice.

  4. 除了armeabi-v7a之外支持ABIs都取消選擇。

  5. 從配置下拉列表選擇DebugEmulator.

  6. 除了x86之外所有支持的ABIs都取消選擇。

你可以現(xiàn)在無(wú)論何時(shí)你想調(diào)試使用實(shí)際的Android設(shè)備的選擇DebugDevice,你可以當(dāng)你想調(diào)試一個(gè)x86模擬器選擇DebugEmulator。您的調(diào)試構(gòu)建會(huì)更快,因?yàn)槟粸樗璧捏w系結(jié)構(gòu)構(gòu)建。

祝賀您,現(xiàn)在已經(jīng)添加了兩個(gè)配置,并為特定調(diào)試場(chǎng)景設(shè)置它們。

如何添加平臺(tái)?

我們所做的工作是可行的,但是在設(shè)備或仿真器的構(gòu)建之間定義平臺(tái)而不是配置可能更好。您會(huì)注意到這是默認(rèn)的IOS項(xiàng)目。有iOS項(xiàng)目定義兩個(gè)平臺(tái),iPhone 和iPhoneSimulator。如果我們喜歡,我們也可以這樣做。對(duì)于這個(gè)練習(xí),開(kāi)始一個(gè)新的Xamarin形式工程,PCL或共享型不該鍛煉。

揭秘生成配置

揭秘生成配置

Visual Studio for Mac:

在Xamarin/Visual Studio for Mac添加一個(gè)平臺(tái):

  1. 在解決方案瀏覽器中通過(guò)雙擊解決方案打開(kāi)解決方案選項(xiàng)。

  2. 在左側(cè)選擇Build > Configurations  (不是Run > Configurations)。

  3. 選擇General 選項(xiàng)卡。

  4. 因?yàn)槲覀兿胍狣ebug配置的變體,在配置列表選擇Debug并點(diǎn)擊 “Copy”.。這將拷貝當(dāng)前的Debug設(shè)置到你的新配置中:
    揭秘生成配置

  5. 輸入配置名字,在這個(gè)選項(xiàng)中保存和Debug相同的配置,因?yàn)槲覀冎幌胩砑右粋€(gè)平臺(tái)而不是一個(gè)配置。

  6. 在平臺(tái)字段輸入名字AndroidDevice.

  7. 確保 “Create Configurations for all solution items” 選項(xiàng)沒(méi)被選中。我們只需要這個(gè)平臺(tái)的Android項(xiàng)目。如果選擇了這個(gè)選項(xiàng),我們也會(huì)將這個(gè)平臺(tái)添加到iOS項(xiàng)目中。
    揭秘生成配置

  8. 點(diǎn)擊“OK”。

  9. 在名為AndroidEmulator的平臺(tái)中重復(fù)步驟4-8.

  10. 因?yàn)槲覀儧](méi)有向項(xiàng)目添加這個(gè)新平臺(tái)(步驟7),我們需要在Android項(xiàng)目中重復(fù)步驟4-8,Options > Build > Configurations。為AndroidDevice  和ndroidEmulator 平臺(tái)都這樣做。
    揭秘生成配置

然后,您必須將解決方案定制平臺(tái)映射到項(xiàng)目自定義平臺(tái):

  1. 打開(kāi)Solution Options > Build > Configurations > Configuration Mappings 選項(xiàng)卡。

  2. 在最頂層的平臺(tái)字段選擇選擇AndroidDevice 平臺(tái).

  3. 在Android應(yīng)用項(xiàng)目的配置列,選擇Debug|AndroidDevice。
    揭秘生成配置

  4. 在頂端的平臺(tái)字段選擇AndroidEmulator平臺(tái)。

  5. 在Android應(yīng)用項(xiàng)目的配置列,選擇Debug|AndroidEmulator.

現(xiàn)在,在主配置下拉列表,你將看到 Debug|AndroidDevice and Debug|AndroidEmulator。
.揭秘生成配置

您可以為每一個(gè)平臺(tái)編輯設(shè)置,就像之前設(shè)置的配置一樣,只要選擇要編輯平臺(tái)中的構(gòu)建設(shè)置的正確平臺(tái)就可以了。在Project Options > Android Build (Mac) 設(shè)置頁(yè)。

Visual Studio (Windows):

添加自定義平臺(tái)不直接在Visual Studio是Xamarin Studio。你可以在解決方案級(jí)別添加自定義平臺(tái)的名稱,但它添加在項(xiàng)目層面需要一些編輯的.csproj文件。 以下是如何在VisualStudio中實(shí)現(xiàn)所有這些:

添加解決方案級(jí)平臺(tái):

  1. 通過(guò) Build > Configuration Manager 菜單打開(kāi)Configuration Manager。

  2. 點(diǎn)擊Active Solution Platform下拉列表并選擇“New”.
    揭秘生成配置

  3. 在名字字段輸入AndroidDevice.

  4. 在“Copy settings from”下拉列表選擇AnyCPU。

  5. 確保沒(méi)有選中 “Create new project configurations” 選項(xiàng)。在Android應(yīng)用項(xiàng)目沒(méi)有選擇一個(gè)AndroidDevice平臺(tái)時(shí),如果選中它,你將會(huì)得到一個(gè)錯(cuò)誤。
    揭秘生成配置

  6. 點(diǎn)擊OK。

  7. 在名字字段使用Androidmulator,重復(fù)步驟2 – 6。

現(xiàn)在最困難的部分是在Android應(yīng)用程序項(xiàng)目中添加新的平臺(tái)。

  1. 卸載Android應(yīng)用項(xiàng)目(右擊項(xiàng)目并選擇卸載)。

  2. 編輯AppName.csproj 文件(右鍵點(diǎn)擊項(xiàng)目并選擇 “編輯.csproj”)。

  3. 在打開(kāi)的項(xiàng)目標(biāo)記下面粘貼下列XML:

    點(diǎn)擊(此處)折疊或打開(kāi)

    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. 尋找以下元素:

    點(diǎn)擊(此處)折疊或打開(kāi)

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

  5. 選擇文本的所有上述PropertyGroup包括開(kāi)幕式和閉幕PropertyGroup標(biāo)簽并將它復(fù)制。

  6. 粘貼文本兩次右下方的propertygroup標(biāo)簽上面復(fù)制的結(jié)局。

  7. 編輯已粘貼的屬性組,更改:

    點(diǎn)擊(此處)折疊或打開(kāi)

    點(diǎn)擊(此處)折疊或打開(kāi)

    上面是針對(duì)第一處拷貝的修改,下面是對(duì)第二處拷貝的修改

    點(diǎn)擊(此處)折疊或打開(kāi)

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

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

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

  8. 不需要,但最好為每個(gè)平臺(tái)單獨(dú)outputpath,因此改變:

    點(diǎn)擊(此處)折疊或打開(kāi)

    點(diǎn)擊(此處)折疊或打開(kāi)

    這是針對(duì)第一處拷貝的修改。

    點(diǎn)擊(此處)折疊或打開(kāi)

    這是對(duì)第二處拷貝的修改。

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

    2. <OutputPath>bin\AndroidDevice\Debug</OutputPath>

    3. <OutputPath>bin\Debug</OutputPath>

然后,您必須將解決方案定制平臺(tái)映射到項(xiàng)目自定義平臺(tái):

  1. 再次打開(kāi)Configuration Manager。

  2. 為活動(dòng)解決方案平臺(tái)選擇AndroidDevice.

  3. Android應(yīng)用項(xiàng)目的平臺(tái)列,選擇AndroidDevice。
    揭秘生成配置

  4. 為活動(dòng)解決方案平臺(tái)選擇AndroidEmulator.

  5. 在Android應(yīng)用項(xiàng)目的平臺(tái)列選擇AndroidEmulator。

現(xiàn)在你將要開(kāi)放的Android項(xiàng)目屬性和編輯配置|平臺(tái)設(shè)置,只有建立相關(guān)的體系結(jié)構(gòu),比如AndroidDevice的armeabi-v7s和AndroidEmulator的x86,就像你簡(jiǎn)易的創(chuàng)建一個(gè)新配置。

揭秘生成配置

配置Mapping

當(dāng)我們添加上面的配置時(shí),我勻?qū)⑺砑拥浇鉀Q方案級(jí)別,通過(guò)在Mac選擇“Create Configurations for all solution items”和在Windows選擇 “Create new project configurations”將他們添加到每一個(gè)項(xiàng)目中 (或者手動(dòng)添加它們到.csproj 文件)。這樣,新配置在項(xiàng)目和解決方案級(jí)別上都是可用的。通過(guò)在Windows中使用Configuration Manager或者在Mac中使用Solution Options > Build > Configurations > Configuration Mappings選項(xiàng)卡將映射解決方案級(jí)別配置到項(xiàng)目級(jí)別配置中。 您將看到,對(duì)于每個(gè)項(xiàng)目,您可以選擇在配置下拉列表中選擇活動(dòng)解決方案配置時(shí)將構(gòu)建哪個(gè)項(xiàng)目配置。

還可以設(shè)置每個(gè)解決方案配置生成的項(xiàng)目。如果您有一個(gè)多個(gè)應(yīng)用程序項(xiàng)目的解決方案,您可以添加一個(gè)配置,只用于構(gòu)建當(dāng)時(shí)需要的項(xiàng)目。  對(duì)于Xamarin Forms 應(yīng)用(或者對(duì)于包含多個(gè)平臺(tái)的某些解決方案),您可能需要添加只構(gòu)建IOS項(xiàng)目的配置(如果使用了PCL項(xiàng)目),一個(gè)只構(gòu)建Android項(xiàng)目(如果使用了PCL項(xiàng)目)。這將再次加快構(gòu)建時(shí)間,因此您只為正在調(diào)試的平臺(tái)構(gòu)建。

揭秘生成配置

揭秘生成配置

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

我們簡(jiǎn)單地接觸的.csproj文件自UI沒(méi)有提供這樣的辦法在Xamarin Studio在Visual Studio應(yīng)用程序項(xiàng)目中添加自定義平臺(tái)時(shí)。主要是你會(huì)不會(huì)編輯.csproj文件但我覺(jué)得它是有用的至少接觸的項(xiàng)目.csproj文件受影響的當(dāng)你切換活動(dòng)配置|平臺(tái)IDE。

當(dāng)我們添加一個(gè)自定義平臺(tái)之上,我們兩次拷貝和粘貼一個(gè)PropertyGroup添加到新平臺(tái)并且設(shè)置新平臺(tái)的構(gòu)建輸出路徑。所使用的每個(gè)配置的屬性組是一套簡(jiǎn)單的MSBuild屬性和值時(shí)將使用相應(yīng)的配置|平臺(tái)組合選擇建立。例如,下面的屬性組時(shí)將使用的Debug|AnyCPU 時(shí)選中Configuration|Platform:

點(diǎn)擊(此處)折疊或打開(kāi)

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

  2. ...

  3. </PropertyGroup>

當(dāng)遇到條件 '$(Configuration)|$(Platform)' == 'Debug|AnyCPU',然后在那組MSBuild屬性的值將被使用。例如,您會(huì)在上面的屬性組中找到下面的內(nèi)容:

點(diǎn)擊(此處)折疊或打開(kāi)

  1. <AndroidLinkMode>None</AndroidLinkMode>

這集的鏈接器選項(xiàng)“None”當(dāng)使用Debug|AnyCpu Configuration|Platform組合。你的配置和平臺(tái)的真的只是一個(gè)讓你把一堆MSBuild屬性只是選擇為你建立一個(gè)配置|平臺(tái)特定的值。如果從命令行生成,您可以手動(dòng)設(shè)置任何可用的MSBuild屬性使用/p:MSBuildProperty=value 語(yǔ)法。換句話說(shuō),如果您想從命令行構(gòu)建Debug|AnyCPU Configuration|Platform 同時(shí)還想使用 “Link SDK Assemblies Only”,你將按照如下方式配置(Windows):

點(diǎn)擊(此處)折疊或打開(kāi)

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


…或者在Mac:

點(diǎn)擊(此處)折疊或打開(kāi)

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

你看到的任何屬性都定義在.csproj文件中的一個(gè)PropertyGroup定義,可能通過(guò)命令行構(gòu)建時(shí)使用/p:PropertyName=PropertyValue 開(kāi)切換一個(gè)值。在MSBuild命令行引用 中查閱更多信息。

總結(jié)

你已經(jīng)學(xué)會(huì)了如何創(chuàng)建自定義配置平臺(tái)以及如何編輯,編譯選項(xiàng)你想為一個(gè)特定的情況下都可以設(shè)置僅僅通過(guò)選擇適當(dāng)?shù)呐渲脇平臺(tái)組合

文章名稱:揭秘生成配置
路徑分享:http://bm7419.com/article36/gihppg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、網(wǎng)站排名、標(biāo)簽優(yōu)化云服務(wù)器、搜索引擎優(yōu)化電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)