Я обновляю решение для использования .NET 4.7.2 и столкнулся с проблемой.
Я могу собрать и запустить проект на машине разработчика, но TeamCity не сможет.
На этапе сборки TeamCity я добавил /p:TargetFrameworkVersion:v4.7.2 к шагу MSBuild.
Один из проектов нацелен на netstandard 2.0, и MSBuild выдал мне ошибку, что я должен добавить туда .NET Framework 4.7.2. Я добавил .NET Framework 4.7.2 в качестве цели, но это не дало никакого эффекта. Вот ошибка из журнала сборки:
[NETSdkError] C:\Program Files\dotnet\sdk\2.1.402\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.TargetFrameworkInference.targets(150, 5): error NETSDK1045: The current .NET SDK does not support targeting .NET Standard 4.7.2. Either target .NET Standard 2.0 or lower, or use a version of the .NET SDK that supports .NET Standard 4.7.2.
Это странно, так как нет .NET Standard 4.7.2, но я подумал, что это просто опечатка в сообщении об ошибке.
На агенте установлены инструменты MSBuild 2017 и целевой пакет .NET 4.7.2.
Есть идеи, что здесь не так? Может ли быть проблема в дополнительном аргументе MSBuild? Файл проекта для неудачного проекта выглядит следующим образом:
<Project Sdk = "Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net472;netstandard2.0</TargetFrameworks>
</PropertyGroup>
<ItemGroup>
<PackageReference Include = "Newtonsoft.Json" Version = "10.0.3" />
<PackageReference Include = "Autofac" Version = "4.6.1" />
<PackageReference Include = "System.Configuration.ConfigurationManager" Version = "4.4.1" />
<PackageReference Include = "System.Net.Http" Version = "4.3.3" />
</ItemGroup>
<ItemGroup>
<Reference Include = "SomeLibrary">
<HintPath>..\packages\SomeLibrary.1.0.4\lib\net461\SomeLibrary.dll</HintPath>
</Reference>
<ProjectReference Include = "..\ProjectName.Core\ProjectName.Core.csproj" />
<ProjectReference Include = "..\ProjectName.Domain\ProjectName.Domain.csproj" />
<ProjectReference Include = "..\ProjectName.Web\ProjectName.Web.csproj" />
</ItemGroup>
</Project>
Когда я пытаюсь запустить MSBuild локально с теми же параметрами - он терпит неудачу, но с совершенно другой ошибкой, что-то о недопустимом синтаксисе и особенностях языка C# 7. Создание решения через Rider работает нормально.
@UweKeim, пожалуйста, посмотрите мои правки
@UweKeim .NET Core SDK 2.1.402 уже установлен, поэтому я не думаю, что это проблема.
@CamiloTerevinto только что сделал
Я бы сделал копию папки bin, а потом удалил. Это заставит весь проект перестроиться. Зависимости компилятора всегда полностью перестраиваются при изменении версии сети.
@jdweng, к сожалению, это не помогло
Вы используете более одного проекта? Другие проекты могут нуждаться в обновлении.





Если вы используете многоцелевые проекты, используйте /p:TargetFramework=net472.
TargetFrameworkVersion изменит только версию используемой платформы, а не значение TargetFramework или TargetFrameworkMoniker, который используется где-либо еще в сборке. Таким образом, нет целевой платформы .NET Standard с версией 4.7.2, которая вызывает проблемы с вашей сборкой.
Обратите внимание, что установка такого глобального свойства может работать только в том случае, если все проекты в сборке его поддерживают, поэтому будьте осторожны при использовании его в решениях, содержащих несколько проектов, которые могут его поддерживать или не поддерживать.
У меня была эта проблема в течение всего дня, и это решило ее для меня. Спасибо
Я получил ту же ошибку, когда установил только фреймворк 4.7.2 на машине с агентом. Вам необходимо установить пакет SDK для разработчиков (NDP472-DevPack.exe) - ссылка на NDP472-DevPack.exe: https://dotnet.microsoft.com/download/dotnet-framework/thank-you/net472-developer-pack-offline-installer
Возможно поможет загрузка и установка какого-нибудь SDK отсюда (а может и перезагрузка).