.NET有链接器吗?

11

来自Jon Skeet的博客:

下面的注释是什么意思?

    // The line below only works when linked rather than
    // referenced, as otherwise you need a cast.
    // The compiler treats it as if it both takes and
    // returns a dynamic value.
    string value = com.MakeMeDynamic(10); 

我理解什么是引用程序集。您可以使用命令行中的 /ref: 开关编译程序文件时引用它,或者您可以在 Visual Studio 中添加程序集的静态引用。

但是如何在 .NET 中链接到程序集呢?他是指使用反射(Assembly.LoadFile())加载程序集吗?还是使用 Win32 API LoadLibrary()?或者,.NET 有一个我从未听说过的链接器吗?

1个回答

12

这基本上是关于COM主要互操作程序集的内容。在.NET 4中,您可以像普通引用一样引用它们,也可以“链接”/“嵌入”它们,这样您最终只嵌入了自己程序集所需的PIA部分。

从命令行来看,这就是C# 4编译器的选项。


谢谢,Jon。在我提出这个问题之前,我应该先阅读完你的全文链接。我刚刚完成了阅读,并阅读了其他几篇关于“无 PIA”功能的文章。那么,/link: 属性是命令行中相当于在 Visual Studio 2010 中将程序集引用的“嵌入互操作类型”属性设置为 True 的等效命令吗?(http://thedotnethub.blogspot.com/2009/11/clr4-no-pia.html)此外,/link: 选项是 C# 4.0 中引入的新选项吗? - Water Cooler v2
@Water:是的,那就是等价物,而且是新的.NET 4和C# 4。 - Jon Skeet
非常感谢,Jon。顺便说一下,我正在阅读你的书《深入C#》第一版,每一页都让我爱不释手。 - Water Cooler v2
@Water:很高兴听到这个消息 - 我最终会完成第二版的 :) - Jon Skeet
是的,Jon。我也一直在密切关注那个。 - Water Cooler v2
@WaterCoolerv2 的链接已失效,新链接为:https://mohamadhalabi.com/2009/11/10/clr4-no-pia/。 - Marv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接