2012-01-24 4 views
0

私はMySolというソリューションを持っています。オブジェクトをインスタンス化してコンパイラエラーが発生する

は私がDeviceProj呼ばMySolでDLLプロジェクトを持っています。

public class Device 
{ 
    public int NumFields { get; set; } 
} 

私もDeviceControl呼ばMySolでWPFユーザーコントロールのプロジェクトを持っています。このプロジェクトは、クラスを定義します。

public class DeviceControl : UserControl 
{ 
    private Device _MyDevice; 

    public Device MyDevice 
    { 
     get { return _MyDevice; } 
     set 
     { 
      _MyDevice = value; 
      for (var i = 0; i < _MyDevice.NumFields; i++) 
       Main.Children.Add(new TextBox()); 
     } 
    } 

    public DeviceControl() 
    { 
     MyDevice = new Device { NumFields = 4 }; 

     InitializeComponent(); 
    } 
} 

最後に、私はDeviceWindow呼ばMySolでWPFアプリケーションプロジェクトを持っている:このクラスは、次のようになります。私はDeviceWindowデザイナーにDeviceControlを追加すると、私は4つのテキストボックスに私のコントロールを参照してください(これが期待されている:デフォルトデバイスはそのNumFields性質を持っているので、設計者は、DeviceControlのインスタンスを作成し、 4に設定すると、4つのテキストボックスがあります)。私はMySolをコンパイルするとき

しかしが、私はエラーを取得:

エラーを1ファイルをコピーすることができません "C:Device.dllを\する\パス\" に「デバッグ\ \ binにDevice.dll "プロセスは、別のプロセスで使用されているため、 'bin \ Debug \ Device.dll'というファイルにアクセスできません。

のインスタンスがWPFデザイナーによって使用されているため、DLLを上書きすることができないためです。

この問題の回避方法はありますか?理解しやすく、

短い説明(多分?):

WPFウィンドウの設計者は、ウィンドウ内で宣言されているすべてのUserControlのインスタンスを作成します。これらのUserControlsの1つに同じソリューションで別のプロジェクト(ObjectProjectという)で宣言されたオブジェクトへの参照が含まれていると、ObjectProject .dllがWPFで使用されるため、ソリューションが構築されませんデザイナー。 Visual Studioでは、使用中の.dllファイルを上書きすることはできません。

+0

解決策を試しましたか?Visual Studioの終了と再オープン?マシンをリブートしますか? – Bernard

+0

はい、私はこれらすべてのことを試しました。私はそれが起こっていることを知っていると思います(DLLはWPFデザイナーが実際に使用しています)。デザイナーやVisual Studioの動作を変更する方法を知りたいだけです。 – ken

答えて

0

この問題の原因は.DLLで、WPFアプリケーションのターゲットは異なる場合があります。アプリケーションターゲットはクライアントプロファイルです。 ターゲットを同じにしてください。

たとえば、ライブラリが.NET 4をターゲットにする場合は、WPFアプリケーションもクライアントプロファイルではなく4をターゲットにしていることを確認します。

0

プロジェクトのおよびbin\Debug\Device.dllフォルダに移動して、これらの2つの場所からDevice.dllファイルを削除します。プロジェクトを再度実行すると、これらのファイルは自動的にディレクトリに作成されます。その後、このエラーなしでビルドすることができます。

関連する問題