C# 在生成服务器中生成可移植类库项目失败

C# 在生成服务器中生成可移植类库项目失败,c#,.net,silverlight,teamcity,portable-class-library,C#,.net,Silverlight,Teamcity,Portable Class Library,我最近向构建服务器中构建的应用程序添加了一些自定义可移植类库项目。构建工作正常,但之后它停止工作并向我显示以下消息: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets(983, 5) :警告MSB3644:框架的引用程序集无效 找不到“.NETPortable,Version=v4.0,Profile=Profile136” C:\Windows\Microsoft.NET\Framework64\v

我最近向构建服务器中构建的应用程序添加了一些自定义可移植类库项目。构建工作正常,但之后它停止工作并向我显示以下消息:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets(983, 5) :警告MSB3644:框架的引用程序集无效 找不到“.NETPortable,Version=v4.0,Profile=Profile136”

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets(1578, 5) :警告MSB3270:处理器之间存在不匹配 正在构建的项目“MSIL”和处理器的体系结构 参考体系结构 “C:\Windows\Microsoft.NET\Framework64\v4.0.30319\mscorlib.dll”, “AMD64”

错误CS0234:中不存在类型或命名空间名称“Linq” 命名空间“System”(是否缺少程序集引用?)

生成服务器规范:

  • Windows Server 2008 R2标准
  • TeamCity 8.0.4
  • .NET 4.5
  • (根据建议)
该解决方案是一个.NET4.0应用程序,并且仅可移植项目的目标是.NET4.0+e Silverlight 5。

我已经检查了我的开发机器(Windows 8,Visual Studio 2012)。确实有一个文件夹“C:\Program Files(x86)\Reference Assemblys\Microsoft\Framework.NETPortable\v4.0\Profile\Profile136”(事实上,.NET 4.0的配置文件增加到158)。 然而,在构建机器中,只有用于配置文件的文件夹最多131个

可移植类库工具是最新的吗?似乎它没有安装最新平台的配置文件

更新


我将开发机器的“.NETPortable\v4.0\Profile\Profile136”复制到构建服务器,现在应用程序成功构建。我仍然想知道为什么安装可移植类库工具不能开箱即用。

Profile136附带了作为Phone SDK 8.0一部分的可移植类库目标包(或VS 2012的更高版本VS更新)。您使用的目标软件包版本较旧

安装后,将所需配置文件(在错误消息中明确显示)从开发人员计算机复制到生成服务器,允许我的生成工作

显然,现在的可移植类库并不包括最新的可移植概要文件

如果有人知道在构建服务器上获取可移植配置文件的最新方法,而不是安装VS或手动复制它们,我真的很想知道

更新

在我的开发人员计算机上,要复制到服务器计算机的文件夹的路径(服务器中的路径相同):


一个更通用、更优雅的解决方案是安装最新的Microsoft.NET可移植库参考程序集。这将安装profile138和其他许多工具

可以在以下位置找到独立安装程序:

  • :

我的开发机器有VS 2012更新3,可以很好地构建应用程序。正如我所说,我的开发机器提供的可移植概要文件比可移植类库工具安装的要多。因此,我的应用程序使用的目标包似乎比可移植类库工具的可用版本更新。如果您知道如何手动复制它们,请告诉我们us@RaduSimionescu,请参阅更新的答案。在安装了可移植类库工具之后,只需复制整个文件夹我的问题是复制Xamarin在mac上安装的配置文件-我找不到它们。无论如何,我解决了这个问题,并贴了一个答案和我的解决方案。感谢更新啊,我看到微软发布了一个更新的PCL程序集安装程序。这正是我想要的,但在我设置构建机器时它还不可用。我们如何找到最新版本的PCL?Microsoft是否有可以在生成服务器上找到可安装的最新PCL的页面?请注意,安装程序实际上并没有安装这些文件,而是在主硬盘驱动器的某个位置放置了一个ZIP文件(可能是
C:\Program files(x86)\Microsoft.NET Portable Library Reference Assembly 4.6
)。您必须解压缩该文件,然后将其复制到服务器上的正确位置。对我来说,这是:
C:\ProgramFiles(x86)\Reference Assembly\Microsoft\Framework\.NETPortable
。方便提示,要创建文件夹,请将其命名为
.NETPortable.
并在结尾处加上句点-Windows将去掉结尾的句点并允许您创建文件夹。@Cody有效!但我最终还是从我的开发机器上复制了它,而不是下载。我必须补充:我检查了更多目标:.NET4.5、Windows8、ASP.NETCore1.0、WindowsPhone和一些Xamarin的东西。我只将.NETPortable和.NETCore复制到生成服务器。这里有一些额外的下载链接:@Cody是这里真正的MVP。我已经安装了那个该死的4.6更新一百次了,但它从来没有把任何东西放在那个.NETPortable路径中。Wtf必须解压到那个目录中,这是疯狂吗?有没有记录在案?
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETPortable\v4.0\Profile\Profile136