是否有必要在Xamarin Forms应用程序的每个类上方添加[XamlCompilation(XamlCompilationOptions.Compile)]?

Ala*_*an2 5 c# xamarin xamarin.forms

我以为我以前已经读过,这仅对于App类是必需的,但是现在当我进入Xamarin Form官方模板一部分的示例选项卡式应用程序时,我看到它添加在每个类的上方。

有人可以确认。当添加一个类时还是仅一个类?

在此处输入图片说明

Aru*_*pta 8

两者都可以接受。

如果要在整个应用程序中启用已编译的 XAML,只需在 App.cs 文件中的命名空间上方设置 [assembly: XamlCompilation (XamlCompilationOptions.Compile)] ,如下所示:

[assembly: XamlCompilation (XamlCompilationOptions.Compile)]
namespace App
{
   ....

}
Run Code Online (Sandbox Code Playgroud)

如果要启用每个文件,请在类级别将其设置为如下。

[XamlCompilation (XamlCompilationOptions.Compile)]
public class TestPage : ContentPage
{
    ....
}
Run Code Online (Sandbox Code Playgroud)

在以下位置阅读更多信息:

https://devblogs.microsoft.com/xamarin/optimizing-xamarin-forms-apps-for-maximum-performance/


Sus*_*ver 5

不,您可以为它添加一次程序集级别属性以包含所有 XAML 文件:

[assembly: XamlCompilation (XamlCompilationOptions.Compile)]
Run Code Online (Sandbox Code Playgroud)

关于: https //docs.microsoft.com/en-us/xamarin/xamarin-forms/xaml/xamlc

using Xamarin.Forms.Xaml;
...
[assembly: XamlCompilation (XamlCompilationOptions.Compile)]
namespace SomeApp
{
  ...
}
Run Code Online (Sandbox Code Playgroud)

  • 它是一个程序集级别 (`[assembly: XamlCompilation...`) 属性,因此每个 CIL 程序集只需要一次。如果您在不同的项目/程序集中有 XAML 页面,则需要将其添加到每个项目中。 (2认同)
  • 一些较旧的 XAML 代码可能与 XAMLC 不兼容,因此它不会默认为“on”状态,因此在页面/类级别执行此操作可能对在广泛的用户项目中使用的通用代码有意义 (2认同)