.NET 4.0 сборка ссылок на сборку предупреждений MSB3644

Я получаю кучу ошибок на моем сервере сборки:

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(847,9): предупреждение MSB3644: сборки ссылок для фреймворка ".NETFramework, Version = v4.0" не найдены, Чтобы решить эту проблему, установите пакет SDK или Targeting Pack для этой версии фреймворка или перенастройте приложение на версию фреймворка, для которого установлен пакет SDK или Targeting Pack. Обратите внимание, что сборки будут решены из глобального сборочного кэша (GAC) и будут использоваться вместо ссылочных сборок. Поэтому ваша сборка может быть неправильно нацелена на структуру, которую вы планируете использовать. [D:\Адис\ртуть\AdisFeeds\кэш\\ Adis.Feeds.Cache.ConsoleManager Adis.Feeds.Cache.ConsoleManager.csproj]

Проблема в том, что я уже установил .NET-части окна SDK 7.1.... Я был особенно осторожен, чтобы установить флажок рядом с сборками .net 4.0.

Есть ли у кого-нибудь какие-либо предложения относительно того, что происходит не так?

Для записи я использую Nant для запуска скриптов сборки (версия 0.86) и nant.contrib(0.85) для задачи msbuild nant.

Обновление Я просто сбежал под этим углом. Я скомпилировал решение с помощью msbuild с диагностическим протоколированием на моей машине dev, а затем снова на сервере сборки. Затем я сравнил журналы.

Похоже, существенная разница в отсутствии ссылок на путь \Program Files\References Assemblies. В частности, в FrameworkPathOverride.

Итак, я попытался добавить FrameworkPathOverride в качестве параметра командной строки в msbuild. К сожалению, это просто привело меня к неудачному открытию, что в каталогах ссылочных сборок только есть файлы xml. Как и в случае только mscorlib.xml. Нет mscorlib.dll

Что происходит???

Ответ 1

Хорошо, я нашел решение, которое работает. Вам нужно сделать две вещи:

  • Сначала добавьте FrameworkPathOverride в качестве параметра командной строки и укажите его в каталог сборок ссылок.

Что-то вроде

  msbuild -p:FrameworkPathOverride="C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0"
  1. Второе, что вам нужно сделать, это найти полную версию каталога ссылочных сборок. Поскольку копия, установленная Windows SDK, и тот, который был установлен визуальной студией, я просто скопировал мою версию с моей машины разработки. Прекрасно работает.

Последнее замечание: причина, по которой это могло произойти со мной, в первую очередь заключается в том, что наш сервер сборки - хороший старый Windows Server 2003. Слишком старый для Windows SDK, чтобы справиться с?

Ответ 2

Это похоже на вопрос об этом вопросе: Проблемы сборки .NET 4.0 на сервере CI и в любом случае должны быть решены в соответствии с предписаниями.

Убедитесь, что Windows 7 SDK установлен (как минимум) как в .NET Development "Intellisense и Reference Assemblies", так и в "Tools". Если они говорят, что они уже установлены, но ссылочные сборки не существуют на вашем диске, а затем удалите и переустановите. Я подтвердил исправление на моем сервере сборки.

Ответ 3

Чтобы добавить к запросу cixelsyd:

Значение по умолчанию в установщике Windows SDK v7.1 заключается в том, что "Intellisense и Reference Assemblies" "проверены" - это полностью проверяется, и предупреждения ушли: -)

Ответ 4

Это работает для меня, запустите его в powershell (без использования FrameworkPathOverride):

cp -r "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\" "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0"

Это потому, что 4.5 (или 4.5.1) является заменой для 4.0

Ответ 6

После нескольких дней очистки веб-ответов, широко просматриваемых через конфигурационные файлы проектов с упомянутыми ссылочными ассемблерами, вышеупомянутый совет по использованию SDK Windows 8.1 для повторной установки отсутствующей ссылочной сборки 4.5.1, наконец, сделал трюк.

В моем случае я пытался "начать без отладки" нового основного веб-приложения ASP.NET(.NET Core), созданного для отслеживания tutorial по адресу: https://docs.asp.net/en/latest/tutorials/first-mvc-app/start-mvc.html

При использовании SDK я отключил ВСЕ принимаемые для эталонных сборок. Это был единственный способ установить 4.5.1, потому что другие методы потерпят неудачу из-за того, что у меня уже установлены версии 4.5.2 и выше.

Престижность этой страницы для ответа, который наконец-то сработает!

предупреждение MSB3644: эталонные сборки для фреймворка ".NETFramework, Version = v4.5.1" не были найдены. Чтобы решить эту проблему, установите SDK или Targeting Pack для этой версии фреймворка или перенастроить приложение к версии рамки, для которой у вас есть SDK или Установленный пакет таргетинга.

Ответ 7

Убедитесь, что вы установили .NET Framework Developer Pack, а не обычный пакет.

Если вы используете Visual Studio, Code или другую IDE, вам также следует установить пакет .NET Targeting Pack.

Страница загрузок: https://www.microsoft.com/net/download

Связанные с:

Ответ 8

в папке:

    C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework

Есть множество папок, по одной на каждый установленный фреймворк. Папка "v4.0" содержит только файлы xml, а папка "v4.5" содержит файлы dll и xml.

Я создал символическую ссылку на эту папку.

1) Запустите командную строку от имени администратора.

2) Запустите следующий скрипт:

  cd C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework
  ren v4.0 v4.0_old
  mklink /d v4.0 v4.5

Создается символическая папка с именем "v4.0", которая указывает на dll версии 4.5