我获得了一个用Visual Studio 2013编写的wpf应用程序,我需要运行它..
当我构建它时,它运行得很好,但达到了调用数据库的程度。不幸的是,数据库连接字符串是硬编码的。如果我在代码中更改它,应用程序会自行重建,然后当它在它运行之前甚至到达数据库时,它会产生以下运行时错误。
Private Shared Sub RunInDebugMode()
Dim bootstrapper As UnityBootstrapper = New Bootstrapper()
bootstrapper.Run()
End Sub
Microsoft.Practices.Prism.dll中出现未处理的“Microsoft.Practices.Prism.Modularity.ModuleInitializeException”类型异常
附加信息:初始化模块“Main”时发生异常。
异常消息是:尝试获取ModuleInit类型的实例时发生激活错误,键“”
检查异常的InnerException属性以获取更多信息。如果发生异常
在DI容器中创建对象时,可以使用exception.GetRootException()来帮助找到
问题的根本原因。
on bootstrapper.Run()
如果无法重建代码,如何更改代码。 它适用于客户端的机器。在我的机器上工作,直到我重建。
如果我处于调试模式并跳过第bootstrapper.Run()
行,则屏幕不会渲染,因此无效。有没有办法我可以替换一个讨厌的代码行而不使用它。它似乎是Unity的一部分,但它是代码的核心,我无法弄清楚如何绕过它,所以我可以运行应用程序。
请注意我最初收到错误
错误35该项目当前包含对多个版本的Microsoft.Practices.Unity的引用,这是对1.2.0.0版的直接引用和间接引用(通过'Microsoft.Practices.Prism.UnityExtensions.UnityBootstrapper.Container')到版本2.1.505.0。更改直接引用以使用Microsoft.Practices.Unity的2.1.505.0版(或更高版本)。 C:\ MyProject \ Shell \ Bootstrapper.vb 24 33
然后我将引用更改为2.1.505.0,因此我的原始运行时错误。意义棱镜不向后兼容。我也试过了Microsoft.Practices.Unity.dll的v4,但是我得到了与v2相同的错误。
我无意部署此网站。我只需要更改硬编码连接字符串并构建它并运行它来测试它是如何工作的。 然而,Prism垄断了太多而无法排除它并拒绝我尝试的任何工作。
有没有办法可以绕过prism并跳过我的主项目,直接在类库项目中调用xaml文件,而不是创建一个新项目?
答案 0 :(得分:2)
这是一个Prism应用程序,你不能绕过Bootstrapper.Run,因为它是应用程序的核心。显然,您继承了一个您不熟悉的应用程序,因此帮助您找到问题将更加困难。您列出的例外情况让我相信您在加载应用程序模块时遇到问题。查看bootstrapper类并查看CreateModuleCatalog并查看它正在使用的目录类型。如果使用配置文件(.xaml或.config)完成,则可能在查找目录正在查找的程序集时出现问题。确保将模块组件复制到正确的位置。您也可以尝试重建解决方案,而不仅仅是安装项目。如果模块程序集具有将程序集复制到目录的后构建过程,则重建解决方案将正确复制模块,应用程序将按预期运行。
没有更多信息真的很难说。