0

GMAP.Net と Extended WPF Toolkit を使用した WPF アプリがあります。これらのライブラリのコントロールを XAML で直接参照します。これらの dll をプロジェクトに追加し、埋め込みリソースとしてマークしたいと考えています。

dll を参照として使用しなくなったときに、XAML からコントロールを参照し続けるにはどうすればよいですか?

編集:表示するコードはあまりありません。これは、gmap を参照として使用しているときに機能します。

xmlns:WindowsPresentation="clr-namespace:GMap.NET.WindowsPresentation;assembly=GMap.NET.WindowsPresentation"

参照として gmap を削除し、埋め込みリソースとして追加すると、エラー メッセージ:

Error 1 The name "GMapControl" does not exist in the namespace "clr-namespace:GMap.NET.WindowsPresentation;assembly=GMap.NET.WindowsPresentation". Windows\MapWindow.xaml

xmlnsintelisense/ドロップダウンに gmap 参照が存在しません

4

1 に答える 1

0

参照されているdllを残し、最終リリースをビルドするときにそれらをコピーしないでください。また、AssemblyResolveにコードを追加して、埋め込まれたリソースを取得しましたか?私のコードはgzip圧縮されたアセンブリを使用しています。

        AppDomain.CurrentDomain.AssemblyResolve += ( sender, args ) =>
        {
            try
            {
                String resourceName = String.Format( "Program.Libs.{0}.dll.gz", new AssemblyName( args.Name ).Name );
                using (var stream = new GZipStream( Assembly.GetExecutingAssembly().GetManifestResourceStream( resourceName ), CompressionMode.Decompress ))
                using (var outstream = new MemoryStream())
                {
                    CopyTo( stream, outstream );
                    return Assembly.Load( outstream.GetBuffer() );
                }
            }
            catch (Exception e)
            {
                System.Diagnostics.Debug.WriteLine( e.ToString() );
                return null;                    
            }
        };

    public static long CopyTo( Stream source, Stream destination )
    {
        byte[] buffer = new byte[ 2048 ];
        int bytesRead;
        long totalBytes = 0;
        while ((bytesRead = source.Read( buffer, 0, buffer.Length )) > 0)
        {
            destination.Write( buffer, 0, bytesRead );
            totalBytes += bytesRead;
        }
        return totalBytes;
    }
于 2013-03-12T17:08:36.417 に答える