【问题标题】:How to add COM references in ASP.NET mvc 6 and Visual Studio 2015?如何在 ASP.NET mvc 6 和 Visual Studio 2015 中添加 COM 引用?
【发布时间】:2015-12-29 23:39:05
【问题描述】:

我可以在没有问题的 Visual Studio 2012 中做到这一点,但在 2015 年的 MVC 6 中则不行,图片相关:

有可能吗?

【问题讨论】:

    标签: visual-studio-2015 asp.net-core asp.net-core-mvc


    【解决方案1】:

    我觉得你的问题很有趣。 DotNet 应用程序通过互操作程序集访问 COM,例如可以针对 tlbimp.exe 生成该程序集。通常,您已经生成了很多这样的内部操作。你可以在%SystemRoot%\assembly\GAC_MSIL 目录中看到。例如,我的电脑上安装了 Office。下面我将展示如何创建小型 ASP.NET 5 项目,该项目使用 COM 接口启动 Microsoft Word。

    我创建了简单的控制台应用程序,已从"frameworks" 中删除了"dnxcore50" 部分。然后我在解决方案资源管理器中选择“引用”,单击鼠标右键并选择“添加引用...”。现在我点击了“浏览...”按钮

    导航到C:\Windows\assembly\GAC_MSIL\Microsoft.Office.Interop.Word\15.0.0.0__71e9bce111e9429c,选择Microsoft.Office.Interop.Word.dll 并单击“添加”按钮。之后,我可以在解决方案资源管理器中看到以下视图:

    值得一提的是,global.json 已被修改,"wrap" 目录包含在"projects" 部分中。文件夹wraplib 是在解决方案中创建的

    文件夹lib\dnx451 包含Microsoft.Office.Interop.Word.dll 的副本。 附加 project.jsonwrap\Microsoft.Office.Interop.Word 文件夹中创建,内容如下:

    {
      "version": "1.0.0-*",
      "frameworks": {
        "dnx451": {
          "bin": {
            "assembly": "../../lib/dnx451/Microsoft.Office.Interop.Word.dll"
          }
        }
      }
    }
    

    现在主要的project.json 包含

    {
      "frameworks": {
        "dnx451": {
          "dependencies": {
            "Microsoft.Office.Interop.Word": "1.0.0-*"
          }
        }
      }
    }
    

    我创建了启动 Microsoft Word 并使其可见的简单程序:

    namespace OldConsoleAppCom
    {
        public class Program
        {
            public static void Main(string[] args)
            {
                var wordApp = new Microsoft.Office.Interop.Word.Application();
                wordApp.Visible = true;
            }
        }
    }
    

    可以编译这样的应用程序并成功运行。

    【讨论】:

    • 非常有趣。您是否已经尝试过使用新的 dotnet cli 进行类似的操作?
    • @NicolasR:不,在我不知道 RC2 的发布日期和最终版本之后,我正在暂停我在 ASP.NET Core/5 上的工作。在 RC1 发布后,我尝试非常积极地关注 ASP.NET 5,但后来,经过大量更改,尤其是所有包的重命名,这破坏了现有代码,我减少了在 ASP.NET Core 上投入的时间。遵循最新的更改太耗时了。我决定暂停到 RC2。这将节省我在永久调整代码方面的大量时间。我还在等待发布日期(请参阅the issue)。
    • @NicolasR:我也希望如此,但两个月前我也希望如此。因此我决定让我等待填充至少一些新的 RC2 日期将包含在the roadmap 中。直到那时,我才停止在 ASP.NET Core 中的活动。
    猜你喜欢
    • 1970-01-01
    • 2015-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-16
    相关资源
    最近更新 更多