MSBuild EmbedInteropTypes如何与PIA和COMReferences一起使用?

时间:2019-05-03 14:35:57

标签: .net msbuild

我正在合理化大型系统的proj文件,其中包括MS Office(Excel)互操作的用法。到目前为止,我发现了两种不同类型的引用:

  1. 将“ EmbedIntopTypes”设置为true的“参考”标记。包含值是Microsoft.Office.Interop.Excel
  2. 的别名。
  3. “ EmbedInteropTypes”设置为true的“ COMReference”标签,以及Guid,VersionMajor,VersionMinor,Lcid和WrapperTool的标签。

我所做的阅读使我相信#1引用了PIA(我们目前的目标是Office 2010,此后我读到由于添加了“ EmbedInteropTypes”功能,MS不提供PIA。 )。

#2似乎是COM引用,将导致在构建时创建PIA(通过WrapperTool标签)。

在我看来,EmbedInteropTypes不能代替PIA(至少在开发/构建计算机上),因为它实际上使用了PIA,因此我并不真正理解MS拥有的概念停止提供支持EmbedInterop类型的PIA。

我似乎在MSDN上找不到任何明确的文档,该文档实际上解释了当前打算如何实现COM引用(实际上是从VS2010 / .NET 4.0开始,尽管我还没有阅读任何引用到此后添加的功能)。 .NET 4.0)。

所以我的问题是:今天如何将对COM对象的引用(例如MS Office Excel,但通常适用的答案是最好的)编码在MSBuild文件(csproj / vbproj / etc)中?理想情况下,应该有一种方法可以轻松处理多个版本,并且还可以避免要求COM对象在构建计算机上完全安装/注册(例如,以避免潜在的额外许可成本)。

0 个答案:

没有答案