Как перенацелить приложение visual studio

от admin

Visual Studio хочет перенацелить мои проекты странным образом

Я установил VS11beta и впоследствии удалил его. Теперь моя старая установка VS2010 работает не так, как ожидалось.

Я не понимаю, почему это говорит о том, что я должен перенаправить с версии 4.0 на версию 4.

Аналогичное сообщение появляется в выводе сборки:

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) и будут использоваться вместо ссылочных сборок. Поэтому ваша сборка может быть неправильно нацелена на структуру, которую вы планируете использовать.

Я восстановил мою установку Windows SDK 7.1, которая включает.NET framework 4.0. Кажется, это не помогло.

Visual Studio 2010 теперь сбой при выполнении сборки.

Есть ли какие-то объяснения для этого, и еще лучший способ восстановить мой VS2010, не полностью удаляя и переустанавливая его?

Конечно, у меня было здравый смысл установить бета-версию в виртуальной машине!

Нужна помощь в перенацеливании приложения .NET

Я пытаюсь получить vscode, чтобы включить завершение кода С # с единством, как показано в этом руководстве . Ранее у меня была проблема: по какой-то причине пакет таргетинга .NET был установлен, а SDK — нет, что кому-то удалось чтобы помочь мне. Однако я все еще получаю сообщения об ошибках, в которых говорится, что эталонные сборки не могут быть найдены. Я переустановил пакет разработчика, .NET SDK и пакет таргетинга, перезагрузил компьютер и удалил / переустановил расширения. В журналах указано, что мне, возможно, придется перенастроить приложение , но это очень расплывчато, и я не могу найти никаких руководств о том, как это сделать. Спасибо за вашу помощь.

РЕДАКТИРОВАТЬ: Я попытался изменить целевую структуру на 4.8, но у omnisharp есть тот же журнал ошибок с другой версией, которую я также установил. Может ли это быть проблемой при наличии нескольких дисков?

Просмотрите действия по решению: перенацелить проекты — как это подавить?

В следующем диалоговом окне мне предлагается обновить набор инструментов платформы и версию файлов Windows SDK, созданных для VS2017, при открытии в VS2019:

Как я могу подавить это и принять действие Нет обновления?

В конце концов, я все еще могу сделать это позже через контекстное меню, щелкнув правой кнопкой мыши проект в обозревателе решений:

devenv.com из Visual Studio 2019 имеет:

. то, что я хотел бы, по сути, противоположно. И я также хотел бы, чтобы этот параметр сохранялся.

Примечание. Хотя снимки экрана были сделаны с помощью Visual Studio 2019, более ранние версии Visual Studio (особенно начиная с 2012 года) демонстрируют такое поведение, поскольку они, похоже, поддерживают параллельную поддержку нескольких наборов инструментов платформы и Windows SDK. Поэтому я также помечаю visual-studio.

Решение для перенацеливания с .Net 4.0 на 4.5 — как перенацелить пакеты NuGet?

Я перенес решение, которое в настоящее время нацелено на .NET 4.0 в VS2010, на VS2012, и теперь я хотел бы перенацелить его на .Net 4.5.

В чем я не уверен, так это в пакетах NuGet. Например, EF5, который я обновил с EF4 в VS2010, на самом деле оказывается EF 4.4, как вы можете видеть здесь:

Я также вижу следующее в packages.config для проекта:

Так что мой вопрос:

Как лучше всего перенацелить все пакеты NuGet, которые в настоящее время настроены на .NET 4.0, на .NET 4.5?

5 ответы

NuGet 2.1 предлагает функцию, которая делает это намного проще: просто выполните update-package -reinstall -ignoreDependencies из консоли диспетчера пакетов.

NuGet 2.0 не очень хорошо справляется с перенацеливанием ваших приложений. Чтобы изменить целевые платформы ваших пакетов, вы должны удалить и переустановить пакеты (принимая во внимание установленные вами пакеты, чтобы вы могли переустановить каждый из них).

Причина, по которой пакеты должны быть удалены и переустановлены:

  • При установке пакета мы определяем целевой фреймворк вашего проекта
  • Затем мы сопоставляем это с содержимым пакета, находя соответствующую папку \lib\ (и папку \content\)
  • Ссылки на сборки добавляются с путями подсказок, которые указывают на папку \lib\ пакета с правильной подпапкой (например, \lib\net40)
  • Файлы содержимого копируются из папки пакетов \content\ с правой подпапкой (например, \content\net40).
  • Мы записываем targetFramework, используемый для установки пакета, в файле packages.config.
  • После того, как вы измените целевую структуру вашего проекта, пути подсказок по-прежнему указывают на net40.
  • Когда вы удаляете пакеты, мы проверяем targetFramework, который был записан в packages.config, чтобы увидеть, какие библиотеки/контент целевой платформы нужно удалить из вашего проекта.
  • Когда вы переустанавливаете пакет, мы обнаруживаем вашу обновленную целевую структуру и ссылаемся/копируем правильные библиотеки/контент.

ответ дан 06 дек ’14, 06:12

