Файл LC.exe не найден во время сборки для .NET 4

У меня возникла проблема при переходе на .net 4.0, которая при попытке сборки создала следующую ошибку.

 C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1917,9): 
  error MSB3086: Task could not find "LC.exe" using the SdkToolsPath "" or the 
  registry key "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A".

 Make sure the SdkToolsPath is set and the tool exists in the correct processor 
 specific location under the SdkToolsPath and that the Microsoft Windows SDK is
 installed 

 External Program Failed: C:\windows\microsoft.net\framework\v4.0.30319\MSBuild.exe
 (return code was 1)

Последняя версия Microsoft Windows sdk установлена ​​на компьютере, но версия v7.1. Чтобы устранить проблему, я поставил следующий пункт в раздел реестра

   HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\InstallationFolder 
 to C:\Program Files\Microsoft SDKs\Windows\v7.1\. 

Это сработало, однако я чувствую себя немного грязно, указывая ключ реестра 7.0A на установку 7.1. У кого-нибудь есть лучшее решение этой проблемы?

Ответ 1

Взгляните на: Запуск MSBuild не читается SDKToolsPath

В одном из ответов Simmo предлагалось настроить версию SDK по умолчанию на 7.1. Версия 7.1 SDK для Windows новее, чем версия, поставляемая с Visual Studio 2010 (это 7.0a). LC.exe включен в 7.1, и как только вы используете WindowsSdkVer.exe, чтобы сделать версию 7.1 по умолчанию, все работает нормально.

Две незначительные причуды: 1) WindowsSdkVer.exe позволяет выбирать из VS 2005 и VS 2008, но не содержит список VS 2010. Я просто установил версию по умолчанию для VS 2008 и работал в 2010 году.

2) WindowsSdkVer.exe -version: v7.1 не работал у меня, но WindowsSdkVer.exe без каких-либо аргументов, он вызвал интерфейс Windows.

Ответ 2

У меня просто была эта проблема, и это было потому, что наш сервер сборки использовал VS 2010 для сборки, и я открыл И изменил свое решение на VS 2015.

Заголовок .sln файла перешел из:

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010

к

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.24720.0
MinimumVisualStudioVersion = 10.0.40219.1

По-видимому, этого достаточно, чтобы сделать tfs (2010 и используя visual studio 2010), чтобы захотеть найти более позднюю версию инструментов sdk (которые не установлены, в данном случае v8.0A).

Настройка заголовка в файле *.sln обратно на версию VS 2010 решила мою проблему.