1

我正在开发一个具有客户端和服务器端的项目。我正在编写一个“预签入”工具,它将验证我们在客户端和服务器之间的大量通信。

我已经对双方进行了单元测试,现在我真的很想测试两者之间的集成。

就像一个真正的客户端连接到服务器,反之亦然。

我正在尝试了解“TwitterSearch.UI.Console”是如何工作的,因为我认为斜纹布对我来说是一个很好的起点,但是在花了一些时间与之抗争之后,我认为最好在这里询问专业人士。

我正在使用这里的最新版本: https ://github.com/slodge/MvvmCross-Tutorials

与最新的二进制文件配对。

现在这是输出调试溢出:

mvx:诊断:0.01 设置:PlatformServices 启动
mvx:诊断:0.02 设置:MvvmCross 设置开始
mvx:诊断:0.02 设置:单例缓存启动
mvx:诊断:0.02 设置:引导操作
mvx:诊断:0.05 设置:StringToTypeParser 启动
mvx:诊断:0.05 设置:ViewModelFramework 启动
mvx:诊断:0.05 设置:PluginManagerFramework 启动
mvx:诊断:0.06 设置:应用程序启动
mvx:诊断:0.07 加载插件程序集:Cirrious.MvvmCross.Plugins.Visibility.Wpf
'TwitterSearch.UI.Console.vshost.exe'(托管 (v4.0.30319)):已加载 'C:\fileZ\projZ\samples\MvvmCross-Tutorials\Sample - TwitterSearch\TwitterSearch.UI.Console\bin\Debug\TwitterSearch .Core.dll',已加载符号。
'TwitterSearch.UI.Console.vshost.exe'(托管(v4.0.30319)):加载'C:\fileZ\projZ\samples\MvvmCross-Tutorials\Sample - TwitterSearch\TwitterSearch.UI.Console\bin\Debug\Cirrious .MvvmCross.Plugins.Visibility.dll',已加载符号。
mscorlib.dll 中出现了“System.IO.FileNotFoundException”类型的第一次机会异常
Cirrious.CrossCore.dll 中发生了“CrossCore.Exceptions.MvxException”类型的第一次机会异常

在异常详细信息中,插件管理器似乎将程序集的名称解析错误?

他正在尝试加载Cirrious.MvvmCross.Plugins.Visibility.Wpf,.Console 应用程序引用的那个是Cirrious.MvvmCross.Plugins.Visibility.Console.

以下是异常的更多详细信息:

