在运行时加载 Interop.Word.dll

Loading Interop.Word.dll during runtime

我目前正在开发一个小型控制台应用程序,它应该与 Microsoft Word 有某种集成。我猜用户可能有不同版本的 Microsoft Office,这就是为什么我决定在运行时加载互操作组件(但我不确定这是正确的决定)。

下一段代码抛出异常System.ArgumentNullException Value cannot be null. Arg_ParamName_Name。据我了解,问题是 WordInterop.GetType("Application") returns 为空,但我不明白为什么。

class Program
{
    static void Main(string[] args)
    {
        Assembly WordInterop = Assembly.LoadFrom("C:\Windows\assembly\GAC_MSIL\Microsoft.Office.Interop.Word\15.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Word.dll");
        Assembly Office = Assembly.LoadFrom("C:\Windows\assembly\GAC_MSIL\office\15.0.0.0__71e9bce111e9429c\OFFICE.DLL");

        Type WordApp = WordInterop.GetType("Application");
        dynamic wordAppInst = Activator.CreateInstance(WordApp);
        wordAppInst.Visible = true;

    }
}

以下应该有效:

var wordAppType = Type.GetTypeFromProgID("Word.Application")
var wordAppInst = Activator.CreateInstance(wordAppType);

我发现问题出在类型名称上。 应该是 Microsoft.Office.Interop.Word.ApplicationClass 而不是 Application.