Visual Studio 依赖项验证不检查(忽略)xaml/WPF

Visual Studio Dependency Validation does not check (ignores) xaml/WPF

提问人:Soko 提问时间:8/22/2023 更新时间:8/22/2023 访问量:38

问:

我正在大型 WPF 应用程序中广泛使用 Depency Validation 图表,以使用当前版本 0.11.0 中的标准 NuGet 包强制执行层分离。Microsoft.DependencyValidation.Analyzers

我认为验证按预期工作(并且当天也对其进行了测试)......但现在我必须找出:验证不检查 xaml 使用情况!

首先,我认为这是我们大型应用程序的问题。但是,使用当前技术(当前 VisualStudio 2022、WPF 和 .NET 7)的小型测试应用显示了相同的问题:

此默认 WPF 应用具有

  • 一个包含一个 Button () 的附加项目ViewsMyButton
  • 具有一个依赖项关系图的项目:The project with one dependency diagram:Validation

solution

MainWindow在 XAML 中的用途:MyButton

<Window
    x:Class="DepVal1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:views="clr-namespace:Views;assembly=Views"
    Title="MainWindow"
    Width="800"
    Height="450"
    mc:Ignorable="d">
    <Grid>
        <!--  But this usage is ignored by the validation!  -->
        <views:MyButton Content="Test" />
    </Grid>
</Window>

以及代码隐藏:

namespace DepVal1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow
    {
        public MainWindow()
        {
            InitializeComponent();

            // This usage leads to an validation error when uncommented
            //var test = new Views.MyButton();
        }
    }
}

如评论中所述:验证捕获了代码隐藏中的用法(生成错误 DV0001)。不是!var test = new Views.MyButton();<views:MyButton Content="Test" />

图表本身非常简单:

diagram

当然,projects/csproj ( 和 ) 都有必要的设置:DepVal1Views

<ItemGroup>
    <AdditionalFiles Include="..\Validation\DependencyValidation1.layerdiagram" Link="DependencyValidation1.layerdiagram">
        <Visible>False</Visible>
    </AdditionalFiles>
</ItemGroup>
<ItemGroup>
    <PackageReference Include="Microsoft.DependencyValidation.Analyzers" Version="0.11.0" />
</ItemGroup>

我在这里错过了什么吗?还是真的是验证算法中的错误?㞖。。。以前怎么没人注意到这一点?我在任何地方都找不到关于这个问题的任何信息......

谢谢 索科

.NET WPF Visual-Studio 验证 XAML

评论


答: 暂无答案