2015-11-27 18 views
0

我得到了写在Visual Studio 2013的WPF应用程序,我需要运行它之后WPF应用程序运行..无法重建

当我构建它,它运行完美,但到达其调用数据库的点。不幸的是,数据库连接字符串是硬编码的。如果我在代码中更改它,应用程序会重建它自己,然后当它运行到数据库之前运行时,它会产生以下运行时错误。

Private Shared Sub RunInDebugMode() 
    Dim bootstrapper As UnityBootstrapper = New Bootstrapper() 
    bootstrapper.Run() 
End Sub 

类型“Microsoft.Practices.Prism.Modularity.ModuleInitializeException”的未处理的异常发生在Microsoft.Practices.Prism.dll

附加信息:当初始化模块“主”时发生异常。

  • 异常消息是:尝试获取类型ModuleInit的情况下,关键的“”

    检查异常的InnerException属性获取更多信息发生激活错误。如果在创建在DI容器中的对象发生异常

    ,你可以exception.GetRootException(),以帮助查找问题的

    根本原因。

bootstrapper.Run()

我怎样才能让更改代码,如果我不能重建。 它在客户端的机器上工作。在我的机器上工作,直到我重建。

如果我处于调试模式并跳过bootstrapper.Run()这一行,屏幕不会显示,因此不起作用。有没有一种方法可以替代一个烦人的代码行,而不是使用它。它似乎是Unity的一部分,但它是如此核心的代码,我不知道如何绕过它,所以我可以运行该应用程序。

这里是一个团结 enter image description here

。注意到我本来得到了错误

错误35目前该项目包含Microsoft.Practices.Unity,一个的多个版本引用的项目引用直接引用版本1.2.0.0和间接引用(通过'Microsoft.Practices.Prism.UnityExtensions.UnityBootstrapper.Container')到版本2.1.505.0。将直接引用更改为使用版本2.1.505.0(或更高版本)的Microsoft.Practices.Unity。 C:\ MyProject \ Shell \ Bootstrapper.vb 24 33

然后我将引用更改为2.1.505.0,因此我的原始运行时错误.Meaning Prism不向后兼容。我也尝试了Microsoft.Practices.Unity.dll的v4,但是我得到了与v2相同的错误。

我没有打算部署此网站。我只需要更改硬编码的连接字符串并构建它并运行它来测试它的工作方式。但棱镜独占太多排除它,并拒绝工作,无论我尝试。

我的主要项目只包含以下内容: enter image description here

有没有一种方法,我可以绕过棱镜,跳过我的主要项目,只是在类库项目通过创建一个新的项目直接调用XAML文件呢?

回答

2

这是一个Prism应用程序,您不能绕过Bootstrapper.Run,​​因为它是应用程序的核心。显然你继承了一个你不熟悉的应用程序,所以帮助你找到问题会更加困难。您列出的例外导致我相信您在加载应用程序的模块时遇到问题。查看引导程序类并查看CreateModuleCatalog并查看它正在使用的目录类型。如果使用配置文件(.xaml或.config)完成,那么可能会发现查找目录所需的程序集的问题。确保模块组件正被复制到正确的位置。您也可以尝试重新构建解决方案,而不仅仅是安装项目。如果模块组件具有构建过程以将程序集复制到目录,则重建解决方案将正确地复制模块,并且应用程序将按预期运行。

真的很难说,没有更多的信息。

+0

感谢您的回答。我添加了更多信息,询问更清晰的问题 – d234

+0

您是否也升级了模块中的所有参考?不只是壳?例外是告诉你有多个引用的Unity版本。我将首先删除所有项目中的所有Unity引用,然后逐个重新添加它。做一个干净的,然后重建。 –

+0

编译器表现很奇怪。它拒绝编译,直到我将其固定在我的主项目中。然后我的程序运行,尽管在我所有其他类库中都出现了完全相同的问题,但并没有抛出编译错误。因此我原来的问题。当我将其他类库中的所有引用与主项目相同时,我的问题就解决了。编译器的行为被扔了。 – d234