C# 向QuartzTypeLib添加程序集引用

C# 向QuartzTypeLib添加程序集引用,c#,visual-studio,C#,Visual Studio,我是一名使用VisualStudio2008的新程序员。如何添加对QuartzTypeLib的引用。我已经检查了add reference文件夹,在.net或com参考库中没有看到Quartz的库。当试图编译代码时,我收到一个错误,指出缺少程序集引用 using System; using System.Collections.Generic; using System.Linq; using System.Text; using QuartzTypeLib; namespace Direct

我是一名使用VisualStudio2008的新程序员。如何添加对QuartzTypeLib的引用。我已经检查了add reference文件夹,在.net或com参考库中没有看到Quartz的库。当试图编译代码时,我收到一个错误,指出缺少程序集引用

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using QuartzTypeLib;

namespace DirectShowCsharp
{
    class Program
    {
        static void Main(string[] args)
        {

       }
    }
}

在“添加参考”中,选择左侧的“浏览”,然后选择右下角的“浏览”并浏览到库的位置。

有一个完整的解决方案,它使用QuartzTypeLib播放视频

源代码的相关部分是:

using QuartzTypeLib;

FilgraphManager FilterGraph = new FilgraphManager();
FilterGraph.RenderFile("test.mp3");
FilterGraph.Run();
// ...
FilterGraph.Stop();
好吧,微软认为DirectShow已经过时了,也许这就是原因 用于未将此程序集包含到最新的Visual Studio中

我不知道如何自动化第一个操作,但在第一个构建之前只需要一次

  • 运行tlbimp工具(在您的情况下,路径将不同):

    “C:\Program Files(x86)\Microsoft SDK\Windows\v7.0A\Bin\TlbImp.exe”%windir%\system32\quartz.dll/out:QuartzTypeLib.dll

  • 将生成的QuartzTypeLib.dll添加为项目的COM引用(单击鼠标右键 在“解决方案资源管理器”中的项目名称上,选择“添加”菜单项,然后选择“引用”)

  • 在项目中,展开“引用”,找到QuartzTypeLib引用。 右键单击它并选择属性,然后将“嵌入互操作类型”更改为false。(否则您将无法在项目中使用FilgraphManager类(可能还有一些其他类))


  • 有关如何使用此库的最简单示例,请参阅。唯一的问题是我在参考文件夹中没有看到quartz库。什么文件夹?您应该浏览到库所在的位置。如果安装了库,我希望可以在以下文件夹中找到它:C:\Windows\Microsoft.NET\assembly\GAC\U 32或此:C:\Windows\Microsoft.NET\assembly\GAC\U MSILTH此库在您使用
    tlbimp
    生成之前不存在。看看弗拉德的答案,这个答案对我很有用。通过禁用项目设置中的
    首选32位
    选项,我只能使QuartzTypeLib.dll的
    FilterGraph.RenderFile()
    正常工作,否则我会得到异常:
    System.Runtime.InteropServices.comeException:HRESULT:0x80040266的异常
    另请参阅我对Vlad关于
    首选32位
    标志的回答的评论。