Предупреждения справочных сборок сервера сборки .NET 4.0 MSB3644 - PullRequest
34 голосов
/ 04 мая 2011

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

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-компоненты Windows SDK 7.1. ... Я был особенно осторожен, чтобы установить флажок рядом со справочными сборками .net 4.0.

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

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

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

Кажется, что существенным отличием является отсутствие каких-либо ссылок на путь \ Program Files \ References Assemblies. В частности, в FrameworkPathOverride.

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

Что, черт возьми, происходит?!?

Ответы [ 8 ]

33 голосов
/ 11 мая 2011

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

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

Что-то вроде

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

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

12 голосов
/ 20 ноября 2011

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

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

2 голосов
/ 06 марта 2017

Это работает для меня, запустите его в 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.

2 голосов
/ 24 августа 2012

Чтобы добавить к ответу cixelsyd:

Настройка по умолчанию в установщике Windows SDK v7.1 заключается в том, что «Intellisense и справочные сборки» являются «полу-проверенными» - измените их на полностью проверенные, а предупрежденияушел: -)

0 голосов
/ 28 апреля 2019

в папке:

    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

0 голосов
/ 10 сентября 2018

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

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

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

Связанный:

0 голосов
/ 29 сентября 2016

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

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

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

Спасибо этой странице за ответ, который наконец заработал!

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

0 голосов
/ 02 июля 2015

Установка SDK 8.1 (также для Windows 7) также должна работать в случае требований .net 4.5 https://msdn.microsoft.com/en-US/windows/desktop/bg162891

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...