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

时间:2014-06-04 14:23:03

标签: tfs build msbuild build-process tfs2013

我正在进行tfs 2013构建定义的转换,我们最初使用的是tfs 2008.我有一个安装了TFS2013的新服务器,并且正在完成2013 xaml(工作流)定制的构建定义。但是,当我的TFS在任何Cpu配置的发布模式下构建时,我正面临一个错误,但是当我使用调试模式时它很好。我试过看了很多文章而无法找到任何解决方案,请在这里帮助我。这在我的本地机器上很好,但只在服务器中发生。

项目和详情

1)项目是.net framework 4.0

2)默认配置为“Any Cpu”

3)TFS 2013服务器是64位,Windows Server 2008 r2

构建定义

配置:任何CPU |发布

MsBuildPlatform:x86

错误: SGEN:尝试加载格式不正确的程序集:C:\ Windows \ Microsoft.Net \ assembly \ GAC_64 \ System.Data \ v4.0_4.0.0.0__b77a5c561934e089 \ System.Data.dll。

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

我安装了windos 8 SDK(仅限工具) 和Windows框架4 x64作为x86版本失败

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

我的本​​地机器在上面的路径

中的windows文件夹中有很多版本

我已检查但无法找到解决方案的相关文章列表

http://seravy.wordpress.com/2012/10/25/installing-net-4-5-and-not-windows-sdk-8/

http://blogs.msdn.com/b/windowssdk/archive/2009/09/16/windows-7-sdk-setup-common-installation-issues-and-fixes.aspx

Running MSBuild fails to read SDKToolsPath

http://dukelupus.wordpress.com/2008/02/05/task-failed-because-sgenexe-was-not-found-solution/

How do I fix the Visual Studio compile error, "mismatch between processor architecture"?

TFS 2010 creating .Net 4.0 XmlSerializers DLL for .Net 3.5 Application

那我该怎么做才能解决这个错误呢?

5 个答案:

答案 0 :(得分:4)

您需要为要定位的.NET Framework版本安装目标包(也称为SDK,也称为Developer Pack)。您可以从http://blogs.msdn.com/b/dotnet/p/dotnet_sdks.aspx

下载所有内容

专门针对您的问题并针对.NET Framework 4.0,您希望Windows SDK for Windows 7 and .NET Framework 4听起来像是您抓住了Windows 8 SDK,这不是您想要的.NET Framework 4.0目标。

答案 1 :(得分:2)

这不是一个非常好的答案(但是如果有人像我一样遇到它),并且无法提供有关它发生原因的见解。但是关闭"生成序列化组件"关于违规项目确实允许构建在我的案例中工作。

启动时间会变慢,因为序列化现在会在运行时发生。

答案 2 :(得分:1)

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

以下是我为解决此错误所做的一些图片。 enter image description here enter image description here

答案 3 :(得分:1)

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

以下两个条件的组合导致了错误:

  1. 在Visual Studio中,在“项目属性”页上的“应用程序”选项卡上,“目标框架”设置为“.NET Framework 4.5.1”;
  2. 在构建服务器上,在文件夹C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework中,名为v4.5.1的文件夹存在。 (包含版本号的其他文件夹,包括v3.5,v4.0和v4.5, 存在。)
  3. 这个丢失的文件夹是“找不到框架的参考组件......未找到”警告的原因,这反过来导致“组件格式错误”错误。

    修复是在构建服务器上安装Windows Software Development Kit (SDK) for Windows 8.1。在安装向导的“选择要安装的功能”步骤中,取消选中除“.NET framework 4.5.1软件开发工具包”之外的所有框。

    运行该安装导致创建Reference Assemblies \ Microsoft \ Framework.NETFramework文件夹中缺少的v4.5.1文件夹,并且构建成功运行。

答案 4 :(得分:0)

我不愿意回答,因为你说你已经这样做了,但每次我都在努力解决你引用的错误信息,那就是MsBuildPlatform设置。它绝对必须设置为" X86"。你确定设置正在设置..?