我正在使用.NET Framework 4.6.2,Entity Framework 6.13和C#开发WPF应用程序。
我已经在Debug \ Any CPU和Debug \ x86中编译了应用程序。在这两种情况下,相同的可执行文件在第二台计算机中无法正常工作。在我的开发机器上工作正常,在第二个机器上它没有运行方法。
当我从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 Service Pack 1
英特尔酷睿i7-490 @ 3.60GHz
16.0GB的RAM
64位操作系统
它没有运行的第二台机器是:
Windows 7 Embedded Standard Service Pack 1 Intel Celeron CPU 1020E @ 2.20Hz
2,00 GB的内存
32位操作系统
它写的日志是:
TrzTypeSelectedItem: European
TrzTypeSelectedItem changed
TrzTypeSelectedItem value no NULL
但下一个应该是LoadProductsByLaw
,但我不会在日志文件中看到它。
答案 0 :(得分:0)
问题是该程序使用的是GAC中的dll,而不是在程序的文件夹中使用dll。这两个dll都有相同的版本号。
当我添加更多功能时,我还没有改变dll的版本。
我更改了dll版本号,重新编译了程序,现在它可以在第二台计算机上运行。
我不明白为什么它总是从GAC获得第一个dll。