Проблемы с новым сервером сборки

После перемещения моего сервера сборки я получаю следующую ошибку:

C:\Windows\Microsoft.NET\Framework64\v3.5\Microsoft.Common.targets (1682): Could not run the "GenerateResource" task because MSBuild could not create or connect to a task host with runtime "CLR2" and architecture "x64". Please ensure that (1) the requested runtime and/or architecture are available on the machine, and (2) that the required executable "MSBuildTaskHost.exe" exists and can be run.

Моя конфигурация говорит следующее:

<ConfigurationToBuild Include="Release|Any CPU">
    <FlavorToBuild>Release</FlavorToBuild>
    <PlatformToBuild>Any CPU</PlatformToBuild>
 </ConfigurationToBuild>

Что мне не хватает?

Ответ 1

В моем случае я получил это сообщение об ошибке при попытке создать решение на 32-разрядной машине Windows 7. Способ разрешить ошибку для меня состоял в том, чтобы щелкнуть правой кнопкой мыши по проекту в VS, выбрать свойства, а затем перейти на вкладку "Сборка". Здесь я изменил "Цель платформы" с "Любой процессор" на "x86". НТН

Ответ 2

Чтобы решить эту проблему, перейдите к .csproj file и откройте с помощью блокнота.

Добавьте следующую строку в группу свойств по умолчанию:

<PropertyGroup>
      <DisableOutOfProcTaskHost>true</DisableOutOfProcTaskHost>
</PropertyGroup>

Теперь проект должен скомпилироваться.

Ответ 3

Другой подход - сделать следующее

Нажмите "Пуск" → > щелкните правой кнопкой мыши "Компьютер" → > "Свойства" → > Дополнительные системные настройки → > нажмите кнопку "Переменные среды", чтобы открыть диалоговое окно,

то в разделе "Системные переменные" нажмите кнопку "Создать...", введите Имя переменной = DISABLEOUTOFPROCTASKHOST и введите значение переменной = 1,

затем нажмите "ОК".

Это должно подавить эту ошибку.

Ответ 4

Вам нужно установить .NET SDK для используемой версии .NET. Вот ссылка для .NET 3.5 Где находится .net 3.5 SDK? и вот ссылка для 4.0 http://www.microsoft.com/en-us/download/details.aspx?id=8279

Установка Visual Studio также установит правильный SDK, но не может быть хорошим вариантом для вас.

Я надеюсь, что это поможет.

Ответ 5

Основная проблема заключается в том, что 64-разрядный исполняемый файл не может загрузить 32-разрядную dll и наоборот.

"Авто" означает это .NET собирается переключиться на время выполнения между платформами, в зависимости от того, какая платформа находится на компьютере, в котором он работает.

Так что сборка .NET, скомпилированная с "Авто", загружает 32-разрядную DLL, это проблема, ожидающая появления, и это то, о чем эта ошибка.

Чтобы исправить это, если вы НЕ используете какие-либо родные DLL, перейдите к свойствам проекта для каждого управляемого проекта и установите "целевой процессор" таким же, как выбранный в настоящий момент "Платформа", для всех доступных платформ.

Если вы используете собственные DLL, вам нужно определить 2 конфигурации сборки для 32 бит и одну для 64 бит, ссылку (см.) правильные версии DLL и установить в соответствии с целевой компьютерной платформой.

Ответ 6

Я решил эту проблему, открыв VS2010 в качестве администратора.