Ваш проект не посилається на фреймворк “.NETFramework, Version = v4.5”.


91

Я використовую VS 2015.

Ваш проект не посилається на структуру ".NETFramework, Версія = 4.5". Додайте посилання на ".NETFramework, Версія = 4.5" у розділі "Фреймворки" вашого project.json, а потім повторно запустіть відновлення NuGet.

Я отримую цю помилку на рівні доступу до даних та бізнес-логіки, незабаром після додавання до мого рівня MVC. До того часу справи йшли нормально, але я не знаю, що спричинило цю помилку. Ось мій project.json:

{
  "version": "1.0.0-*",
  "description": "foo bar Class Library",
  "authors": [ "foo bar" ],
  "tags": [ "" ],
  "projectUrl": "",
  "licenseUrl": "",

  "frameworks": {
    "net451": { },
    "dotnet5.4": {
      "dependencies": {
        "Microsoft.CSharp": "4.0.1-beta-23516",
        "System.Collections": "4.0.11-beta-23516",
        "System.Linq": "4.0.1-beta-23516",
        "System.Runtime": "4.0.21-beta-23516",
        "System.Threading": "4.0.11-beta-23516"
      }
    }
  }
}

Ось що я спробував:

  1. Заміна "dotnet5.4" на "net451" (і його видалення), як знайдено у цій відповіді .

Результат - та сама помилка.

  1. Заміна "dotnet5.4" на "net45" і залишення "net451". Це призводить до нової помилки:

Ваш project.json не має розділу часу виконання. Вам слід додати '"runtimes": {"win": {}}' до вашого project.json, а потім повторно запустити відновлення NuGet.

Я спробував зробити так, як запропонувала та додала ця помилка

"runtimes": {
    "win":  {}
  },

Це призвело до цієї помилки, яку я не можу пройти повз:

У вашому project.json не вказано "win" як цільове виконання. Ви повинні додати '"win": {}' у розділі "виконання" у вашому project.json, а потім повторно запустити відновлення NuGet.

Я вже додав "перемогу", і це починає відчуватися як червоний оселедець. Що я роблю, змінюючи безпосередньо project.json, чи не обробляє NuGet це?


Для першої частини перейдіть до налаштувань проекту та встановіть для Target Framework значення 4.5
Hirbod Behnam 24.03.16

Так уже встановлено.
S. Loveland ECY

1
@ S.LovelandECY Чи вдалося це вирішити? Я отримую однакову проблему, незалежно від того, використовую я 4.5.1, 4.5.2 або 4.6 - Усі мої проекти, безумовно, використовують одну і ту ж версію фреймворку.
Тьєррі

@ S.LovelandECY ви можете розглянути можливість зміни прийнятої відповіді, враховуючи диспропорцію між голосами між нею та найвищою
оцінкою

Відповіді:


10

Я насправді просто зрозумів проблему. У підсумку я натиснув на Restore Nuget Packagesрівні рішення, і мені вдалося зібрати своюPCL файл, а потім решту мого рішення.

Сподіваюся, це допомагає.


1
ця відповідь - те, що було для мене актуальним.
ковач,

186

У мене була та сама проблема, і в підсумку мені довелося видалити не лише вміст binта objпапки, але й .vsкаталог рішення.


1
.vs викликав проблему для мене
Лукас,

7
це було рішення для мене!
Рікі

9
.vs для мене не було необхідним. Дякую!
geynske006

2
Я не уявляю, як правильно дякувати. Більшу частину години я чухав голову, намагаючись це зрозуміти. видалив всі 3 і працює як шарм. +1
tfrascaroli

2
У мене є підозра, що ця проблема спричинена перемиканням гілок GitHub на моєму вікні локального розвитку. Тобто я працюю в одній гілці, а компіляція створює численні файли, які не є частиною сховища. Потім я перевіряю іншу гілку, і ці файли, що не містять сховища, все ще на місці. Якось вони конфліктують із нещодавно перевіреними файлами.
Фінікій Агелай

127

У мене була та сама проблема - це все ще відбувається за допомогою Visual Studio 2017.3, який використовує файли .csproj замість project.json. Цікаво, що повідомлення про помилку все ще містить текст "project.json".

Здається, причиною цієї проблеми є файл блокування або obj\project.assets.jsonфайл (залежно від вашої версії VS) із попередньої збірки, який не видаляється під час очищення, як описано тут .

Видалення /objкаталогу вручну - це швидкий спосіб вирішення проблеми.

Якщо у вас є "новий" проект (наприклад, .NET Core або netstandard проект, створений у VS 2017), і "старий" проект в тому ж каталозі (наприклад, .NET 4.6 проект, створений у VS 2015), здається, вони будуть постійно боротися, оскільки вони обидва використовують ./objреж по-різному. Більше інформації тут. .

Обхідний шлях msbuild полягає в тому, щоб один із ваших проектів використовував інший objкаталог Я додав це до свого "старого" csproj:

<PropertyGroup>
  <!-- Needed due to old project and new project in same directory: https://github.com/NuGet/Home/issues/5126 -->
  <BaseIntermediateOutputPath>obj_netfx\</BaseIntermediateOutputPath>
</PropertyGroup>

4
Це обхідне рішення добре працює з VS 2017, ви врятували мене вчасно.
MechanicalCoder

2
Блискуче. Також чудове пояснення.
Mick Byrne

1
Дозвольте подякувати. Видалення всіх образливих папок "obj" також вирішило мою проблему.
Стюарт

2
Бог вас благословить! Мені було цікаво, де кривавий файл project.json. Видалення / obj зробило
Vishnoo Rath

1
Все ще проблема навіть у VS 2019. Дякуємо за рішення!
user2363676

27

Я виявив, що цю проблему для мене викликав неправдивий проект.lock.json. Після того, як я видалив файл, проблема зникла.

Ось документація щодо project.lock.json.

Подальша порада полягала б у тому, щоб переконатися, що project.lock.json ігнорується у вашому файлі git ignore, і спробувати виконати повний git clean. Перш ніж це зробити, переконайтеся, що ви розумієте наслідки Git clean.


2

У мене виникла та сама проблема після оновлення до Visual Studio для Mac 7.4 (збірка 1033):

Error: Your project is not referencing the "MonoAndroid,Version=v7.1" framework. Add a reference to "MonoAndroid,Version=v7.1" in the "frameworks" section of your project.json, and then re-run NuGet restore.

У мене немає жодного файлу проекту json. Поради, які тут також не допомогли, тому мені довелося важко з’ясувати, що мені довелося встановити найновіший Android SDK (Oreo 8.1) на додаток до цільового SDK (Nougat 7.1).

введіть тут опис зображення


0

У мене vs2017-->tools-->options-->Nugetpacakge manager--->updatedтака сама проблема, але я вирішив це, додавши відповідний ресурс пакету самородка на відповідну URL-адресу пакета.

Зверніться до зображення нижче

введіть тут опис зображення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.