【问题标题】:"System.Action claims it is defined" error“System.Action 声称它已定义”错误
【发布时间】:2010-09-23 07:15:53
【问题描述】:

我正在使用 .NET Framework 4.0 构建 Silverlight 4.0 应用程序,我看到此错误:

对类型 System.Action 的引用声称它在 'c:\Program Files\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0\mscorlib.dll' 中定义,但找不到 (CS1684) - c :\Program Files\MSBuild\Seesmic\SDP\Seesmic.Sdp.Utils.dll

在我的项目中,我引用了它声称在其中定义的同一个 mscorlib.dll。有什么想法吗?

【问题讨论】:

  • 您是如何引用程序集的?您是否有可能通过文件而不是 GAC 引用 mscorlib?

标签: c# silverlight silverlight-4.0


【解决方案1】:

DLL 的位置很奇怪(在 MSBuild 目录中)。是否有可能它试图在您的 Silverlight 应用程序中使用对 desktop 程序集的引用?诚然,对于 v4 中的程序集可移植性,我有一半认为这不是问题,但值得研究。

如果您能提供更多关于您如何构建以及 Seesmic 进入框架的详细信息,那将有所帮助。

【讨论】:

    【解决方案2】:

    Seesmic.Sdp.Utils.dll 可能需要 mscorlib.dll 的不同版本,因为它是根据不同版本编译的。在Seesmic.Sdp.Utils.dll 中有一个使用System.Action 作为基类的类,它仅在您引用包含相同System.Action 的相同版本的mscorlib.dll 时才有效,否则您将无法使用该类。

    【讨论】:

      【解决方案3】:

      有时您会在项目中创建一个类,例如“YourClass.cs”,例如“YourProject.YourModule”。一段时间后,您注释掉 YourClass.cs 内容,因为您现在不需要它。但是您不会将该 .cs 文件从您的项目中排除。在这种情况下,编译器会在构建项目时向您发出警告,例如“声称它已定义”。这是因为项目文件包含此 .cs 文件的条目。当有人尝试对该项目 dll 使用反射时,此错误会阻止代码访问该类,因为它实际上并不存在于物理上,而仅存在于项目文件中。

      【讨论】:

        猜你喜欢
        • 2022-08-05
        • 2017-06-29
        • 1970-01-01
        • 2017-04-12
        • 2013-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-10
        相关资源
        最近更新 更多