2016-11-30 8 views
1

.NET Framework 4.6.2、Entity Framework 6.13およびC#でWPFアプリケーションを開発しています。別のコンピュータでプログラムを実行すると、メソッドが呼び出されない

私はDebug \ Any CPUとDebug \ x86でこのアプリケーションをコンパイルしました。どちらの場合も、同じ実行可能ファイルが2台目のコンピュータで正常に動作しません。私の開発マシンでうまく動作し、2番目の方法ではメソッドを実行しません。

私はComboBoxから項目を選択したとき、私はこの問題を持っている:

<ComboBox x:Name="comboBoxTrzType" Grid.Column="1" Margin="10,0,25,0" VerticalAlignment="Center" Height="25" ItemsSource="{Binding TrzTypes}" SelectedItem="{Binding TrzTypeSelectedItem}"> 
    <ComboBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel> 
       <TextBlock Text="{Binding Name}"/> 
      </StackPanel> 
     </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox> 

そして、このプロパティ:

public TrzType TrzTypeSelectedItem 
{ 
    get 
    { 
     return trzTypeSelectedItem; 
    } 
    set 
    { 
     if (value == null) 
      log.Debug("TrzTypeSelectedItem: NULO"); 
     else 
      log.DebugFormat("TrzTypeSelectedItem: {0}", value.Legislation); 

     if (value != trzTypeSelectedItem) 
     { 
      log.Debug("TrzTypeSelectedItem changed"); 

      trzTypeSelectedItem = value; 

      if (value != null) 
      { 
       log.Debug("TrzTypeSelectedItem value no NULL"); 

       LoadProductsByLaw(trzTypeSelectedItem.Legislation); 

       log.Debug("TrzTypeSelectedItem after load"); 
      } 

      RaisePropertyChangedEvent("TrzTypeSelectedItem"); 
     } 
    } 
} 

及び方法が実行されることはありません:

private void LoadProductsByLaw(LawTypes law) 
{ 
    log.Debug("LoadProductsByLaw"); 

    List<Products> pro = null; 

    PanelInfo = Resources.LoadingProducts; 
    InfoPanelVisibility = Visibility.Visible; 

    ConnectToCodesManager(); 

    pro = codeManangerClient.GetProductsByLawPublic((byte)law); 

    if ((pro != null) && (pro.Count > 0)) 
    { 
     Products = new ObservableCollection<Products>(pro); 
     RaisePropertyChangedEvent("Products"); 
    } 
    else 
    { 
     App.Current.Dispatcher.Invoke((Action)delegate 
     { 
      if ((Products != null) && (Products.Count > 0)) 
       Products.Clear(); 
     }); 
    } 

    App.Current.Dispatcher.Invoke((Action)delegate 
    { 
     if ((ProductionOrders != null) && (ProductionOrders.Count > 0)) 
      ProductionOrders.Clear(); 

     if ((Batches != null) && (Batches.Count > 0)) 
      Batches.Clear(); 

     IsProductSelectEnabled = true; 
     IsProductionOrderSelectEnabled = false; 
     IsBatchSelectEnabled = false; 

     InfoPanelVisibility = Visibility.Collapsed; 
     PanelInfo = string.Empty; 
    }); 
} 

この問題の考え方は?

私の開発マシンは、次のとおりです。

のWindows 7 Proのサービスパック3.60GHz @ 1
インテルCore i7-490

システム
オペレーティング
RAMの 16,0GB
64ビット

実行されていない2番目のマシンは、次のようになります。

それは書き込み0

WindowsがRAM
32ビットオペレーティングシステム

の2.20Hz
2,00 GB @ 7標準のService Pack組み込み1
インテルCeleronのCPU 1020Eログは、次のとおりです。

TrzTypeSelectedItem: European 
TrzTypeSelectedItem changed 
TrzTypeSelectedItem value no NULL 

しかし、次はLoadProductsByLawであるはずですが、ログファイルに表示されません。

+1

どうやってこれを決めましたか?私は、どこに失敗したのかを正確に追跡するために、より多くのログステートメントをコードに追加します。 – ChrisF

+0

途中のすべての 'if'条件が満たされているかどうかをデバッガで確認しましたか?あなたは 'TrzTypeSelectedItem'の設定者に入るか、決して到達しませんか? –

+2

.net 4.6.2フレームワークがそのPCに設定されていることを確認してください –

答えて

0

プログラムのフォルダにdllを使用する代わりに、プログラムがGACのdllを使用していたという問題がありました。どちらのdllも同じバージョン番号を持っています。

さらに機能を追加しても、私はdllのバージョンを変更していません。

私はdllのバージョン番号を変更し、プログラムを再コンパイルして、今度は2番目のコンピュータで動作します。

GACから常に最初のdllを取得する理由はわかりません。

+0

最初にGACに行く理由を理解するには:https://msdn.microsoft.com/en-us/library/yx7xezcf(v=vs.110).aspx#バインドを開始する – Maarten

関連する問題