MSBuild 4.0 вводит зависимость от платформы 4.0 - PullRequest
2 голосов
/ 06 июня 2011

Мы недавно обновили все наши проекты .NET с VS2005 до VS2010.В рамках этого шага мы перешли с компиляции с MSBuild 3.5 на MSBuild 4.0.Все наши компиляции происходят из командной строки, с помощью следующей команды (или аналогичной):

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

Казалось, это работает без проблем.Однако мы только что заметили, что теперь у нас есть зависимость от .NET 4.0 в нашем манифесте приложения ClickOnce.В версии 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, подать в отставку, обновить / отменить манифест развертывания, ноэто звучит как много шагов.Есть ли где-то настройка для управления этим?Кто-нибудь сталкивался с вышеуказанной проблемой раньше?

Приветствия, Даниэль Б.

1 Ответ

2 голосов
/ 06 июня 2011

Оставьте ToolsVersion на 4.0 (это влияет только на используемую версию MSBuild, и вы хотите самую последнюю), вам нужно изменить это TargetFrameworkVersion: установите его на 3.5 или 2.0 (оба используют одну и ту же версию с CLR , 3.5 приносит дополнительные сборки). Таким образом, вызовите msbuild следующим образом:

msbuild.exe /Target:Publish <solution> /p:TargetFrameworkVersion=3.5
...