PostSharp在TeamCity构建失败:找不到mscorlib程序集(2.0.5.0版本)
解决PostSharp在TeamCity构建时找不到mscorlib 2.0.5.0的问题
我之前也碰到过一模一样的坑——本地开发机器上PostSharp构建顺风顺水,到了TeamCity服务器直接报PS0264错误,找不到mscorlib, version=2.0.5.0, culture=neutral, publickeytoken=7cec85d7bea7798e。从你贴的日志能看出来,服务器一直在搜.NET 4.5版本的mscorlib,但公钥完全不匹配——其实这个特定版本的mscorlib是可重定向的PCL(可移植类库)专属版本,和普通.NET Framework的mscorlib公钥本来就不一样。
结合你对比本地和服务器InstalledFrameworks文件发现的差异,问题根源已经很明确:TeamCity服务器缺少PostSharp识别PCL框架所需的配置和引用程序集。本地机器上有完整的.NETPortable系列框架配置,而服务器没有,导致PostSharp根本找不到这个特殊版本的mscorlib。
给你几个实操性强的解决方案:
- 安装PCL引用程序集:在TeamCity服务器上安装Visual Studio的".NET Portable Library"组件,或者单独下载微软官方的.NET Portable Library Reference Assemblies包。这是最省心的方式,安装完成后PostSharp会自动识别这些框架。
- 手动补全InstalledFrameworks配置:如果不想装完整的Visual Studio,可以把本地机器上那些.NETPortable框架的XML条目复制到服务器的
C:\ProgramData\PostSharp\InstalledFrameworks文件里。注意要先确认服务器上对应的路径(比如C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.0\)确实存在,不存在的话要先创建或者安装对应程序集。 - 核对项目依赖:确认你的项目是否引用了PCL类库,如果是的话,确保TeamCity服务器上有对应的依赖环境(比如安装了.NET Framework 4.7.1,如果项目依赖它的话)。
做完上面这些操作后,重新触发TeamCity构建,PostSharp应该就能精准定位到正确的mscorlib 2.0.5.0程序集,顺利解决这个构建错误了。
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

