Я обновляю решение для использования .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 \ target \ Microsoft.NET.TargetFrameworkInference.цели (150, 5): ошибка NETSDK1045: текущий .NET SDK не поддерживает таргетинг на .NET Standard 4.7.2.Либо ориентируйтесь на .NET Standard 2.0 или ниже, либо используйте версию .NET SDK, которая поддерживает .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 работает нормально.