在 VS 中更改启动项目时 XAML 文件中的 Xamarin 命名空间问题

Xamarin namespace issues in XAML files when changing startup project in VS

我在 Visual studio 2017 15.8.0 Preview 4(以及所有以前的版本)

中遇到 Xamarin 问题

我有一个带有 Android 项目和一个 UWP 项目的 Xamarin 表单项目,如果我将启动项目更改为 UWP 并尝试编译我会收到此错误

Error Failed to resolve assembly: 'FoosballXamarin.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' FoosballXamarin.UWP ...\Views\LoginPage.xaml

而 XAML 本身会给我这些行的错误

xmlns:viewModels="clr-namespace:FoosballXamarin.ViewModels;assembly=FoosballXamarin.Android"
xmlns:helpers="clr-namespace:FoosballXamarin.Helpers;assembly=FoosballXamarin.Android"

并希望我将它们更改为

xmlns:viewModels="clr-namespace:FoosballXamarin.ViewModels;assembly=FoosballXamarin.UWP"
xmlns:helpers="clr-namespace:FoosballXamarin.Helpers;assembly=FoosballXamarin.UWP"

有没有一种不同的写法,这样我就不会每次都收到这个错误?

根据您看到的错误,我猜测您已将其配置为共享项目(而不是 PCL/.netstandard)。如果是这种情况,请将 XAML 文件中的行简化为:

xmlns:viewModels="clr-namespace:FoosballXamarin.ViewModels"
xmlns:helpers="clr-namespace:FoosballXamarin.Helpers"

换句话说,只需删除 assembly= 部分即可。如果您没有在 xmlns 行中指定程序集,它将假定命名空间与 XAML 文件是同一个程序集。因此,只有在不同的程序集中才需要包含它。

由于共享项目在多个程序集中包含 XAML 文件(每个平台一个),您几乎必须在同一程序集中为 namespaces/types 的 xmlns 声明省略 assembly=。