我有兩個第三方組件。一個針對x86目標編譯,另一個針對任何CPU。 有沒有辦法從相同的應用程序中使用它們。如何從同一個EXE應用程序引用x86和ANY CPU組件?
現在我的應用程序編譯成功,但無法運行。我試圖爲x86和任何CPU構建我的EXE文件,但沒有運氣。 我可以使用corffgs更改目標平臺位,但程序集已簽名,我不想更改它們的簽名。
任何人都可以幫忙嗎?
我有兩個第三方組件。一個針對x86目標編譯,另一個針對任何CPU。 有沒有辦法從相同的應用程序中使用它們。如何從同一個EXE應用程序引用x86和ANY CPU組件?
現在我的應用程序編譯成功,但無法運行。我試圖爲x86和任何CPU構建我的EXE文件,但沒有運氣。 我可以使用corffgs更改目標平臺位,但程序集已簽名,我不想更改它們的簽名。
任何人都可以幫忙嗎?
您可以引用它們 - 但只有當入口.exe程序集設置爲x86 或時,它纔會運行,並將其設置爲任何CPU並在x86機器上運行。對於IIS託管的進程,位數由IIS本身決定。
舉例來說 - 我剛剛創造了這個VS2010的解決方案:https://docs.google.com/open?id=0Bw_NnV9fhgmgSGxGOEZXSnVsd1k
控制檯應用程序可以是x86/APU任何和引用兩個庫 - 一個是86,一個是任何CPU。
如果您將exe設置爲x86並在x64上運行,那麼它工作正常(顯然它適用於x86沒有問題)。但是,如果您將exe設置爲Any CPU並在x64上運行,它將崩潰(使用BadImageFormatException
)。再次,在x86上運行它仍然可以工作。
入口組件的味道決定了過程的位數;因此可以加載任何程序集的預期位數。
就你而言,你可能關注的是裝配不一定是問題 - 它是裝配他們參考。這個例外可能會告訴你更多。
'無法運行'有點含糊。你能解釋一下,如果你有一個例外,那麼信息是什麼? – Steve
嗨史蒂夫,它是'BadImageFormatException' – vyakhir
如果爲AnyCPU構建的那個目標x86不起作用,那麼你有一個無法解決的問題。您需要聯繫DLL所有者以獲得支持。 –