在C#中引用DLL时出错“无法添加对xxx.DLL的引用

时间:2017-04-18 16:15:44

标签: c# visual-studio dll

我正在尝试在C#应用程序中引用DLL。 DLL是用C ++编写的。要进行引用,我右键单击解决方案资源管理器上的“引用”部分,然后选择“添加引用”,然后浏览到它。每次我尝试,我都会收到一条错误消息

  

无法添加对xxx.DLL的引用。请确保   文件是可访问的,并且它是有效的程序集或COM组件。

做了一些谷歌搜索,我注意到很多人建议使用TlbImp.exe来获取有效的DLL,但是当我在命令行运行它时,我明白了,

  

TlbImp:错误TI0000:输入文件xxx.dll不是有效类型   库。

我确实发现有问题的DLL可能写得不好(编写它的人现在正在度假)所以我通过this microsoft演练来创建一个新的,非常简单的dll,并且我得到了同样的结果。

我正在使用VS2015,虽然我以前安装过VS2013 Express。我也在VS2013和VS2010的另一台机器上尝试了相同的过程。效果是一样的。

有没有人有任何想法?

1 个答案:

答案 0 :(得分:1)

将您的dll包含在项目中,然后将其作为资源嵌入,并选择将其复制到输出目录(如果更新或始终:https://static1.squarespace.com/static/508eb96ae4b047ba54db4e47/t/519e1809e4b01e6a03d7f51b/1369315338280/properties.png?format=750w

然后使用平台调用:

SELECT DISTINCT journey_items.id, 
   journey_items.category, 
   therapist_title, 
   therapist_body 
FROM   journey_items 
WHERE EXISTS (SELECT id
    FROM journey_item_display_rules
    WHERE (`journey_item_id` = journey_items.id )
        AND (`category` = 'soc' AND `value` = 'any')
    )
AND EXISTS(SELECT id
    FROM journey_item_display_rules
    WHERE (`journey_item_id` = journey_items.id )
        AND (`category` = 'condition' AND `value` = '38')
        OR (`category` = 'condition' AND `value` = '25')
    )
AND EXISTS(SELECT id
    FROM journey_item_display_rules
    WHERE (`journey_item_id` = journey_items.id )
        AND (`category` = 'step' AND `value` = 'any')
    )

有时您可能必须使用本机类型但它们与CLR不兼容以避免使用编组: https://www.codeproject.com/articles/66245/marshaling-with-csharp-chapter-1-introducing-marsh.aspx