C# - 设置DLL的属性Embed Interop Type 设为False

错误:

Error msg: A reference was created to embedded interop assembly. because of an indirect reference to that assembly created by assembly. Consider changing the ‘Embed Interop Types‘ property on either assembly.

解决方法:

将DLL的属性Embed Interop Type 设为False.  否则会引起互操作类型异常。

  当设置为True时,该COM组件的交互类型信息将在编译时被嵌入到项目的类库中。

  当设置为False时,该COM组件的交互类型都需要一个额外的Primary Interop Assemblies(PIA)来提供。但是Net中已经将其封装了,对开发者而言是透明的。 参考

官方解释:

http://msdn.microsoft.com/en-us/library/ff182188.aspx

A reference was created to embedded interop assembly ‘<assembly1>‘ because of an indirect reference to that assembly from assembly ‘<assembly2>‘. Consider changing the ‘Embed Interop Types‘ property on either assembly.

You have added a reference to an assembly (assembly1) that has the Embed Interop Types property set to True. This instructs the compiler to embed interop type information from that assembly. However, the compiler cannot embed interop type information from that assembly because another assembly that you have referenced (assembly2) also references that assembly (assembly1) and has the Embed Interop Types property set to False.

                   Note                

Setting the Embed Interop Types property on an assembly reference to True is equivalent to referencing the assembly by using the /link option for the command-line compiler.

Error ID: BC40059

To address this warning

  • To embed interop type information for both assemblies, set the Embed Interop Types property on all references to assembly1 to True.
  • To remove the warning, you can set the Embed Interop Types property of assembly1 to False. In this case, interop type information is provided by a primary interop assembly (PIA).

其他参考:

http://stackoverflow.com/questions/8156488/what-does-reference-was-created-to-embedded-interop-assembly-mean

http://blogs.clariusconsulting.net/kzu/check-your-embed-interop-types-flag-when-doing-visual-studio-extensibility-work/

http://bbs.csdn.net/topics/390599484

http://blogs.clariusconsulting.net/kzu/check-your-embed-interop-types-flag-when-doing-visual-studio-extensibility-work/

C# - 设置DLL的属性Embed Interop Type 设为False,布布扣,bubuko.com

时间: 2024-10-11 08:09:47

C# - 设置DLL的属性Embed Interop Type 设为False的相关文章

C#操作Office- Cannot find the interop type that matches the embedded interop type &#39;Microsoft.Office.Interop.Excel.Application&#39;

网上说 2003 -> 11.0, 2007 -> 12.0. 因为平时提示"Are you missing an assembly reference?",都是没有引用库文件,但是明明我已经添加好引用了,还是报错.机器上安装的是Office2010,但是在库引用中,v14.0的是不行,Office 2010中的 Excel还是用v12.0. 处理题目中的错误,是将库文件中的"Embedded Interop Type"属性设置为false即可.(突然记

为什么设置的margin-top属性不管用

为什么设置的margin-top属性不管用:建议:尽可能的手写代码,可以有效的提高学习效率和深度.有时候大家可能会遇到奇怪的现象,尽管没有任何的语法错误,但是设置的margin-top属性不会起作用,下面就就结合代码实例介绍一下产生此现象的原因和解决方法.原因一:外边距合并margin-top属性失效.代码实例如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" co

RMAN增量备份-备份保留策略-设置备份集属性

RMAN增量备份:增量备份级别:0,1,2,3,4BACKUP DATABASE也是创建数据库的完整备份,但是这种备份不同于增量备份的0级备份.这种备份不包含增量备份的0级备份,并不支持在此基础上再创建增量备份.1.建立增量级0级的全库备份 C:\Users\Administrator>RMAN 恢复管理器: Release 11.2.0.1.0 - Production on 星期三 12月 17 21:44:29 2014 Copyright (c) 1982, 2009, Oracle a

给li设置float浮动属性之后,无法撑开外层ul的问题。

最近在项目中有好几次遇到这个问题,感觉是浮动引起的,虽然用<div style="clear:both"></div>解决了,但自己不是特别明白,又在网上查了相关内容,是因为给li设置了浮动之后它就脱离当前正常的文档流,所以没办法撑开外层ul的高度. 以下面代码为例,其实有好几种解决方法,我用的这种并不是最简单的. <!DOCTYPE html ><html ><head><meta charset="utf-

VS2013正确设置DLL环境变量目录的方法

VS有个比较迷惑人的一个选项就是在工程>>属性中有个Executable Directories设置项, 几乎所有地球人都认为这个选项是设置DLL目录用的,这无疑会方便用户调式,不用来回拷贝一堆DLL文件到工程目录运行,但是所有人都他喵的失败了. google了一下,正确的做法是设置Debugging >> Environment目录,语法是PATH=目录,就像cmd下设置环境变量那样.

如何为要被打印的内容设置CSS样式属性

如何为要被打印的内容设置CSS样式属性:有时候我们要打印的内容也是需要美观度的,并不希望太原汁原味了,所以要对其进行一下样式设置,本章节就简单介绍一下,如何利用CSS设置要被打印内容的样式,方式有多种,下面一一做一下简单介绍.一.使用link引入外部样式表: <link rel="stylesheet" href="css/style.css" media="screen" /> 以上代码的CSS样式用于屏幕显示效果,对于打印无效.关

JavaScript(19)jQuery HTML 获取和设置内容和属性

jQuery HTML jQuery 拥有可操作 HTML 元素和属性的强大方法. jQuery DOM 操作 jQuery 中非常重要的部分,就是操作 DOM 的能力.jQuery 提供一系列与 DOM 相关的方法,这使访问和操作元素和属性变得很容易. 提示:DOM = Document Object Model(文档对象模型) DOM 定义访问 HTML 和 XML 文档的标准:"W3C 文档对象模型独立于平台和语言的界面,允许程序和脚本动态访问和更新文档的内容.结构以及样式."

C#反射技术的简单操作(读取和设置类的属性)

public class A { public int Property1 { get; set; } } static void Main(){ A aa = new A(); Type type = aa.GetType();//获取类型 System.Reflection.PropertyInfo propertyInfo = type.GetProperty("Property1"); propertyInfo.SetValue(aa, 5, null);//给对应属性赋值 i

DLL放在指定目录 以及设置dll调用路径

一.DLL放在指定目录 在编写C# winform程序中,不免一个项目会有多个工程文件,而这些工程文件之间是相互引用的,所以不想将工程的生成结果(exe或者dll)放在当前工程bin目录下的Debug目录或者Release目录,而是放在一个公共的目录下,比如DLLImport目录下,如何实现这个工程呢,我们知道,如果是C++,我们可以使用cmake来部署我的项目,同样在c#中也可以实现这样的功能,我们只需在每个工程的“属性”----“生成事件”----“生成后事件命令行”写入如下代码即可: IF