2011-08-04 33 views
0

當試圖使用Prism4 Bootstrapper與由源引用的Unity(包括現有項目到解決方案)時,我不斷收到錯誤。我還從源代碼構建Unity時出錯,然後包括輸出文件。Unity容器錯誤使用棱鏡模塊化和包括Unity的源

這裏是詳細信息:

我有一個項目使用Prism4。 Prism的Bootstrapper組件依賴於Unity 2.0。更準確地說,他們依靠統一的版本2.0.414.0。

如果我嘗試在Prism 4中包含當前或更新版本的Prism到我的項目中,那麼VS會給我一個消息來生成一些強制加載最新程序集的app.config代碼。

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
      <assemblyIdentity name="Microsoft.Practices.Unity" publicKeyToken="31BF3856AD364E35" culture="neutral"/> 
      <bindingRedirect oldVersion="0.0.0.0-2.1.505.0" newVersion="2.1.505.0"/> 
     </dependentAssembly> 
    </assemblyBinding> 
</runtime> 

當使用預置的dll文件的統一2.0和2.1團結,這個工作不會有問題......

但是,如果我嘗試從源代碼編譯它們並使用新的DLL,或者包括項目直接進入我的項目我總是得到錯誤:

 
The type 'Microsoft.Practices.Unity.IUnityContainer' is defined in an assembly that is not referenced. You must add a reference to assembly 'Microsoft.Practices.Unity, Version=2.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. 

請注意,Unity 2.0 [b] IS [/ b]版本2.0.414.0。所以我第一次嘗試使用unity 2.0源代碼。我也做了很多使用這個版本的嘗試,包括從一個新項目開始。我已經嘗試了通過預先構建的bin文件,源代碼和定製的dll來獲得相同的結果。我也嘗試使用Unity 2.1的所有相同的東西,希望它可以工作。

我的環境是MSVC#2010 win7 x64。我已經構建在x86和任何CPU配置以及調試和發佈。唯一的依賴是Prism和Unity。

回答

0

找到了解決辦法。

我打開了棱鏡源的解決方案,並刪除了任何對統一的引用。然後我把這個團結項目作爲一個現有的項目添加到棱鏡解決方案中。最後,我把這個團結當作所有有關棱鏡項目的一個項目。所以我將用於我的項目的統一DLL將由棱鏡unityextensions輸出。

稍後會有一些批處理文件更新,這是一種解決方法。

不是最好的解決方案,但我準備好現在繼續前進。

P.S.主題行不正確。這是棱鏡中的UnityExtensions問題,而不是模塊化。另外我不清楚UnityBootstrapper,當我稱之爲「

+0

*糾正* ...另外我不清楚UnityBootstrapper,當我將它稱爲」Prism的Bootstrapper組件「。 –