Не могу собрать .NET 4.5 в VS2015 после установки VS2019 - PullRequest
1 голос
/ 16 мая 2019

У нас есть это (довольно большое) решение в Visual Studio 2015, которое состоит из 60 проектов библиотек классов и нескольких веб-проектов MVC, причем все целевые рамки установлены на .NET 4.5 (не 4.5.1 или аналогичный, простой).4.5).Поэтому мы планируем в ближайшее время перейти на Visual Studio 2019, и поэтому я и еще несколько человек установили его, чтобы справиться с ним.Оказывается, что установка сломала «что-то», поэтому наш огромный проект больше не может компилироваться.

Насколько я знаю, что во время сборки основного проекта MVC решений компилятор выдает следующий код предупреждения«MSB3275» для 8 зависимых проектов.Единственное, что кажется им общим, это то, что все они ссылаются на Entity Framework 6.2.0.После предупреждения основной проект MVC не удается скомпилировать, заявив, что все упомянутые dll не могут быть найдены.Это предупреждение (имя проекта было скрыто из соображений конфиденциальности):

C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1820,5): warning MSB3275: The primary reference "D:\Projects\Git\REDACTED\REDACTED.DataAccess\bin\Release\REDACTED.DataAccess.dll" could not be resolved because it has an indirect dependency on the assembly "Microsoft.SqlServer.Types, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" which was built against the ".NETFramework,Version=v4.6" framework. This is a higher version than the currently targeted framework ".NETFramework,Version=v4.5".
C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1820,5): warning MSB3275: The primary reference "D:\Projects\Git\REDACTED\Utility.TextGetterLib\bin\Release\Utility.TextGetterLib.dll" could not be resolved because it has an indirect dependency on the assembly "Microsoft.SqlServer.Types, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" which was built against the ".NETFramework,Version=v4.6" framework. This is a higher version than the currently targeted framework ".NETFramework,Version=v4.5".
C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1820,5): warning MSB3275: The primary reference "D:\Projects\Git\REDACTED\Utility.ExportToFileLib\bin\Release\Utility.ExportToFileLib.dll" could not be resolved because it has an indirect dependency on the assembly "Microsoft.SqlServer.Types, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" which was built against the ".NETFramework,Version=v4.6" framework. This is a higher version than the currently targeted framework ".NETFramework,Version=v4.5".
C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1820,5): warning MSB3275: The primary reference "D:\Projects\Git\REDACTED\REDACTED.DataManager\bin\Release\REDACTED.DataManager.dll" could not be resolved because it has an indirect dependency on the assembly "Microsoft.SqlServer.Types, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" which was built against the ".NETFramework,Version=v4.6" framework. This is a higher version than the currently targeted framework ".NETFramework,Version=v4.5".
C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1820,5): warning MSB3275: The primary reference "D:\Projects\Git\REDACTED\Utility.KendoView\bin\Release\Utility.KendoView.dll" could not be resolved because it has an indirect dependency on the assembly "Microsoft.SqlServer.Types, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" which was built against the ".NETFramework,Version=v4.6" framework. This is a higher version than the currently targeted framework ".NETFramework,Version=v4.5".
C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1820,5): warning MSB3275: The primary reference "D:\Projects\Git\REDACTED\Utility.EmailServerLib\bin\Release\Utility.EmailServerLib.dll" could not be resolved because it has an indirect dependency on the assembly "Microsoft.SqlServer.Types, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" which was built against the ".NETFramework,Version=v4.6" framework. This is a higher version than the currently targeted framework ".NETFramework,Version=v4.5".
C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1820,5): warning MSB3275: The primary reference "D:\Projects\Git\REDACTED\ExcelExporter\bin\Release\ExcelExporter.dll" could not be resolved because it has an indirect dependency on the assembly "Microsoft.SqlServer.Types, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" which was built against the ".NETFramework,Version=v4.6" framework. This is a higher version than the currently targeted framework ".NETFramework,Version=v4.5".
C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1820,5): warning MSB3275: The primary reference "D:\Projects\Git\REDACTED\Utility.UserHelperLib\bin\Release\Utility.UserHelperLib.dll" could not be resolved because it has an indirect dependency on the assembly "Microsoft.SqlServer.Types, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" which was built against the ".NETFramework,Version=v4.6" framework. This is a higher version than the currently targeted framework ".NETFramework,Version=v4.5".

Так что, как говорится в ошибке, косвенная зависимость как-то сейчас .NET 4.6, а не 4.5.Если я установлю целевой фреймворк проекта равным 4,6, он будет прекрасно скомпилирован.

Я уже два дня пытаюсь решить эту проблему, и у меня все получается, я перепробовал почти все с зависимостями каждого проекта, нокажется, ничего не работает.Я не знаю, какую еще информацию я должен предоставить, чтобы помочь решить эту проблему, но если кто-то захочет попробовать взломать это, я постараюсь предоставить необходимую информацию.

РЕДАКТИРОВАТЬ - Альтернативное решение

Итак, после использования решения, опубликованного в этой теме, я нашел альтернативное исправление (немного более постоянное), которое я опубликую здесь на случай, если кто-нибудь еще наткнется на эту страницу.Проект, о котором идет речь, пережил .NET 3.5 дня и обновлялся годами.Это означает, что все еще существует некоторый устаревший код, созданный предыдущими разработчиками, который не был удален или реорганизован должным образом.Очевидно, что зависимость Microsoft.SqlServer.Types устарела много лет назад в нашей кодовой базе, так почему же это внезапно стало проблемой?Оказывается, это было в самом низу основного файла web.config веб-проектов:

<dependentAssembly>
    <assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-15.0.0.0" newVersion="15.0.0.0" />
  </dependentAssembly>

Как вы можете видеть, он ссылается на версию 15, версию, которой не было до установки VS2019,Отсюда и проблема.Это создает два решения:

1: установка максимальной версии равной 14, позволяющей компилировать проект.

2: прямое удаление записи, поскольку она устарела.

Итак, вот оно, надеюсь, этот поток поможет кому-нибудь еще с кодами компиляции предупреждений MSB3275.

1 Ответ

4 голосов
/ 20 мая 2019

Похоже, вы ссылаетесь на сборки из GAC, которые были обновлены при установке VS2019. В VS2015 откройте решение и установите пакет nuget Microsoft.SqlServer.Types .

...