4

我有一个针对 Windows Phone 7.1+ 和 Windows Store 应用程序(用于 WinRT)的可移植库,它使用 .net 4.5 框架。

我想在[CallerMemberName]其中使用新属性。但是,VS2012 告诉我这个属性在我的便携式库中不可用(这似乎很正常,因为它在 WP7.1 项目中不可用)。

然而,我发现我可以创建自己的属性,编译器会像真正的属性一样理解它,通过使用这个片段:

namespace System.Runtime.CompilerServices
{
  [AttributeUsage(AttributeTargets.Parameter, Inherited = false)]
  public sealed class CallerMemberNameAttribute : Attribute { }
}

但是,一旦尝试编译它,我就会收到错误消息The type 'System.Runtime.CompilerServices.CallerMemberNameAttribute' exists in both 'Portable.dll' and 'mscorlib.dll'

我明白这个消息,但我想知道是否有办法[CallerMemberName]在我的便携式库中使用?我可能错过了什么。

4

1 回答 1

5

Use the BCL Portability Pack which provides these attributes for older versions.

This packages enables projects targeting .NET Framework 4, Silverlight 4 and 5, and Windows Phone 7.5 (including any portable library combinations) to use new types from later versions of .NET including:

  • CallerMemberNameAttribute

  • CallerLineNumberAttribute

  • CallerFilePathAttribute

  • ...

于 2013-05-15T12:22:52.373 回答