Я понимаю, что здесь уместны директивы препроцессора, исходя из этого вопроса: директива препроцессора в С# для импорта на основе платформы
Простая копипаста
#if WIN64
[DllImport("ZLIB64.dll", CallingConvention=CallingConvention.Cdecl)]
#else
[DllImport("ZLIB32.dll", CallingConvention = CallingConvention.Cdecl)]
#endif
в начале моего пространства имен не работало, потому что Visual Studio жалуется, что
Атрибут «DLLImport» недопустим для этого типа объявления. Он действителен только для объявлений «метода».
Однако изменение строки #else
на #elif WIN32
заставило ее скомпилироваться.
Как бы я применил этот метод загрузки разных библиотек DLL в зависимости от операционной системы к этому конкретному случаю Microsoft.Office.Interop.Excel
для версии 11 по сравнению с версией 12?
dynamic
. В предыдущих версиях я успешно использовал Reflection для вызова методов COM-классов Office. - person Uwe Keim   schedule 28.09.2012#elif WIN32
, потому что НИ ОДНА из этих констант не определена, поэтому он вообще не добавляет код. - person D Stanley   schedule 28.09.2012