我相信每個(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中添加一個(gè)配置:
在解決方案瀏覽器中雙擊解決方案來(lái)打開(kāi)解決方案選項(xiàng)。
選擇左側(cè)的 Build > Configurations on the left (不是 Run > Configurations).
因?yàn)槲覀冃枰狣ebug配置的變體,在“配置”列表中選擇Debug并單擊“Copy”。這將拷貝當(dāng)前的Debug設(shè)置到你的新配置中。
輸入這個(gè)配置的名字,比如DebugDevice。
平臺(tái)保持默認(rèn)的Any CPU選項(xiàng)。
點(diǎn)擊“OK”。
在DebugEmulator配置中重復(fù)4-8步。
在 Visual Studio (Windows)中添加一個(gè)配置:
通過(guò)Build > Configuration Manager菜單中,打開(kāi)配置管理器。
點(diǎn)擊Active Solution Configuration下拉框并選擇 “New”。
在名字字段輸入 DebugDevice。
在 “Copy settings from”下拉列表選擇Debug。
確保選中了 “Create new project configurations” 選項(xiàng)。
點(diǎn)擊OK。
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)行所需的更改:
打開(kāi) Android 項(xiàng)目選項(xiàng)。
選擇Android Build (Mac) / Android Options (Windows) > Advanced 選項(xiàng)卡。
從配置下拉列表選擇DebugDevice.
除了armeabi-v7a之外支持ABIs都取消選擇。
從配置下拉列表選擇DebugEmulator.
除了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è)置它們。
我們所做的工作是可行的,但是在設(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或共享型不該鍛煉。
在Xamarin/Visual Studio for Mac添加一個(gè)平臺(tái):
在解決方案瀏覽器中通過(guò)雙擊解決方案打開(kāi)解決方案選項(xiàng)。
在左側(cè)選擇Build > Configurations (不是Run > Configurations)。
選擇General 選項(xiàng)卡。
因?yàn)槲覀兿胍狣ebug配置的變體,在配置列表選擇Debug并點(diǎn)擊 “Copy”.。這將拷貝當(dāng)前的Debug設(shè)置到你的新配置中:
輸入配置名字,在這個(gè)選項(xiàng)中保存和Debug相同的配置,因?yàn)槲覀冎幌胩砑右粋€(gè)平臺(tái)而不是一個(gè)配置。
在平臺(tái)字段輸入名字AndroidDevice.
確保 “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)目中。
點(diǎn)擊“OK”。
在名為AndroidEmulator的平臺(tái)中重復(fù)步驟4-8.
因?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):
打開(kāi)Solution Options > Build > Configurations > Configuration Mappings 選項(xiàng)卡。
在最頂層的平臺(tái)字段選擇選擇AndroidDevice 平臺(tái).
在Android應(yīng)用項(xiàng)目的配置列,選擇Debug|AndroidDevice。
在頂端的平臺(tái)字段選擇AndroidEmulator平臺(tái)。
在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è)。
添加自定義平臺(tái)不直接在Visual Studio是Xamarin Studio。你可以在解決方案級(jí)別添加自定義平臺(tái)的名稱,但它添加在項(xiàng)目層面需要一些編輯的.csproj文件。 以下是如何在VisualStudio中實(shí)現(xiàn)所有這些:
添加解決方案級(jí)平臺(tái):
通過(guò) Build > Configuration Manager 菜單打開(kāi)Configuration Manager。
點(diǎn)擊Active Solution Platform下拉列表并選擇“New”.
在名字字段輸入AndroidDevice.
在“Copy settings from”下拉列表選擇AnyCPU。
確保沒(méi)有選中 “Create new project configurations” 選項(xiàng)。在Android應(yīng)用項(xiàng)目沒(méi)有選擇一個(gè)AndroidDevice平臺(tái)時(shí),如果選中它,你將會(huì)得到一個(gè)錯(cuò)誤。
點(diǎn)擊OK。
在名字字段使用Androidmulator,重復(fù)步驟2 – 6。
現(xiàn)在最困難的部分是在Android應(yīng)用程序項(xiàng)目中添加新的平臺(tái)。
卸載Android應(yīng)用項(xiàng)目(右擊項(xiàng)目并選擇卸載)。
編輯AppName.csproj 文件(右鍵點(diǎn)擊項(xiàng)目并選擇 “編輯.csproj”)。
在打開(kāi)的項(xiàng)目標(biāo)記下面粘貼下列XML:
點(diǎn)擊(此處)折疊或打開(kāi)
<PropertyGroup Condition=" '$(Platform)' == 'AndroidDevice' ">
<DefineConstants>AndroidDevice</DefineConstants>
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition=" '$(Platform)' == 'AndroidEmulator' ">
<DefineConstants>AndroidEmulator</DefineConstants>
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
尋找以下元素:
點(diǎn)擊(此處)折疊或打開(kāi)
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
選擇文本的所有上述PropertyGroup包括開(kāi)幕式和閉幕PropertyGroup標(biāo)簽并將它復(fù)制。
粘貼文本兩次右下方的propertygroup標(biāo)簽上面復(fù)制的結(jié)局。
編輯已粘貼的屬性組,更改:
點(diǎn)擊(此處)折疊或打開(kāi)
為
點(diǎn)擊(此處)折疊或打開(kāi)
上面是針對(duì)第一處拷貝的修改,下面是對(duì)第二處拷貝的修改
點(diǎn)擊(此處)折疊或打開(kāi)
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AndroidEmulator' ">
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AndroidDevice' ">
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
不需要,但最好為每個(gè)平臺(tái)單獨(dú)outputpath,因此改變:
點(diǎn)擊(此處)折疊或打開(kāi)
為
點(diǎn)擊(此處)折疊或打開(kāi)
這是針對(duì)第一處拷貝的修改。
點(diǎn)擊(此處)折疊或打開(kāi)
這是對(duì)第二處拷貝的修改。
<OutputPath>bin\AndroidEmulator\Debug</OutputPath>
<OutputPath>bin\AndroidDevice\Debug</OutputPath>
<OutputPath>bin\Debug</OutputPath>
然后,您必須將解決方案定制平臺(tái)映射到項(xiàng)目自定義平臺(tái):
再次打開(kāi)Configuration Manager。
為活動(dòng)解決方案平臺(tái)選擇AndroidDevice.
Android應(yīng)用項(xiàng)目的平臺(tái)列,選擇AndroidDevice。
為活動(dòng)解決方案平臺(tái)選擇AndroidEmulator.
在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è)新配置。
當(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)建。
我們簡(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)
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
...
</PropertyGroup>
當(dāng)遇到條件 '$(Configuration)|$(Platform)' == 'Debug|AnyCPU',然后在那組MSBuild屬性的值將被使用。例如,您會(huì)在上面的屬性組中找到下面的內(nèi)容:
點(diǎn)擊(此處)折疊或打開(kāi)
<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)
MSBuild.exe MySolution.csproj /p:Configuration=Debug /p:Platform=AnyCPU /p:AndroidLinkMode=SdkOnly
…或者在Mac:
點(diǎn)擊(此處)折疊或打開(kāi)
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命令行引用 中查閱更多信息。
你已經(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)