提问人:Soko 提问时间:8/22/2023 更新时间:8/22/2023 访问量:38
Visual Studio 依赖项验证不检查(忽略)xaml/WPF
Visual Studio Dependency Validation does not check (ignores) xaml/WPF
问:
我正在大型 WPF 应用程序中广泛使用 Depency Validation 图表,以使用当前版本 0.11.0 中的标准 NuGet 包强制执行层分离。Microsoft.DependencyValidation.Analyzers
我认为验证按预期工作(并且当天也对其进行了测试)......但现在我必须找出:验证不检查 xaml 使用情况!
首先,我认为这是我们大型应用程序的问题。但是,使用当前技术(当前 VisualStudio 2022、WPF 和 .NET 7)的小型测试应用显示了相同的问题:
此默认 WPF 应用具有
- 一个包含一个 Button () 的附加项目
Views
MyButton
- 具有一个依赖项关系图的项目:The project with one dependency diagram:
Validation
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" />
图表本身非常简单:
当然,projects/csproj ( 和 ) 都有必要的设置:DepVal1
Views
<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>
我在这里错过了什么吗?还是真的是验证算法中的错误?㞖。。。以前怎么没人注意到这一点?我在任何地方都找不到关于这个问题的任何信息......
谢谢 索科
答: 暂无答案
评论