Я пытаюсь открыть решение с помощью Visual Studio 2019 и Visual Studio 2017. Все проекты в решении загружаются, кроме одного. При попытке загрузить выгруженный проект я получаю сообщение об ошибке в окне вывода как

TakstMVC.csproj: ошибка: импортированный проект «.... build \ MSBuild.Community.Tasks.targets» не найден. Убедитесь, что выражение в объявлении импорта «TakstMVC \ ..... build \ MSBuild.Community.Tasks.targets» верно и что файл существует на диске. TakstMVC \ FluentMigrator.targets

Когда я попытался открыть с помощью VS 2017, я увидел отчет о миграции, в котором говорилось

TakstMVC.csproj: приложение, на котором основан этот тип проекта. не был найден. Пожалуйста, попробуйте эту ссылку для получения дополнительной информации: http://go.microsoft.com/fwlink /? LinkID = 299083 & projecttype = E3E379DF-F4C6-4180-9B81-6769533ABE47

Часть .csproj проекта выглядит следующим образом:

<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>
    </ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{A4354F5C-ECF5-4621-AA9E-B91FE543F096}</ProjectGuid>
    <ProjectTypeGuids>{E3E379DF-F4C6-4180-9B81-6769533ABE47};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>TakstMVC</RootNamespace>
    <AssemblyName>TakstMVC</AssemblyName>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <MvcBuildViews>false</MvcBuildViews>
    <UseIISExpress>true</UseIISExpress>
    <SccProjectName>SAK</SccProjectName>
    <SccLocalPath>SAK</SccLocalPath>
    <SccAuxPath>SAK</SccAuxPath>
    <SccProvider>SAK</SccProvider>
    <FileUpgradeFlags>
    </FileUpgradeFlags>
    <UpgradeBackupLocation>
    </UpgradeBackupLocation>
    <OldToolsVersion>4.0</OldToolsVersion>
    <IISExpressSSLPort />
    <IISExpressAnonymousAuthentication />
    <IISExpressWindowsAuthentication />
    <IISExpressUseClassicPipelineMode />
    <MvcProjectUpgradeChecked>true</MvcProjectUpgradeChecked>
    <NuGetPackageImportStamp>
    </NuGetPackageImportStamp>
  </PropertyGroup>

На моем компьютере установлено следующее

  • Пакет SDK для Microsoft .NET Framework 4.7.1
  • Microsoft .NET Framework 4.7.1 SDK Targeting Pack (ENU)
  • Microsoft .NET Core 3.1.1 - хостинг Windowsserver
  • Пакет SDK для Microsoft .NET Core 3.1.101 (x64)
  • Пакет SDK для Microsoft .NET Core 2.2.207 (x64)
  • Среда выполнения Microsoft .NET Core - 3.1.1
  • Среда выполнения Microsoft .NET Core - 2.2.8

Я попытался установить dotnetfx35.exe, но он даже не запускается при запуске (даже не сообщение или ошибка). Функции Windows следующие: введите описание изображения здесь

Как я могу определить целевой фреймворк проекта и успешно загрузить его в Visual Studio? признателен за совет по этому поводу.

0
sm101 17 Фев 2021 в 13:59

1 ответ

Лучший ответ

Ошибка очевидна: вы неправильно импортировали MSBuild.Community.Tasks.targets в свою локальную область. Причина в том, что вы не установили MSBuild.Community.Tasks.targets на свой компьютер или путь импорта из файла csproj неверен.

Вам следует проверить этот документ, чтобы установить правильную цель.

Сначала удалите узел xml в файле csproj, например:

 <Import Project="..\build\MSBuild.Community.Tasks.targets" Condition="Exists('..\build\MSBuild.Community.Tasks.targets')" />


 <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('..\build\MSBuild.Community.Tasks.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\build\MSBuild.Community.Tasks.targets'))" />
  </Target>

Во-вторых , установите файл msi.

Затем добавьте их в файл csproj:

<Import Project="C:\Program Files (x86)\MSBuild\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>

Кроме , вы также можете использовать функцию nuget. Сначала удалите пакет nuget, если у вас есть старая версия проекта. Затем используйте первое предложение, чтобы удалить все предыдущие import projects="xxx\MSBuildTasks.targets". После этого установите пакет Nuget MSBuildTasks. То же самое.

Обновить

Попробуйте изменить ..\..\ на ..\. Используйте правильный путь.

Или используйте эту команду в разделе Инструменты Диспетчер пакетов Nuget -> Консоль диспетчера пакетов .

update-package -reinstall

Ответ клиента

Как ни странно, вся проблема заключалась в пути решения, в котором мое решение находилось на моем локальном компьютере. У меня был длинный путь, включая папку с двумя словами. Попробовав все остальное, я переместил папку решения в папку C: \ temp, и проблемы больше не было. Ошибка, показанная в VS, вводила в заблуждение. Какая талия времени. Спасибо за ваши усилия !

0
Perry Qian-MSFT 2 Мар 2021 в 05:38