2015-09-11 60 views
0

但是,「主」WIX項目的目標是針對.NET Framework 4(dll)。 NET 3.5(如文檔中所述)(意味着它運行在2.0運行時)。它具有調用上述4.0 dll的自定義操作。調用.NET 4程序集的自定義動作

運行生成的MSI時,當WIX運行時(運行於2.0運行時)試圖加載我的4.0 dll時,我得到「BadImageFormat」異常。

如果我可以直接訪問.NET 3.5 .exe,我可以說服它通過在其app.config中使用該技巧來加載4.0 dll。

但是,WIX運行時加載(通過msiexec),據我可以通過Interop從堆棧跟蹤中知道。

有沒有人有我如何得到這個運行的建議?

PS。我也試着直接將「主要」Wix項目的目標設爲4.0,而不是3.5,但那時我的設置對話框將無法顯示。

+0

C#的關鍵......可愛:) –

回答

1

我不知道如何在wixsharp中安裝此設置,但在Visual Studio中,WiX擁有用於C#/ DTF自定義操作的項目模板。它會自動包含一個CustomAction.config,您可以使用它來放置SupportedRuntime元素以實現您正在嘗試執行的操作。

看看WIX and Custom Actions

+0

偉大的資源,我會研究它。謝謝! –

0

的BadImageFormat例外意味着你在你的調用序列的某個地方嘗試跨架構的呼叫,32位到64位,反之亦然。這可能是獲得錯誤框架的結果,但不一定!

+0

這也意味着您正在嘗試混合使用CLR版本。我以前一直在用InstallUtil CA來看這個,其中一些編譯爲1.1,一些編譯爲2.0。 –