VS 2010,TFS 2013 SGEN:试图加载格式不正确的程序集

VS 2010,TFS 2013 SGEN:试图加载格式不正确的程序集,tfs,build,msbuild,build-process,Tfs,Build,Msbuild,Build Process,我正在进行tfs 2013构建定义的转换,我们最初使用的是tfs 2008。我安装了一台新服务器,安装了TFS2013,并完成了2013 xaml(工作流)定制的构建定义。然而,当我的TFS在任何Cpu配置的发布模式下构建时,我都会遇到一个错误,但是当我使用调试模式时,这个错误就没有问题了。我试图寻找许多文章,但找不到任何解决方案,请帮助我在这里。这在我的本地机器上是可以的,但只在服务器上发生 项目和细节 1) 该项目是.NETFramework 4.0 2) 默认配置为“任意Cpu” 3) T

我正在进行tfs 2013构建定义的转换,我们最初使用的是tfs 2008。我安装了一台新服务器,安装了TFS2013,并完成了2013 xaml(工作流)定制的构建定义。然而,当我的TFS在任何Cpu配置的发布模式下构建时,我都会遇到一个错误,但是当我使用调试模式时,这个错误就没有问题了。我试图寻找许多文章,但找不到任何解决方案,请帮助我在这里。这在我的本地机器上是可以的,但只在服务器上发生

项目和细节

1) 该项目是.NETFramework 4.0

2) 默认配置为“任意Cpu”

3) TFS 2013服务器为64位,windows server 2008 r2

构建定义

配置:任何CPU释放

MsBuildPlatform:x86

错误: SGEN:试图加载格式不正确的程序集:C:\Windows\Microsoft.Net\assembly\GAC\U 64\System.Data\v4.0\U 4.0.0\UU b77a5c561934e089\System.Data.dll

警告: C:\Program Files(x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(990):找不到framework“.NETFramework,Version=v4.0”的引用程序集。要解决此问题,请安装此框架版本的SDK或目标包,或将应用程序重新定位到已安装SDK或目标包的框架版本。请注意,程序集将从全局程序集缓存(GAC)中解析,并将用于替代引用程序集。因此,您的程序集可能没有正确地针对您想要的框架

我已安装windos 8 SDK(仅限工具) Windows framework 4 x64 as x86版本出现故障

文件夹C:\Program Files\Microsoft SDK\Windows具有v7.0文件夹 C:\Program Files(x86)\Microsoft SDK\Windows具有v8.1A文件夹

其中,作为我的本地计算机,在上述路径的windows文件夹中有许多版本

我检查过的相关文章列表,但找不到解决方案


那么我应该怎么做来修复这个错误呢

我不愿意回答,因为您说您已经这样做了,但每次我都在努力处理您引用的错误消息时,都是MsBuildPlatform设置。它绝对必须设置为“X86”。您确定正在设置设置吗?

这不是一个很好的答案(但万一有人像我一样遇到它),并且不能提供关于它发生原因的见解。但是在我的例子中,关闭有问题的项目上的“生成序列化程序集”确实允许构建工作


启动时间将变慢,因为序列化将改为在运行时进行

您需要为目标.NET Framework版本安装目标包(也称为SDK,也称为开发包)。您可以从


特别是针对您的问题和针对.NET Framework 4.0的目标,您希望听起来像是您抓住了Windows 8 SDK,而这不是针对.NET Framework 4.0的目标。

您只需查看您正在使用的框架,然后查看您正在使用的调试模式。 在我的案例中,我使用的是框架4.0和构建模式目标框架“任意cpu”,但在四处搜索后,我发现我需要将.Net框架从4.0升级到4.5,并且我必须将解决方案从“任意cpu”构建到x86框架,因为我有x86架构的Windows 7 SPI

下面是我为解决这个错误所做的一些图片。

在构建服务器上构建应用程序时,我遇到了此错误(尽管是针对较新的.NET framework版本,v4.5.1,而不是原始问题中的v4.0)

以下两种情况的组合导致了错误:

  • 在Visual Studio中,在“项目属性”页面的“应用程序”选项卡上,将“目标框架”设置为“.NET framework 4.5.1”
  • 在生成服务器上的文件夹
    C:\Program Files(x86)\Reference Assembly\Microsoft\Framework\.NETFramework
    中,名为v4.5.1的文件夹不存在。(存在其他具有版本号的文件夹,包括v3.5、v4.0和v4.5。)
  • 此缺少的文件夹是“未找到框架的引用程序集…”警告的原因,这反过来又会导致“格式不正确的程序集”错误

    修复程序将安装在生成服务器上。在安装向导中的“选择要安装的功能”步骤中,我取消选中了除“.NET framework 4.5.1软件开发工具包”之外的所有框


    运行该安装导致在Reference Assemblys\Microsoft\Framework.NETFramework文件夹中创建丢失的v4.5.1文件夹,并且生成成功运行。

    但我不想使用x86来生成dll,而是希望它是任何CPU。因此,默认情况下,我的解决方案指向释放—任何CPu。你指的地方有什么我需要检查的地方吗?要添加一个注释,我的TFS服务器是x64,这里的问题非常类似,只是我们的目标框架版本是4.5.2。使用上面Jon的建议,搜索合适的开发人员包(对于4.5.2 its here:)并将其安装到构建服务器上,这修复了我们的错误。