Подтвердить что ты не робот

Похоже, что MSVS 11.0 Beta испортила установку MSVS 10.0

Я столкнулся с проблемами компиляции с MSVS 10 после установки MSVS 11Beta. Теперь, когда я скомпилирую свои проекты С# в MSVS 10 (Проекты, созданные в MSVS 10, Target framework: 3.5), я получаю ошибки MSB4216, MSB4028 со следующим текстом в окне вывода:

1>Task "GenerateResource" skipped, due to false condition; ('%(EmbeddedResource.Type)' == 'Resx' and '%(EmbeddedResource.GenerateResource)' != 'false' and '$(GenerateResourceMSBuildRuntime)' != 'CLR2') was evaluated as ('Resx' == 'Resx' and '' != 'false' and 'CLR2' != 'CLR2').
1>Task "GenerateResource"
1>  Launching task "GenerateResource" from assembly "Microsoft.Build.Tasks.v3.5, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" in an external task host with a runtime of "CLR2" and a process architecture of "x86".
1>C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2199,5): error MSB4216: Could not run the "GenerateResource" task because we could not create or connect to a task host with runtime "CLR2" and architecture "x86".  Please ensure that (1) the requested runtime and/or architecture are available on the machine, and (2) that the required executable "C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NetFX 4.0 Tools\MSBuildTaskHost.exe" exists.
1>C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2217,7): error MSB4028: The "GenerateResource" task outputs could not be retrieved from the "FilesWritten" parameter. Object does not match target type.
1>Done executing task "GenerateResource" -- FAILED.

Как я могу исправить эти ошибки?

EDIT:

  • Указанный файл "C:\Program Files (x86)\Microsoft SDK\Windows\v8.0A\bin\NetFX 4.0 Tools\MSBuildTaskHost.exe" существует.
  • Проекты на С++ без проблем собираются.
  • Повторная установка VS10 не решает проблему.
  • Это задача GenerateResource, которая должна скомпилировать файл resx, но генерирует исключение:

<!-- But we can't use those parameters if we're targeting 3.5, since we're using the 3.5 task -->

<GenerateResource
    Sources="@(EmbeddedResource)"
    UseSourcePath="$(UseSourcePath)"
    References="@(ReferencePath)"
    AdditionalInputs="$(MSBuildAllProjects)"
    NeverLockTypeAssemblies="$(GenerateResourceNeverLockTypeAssemblies)"
    StateFile="$(IntermediateOutputPath)$(MSBuildProjectFile).GenerateResource.Cache"
    StronglyTypedClassName="%(EmbeddedResource.StronglyTypedClassName)"
    StronglyTypedFileName="%(EmbeddedResource.StronglyTypedFileName)"
    StronglyTypedLanguage="%(EmbeddedResource.StronglyTypedLanguage)"
    StronglyTypedNamespace="%(EmbeddedResource.StronglyTypedNamespace)"
    StronglyTypedManifestPrefix="%(EmbeddedResource.StronglyTypedManifestPrefix)"
    PublicClass="%(EmbeddedResource.PublicClass)"
    OutputResources="@(EmbeddedResource->'$(IntermediateOutputPath)%(ManifestResourceName).resources')"
    MSBuildRuntime="$(GenerateResourceMSBuildRuntime)"
    MSBuildArchitecture="$(GenerateResourceMSBuildArchitecture)"
    Condition="'%(EmbeddedResource.Type)' == 'Resx' and '%(EmbeddedResource.GenerateResource)' != 'false' and '$(GenerateResourceMSBuildRuntime)' == 'CLR2'">
  • Я попытался debug MSBuild script (.csproj). Незадолго до фатальной задачи GenerateResource я проверил все свойства и элементы. Не было ничего о "8.0A", но только о "7.0A"
4b9b3361

Ответ 1

Существует уродливый способ устранить проблему: переименование папки "C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A". Я ненавижу принимать этот ответ.

Ответ 2

Как долго ваше имя пользователя?

Кажется, что есть ошибка, когда имя пользователя составляет 20 символов. Если ваше имя пользователя составляет 19 символов или меньше, он отлично работает.

Я открыл проблему на connect.

Edit: Вы пытались установить переменную окружения DisableOutOfProcTaskHost равной true, как это было предложено в проблеме подключения, которая сработала для меня.

Ответ 4

Эта проблема возникла для меня на моем сервере сборки TFS 2010 после установки VS2010, а затем для установки .NET Framework 4.5. Это позволило мне создавать проекты .NET 4.5, но любой проект VS2008, ориентированный на CLR2 (.NET 2.0 -3.5), который я попытался построить, вернет ошибку. Ни одно из предложений на нескольких сайтах, говорящих об этой проблеме, не работало.

  • Перезагрузка. Не исправлена ​​проблема.
  • Настройка DisableOutOfProcTaskHost = true в переменной среды, а также в файле проекта. Не удалось устранить проблему.
  • Имя пользователя моей учетной записи сборки было уже менее 20 символов.
  • Переименование папки Windows SDK - нет, так как у меня не было VS2012 и SDK 8.0A... просто .NET framework 4.5.

В любом случае, чтобы исправить это, я удалил .NET 4.5, отремонтировал VS2010, а затем перезагрузил сервер сборки. Теперь я могу создавать VS2008 и VS2010 проекты без проблем.

К счастью, мне больше не нужно создавать проекты .NET 4.5, так как команда решила вернуться к .NET 4.0.

Ответ 5

Еще одно возможное решение - изменить целевую структуру ваших проектов на .Net 4.0. Это не всегда решение, но, безусловно, это возможность, если все остальное не удается.

Ответ 6

Работала для меня: удаление папки bin и obj для проблемных папок и перезапуск решения

Ответ 7

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

Ответ 8

Настройка DisableOutOfProcTaskHost = true в переменной окружения, работающей для меня.