Используя VS 2012 с проектом ASP.NET MVC 4 и после перенацеливания на .NET Framework с 4.0 на 4.5, я выполнил update-package -reinstall в консоли диспетчера пакетов. Все пакеты начали удаляться и обновляться, и внезапно Windows 8 перезагрузилась, и когда она вернулась, она сказала: «Ваш компьютер столкнулся с проблемой и перезагрузился. Вы хотите отправить информацию в Microsoft?» 🙁 Пугает. Кстати, это версия NuGet, которую я установил прямо сейчас: 2.2.40116.9051 Открыл тему здесь: nuget.codeplex.com/workitem/3049 — Лениэль Маккаферри

Читать:
Чем перенести 20 терабайт

параметры -reinstall никогда не работали для меня. Он либо удаляет в неправильном порядке и выдает ошибки «не может удалить X, потому что Y зависит от него», либо иногда просто не читает пакеты. В прошлый раз, когда я пробовал, он удалил EntityFramework, а затем никогда не добавлял его повторно. — Кодирование с шипом

update-package -reinstall для меня не решение. Это также обновление множество пакетов, а не оставлять их в версиях, которые мы используем и с которыми тестировали. Например, Ninject был перемещен до версии 3, и это серьезное изменение версии. — Стив Оуэн

Даже не пытайтесь обновить страницу-переустановить. Эта вещь была в таком беспорядке, когда она работала на моем локальном компьютере, что мне пришлось остановить менеджер пакетов NuGet от дальнейшей работы. Он удалил мою версию jQuery 1.10 и по какой-то причине заменил ее на 1.4.4. Просто сделайте это вручную и избавьте себя от хлопот. — Джастин Майклс

Согласен на беспорядок, и это даже через два года после этого поста. Он нашел более ранние версии некоторых nugets и испортил множество ссылок. И это после почти двух часов обновления (на высокопроизводительной рабочей станции с начала 2014 года). 20 проектов в решении. — Арве Систад

После безуспешной попытки принять принятый ответ я хотел бы предложить менее рискованную команду:

Создан 14 июля ’16, 08:07

Согласно связанной документации -reinstall будет устанавливать только одну и ту же версию, поэтому не вижу никакой пользы от использования -safe . Я что-то пропустил? — Калеб Педерсон

Для тех, у кого были проблемы с update-package -reinstall <packagename> команду, попробуйте запустить ее с помощью -ignoreDependencies флаг, например:

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

ответ дан 15 мар ’16, в 18:03

Спасибо, это действительно избавляет от многих проблем. Наблюдение за тем, как Nuget пытается переустановить 10 или около того зависимостей, которые EnterpriseLibrary имеет тенденцию создавать в 30+ проектах, приближалось к однодневной работе. Это сокращает время до минут. — Дэвид Кивени

Как уже упоминалось, очень вероятно, что все сломается. — Глено

Вы можете автоматизировать это для всего решения, слегка изменив его при работе в консоли диспетчера пакетов: get-package | % < update-package $_.Id -reinstall -ProjectName $_.ProjectName -ignoreDependencies >— Калеб Педерсон

@KalebPederson По моему опыту, команда работает с широким решением? — пользователь3638471

@BjörnAliGöransson — Извините, если я недостаточно ясно выразился. Ответ предоставляет способ обновить один пакет в решении. Мой скрипт просматривает каждый пакет NuGet в решении и перенаправляет его в решение. Ответ идеально подходит для одного проекта, но предоставленный мной сценарий может быть лучше, если у вас есть много пакетов, которые необходимо перенацелить. — Калеб Педерсон

В Visual Studio для Mac 2019 при щелчке правой кнопкой мыши папки Packages в меню отображается параметр Retarget. Это решило проблему перенацеливания для всех пакетов в проекте, требующих перенацеливания. Похоже, в Visual Studio для Mac (по крайней мере, у меня) не было диспетчера пакетов NuGet в меню «Инструменты», поэтому я не смог запустить консоль диспетчера пакетов.

Параметр меню «Перенаправить» в контекстном меню «Пакеты»

ответ дан 16 авг.

При попытке переустановить пакеты для всего решения я столкнулся с ошибкой зависимости (несмотря на использование -ignoreDependencies флаг) и все пакеты.config файлы для каждого проекта были удалены. В VS2013 кажется, что пакеты.config не сбрасывается обратно на диск и не добавляется повторно до тех пор, пока все обновленные зависимости/ссылки не будут повторно присоединены к проекту.

В моем случае сработало обновление каждого проекта по одному, добавляя -ProjectName название проекта до update-package команда. В этом случае пакеты.config обновляется по мере обновления каждого проекта.

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

Я столкнулся с той же проблемой. UpdatePackage -Reinstall удалил package.config и ссылки на проекты для нескольких проектов (особенно тех, в которых были сгенерированы поддельные сборки). Мы обошли это, отменив все изменения в испорченном проекте и запустив: Update-Package -reinstall -ProjectName «PROJECTNAME» -IgnoreDependencies — MSC

Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками .net nuget visual-studio-2012 .net-4.5 or задайте свой вопрос.

Похожие статьи