我想创建对Excel程序集的引用并使用以下代码:
[Test]
public void ExcelTest()
{
Assembly current = this.GetType().Assembly;
Assembly excel = typeof(Microsoft.Office.Interop.Excel.Workbook).Assembly;
Assert.AreEqual(current.FullName, excel.FullName); // Why is excel the same as current assembly?
}
[Test]
public void MscorlibTest()
{
Assembly mscorlib = typeof(string).Assembly;
Assert.IsTrue(mscorlib.FullName.StartsWith("mscorlib"));
Assembly current = this.GetType().Assembly;
Assert.AreNotEqual(mscorlib.FullName,current.FullName); // As expected
}
为什么excel与我目前的装配相同?
获取Excel程序集的好方法是什么?
在阅读the docs
时找不到我的傻瓜答案 0 :(得分:5)
Excel等通过COM互操作类型到达。它是一个界面,用GUID和东西装饰。使用它时,它使用COM与正在运行的Excel应用程序进行通信。因此,您的引用不是Excel本身,而只是一个瘦COM通信层。
COM互操作类型可以嵌入到您的程序集中,这似乎就是这种情况。您可以将其指定为项目中程序集引用的属性。
例如,请参阅:http://msdn.microsoft.com/en-us/library/dd997297%28v=vs.110%29.aspx或http://msdn.microsoft.com/en-us/library/ee317478.aspx