【问题标题】:MSBuild creates satellite assemblies for the wrong framework versionMSBuild 为错误的框架版本创建附属程序集
【发布时间】:2013-04-03 14:38:42
【问题描述】:

我有一个 VS2010 解决方案,它为 .NET 2.0 创建了几个程序集。

这也包括附属程序集。

当我使用 VS2010 创建所有内容时,一切正常。但是我有一台 XP 机器使用 MSBuild 作为构建服务器。从那里创建的附属程序集无法识别。查看 ILDASM,我看到 VS2010 创建元数据版本 2,而 MSBuild 创建版本 4。我猜这意味着 VS2010 创建正确的 .NET2 版本,而 MSBuild 仅创建 .NET2 的主要程序集,但附属程序集是 .NET4。

我已经从这里知道了这个话题:What decides the target framework version of a satellite assembly?

但这对我不起作用。

有什么想法可以让构建服务器创建 .NET2 附属程序集吗? 如果我知道如何正确调用 AL.exe,我也许可以增强我的脚本。

【问题讨论】:

  • 试过this?
  • 使用/tv:2.0 开关设置工具版本没有帮助,因为那时他使用旧的 C# 编译器而不是 vs2010 c# 4.0 编译器。设置目标框架没有帮助。正如输出所示,对生成卫星程序集的AL.exe 的调用以相同的方式完成,ILDASM 仍然显示 .NET4-satellite-assemblies。

标签: visual-studio-2010 msbuild .net-2.0 satellite-assembly


【解决方案1】:

好的,我破解了。

构建机器 (WinXP) 具有带有 AL.exe 10.0.30.x 的 Windows SDK 7.1。这是始终创建 .NET4-satellite 程序集的那个。

我的 VS2010 机器 (Win7) 有一个带有 AL.exe 9.0.30729.1 的 Windows SDK 7.0a。这是尊重目标框架的。

我(在备份后)将构建机器中的 AL.exe 替换为我的那个。 这可行,但我认为这是一个非常肮脏的解决方法。

如果有人知道更好的方法,我将不胜感激!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多