“System.Action声称已定义”错误

时间:2010-09-23 07:15:54

标签: c# silverlight silverlight-4.0

我正在使用.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。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

这是一个DLL的奇怪位置(在MSBuild目录中)。它是否可能尝试在 Silverlight 应用程序中使用对 desktop 程序集的引用?不可否认的是,在v4中的装配可移植性,我有一半期望不会出现问题,但值得研究。

如果你能提供更多关于你如何建造的细节以及Seesmic进入框架的地方,那将会有所帮助。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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