У меня особенно сложный сеанс рефакторинга, включающий решение С# с несколькими проектами в Visual Studio 2012. Мне нужно было вытащить кучу кода в свои собственные сборки, чтобы код можно было разделить на несколько проектов, все в такое же решение. Однако, независимо от того, что я пытаюсь, я получаю предупреждения для проектов, которые ссылаются на новые общие проекты: "Все проекты, ссылающиеся на {имя совместного проекта], должны установить пакет nuget Microsoft.Bcl.Build".
Я работал над зависимыми проектами и совместно используемыми проектами с мелким зубным гребнем, тщательно проверяя, что все они используют одну и ту же версию и ту же самую DLL для Microsoft.Bcl версии 1.0.1.19 и Microsoft.Bcl.Async версии 1.0.16:
- System.Runtime
-
System.Threading.Tasks
-
Microsoft.Threading.Task
- Microsoft.Threading.Tasks.Extensions
- Microsoft.Threading.Tasks.Extensions.Phone
Пути DLL все разрешены и идентичны. Файл XAP работает, но я все еще получаю это предупреждение, сообщая мне, что Microsoft.Bcl.Build не ссылается на зависимые проекты, несмотря на то, что я вижу, что это так.
Если я попробую вместо этого удалить и затем переустановить эти два пакета с помощью NuGet для каждого задействованного проекта, я получаю ссылки с пустыми путями и значок предупреждения для 5 связанных DLL-ссылок. По какой-то причине NuGet добавляет ссылки, но не может найти DLL. Кроме того, если я это сделаю, я часто сталкиваюсь с проблемой наличия проектов, в которых я могу получить ошибку "Не могу добавить ссылку" при попытке добавить ссылку. Затем я закрываю и повторно открываю решение, и это приводит к ошибке "проект не загружается". Поэтому мне нужно вручную отредактировать файл проекта, удалить ошибочные инструкции импорта пакетов и перезагрузить проект.
Как я могу исправить эту проблему и какова общая техника для предотвращения этой головной боли в будущем? Предоставление NuGet управления недостающими пакетами не помогло.