您好,登錄后才能下訂單哦!
我相信每個人都熟悉使用大多數解決方案模板中的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中添加一個配置:
在解決方案瀏覽器中雙擊解決方案來打開解決方案選項。
選擇左側的 Build > Configurations on the left (不是 Run > Configurations).
因為我們需要Debug配置的變體,在“配置”列表中選擇Debug并單擊“Copy”。這將拷貝當前的Debug設置到你的新配置中。
輸入這個配置的名字,比如DebugDevice。
平臺保持默認的Any CPU選項。
點擊“OK”。
在DebugEmulator配置中重復4-8步。
在 Visual Studio (Windows)中添加一個配置:
通過Build > Configuration Manager菜單中,打開配置管理器。
點擊Active Solution Configuration下拉框并選擇 “New”。
在名字字段輸入 DebugDevice。
在 “Copy settings from”下拉列表選擇Debug。
確保選中了 “Create new project configurations” 選項。
點擊OK。
2 – 6 在名字字段使用ebugEmulator,并重復2 – 6步。
現在,在列表中你將看到四個配置項,Debug, DebugDevice, DebugEmulator, 以及Release。
現在,您只需打開Android項目選項并對這兩個新配置進行所需的更改:
打開 Android 項目選項。
選擇Android Build (Mac) / Android Options (Windows) > Advanced 選項卡。
從配置下拉列表選擇DebugDevice.
除了armeabi-v7a之外支持ABIs都取消選擇。
從配置下拉列表選擇DebugEmulator.
除了x86之外所有支持的ABIs都取消選擇。
你可以現在無論何時你想調試使用實際的Android設備的選擇DebugDevice,你可以當你想調試一個x86模擬器選擇DebugEmulator。您的調試構建會更快,因為您只為所需的體系結構構建。
祝賀您,現在已經添加了兩個配置,并為特定調試場景設置它們。
我們所做的工作是可行的,但是在設備或仿真器的構建之間定義平臺而不是配置可能更好。您會注意到這是默認的IOS項目。有iOS項目定義兩個平臺,iPhone 和iPhoneSimulator。如果我們喜歡,我們也可以這樣做。對于這個練習,開始一個新的Xamarin形式工程,PCL或共享型不該鍛煉。
在Xamarin/Visual Studio for Mac添加一個平臺:
在解決方案瀏覽器中通過雙擊解決方案打開解決方案選項。
在左側選擇Build > Configurations (不是Run > Configurations)。
選擇General 選項卡。
因為我們想要Debug配置的變體,在配置列表選擇Debug并點擊 “Copy”.。這將拷貝當前的Debug設置到你的新配置中:
輸入配置名字,在這個選項中保存和Debug相同的配置,因為我們只想添加一個平臺而不是一個配置。
在平臺字段輸入名字AndroidDevice.
確保 “Create Configurations for all solution items” 選項沒被選中。我們只需要這個平臺的Android項目。如果選擇了這個選項,我們也會將這個平臺添加到iOS項目中。
點擊“OK”。
在名為AndroidEmulator的平臺中重復步驟4-8.
因為我們沒有向項目添加這個新平臺(步驟7),我們需要在Android項目中重復步驟4-8,Options > Build
> Configurations。為AndroidDevice 和ndroidEmulator 平臺都這樣做。
然后,您必須將解決方案定制平臺映射到項目自定義平臺:
打開Solution Options > Build > Configurations > Configuration Mappings 選項卡。
在最頂層的平臺字段選擇選擇AndroidDevice 平臺.
在Android應用項目的配置列,選擇Debug|AndroidDevice。
在頂端的平臺字段選擇AndroidEmulator平臺。
在Android應用項目的配置列,選擇Debug|AndroidEmulator.
現在,在主配置下拉列表,你將看到 Debug|AndroidDevice and Debug|AndroidEmulator。
.
您可以為每一個平臺編輯設置,就像之前設置的配置一樣,只要選擇要編輯平臺中的構建設置的正確平臺就可以了。在Project Options > Android Build (Mac) 設置頁。
添加自定義平臺不直接在Visual Studio是Xamarin Studio。你可以在解決方案級別添加自定義平臺的名稱,但它添加在項目層面需要一些編輯的.csproj文件。 以下是如何在VisualStudio中實現所有這些:
添加解決方案級平臺:
通過 Build > Configuration Manager 菜單打開Configuration Manager。
點擊Active Solution Platform下拉列表并選擇“New”.
在名字字段輸入AndroidDevice.
在“Copy settings from”下拉列表選擇AnyCPU。
確保沒有選中 “Create new project configurations” 選項。在Android應用項目沒有選擇一個AndroidDevice平臺時,如果選中它,你將會得到一個錯誤。
點擊OK。
在名字字段使用Androidmulator,重復步驟2 – 6。
現在最困難的部分是在Android應用程序項目中添加新的平臺。
卸載Android應用項目(右擊項目并選擇卸載)。
編輯AppName.csproj 文件(右鍵點擊項目并選擇 “編輯.csproj”)。
在打開的項目標記下面粘貼下列XML:
點擊(此處)折疊或打開
<PropertyGroup Condition=" '$(Platform)' == 'AndroidDevice' ">
<DefineConstants>AndroidDevice</DefineConstants>
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition=" '$(Platform)' == 'AndroidEmulator' ">
<DefineConstants>AndroidEmulator</DefineConstants>
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
尋找以下元素:
點擊(此處)折疊或打開
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
選擇文本的所有上述PropertyGroup包括開幕式和閉幕PropertyGroup標簽并將它復制。
粘貼文本兩次右下方的propertygroup標簽上面復制的結局。
編輯已粘貼的屬性組,更改:
點擊(此處)折疊或打開
為
點擊(此處)折疊或打開
上面是針對第一處拷貝的修改,下面是對第二處拷貝的修改
點擊(此處)折疊或打開
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AndroidEmulator' ">
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AndroidDevice' ">
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
不需要,但最好為每個平臺單獨outputpath,因此改變:
點擊(此處)折疊或打開
為
點擊(此處)折疊或打開
這是針對第一處拷貝的修改。
點擊(此處)折疊或打開
這是對第二處拷貝的修改。
<OutputPath>bin\AndroidEmulator\Debug</OutputPath>
<OutputPath>bin\AndroidDevice\Debug</OutputPath>
<OutputPath>bin\Debug</OutputPath>
然后,您必須將解決方案定制平臺映射到項目自定義平臺:
再次打開Configuration Manager。
為活動解決方案平臺選擇AndroidDevice.
Android應用項目的平臺列,選擇AndroidDevice。
為活動解決方案平臺選擇AndroidEmulator.
在Android應用項目的平臺列選擇AndroidEmulator。
現在你將要開放的Android項目屬性和編輯配置|平臺設置,只有建立相關的體系結構,比如AndroidDevice的armeabi-v7s和AndroidEmulator的x86,就像你簡易的創建一個新配置。
當我們添加上面的配置時,我勻將它添加到解決方案級別,通過在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文件自UI沒有提供這樣的辦法在Xamarin Studio在Visual Studio應用程序項目中添加自定義平臺時。主要是你會不會編輯.csproj文件但我覺得它是有用的至少接觸的項目.csproj文件受影響的當你切換活動配置|平臺IDE。
當我們添加一個自定義平臺之上,我們兩次拷貝和粘貼一個PropertyGroup添加到新平臺并且設置新平臺的構建輸出路徑。所使用的每個配置的屬性組是一套簡單的MSBuild屬性和值時將使用相應的配置|平臺組合選擇建立。例如,下面的屬性組時將使用的Debug|AnyCPU 時選中Configuration|Platform:
點擊(此處)折疊或打開
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
...
</PropertyGroup>
當遇到條件 '$(Configuration)|$(Platform)' == 'Debug|AnyCPU',然后在那組MSBuild屬性的值將被使用。例如,您會在上面的屬性組中找到下面的內容:
點擊(此處)折疊或打開
<AndroidLinkMode>None</AndroidLinkMode>
這集的鏈接器選項“None”當使用Debug|AnyCpu
Configuration|Platform組合。你的配置和平臺的真的只是一個讓你把一堆MSBuild屬性只是選擇為你建立一個配置|平臺特定的值。如果從命令行生成,您可以手動設置任何可用的MSBuild屬性使用/p:MSBuildProperty=value
語法。換句話說,如果您想從命令行構建Debug|AnyCPU Configuration|Platform 同時還想使用 “Link SDK
Assemblies Only”,你將按照如下方式配置(Windows):
點擊(此處)折疊或打開
MSBuild.exe MySolution.csproj /p:Configuration=Debug /p:Platform=AnyCPU /p:AndroidLinkMode=SdkOnly
…或者在Mac:
點擊(此處)折疊或打開
MSBuild MySolution.csproj /p:Configuration=Debug /p:Platform=AnyCPU /p:AndroidLinkMode=SdkOnly
你看到的任何屬性都定義在.csproj文件中的一個PropertyGroup定義,可能通過命令行構建時使用/p:PropertyName=PropertyValue 開切換一個值。在MSBuild命令行引用 中查閱更多信息。
你已經學會了如何創建自定義配置平臺以及如何編輯,編譯選項你想為一個特定的情況下都可以設置僅僅通過選擇適當的配置|平臺組合
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。