Cirrious.CrossCore.Exceptions.MvxException 未处理
  H结果=-2146233088
  消息=无法加载文件或程序集“Cirrious.MvvmCross.Plugins.Visibility.Wpf”或其依赖项之一。该系统找不到指定的文件。
  源 = Cirrious.CrossCore
  堆栈跟踪:
       在 Cirrious.CrossCore.Plugins.MvxPluginManager.ExceptionWrappedLoadPlugin(Type toLoad) 在 c:\Projects\Misc\MVVMCROSS\CrossCore\Cirrious.CrossCore\Plugins\MvxPluginManager.cs:line 136
       在 Cirrious.CrossCore.Plugins.MvxPluginManager.EnsurePlatformAdaptionLoaded[T]() 在 c:\Projects\Misc\MVVMCROSS\CrossCore\Cirrious.CrossCore\Plugins\MvxPluginManager.cs:line 87
       在 Cirrious.MvvmCross.Plugins.Visibility.PluginLoader.EnsureLoaded() 在 c:\Projects\Misc\MVVMCROSS\Plugins\Cirrious\Visibility\Cirrious.MvvmCross.Plugins.Visibility\PluginLoader.cs:line 23
       在 TwitterSearch.Core.TwitterSearchApp.InitialisePlugIns() 在 c:\fileZ\projZ\samples\MvvmCross-Tutorials\Sample - TwitterSearch\TwitterSearch.Core\TwitterSearchApp.cs:line 33
       在 c:\fileZ\projZ\samples\MvvmCross-Tutorials\Sample 中的 TwitterSearch.Core.TwitterSearchApp..ctor() - TwitterSearch\TwitterSearch.Core\TwitterSearchApp.cs:line 15
       在 c:\fileZ\projZ\samples\MvvmCross-Tutorials\Sample 中的 TwitterSearch.UI.Console.Setup.CreateApp() - TwitterSearch\TwitterSearch.UI.Console\Setup.cs:line 16
       在 Cirrious.MvvmCross.Platform.MvxSetup.CreateAndInitializeApp(IMvxPluginManager pluginManager) 在 c:\Projects\Misc\MVVMCROSS\Cirrious\Cirrious.MvvmCross\Platform\MvxSetup.cs:line 272
       在 Cirrious.MvvmCross.Platform.MvxSetup.InitializeApp(IMvxPluginManager pluginManager) 在 c:\Projects\Misc\MVVMCROSS\Cirrious\Cirrious.MvvmCross\Platform\MvxSetup.cs:line 265
       在 Cirrious.MvvmCross.Platform.MvxSetup.InitializeSecondary() 在 c:\Projects\Misc\MVVMCROSS\Cirrious\Cirrious.MvvmCross\Platform\MvxSetup.cs:line 77
       在 Cirrious.MvvmCross.Platform.MvxSetup.Initialize() 在 c:\Projects\Misc\MVVMCROSS\Cirrious\Cirrious.MvvmCross\Platform\MvxSetup.cs:line 36
       在 TwitterSearch.UI.Console.Program.Run() 在 c:\fileZ\projZ\samples\MvvmCross-Tutorials\Sample - TwitterSearch\TwitterSearch.UI.Console\Program.cs:line 21
       在 TwitterSearch.UI.Console.Program.Main(String[] args) 在 c:\fileZ\projZ\samples\MvvmCross-Tutorials\Sample - TwitterSearch\TwitterSearch.UI.Console\Program.cs:line 14
       在 System.AppDomain._nExecuteAssembly(RuntimeAssembly 程序集,字符串 [] 参数)
       在 System.AppDomain.ExecuteAssembly(字符串 assemblyFile,证据 assemblySecurity,String [] args)
       在 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       在 System.Threading.ThreadHelper.ThreadStart_Context(对象状态)
       在 System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext,ContextCallback 回调,对象状态,布尔值 preserveSyncCtx)
       在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext,ContextCallback 回调,对象状态,布尔值 preserveSyncCtx)
       在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext,ContextCallback 回调,对象状态)
       在 System.Threading.ThreadHelper.ThreadStart()
  内部异常:System.IO.FileNotFoundException
       H结果=-2147024894
       消息=无法加载文件或程序集“Cirrious.MvvmCross.Plugins.Visibility.Wpf”或其依赖项之一。该系统找不到指定的文件。
       源=mscorlib
       FileName=Cirrious.MvvmCross.Plugins.Visibility.Wpf
       FusionLog==== 预绑定状态信息===
日志:用户 = LAGOA\Sergio
日志:DisplayName = Cirrious.MvvmCross.Plugins.Visibility.Wpf
 (部分的)
