2011-05-17 6 views
4

は、私は、Visual Studio 2008、.NET 3.5 SP1を使用して、以下のモジュールを使用してテストアプリケーション持っています:WPFデザイナがアンマネージDLLを呼び出すライブラリをロードできないのはなぜですか?

  1. C++ DLL
  2. C++/CLIのDLL#1
  3. のC#を使用しています

    <Window x:Class="WpfApplication1.Window1" 
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        xmlns:lib1="clr-namespace:ClassLibrary1;assembly=ClassLibrary1" <- ERROR 
    
    :私は、WPF XAML内のリソースとして#2からのクラスを使用しようとすると、設計者は私をさせません、#2

を使用するWPFアプリケーション

エラー: "アセンブリ 'ClassLibrary1'が見つかりませんでした。アセンブリ参照がないことを確認します。また、プロジェクトと参照されているすべてのアセンブリがビルドされていることを確認してください」

しかし、アプリケーションメインウィンドウのコードビハインドでC++/CLI DLLのクラスを使用すると、すべて正常に動作します。そしてそのコンストラクタでそれがC++ DLL、問題なしに呼び出します。

using ClassLibrary1; 

... 

public partial class Window1 : Window 
{ 
    public Window1() 
    { 
     InitializeComponent(); 

     //use in code-behind 
     Class1 tmp = new Class1(); 
     tmp.FirstName = "foo"; 
     Title = tmp.FirstName; 
    } 
} 

私はC++/CLIのアセンブリを変更する場合は、C++ DLLへの呼び出しを削除して、すべてを再構築し、設計者が文句を停止し、Cをロードする++/CLIアセンブリの不一致なし

この問題は、WPFデザイナーが動的ライブラリ。

+0

回避策がわかりませんが、VS/WPF Designerがアセンブリを一時的な場所にコピーしてそこからロードすると思います。 C++ DLLをコピーしていない可能性があります。 – CodeNaked

+0

私はあなたが非常に近くにいると思うが、それほどではない。アセンブリ(管理されていないものも)は実際にコピーされますが、以下のRickのように、WPFデザイナーはシステムパスのどこかにいなければ見つけることができません。 –

答えて

6

Visual Studioデザイナーはアセンブリを一時的な場所にコピーしますが、アンマネージの依存関係はコピーしないため、この問題が発生します。

最も簡単な解決策は、理想的ではないものの、PATH環境変数に自分の管理対象外の依存関係を含むフォルダを追加し、そのPATHDevEnv.exeを開始することです。 - devenvをし、パスを設定し、起動するバッチファイルを使用して> [プロパティ]

    • コンピュータを使用してシステム環境変数にフォルダを追加:

      あなたがいずれかの方法でこれを行うことができます

      このソリューションの問題点は、アンマネージ依存関係が再構築されるためです。Visual Studioはそれらを「ハングアップ」するか、新しいものを使用しないため、デザイナを使用してVisual Studioを終了して再起動する必要があります。これは少し痛みを伴うことがあります。

  • +0

    これはこれでなければなりません:デザイナーはシステムパス上にある場合にのみ私のDLLを見つけます。私のライブラリをsystem32フォルダにコピーする場合は、ここで示唆しているように(http://social.msdn.microsoft.com/Forums/en/vswpfdesigner/thread/a4cd0d5f-71dc-4b2c-977d-0a6825838160)、代わりに出力フォルダ、デザイナーはそれを見つけます。だから私はあなたのソリューションが動作すると確信しています。私は実際にあなたが記述している古いDLLの問題を扱うことを楽しみにしていません。ブリー。 –

    +0

    @Matthew:設計上、アンマネージDLLが最新であるかどうかは気にしないかもしれません。それは1週間になる可能性があります。何が最も効果的であるかを試してみてください。 –

    関連する問題