我打电话给我的WPF应用程序
My.Application
检查其My.Application.Info.Version
但现在我需要在另一个WPF项目中显示GUI,创建一个新的WPF项目并包含我现有的WPF类。现在出现错误:
Das Objekt des Typs OUTPUT_ _ICAO_WPF.Application kann nicht in Typ DSP_ _MaskSelektor_WPF.Application umgewandelt werden。
这意味着:无法从WPF应用程序编号转换为目标的WPF应用程序。
是否存在不覆盖“旧”WPF项目(不更改旧项目)的解决方案,因为我希望将“旧”类作为子项包含在其他几个应用程序中。我想在全球范围内进行检查或转换以获得该版本。
非常感谢您的帮助 此致
答案 0 :(得分:0)
问题是My.Application实际上包含以下自动生成的代码:
Return CType(Global.System.Windows.Application.Current, Application)
其中Application
是项目命名空间中自动生成的类。
这意味着,如果您从Project_1中调用Project_2中的My.Application
,则会收到投射错误。这是因为System.Windows.Application.Current
将返回Project_1,但由于该方法正在Project_2中执行,因此数据类型为Project_2.Application
,无法转换为Project_1.Application
。
但是,有一个简单的解决方法:向Project_2添加一个方法以返回当前程序集的版本。我通常采用的方法是在程序集中创建一个静态/共享类,如下所示:
Public Class Version
Public Shared ReadOnly Property Value() As System.Version
Get
Return System.Reflection.Assembly.GetAssembly(GetType(Version)).GetName.Version()
End Get
End Property
End Class
这是有效的,因为我们在Project_2程序集中获取Version类的类型,然后获取程序集详细信息并从程序集中返回System.Version。
然后,在Project_1中,您可以通过调用Project_2.Version.Value
来获取该版本。
希望这会对你有帮助。