使用CallerMemberName的Microsoft.Bcl包无法在Teamcity中构建

时间:2014-06-05 15:45:14

标签: c# teamcity base-class-library

我接管了一个针对.net4的项目。

解决方案中的一个项目是使用System.Runtime.dll中的System.Runtime.CompilerServices.CallerMemberNameAttribute,该文件是在使用Microsoft BCL Portability Pack时安装的。

我已经检查过,该项目目前正在使用版本1.1.3。

当解决方案构建在本地开发机器上时,一切都可以完成,没有任何问题。

我现在正在尝试使用teamcity构建解决方案,但是当TeamCity尝试编译解决方案时,我收到此错误。 错误CS0246:类型或命名空间名称' CallerMemberName'找不到(你错过了使用指令或程序集引用吗?) 错误CS0433:类型' System.Runtime.CompilerServices.CallerMemberNameAttribute'存在于&c; \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ mscorlib.dll'和&#c; \ apps \ teamcity \ buildAgent \ work \ bb8aacaa9fabeac8 \ packages \ Microsoft.Bcl.1.1.3 \ lib \ net40 \ System.Runtime.dll'

我已经阅读过Jon Skeets对这个问题的回答:Using CallerMemberName attribute in a portable library但我已经在使用BCL库了。

1 个答案:

答案 0 :(得分:0)

在花了一些时间之后,我发现Jon Skeet回答了另一个问题来解决这个问题。 When must we use extern alias keyword in C#?

在我的项目中,在获取Package的链接后,对于每个dll,我必须更改别名的名称。即从全球到新的全球

然后在使用CallerMemberName的类中,必须执行以下操作 在页面顶部,在using语句

之上

extern alias newglobal;

然后在引用CallerMemberName时,输入代码

[newglobal :: System.Runtime.CompilerServices.CallerMemberName]

这允许在已安装.net 4.5的teamcity上成功构建代码。

相关问题