Install-Package: не удалось добавить ссылку на "System.Runtime"

Я пытаюсь установить пакет Autofac nuget в свой проект, используя команду

Install-Package -Prerelease Autofac

но с ошибкой

Install-Package : Failed to add reference to 'System.Runtime'. Please make sure that it is in the Global Assembly Cache.

Я попытался переустановить .NET Framework 4.5.2 (это версия моих целей проекта), но получил сообщение ".NET Framework 4.5.2 уже установлена". Однако поиск C:\Windows\assembly\ для System.Runtime.dll не находит точных совпадений (хотя есть несколько экземпляров System.Runtime.ni.dll, которые (как представляется, указывают), что они действительно являются одной и той же сборкой...).

Что я могу сделать с этим?

project config

Обновление:, по-видимому, я был замешан в расположении GAC. Amy просвещает меня и ищет в C:\Windows\Microsoft.NET\assembly вместо этого я нахожу System.Runtime.dll. Почему Visual Studio не работает?

Ответы

Ответ 1

Пожалуйста, убедитесь, что он находится в глобальном кэше сборок.

Это чрезмерно бесполезное сообщение об ошибке. Это не только не описывает реальную проблему, но и приводит к тому, что вы решительно пытаетесь найти обходное решение. Ссылка на сборку для сборки .NET Framework должна никогда поступать из GAC. Тип отказов, когда он делает, может быть чрезвычайно неприятным для диагностики. Ссылочные сборки должны поступать из каталога C:\Program Files (x86)\Reference Assemblies.

Глядя на файл .nuspec для пакета Autofac nuget, который вы пытаетесь установить, он поддерживает две разные цели. Один для DNXCore версии 4.0.10-beta-22816. Надеюсь, вы не используете его, этот проект быстро меняется.

Другой - это .NET Portable, профиль 259. Это позволяет вашему проекту ориентироваться на .NET 4.5.x, Store, Phone80 и Phone81. Что говорит вам грубое сообщение об ошибке, так это то, что у него проблемы с поиском этого профиля. Используйте Проводник Windows для просмотра, профиль хранится в каталоге C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETPortable\v4.5\Profile\Profile259. Он имеет требуемую ссылочную сборку System.Runtime.dll.

Ну, конечно, это awol, я не могу догадаться по основной причине.

Они делали тонкие ошибки в файле .nuspec. Рассмотрите более стабильный выпуск Autofac, вы, вероятно, не хотите быть бета-тестером. И не нацеливайтесь на 4.5.2, нет смысла на это. Он не добавляет ничего интересного и заставляет вашего пользователя обновлять его установку .NET, не очень разумно.

Ответ 2

У меня была та же проблема.

Нашел решение здесь: https://github.com/aspnet/WebHooks/issues/18

Чтобы исправить это, я добавил <Reference Include="System.Runtime"/> в .csproj
файл для проекта, перестроил его, и он сработал.