2015-11-27 45 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