我接管了一个针对.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库了。
答案 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上成功构建代码。