警告:为程序集提供了部分绑定信息:
警告:程序集名称:Cirrious.MvvmCross.Plugins.Visibility.Wpf | 域 ID:1
警告:仅提供部分程序集显示名称时会发生部分绑定。
警告:这可能会导致活页夹加载不正确的程序集。
警告:建议为程序集提供完全指定的文本标识,
WRN:由简单的名称、版本、文化和公钥标记组成。
警告:有关此问题的详细信息和常见解决方案,请参阅白皮书 http://go.microsoft.com/fwlink/?LinkId=109270。
日志:Appbase = file:///C:/fileZ/projZ/samples/MvvmCross-Tutorials/Sample - TwitterSearch/TwitterSearch.UI.Console/bin/Debug/
日志:初始 PrivatePath = NULL
调用程序集:Cirrious.CrossCore,Version=1.0.0.0,Culture=neutral,PublicKeyToken=e16445fd9b451819。
===
LOG:此绑定在默认加载上下文中开始。
LOG:使用应用程序配置文件:C:\fileZ\projZ\samples\MvvmCross-Tutorials\Sample - TwitterSearch\TwitterSearch.UI.Console\bin\Debug\TwitterSearch.UI.Console.vshost.exe.Config
LOG:使用主机配置文件:
LOG:使用 C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config 中的机器配置文件。
LOG:此时未将策略应用于引用(私有、自定义、部分或基于位置的程序集绑定)。
日志:尝试下载新 URL 文件:///C:/fileZ/projZ/samples/MvvmCross-Tutorials/Sample - TwitterSearch/TwitterSearch.UI.Console/bin/Debug/Cirrious.MvvmCross.Plugins.Visibility.Wpf.DLL .
日志:尝试下载新的 URL 文件:///C:/fileZ/projZ/samples/MvvmCross-Tutorials/Sample - TwitterSearch/TwitterSearch.UI.Console/bin/Debug/Cirrious.MvvmCross.Plugins.Visibility.Wpf/Cirrious .MvvmCross.Plugins.Visibility.Wpf.DLL。
日志:尝试下载新 URL 文件:///C:/fileZ/projZ/samples/MvvmCross-Tutorials/Sample - TwitterSearch/TwitterSearch.UI.Console/bin/Debug/Cirrious.MvvmCross.Plugins.Visibility.Wpf.EXE .
日志:尝试下载新的 URL 文件:///C:/fileZ/projZ/samples/MvvmCross-Tutorials/Sample - TwitterSearch/TwitterSearch.UI.Console/bin/Debug/Cirrious.MvvmCross.Plugins.Visibility.Wpf/Cirrious .MvvmCross.Plugins.Visibility.Wpf.EXE。

       堆栈跟踪:
            在 System.Reflection.RuntimeAssembly._nLoad(AssemblyName 文件名,字符串代码库,证据 assemblySecurity,RuntimeAssembly locationHint,StackCrawlMark 和 stackMark,IntPtr pPrivHostBinder,布尔 throwOnFileNotFound,布尔 forIntrospection,布尔suppressSecurityChecks)
            在 System.Reflection.RuntimeAssembly.nLoad(AssemblyName 文件名,字符串 codeBase,证据 assemblySecurity,RuntimeAssembly locationHint,StackCrawlMark 和 stackMark,IntPtr pPrivHostBinder,布尔 throwOnFileNotFound,布尔 forIntrospection,布尔suppressSecurityChecks)
            在 System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef,证据 assemblySecurity,RuntimeAssembly reqAssembly,StackCrawlMark 和 stackMark,IntPtr pPrivHostBinder,布尔 throwOnFileNotFound,布尔 forIntrospection,布尔suppressSecurityChecks)
            在 System.Reflection.RuntimeAssembly.InternalLoad(字符串 assemblyString,证据 assemblySecurity,StackCrawlMark 和 stackMark,IntPtr pPrivHostBinder,Boolean forIntrospection)
            在 System.Reflection.RuntimeAssembly.InternalLoad(字符串 assemblyString,证据 assemblySecurity,StackCrawlMark 和 stackMark,Boolean for Introspection)
            在 System.Reflection.Assembly.Load(字符串 assemblyString)
            在 Cirrious.CrossCore.Plugins.MvxFilePluginManager.LoadAssembly(Type toLoad) 在 c:\Projects\Misc\MVVMCROSS\CrossCore\Cirrious.CrossCore\Plugins\MvxFilePluginManager.cs:line 53
            在 Cirrious.CrossCore.Plugins.MvxFilePluginManager.FindPlugin(Type toLoad) 在 c:\Projects\Misc\MVVMCROSS\CrossCore\Cirrious.CrossCore\Plugins\MvxFilePluginManager.cs:line 31
            在 Cirrious.CrossCore.Plugins.MvxPluginManager.ExceptionWrappedLoadPlugin(Type toLoad) 在 c:\Projects\Misc\MVVMCROSS\CrossCore\Cirrious.CrossCore\Plugins\MvxPluginManager.cs:line 120
       内部异常:

有人可以帮我弄清楚我是否做错了什么,或者插件是否真的试图加载错误的文件?

谢谢你,塞尔吉奥

4

1 回答 1

2

最近有一个变化,这意味着Console并且Wpf都将共享Wpf插件(因为它们都是 .Net45 插件)。

这是在https://github.com/slodge/MvvmCross/pull/395之后制作的 - 这样做似乎毫无意义。

此更改在当前标记的二进制文件中发布3.0.11-beta1- 我们正在尝试尽快发布带有发行说明的 3.0.11 稳定版(但正在解决 Xamarin 设置和 PCL 问题)。当我们达到稳定时,我们也将(尝试)更新所有示例项目。(然而,遗憾的是,由于 Twitter 已弃用它使用的 RSS API,TwitterSearch 现在已永久损坏。)

如果您需要以前的稳定二进制文件,可以3.0.10https://github.com/slodge/MvvmCross-Binaries/releases上下载它们

至于 的值Console,我通常认为这是有限的——我发现编写单元测试是一种更好的前进方式,而不是编写控制台应用程序。我通常发现控制台的 UI 体验太有限,无法用于“真正的”应用程序。

于 2013-09-05T20:53:47.577 回答