Похоже, должен быть какой-то способ обнаружения этой целевой версии .csproj Framework / проблемы ссылки NuGet lib DLL в процессе сборки. Кто-нибудь знает какие-либо хитрости, которые можно предпринять, чтобы обнаружить и сообщить об этой проблеме?
Насколько я знаю, сама задача msbuild не содержала такой функции для обнаружения несовместимости между nuget dll и структурой проекта версия. Процесс сборки предназначен только для обнаружения любых ошибок в скомпилированном файле, таких как синтаксис.
В качестве обходного пути вы можете добавить собственную цель, чтобы вручную определять опорную версию nuget Dll и версию фреймворка проекта.
Первый , добавьте это под dll nuget, которую вы хотите обнаружить:
<Reference Include="Microsoft.Extensions.Primitives, Version=2.1.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>...\xxxx\lib\netstandard2.0\Microsoft.Extensions.Primitives.dll</HintPath>
<EMA>%(Reference.HintPath)</EMA>
</Reference>
Second , напишите пользовательскую цель сборки, чтобы сообщить dll nuget и версию фреймворка проекта.
<Target Name="Dected" AfterTargets="Build">
<Message Importance="high" Text="the Nuget DLL Path is----%(Reference.EMA)----------------the project framework is $(TargetFrameworkVersion)">
</Message>
</Target>
Обновление 1
И Вы можете увидеть эту информацию в журнале msbuild или Окно вывода в VS, которое поможет вам определить, совместимы ли они.
Обратите внимание, что когда вы переносите проект на QA Server, который поддерживает framework <=4.5.2
, вы должны понизить версию фреймворка вашего проекта <=4.5.2
,
Кроме того, , для решения проблемы можно попробовать восстановить nuget в QA Server. Если у вас есть инструмент для сборки, попробуйте сначала msbuild -t:store first
командную строку.