团队构建,SGen和混合模式程序集

10

大家好,这是一个有些奇怪的问题。

我们有一个相当复杂的解决方案(包括111个项目,分布在asp.net、silverlight、WFC、Ria Services等技术中)。在我的开发计算机上(2010),这个解决方案能够正确编译。如果我在我们的构建机器上启动VS,我也能够正确编译该解决方案。但是,当我排队构建时,它几乎可以通过,直到它尝试运行SGen - 在这一点上,我得到了旧的“Mixed mode assembly is built against version 'v2.0.50727' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information.”。

我已经搜索过,试图找到一个解决方案,但没有任何有效的结果-错误发生在编译时而不是运行时,并且已经在Team build主机的配置文件中添加了v2激活密钥,但没有效果。解决方案中没有可能导致加载问题的测试。

有什么想法吗?任何人都可以帮忙吗?特别是感到困惑的是,在服务器上,VS可以正常构建,但团队构建失败。

1个回答

18

以下技巧对我有用(参考资料)

编辑(如果不存在则创建)sgen.exe.config,它应该位于:

  • C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\

或在x64操作系统上:

  • C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\

然后添加:

<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
  </startup>
</configuration>

据我理解,在项目的app.config中添加相同的片段可能并不足够,因为它不会被sgen工具读取 :(


1
注意:上面的代码片段需要放置在 <configuration></configuration> 标签内。 - Darrell Mozingo
@Darrell。已更新。谢谢。 - Yann Trevin
2
请注意,在 x64 系统上,路径应该是 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\。可能存在一个 sgen.exe 的 x64 版本,但那个版本不可用。 - RandomEngy
1
有人能否评论一下这是绕过问题的黑客攻击,还是这是解决微软漏洞的正确方法? - Richard Ev
1
注意... 如果您使用的是 .Net 4.5,则此更改为 C:\Program Files\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 ToolsC:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools - PGallagher

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接