【问题标题】:.NET assembly name contains dot.NET 程序集名称包含点
【发布时间】:2013-11-20 10:10:55
【问题描述】:

我正在尝试使用名称中带有点的 .NET 程序集,但它不起作用。 程序集的名称是 PylonC.Net。例如,我的代码以

开头
using System;
using System.Collections.Generic;
using PylonC.Net;

如果我编译它(使用 MS VS2010 Express 附带的 C# 编译器 csc.exe)我会收到此错误:

错误 CS0246:找不到类型或命名空间名称“PylonC”(您是否缺少 using 指令或程序集引用?)

我用 gacutil 检查了 PylonC.Net 是否在缓存中:

全局程序集缓存包含以下程序集:
PylonC.Net,版本=4.0.1.3425,文化=中性, PublicKeyToken=a77e8471c5919d 5a,处理器架构=MSIL

如果我检查 PylonC 的缓存,我会得到:

全局程序集缓存包含以下程序集:

项目数 = 0

在我看来,程序集名称中的点使编译器在 PylonC 中查找 Net,而不是名为 PylonC.Net 的程序集。

PylonC.Net 组件由 Basler 提供,用于控制他们的 FireWire 相机。我无法更改其名称或找到替代品。

我试图从 Basler 获得支持,但这非常困难,因为我们从第三方供应商那里购买了他们的相机作为系统的一部分。 Basler 不直接提供支持,而是通过当地代表提供支持,而代表只支持他们的客户(即通过他们购买 Basler 相机的人)。第三方供应商与我在不同的国家...

任何帮助将不胜感激!

谢谢,

吉尔

【问题讨论】:

  • 在我看来,您可以使用一些 IL 反汇编程序(例如 JetBrains 的 DotPeek)来查看程序集本身并获取它的实际名称。

标签: c# .net naming


【解决方案1】:

您好像忘记在项目中添加对 PylonC.Net 程序集的引用。

此外,命名空间和程序集名称是两个非常不同的东西。两者都可以包含点,并且大多数时候它们确实包含许多点。 (命名空间大多以程序集的名称开头,但只是按照约定。)

【讨论】:

  • 谢谢!你完全正确。我应该提到我是一个 .NET lamer...无论如何,为了完整性和将来的参考,这里是如何正确调用编译器: csc SimpleGrab.cs /reference:"C:\Program Files\Basler\pylon 4\ pylonc.net\bin\PylonC.NET.dll"
  • 可以在Visual Studio中添加引用:右键项目->添加引用。最后,它将作为 csc.exe 的 /reference 参数结束,但在 Visual Studio 中开发代码和维护项目要好得多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-06
  • 2010-12-12
  • 1970-01-01
  • 1970-01-01
  • 2012-02-28
  • 2016-01-04
相关资源
最近更新 更多