我对xaml使用的内部类有一个特殊的问题。
问题如下:
我们决定强化所有装配。在强势命名之后,除了一个项目之外,所有项目都在VS 2017下顺利编制。情况如下:
Assembly Company.Component - 编译没有问题,并公开其内部结构如下:
[assembly: InternalsVisibleTo("Company.Component.Test, PublicKey={omitted}")]
[assembly: InternalsVisibleTo("Company.OtherLibrary, PublicKey={omitted}")]
Company.OtherLibrary - 由于其xaml文件中存在以下错误,根本无法编译:
Only public or internal classes can be used within markup. 'Converter1' is not public or internal.
有问题的xaml文件可以在下面看到(名称已更改):
<ns:class x:Class="Company.OtherLibrary.Class"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:converters="clr-namespace:Company.Component.Converters;assembly=Company.Component"
xmlns:viewModels="clr-namespace:Company.OtherLibrary.ViewModels"
xmlns:ns="clr-namespace:Company.Component;assembly=Company.Component"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"
d:DataContext="{d:DesignInstance d:Type=viewModels:ViewModelClass}"
Style="{StaticResource {x:Type ns:Style}}">
<UserControl.Template>
<ControlTemplate>
<DockPanel>
<DockPanel.Resources>
<converters:Converter1 x:Key="Converter1" />
<converters:Converter2 x:Key="Converter2" />
<converters:Converter3 x:Key="Converter3" />
<converters:Converter4 x:Key="Converter4" />
</DockPanel.Resources>
...
</DockPanel>
</ControlTemplate>
</UserControl.Template>
现在回答一些问题:
停靠面板资源中显示的所有转换器都是Company.Component程序集中的内部。它们都会出现以下错误:
The type '{type}' is not accessible.
我尝试了什么
有一些非常简单的东西我很明显被忽视了。有人可以帮我弄清楚这里发生了什么吗?我不允许(由于遗漏的原因)更改组件库而不是强烈命名它。