0
據我所知,預處理指令是適當的位置,基於這樣一個問題: Preprocessor directive in C# for importing based on platform如何在WinXP上使用Microsoft.Interop.Excel版本11,如何在Win7上使用版本12?
原因是Visual Studio抱怨,在我的命名空間的開始
#if WIN64
[DllImport("ZLIB64.dll", CallingConvention=CallingConvention.Cdecl)]
#else
[DllImport("ZLIB32.dll", CallingConvention = CallingConvention.Cdecl)]
#endif
簡單的複製粘貼不工作
屬性'DLLImport'在此聲明類型上無效。它只在'方法'聲明中有效
但是,將#else
行更改爲#elif WIN32
使它能夠編譯。
我該如何將這種基於操作系統的不同DLL加載到版本11和版本12的Microsoft.Office.Interop.Excel
的特定情況下?
也許你不得不在編譯期間,但在運行期間這樣做。 .NET 4具有'dynamic'關鍵字。在以前的版本中,我成功地使用了Reflection來調用Office COM類的方法。 –
預處理器指令在您構建解決方案時起作用,而不是在您部署解決方案時發揮作用,所以我不知道它們會按照您的預期行事。 –
聽起來就像你在錯誤的地方得到了DllImport。它可能會在你添加'#elif WIN32'的時候生成,因爲這些常量的定義都沒有定義,所以它根本不添加代碼。 –