Your project is not referencing the "MonoAndroid,Version=v8.1" framework.
Add a reference to "MonoAndroid,Version=v8.1" in the "frameworks" section of
your project.json, and then re-run NuGet restore.
我的另外一台電腦中,在很早之前,就已將安裝了 Visual Studo 2017,不過,這幾天才將 Viusal Studio 2017 從 15.6.x 升級到 15.7.1,不過,我可以確定的是,在我還沒有升級到 VS2017 15.7.1 版本,我是可以順利建立起 Xamarin.Forms 的專案,並且可以順利正常建置該專案。 (有個詭異現象,那就是,這台電腦原本在 15.7.1 版本中,所建立的 Xamarin.Forms 專案,是可以正常建置的,直到昨天晚上,我也沒有做任何升級與安裝相關軟體的動作,卻發生了一樣的問題,卻也會得到一樣的錯誤訊息,無法順利建置成功了)
如何修正這個問題
- 請在 Visual Studio 2017 的 方案總管中,使用滑鼠雙擊 Android 專案中的 Propertis 節點,找到 應用程式 標籤頁次,並在這個標籤頁次中,您會看到了 使用下列 Android 版本編譯: (目標 Framework) 這個下拉選單,此時他預設的選項是 使用最新平台 (Android 8.1 (Oreo))
這個時候,我們先來查看這個 Android 專案的 .csproj 檔案內容,我們看到了,他的 TargetFrameworkVersion 項目標示其值為 v7.1 ,而另外一個標籤 AndroidUseLatestPlatformSdk 該項目的值為 true。
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{C6CAF76D-0C7C-4DA4-8DE1-617BF0D573C0}</ProjectGuid>
<ProjectTypeGuids>{EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>BlankApp10.Droid</RootNamespace>
<AssemblyName>BlankApp10.Android</AssemblyName>
<FileAlignment>512</FileAlignment>
<TargetFrameworkVersion>v7.1</TargetFrameworkVersion>
<AndroidApplication>True</AndroidApplication>
<AndroidResgenFile>Resources\Resource.designer.cs</AndroidResgenFile>
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
<AndroidResgenClass>Resource</AndroidResgenClass>
<AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
<MonoAndroidResourcePrefix>Resources</MonoAndroidResourcePrefix>
<MonoAndroidAssetsPrefix>Assets</MonoAndroidAssetsPrefix>
<AndroidUseLatestPlatformSdk>true</AndroidUseLatestPlatformSdk>
<AndroidStoreUncompressedFileExtensions />
<MandroidI18n />
<JavaMaximumHeapSize />
<JavaOptions />
<NuGetPackageImportStamp></NuGetPackageImportStamp>
</PropertyGroup>
- 請先選擇 目標 Framework 下拉選單為 Android 8.1 (Oreo),我們也觀察,這個時候,Android .csproj 檔案,變成了如下內容注意,我們是將原先的 使用最新平台 (Android 8. Oreo) 選項,變更成為第二個 Android 8.1 (Oreo) 選項這個時候,他的 TargetFrameworkVersion 項目標示其值為 8.1 ,而另外一個標籤 AndroidUseLatestPlatformSdk 該項目的值為 false。
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{C6CAF76D-0C7C-4DA4-8DE1-617BF0D573C0}</ProjectGuid>
<ProjectTypeGuids>{EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>BlankApp10.Droid</RootNamespace>
<AssemblyName>BlankApp10.Android</AssemblyName>
<FileAlignment>512</FileAlignment>
<TargetFrameworkVersion>v8.1</TargetFrameworkVersion>
<AndroidApplication>True</AndroidApplication>
<AndroidResgenFile>Resources\Resource.designer.cs</AndroidResgenFile>
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
<AndroidResgenClass>Resource</AndroidResgenClass>
<AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
<MonoAndroidResourcePrefix>Resources</MonoAndroidResourcePrefix>
<MonoAndroidAssetsPrefix>Assets</MonoAndroidAssetsPrefix>
<AndroidUseLatestPlatformSdk>false</AndroidUseLatestPlatformSdk>
<AndroidStoreUncompressedFileExtensions />
<MandroidI18n />
<JavaMaximumHeapSize />
<JavaOptions />
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
- 最後,請先選擇 目標 Framework 下拉選單為 使用最新平台 (Android 8. Oreo) 選項,我們也觀察,這個時候,Android .csproj 檔案,變成了如下內容這個時候,我們再度將目標 Framework 設定選項,修改成為最初產生專案的設定值,即為 使用最新平台現在,我們觀察到,專案中的 .csproj 檔案中, TargetFrameworkVersion 項目標示其值為 8.1 ,而另外一個標籤 AndroidUseLatestPlatformSdk 該項目的值為 true。
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{C6CAF76D-0C7C-4DA4-8DE1-617BF0D573C0}</ProjectGuid>
<ProjectTypeGuids>{EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>BlankApp10.Droid</RootNamespace>
<AssemblyName>BlankApp10.Android</AssemblyName>
<FileAlignment>512</FileAlignment>
<TargetFrameworkVersion>v8.1</TargetFrameworkVersion>
<AndroidApplication>True</AndroidApplication>
<AndroidResgenFile>Resources\Resource.designer.cs</AndroidResgenFile>
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
<AndroidResgenClass>Resource</AndroidResgenClass>
<AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
<MonoAndroidResourcePrefix>Resources</MonoAndroidResourcePrefix>
<MonoAndroidAssetsPrefix>Assets</MonoAndroidAssetsPrefix>
<AndroidUseLatestPlatformSdk>true</AndroidUseLatestPlatformSdk>
<AndroidStoreUncompressedFileExtensions />
<MandroidI18n />
<JavaMaximumHeapSize />
<JavaOptions />
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
重新進行建置測試
- 現在,我們需要重新進行建置動作,為了避免一些雜訊殘留,所以,我們先將這個方案(Solution)進行清除,接著,將 Android 專案與 Xamarin.Forms 專案中的 bin / obj 這兩個目錄,從檔案中刪除掉。
- 接著,選擇將 Android 專案來建置
- 稍微等候一段時間,您將會發現到這個 Android 專案,竟然可以順利編譯成功了。
1>------ 已開始建置: 專案: BlankApp10, 組態: Debug Any CPU ------
1>BlankApp10 -> D:\Vulcan\Projects\CannotBuildAndroid\BlankApp10\BlankApp10\BlankApp10\bin\Debug\netstandard2.0\BlankApp10.dll
2>------ 已開始建置: 專案: BlankApp10.Android, 組態: Debug Any CPU ------
2> BlankApp10.Android -> D:\Vulcan\Projects\CannotBuildAndroid\BlankApp10\BlankApp10\BlankApp10.Android\bin\Debug\BlankApp10.Android.dll
2> 沒有辦法解決 "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 和 "mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e" 之間的衝突。任意選擇 "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"。
========== 建置: 2 成功、0 失敗、0 最新、0 略過 ==========
- 根據從網路上的搜尋與分析,這個問題極有可能是 VS2017 15.7.1 所引發的一個內部 Bug,因此,在尚未取得更新版本的 Visual Studio 2017 前,看樣子,只能夠使用這個方法來進行排除該問題了。
最近將 Surface Pro 4 作業系統重新安裝,並且安裝最新的 Visual Studio 2017 15.7.1 版本,並且透過 Prism Template Pack 來產生一個 Xamarin.Forms 的專案,不過,當想要建置 Android 的專案 (此時,我並沒有進行任何 Xamarin.Forms 的相關設計,只是建立好 Xamarin.Forms 專案),卻得到了底下錯誤訊息。