オフィスの他のエンジニアが使用できるスタイルとコントロールのアセンブリを構築しようとしています。たとえば、WPFToolKit の DoubleUpDown コントロールから派生した型 (MSpinner) があります。この MSpinner コントロールにも一連のスタイルがあります。
テスト実行可能ファイルでは、リソースにアクセスするためにここで説明されている手法を使用しています。これは、リソース アセンブリの作成にも使用されています。
また、リソース ライブラリの NuGet から Costura.Fody Assembly Embedding ツールを使用して、WPFToolKit アセンブリをリソース ライブラリ アセンブリに埋め込むことができるようにしています。
私のリソース ライブラリ アセンブリは問題なくビルドされます。次に、リソース ライブラリ アセンブリを新しいテスト WPF 実行可能ファイルの参照として使用します。
私の使い方は以下の通りです。
<Window x:Class="UIPart.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:ignore="http://www.galasoft.ch/ignore"
xmlns:controls="clr-namespace:MyResources.Controls;assembly=MyResources"
mc:Ignorable="d ignore"
Height="300"
Width="300"
Title="MVVM Light Application"
DataContext="{Binding Main, Source={StaticResource Locator}}">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Skins/MainSkin.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid x:Name="LayoutRoot">
<controls:MSpinner/>
</Grid>
</Window>
ただし、実行可能ファイルをコンパイルすると、次のエラーが発生します。
重大度コード 説明 Project File Line Suppression State Error 不明なビルド エラー、「アセンブリへの依存関係を解決できません 'Xceed.Wpf.Toolkit、Version=2.7.0.0、Culture=neutral、PublicKeyToken=3e4669d2f30244f4' がプリロードされていないためです。ReflectionOnly API を使用する場合、依存アセンブリは、ReflectionOnlyAssemblyResolve イベントを通じて事前に読み込まれるか、必要に応じて読み込まれる必要があります。行 24 位置 10.' UIPart C:\Users\heyyouthere\Documents\Visual Studio 2015\Projects\ResourceDictionaryExample\UIPart\MainWindow.xaml 24
ここで私が最初に考えたのは、Costura.Fody が正しく機能しておらず、WPF.ToolKit アセンブリを埋め込んでいないということですが、実際には、結果のリソース ライブラリ アセンブリのバイト サイズによると、Costura.Fody のほうが大きくなります。 .Fody の埋め込みが実行されます。
次に、実行可能ファイルで WPFToolKit 自体を参照することも考えました。これは確かに少し冗長に聞こえますが、そうではありません。NuGet からインストールしたところ、エラーがなくなり、すべてが機能しました。
しかし、それを行うことは私にとって解決策ではありません。すべてのリソースとそれらのリソースのすべての依存関係をリソース ライブラリに統合する必要があります。WPFToolkit には、これが成功したと見なすために含まれています。
私の質問は、なぜアセンブリの解決が起こらないのですか? 一致しない署名はありますか?ディスク上の Xceed.Wpf.Toolkit.dll ファイルを明示的に探しているものはありますか? Fody のおかげで、Xceed.Wpf.Toolkit.dll で定義された型がリソース ライブラリに埋め込まれていませんか?