2

我们最近将所有 .NET 项目从 VS2005 升级到 VS2010。作为这一举措的一部分,我们已从使用 MSBuild 3.5 编译升级到 MSBuild 4.0。我们所有的编译都来自命令行,使用以下命令(或类似命令):

msbuild.exe /Target:Publish <solution> /ToolsVersion:2.0

这似乎没有问题。但是,我们刚刚注意到我们现在在 ClickOnce 应用程序清单中依赖于 .NET 4.0。在 3.5 下,我们将有以下内容:

<dependency>
  <dependentAssembly dependencyType="preRequisite" allowDelayedBinding="true">
    <assemblyIdentity name="Microsoft.Windows.CommonLanguageRuntime" version="2.0.50727.0" />
  </dependentAssembly>
</dependency>

在 4.0 下,此版本号已增加到 4.0.30319.0。如果我们从 VS2010 本身发布,一切似乎都正常工作(版本号和以前一样是 2.0)。

作为最后的手段,我们可以修改 .manifest、resign、更新/resign 部署清单,但这听起来像很多步骤。有什么地方可以控制这个吗?有没有人遇到过上述问题?

干杯,丹尼尔B。

4

1 回答 1

2

保留ToolsVersion在 4.0(它只会影响使用的 MSBuild 版本,并且您想要最新的版本),您需要更改的是TargetFrameworkVersion:将其设置为 3.5 或 2.0(两者都使用与 CLR 相同的版本,3.5 带来了额外的程序集)。因此,调用 msbuild 如下:

msbuild.exe /Target:Publish <solution> /p:TargetFrameworkVersion=3.5
于 2011-06-06T07:06:42.277 回答