【问题标题】:Xamarin namespace issues in XAML files when changing startup project in VS在 VS 中更改启动项目时 XAML 文件中的 Xamarin 命名空间问题
【发布时间】:2019-01-02 18:17:57
【问题描述】:

我在 Visual Studio 2017 15.8.0 Preview 4(以及所有以前的版本)中遇到 Xamarin 问题

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

错误无法解析程序集:'FoosballXamarin.Android, 版本=0.0.0.0,文化=中性, 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"

有没有办法改写,这样我就不会每次都收到这个错误?

【问题讨论】:

    标签: xaml xamarin xamarin.forms uwp uwp-xaml


    【解决方案1】:

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

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

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

    由于共享项目在多个程序集中(每个平台一个)中包含 XAML 文件,因此您几乎必须在同一程序集中的命名空间/类型的 xmlns 声明中省略 assembly=。

    【讨论】:

    • 使用 .NET 标准创建了一个新项目并迁移了我的文件,现在似乎运行得更好,只有一个与新的不兼容的 nuget 包
    • 我遇到了类似的问题,但我以不同的方式解决了它。我只需要添加在我的程序集中无法解决的特定项目。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多