Get System.Reflection.Assembly.GetExecutingAssembly().获取名称()

本文关键字:获取 GetExecutingAssembly System Reflection Assembly Get | 更新日期: 2023-09-27 18:36:20

有机会获得:

System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();

来自 XAML 代码?

<Window x:Class="TestWpf.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title=" **Here** " Height="700" Width="660"
        Name="myWindow" xmlns:my="clr-namespace:TestWpf">
</Window>

谢谢!

Get System.Reflection.Assembly.GetExecutingAssembly().获取名称()

您可以使用 MarkupExtension 来实现此目的:

public class Version : MarkupExtension
{
    public override object ProvideValue(IServiceProvider serviceProvider)
    {
        return System.Reflection.Assembly
                     .GetExecutingAssembly().GetName().Version.ToString();
    }
}

并以这种方式使用它:

<Window x:Class="TestWpf.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="{my:Version}" 
    Height="700" Width="660"
    Name="myWindow" 
    xmlns:my="clr-namespace:TestWpf">
</Window>

Window的代码隐藏中创建一个返回该字符串的属性:

public string Version
{
    get
    {
        return System.Reflection.Assembly
            .GetExecutingAssembly().GetName().Version.ToString();
    }
}

然后从 XAML 代码中引用该代码:

<Window x:Class="TestWpf.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="{Binding Version, RelativeSource={RelativeSource Self}}" 
        Height="700" Width="660"
        Name="myWindow" 
        xmlns:my="clr-namespace:TestWpf">
</Window>

据我所知,如果程序当前直接在 XAML 代码中运行,则无法检索版本。您将始终必须使用某种后台代码。这可以是代码隐藏以及视图模型,MarkupExtension或其他类型的DataContext。