Маніфестне визначення розташованої збірки не відповідає посиланням на збірку


751

Я намагаюся запустити кілька тестових одиниць у програмі C # Windows Forms (Visual Studio 2005), і я отримую таку помилку:

System.IO.FileLoadException: Не вдалося завантажити файл або збірку 'Utility, Версія = 1.2.0.200, Культура = нейтральна, PublicKeyToken = 764d581291d764f7' або одна з її залежностей. Маніфестне визначення розташованої збірки не відповідає посиланням на збірку. (Виняток з HRESULT: 0x80131040) **

на x.Foo.FooGO ()

у x.Foo.Foo2 (String groupName_) у Foo.cs: рядок 123

на x.Foo.UnitTests.FooTests.TestFoo () у FooTests.cs: рядок 98 **

System.IO.FileLoadException: Не вдалося завантажити файл або збірку 'Utility, Version = 1.2.0.203, Culture = нейтральна, PublicKeyToken = 764d581291d764f7' або одна з її залежностей. Маніфестне визначення розташованої збірки не відповідає посиланням на збірку. (Виняток з HRESULT: 0x80131040)

Я переглядаю свої посилання, і я маю лише посилання на Utility version 1.2.0.203(інша - стара).

Будь-які пропозиції щодо того, як я з'ясував, на що намагається посилатися на цю стару версію цього файлу DLL?

Крім того, я не думаю, що у мене навіть на жорсткому диску ця стара збірка. Чи є інструмент для пошуку цієї старої версії?


У моєму випадку це сталося тому, що у мене було два проекти, які завантажували ту саму DLL з різними версіями. (сподіваюся, що це комусь допоможе!)
miguelmpn

Відповіді:


461

Навантажувач .NET Assembly:

  • не вдається знайти 1.2.0.203
  • але знайшов 1.2.0.200

Ця збірка не відповідає тому, що було запропоновано, і тому ви отримуєте цю помилку.

Простими словами, він не може знайти збірку, на яку посилався. Переконайтеся, що він може знайти правильну збірку, помістивши її в GAC або в шлях застосування. Також дивіться https://docs.microsoft.com/archive/blogs/junfeng/the-location-assemblys-manifest-definition-with-name-xxx-dll-does-not-match-the-assembly-reference .


19
але коли я дивлюся на посилання на проект, він вказує на 1.2.0.203 ... Здається, нічого більше не вказує на 1.2.0.200
leora

128
Точно - шукає 1.2.0.203, але знайшов 1.2.0.200. Дізнайтеся, де знаходиться цей файл, і замініть його правильною версією.
Джон Скіт

18
Я задав подібне запитання тут і отримав робоче рішення: stackoverflow.com/questions/4187907/…
Michael La Voie

13
Перевірте версію посилань, а потім подивіться, чи однакова вона у
пакетах.config

4
Це повідомлення мене щоразу бентежить. Здається, це написано назад. Я очікую, що він поскаржиться на версію, яку ви попросили завантажити, а не на версію, яку знайшов. Радий, що я не єдиний, хто помиляється!
Грег Вудс

91

Ви можете виконати пару речей, щоб вирішити цю проблему. По-перше, використовуйте пошук файлів Windows для пошуку на вашому жорсткому диску (.dll). Після того, як у вас з'явиться список результатів, зробіть Перегляд-> Виберіть деталі ..., а потім встановіть прапорець "Версія файлу". Це відобразить номер версії у списку результатів, тож ви зможете побачити, звідки може надходити стара версія.

Крім того, як сказав Ларс, перевірте свій GAC, щоб побачити, яка версія там перелічена. У цій статті Microsoft зазначається, що збірки, знайдені в GAC, не копіюються локально під час збирання, тому вам може знадобитися видалити стару версію, перш ніж проводити перезавантаження всіх. (Дивіться мою відповідь на це запитання щодо приміток щодо створення пакетного файлу, щоб зробити це для вас)

Якщо ви все ще не можете зрозуміти, звідки походить стара версія, ви можете скористатися додатком fuslogvw.exe, який постачається разом із Visual Studio, щоб отримати більше інформації про помилки прив’язки. Microsoft має інформацію про цей інструмент тут . Зауважте, що вам потрібно буде включити ведення журналу, встановивши HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion\EnableLogключ реєстру на 1.


19
Не забувайте, що версія файлу не є частиною ідентичності збірок. Версія для складання є, але не повинна бути такою ж, як файлова версія!
Lars Truijens

Якщо ви використовуєте fuslogvw для сервісів, читайте blogs.msdn.com/b/junfeng/archive/2004/02/14/72912.aspx
Nick

Пошук назви файлу вирішив мою проблему. Я мав стару версію dll у своїй тимчасовій папці ASP.Net, і InstallShield використовував її замість оновленої версії! Чисте рішення, відновлення, перезавантаження ПК нічого не зробили. Працював чудово на місцях і вибухав щоразу, коли його розгортали.
JumpingJezza

Відразу після побудови мій сайт працює чудово, але трохи пізніше ця проблема виникає.
Шавай

Я відредагував цю відповідь, щоб сказати замість неї збірну версію.
Варто7

60

Я просто зіткнувся з цією проблемою, і я виявив, що це питання дещо інше, ніж те, з чим стикалися інші.

У мене було два DLL-файли, на які посилався мій головний проект: CompanyClasses.dll та CompanyControls.dll. Я отримував помилку під час виконання повідомлення:

Не вдалося завантажити файл або збірку 'CompanyClasses, версія = 1.4.1.0, культура = нейтральна, PublicKeyToken = 045746ba8544160c' або одна з її залежностей. Маніфестне визначення розташованої збірки не відповідає посиланням на збірку

Проблема полягала в тому, що у мене в системі не було файлів CompanyClasses.dll з номером версії 1.4.1. Ні в GAC, ні в папках додатків ... нікуди. Я шукав весь свій жорсткий диск. Усі файли CompanyClasses.dll у мене були 1.4.2.

Справжньою проблемою я виявив те, що CompanyControls.dll посилається на версію 1.4.1 CompanyClasses.dll. Я щойно перекомпілював CompanyControls.dll (після цього посилання CompanyClasses.dll 1.4.2), і ця помилка пішла для мене.


2
+1 Щось подібне трапилося зі мною, коли я маю одну зі своїх DLL-версій, що стосується старішої версії Caliburn Micro.
Джейсон Массі

і я, ваш досвід викликав мене куди мені потрібно шукати, і я вирішив свою проблему.
Есен

Іншим варіантом буде відкриття CompanyControlsпроекту, клацніть правою кнопкою миші CompanyClasses.dllпосилання -> властивості ->SpecificVersion = false
BlueRaja - Danny Pflughoeft

це дуже часто трапляється у програмах xamarin. У мене проект xamarin.forms відрізнявся від проекту xamarin.droid. Я щойно побачив твій пост і зрозумів його.
batmaci

Якщо CompanyClasses.dll підписаний, він SpecificVersion = falseсамостійно не виріже. Вам знадобиться bindingredirect.
Деніз Скідмор

53

Наступна перенаправляє будь-яку версію збірки до версії 3.1.0.0. У нас є сценарій, який завжди оновлює цю посилання в App.config, тому нам ніколи більше не доведеться займатися цим питанням.

За допомогою роздумів ви можете отримати збірку publicKeyToken та генерувати цей блок із самого файлу .dll.

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
 <dependentAssembly>
    <assemblyIdentity name="Castle.Core" publicKeyToken="407dd0808d44fbdc" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="3.1.0.0" />
  </dependentAssembly>
</assemblyBinding>

Зауважте, що без атрибута простору імен XML (xmlns) це не буде працювати.


1
Це працювало для мене. Я змінив 'newVersion = 3.3.3' на 'newVersion = 3.1.0'
jward01

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

1
Моя проблема полягала в тому, що переспрямовування вказувало на неіснуючі збори. App.Config містив інформацію про збірку з останніх встановлених мені пакетів NuGet. Коли я знизив ці пакети пізніше, це НЕ очистило. Ця бібліотека стандартного класу .NET потрапила в тестовий проект 4.7.2. Випуск тестового проекту, представлений під час виконання ..
D-Sect

@ D-секта правильна. Якщо ваш джерело управління вказує на те, що web.config має зміни (тому що ви грали зі своїми NuGets), ви, можливо, будете розумні повернути ці прив'язки до них. Пониження NuGets не очистить обов'язкові переадресації
bkwdesign

45

Якщо ви використовуєте Visual Studio, спробуйте "чисте рішення", а потім відновіть проект.


14
Зазвичай це рішення для мене. Часто, видаляючи binі objроби це. В основному щось, про що я посилався, все ще сидить там, намагаючись задовольнити ту саму вимогу. Наприклад, стара версія - це те, на що я посилався безпосередньо, а нова - в NuGet.
Девід Бетц

Зустрівши цю проблему для декількох DLL після витягування з TFS. Це рішення зафіксувало це для мене.
Міло-

3
Працювали для мене. Вилучили папку bin amd obj і вирішили проблему.
користувач1619480

Дякую, працював і для мене, просто видаляючи папку bin.
куки

Для мене було достатньо видалити binпапку. Дивно, але я раніше намагався чистим рішенням і відновити рішення без успіху. Іноді трохи дивно.
Лев

36

Інші відповіді не допоможуть мені. Якщо ви не переймаєтесь версією, і ви просто хочете, щоб ваш додаток запускався, клацніть правою кнопкою миші посилання та встановіть для 'конкретної версії' значення false. Це працювало для мене. введіть тут опис зображення


8
Цей параметр діє лише під час компіляції . Після його складання знадобиться та сама версія збірки, з якою ви її склали. Див stackoverflow.com/questions/24022134 / ...
Ларс Truijens

22

Я щойно зіткнувся з цією проблемою, і проблема полягала в тому, що у мене була стара копія .dll у моєму каталозі налагодження програм. Ви можете також перевірити там (замість GAC), щоб побачити, чи бачите ви його.


Ми просто переходимо на інший сервер, якщо ця проблема спричиняє резервне копіювання. Працював після видалення резервних копій. Дякую :)
Jtuck

22

Я зараз всім думлю. . .

Видаліть усі <assemblyBinding> посилання з файлу .config, а потім запустіть цю команду з консолі NuGet Package Manager:

Get-Project -All | Add-BindingRedirect

Працював і для мене. Спасибі
Олег Удовицький

ти врятував мій час 👌👌
Абду Імам

4
це працює лише у тому випадку, коли формат управління пакунками є пакет.config, якщо ви використовуєте 2017 csproj без пакети.config, він працює :(
ManiVI

1
Розум офіційно вибухнув
BGilman

це приємна маленька хитрість
hexagod

21

Я додав пакет NuGet, лише для того, щоб усвідомити, що частина чорної скриньки моєї програми посилалася на старішу версію бібліотеки.

Я видалив пакет і посилався на статичний DLL-файл старішої версії, але файл web.config ніколи не оновлювався з:

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
    <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="6.0.0.0" />
</dependentAssembly>

до чого він повинен був повернутись, коли я видалив пакунок:

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
    <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.5.0.0" />
</dependentAssembly>

Я бачив це там, де, принаймні, для модуля Entity Framework, коли ви використовуєте NuGet, якщо ви клацніть правою кнопкою миші рішення, перейдіть до керування пакетами NuGet для рішення, потім встановлені пакети> Все, виберіть цей модуль, виберіть Керувати, ви можете зазвичай зніміть його з вашого проекту. Це повинно очистити подібні речі без необхідності робити це вручну --- припускаючи, що постачальник зробив належну ретельність. Але хорошого вилову, як очевидно, іноді немає, якщо саме так ви його зняли.
vapcguy

20

У моєму випадку ця помилка сталася під час роботи програми ASP.NET. Рішення полягало в тому, щоб:

  1. Видаліть папки objта binпапки в проекті

Очищення не працювало, перебудова не працювала, всі посилання були чудовими, але це не було написання однієї з бібліотек. Після видалення цих каталогів все працювало чудово.


3
Спасибі, Леві Фуллер. Ця відповідь повинна бути вище; для моєї ситуації це було місце! Для мене ця помилка почалася, коли я створив резервну копію свого web.config та Visual Studio, продовжував завантажувати цей конфігураційний файл замість фактичного конфігурації, навіть після того, як я видалив копію копії. Це вирішило це. Дякую.
BruceHill

Працює і для мене. Досі не знаю, чому це працює :(
KangarooWest

14

У моєму випадку це була стара версія DLL в C: \ WINDOWS \ Microsoft.NET \ Framework \ ~ \ Тимчасові файли ASP.NET \. Ви можете видалити або замінити стару версію, або ви можете видалити та додати назад посилання на DLL у своєму проекті. В основному будь-який спосіб створить новий покажчик на тимчасові файли ASP.NET.


2
Це працювало для мене, коли я закрив Visual Studio, зупинив IIS та видалив усі тимчасові файли ASP.NET. Зверніть увагу, що файли в папках Framework і Framework64 можуть знаходитися на 64-бітній машині, а також у папках .NET 2.0 та 4.0!
Брайан Б

Я використовував функцію пошуку меню Windows Start Menu, щоб знайти всі DLL, створені моїм рішенням, а потім видалив весь лот, де б вони не були знайдені. Я міг би це зробити без побоювання, тому що їх слід створювати лише під час налагодження моєї Visual Studio. Оскільки VS відновить такі відсутні файли DLL, і нічого, що знаходиться поза моїм рішенням, не повинно посилатися на них, для мене це була "безпечна" операція.
Зарефет

8

Для нас проблему викликало щось інше. Файл ліцензії для компонентів DevExpress включав два рядки, один для старої версії компонентів, яка не була встановлена ​​на цьому конкретному комп'ютері. Видалення старішої версії з файлу ліцензії вирішило проблему.

Прикрою частиною є те, що повідомлення про помилку не вказувало на те, яке посилання викликає проблеми.


2
У моєму випадку після оновлення до нової версії DevExpress файл .resx форми містив посилання на стару видалену версію бібліотеки. Мені довелося відкрити .resx у вигляді коду і або виправити версію на нову, або видалити недійсні записи.
Артемікс

5

Ця точно така ж помилка викидається, якщо ви намагаєтеся запізніти прив’язку за допомогою відображення, якщо збірка, до якої ви зобов’язуєтесь, отримує сильне ім'я або змінив її маркер відкритого ключа. Помилка однакова, хоча насправді не знайдено жодної збірки із зазначеним маркером відкритого ключа.

Для усунення помилки потрібно додати правильний маркер відкритого ключа (ви можете отримати його за допомогою sn -T на dll). Сподіваюсь, це допомагає.


1
Будь ласка, уточнюйте - що таке "sn -T"? І куди я додаю маркер відкритого ключа?
Моріц обидва

3
"sn.exe" - це інструмент, який постачається з Visual Studio, це інструмент командного рядка, який можна запустити з командного рядка Visual Studio. Просто запустіть командний рядок Visual Studio (з меню "Пуск"), перейдіть до папки, яка містить вашу збірку, і введіть "sn -T <assembly>", де <assembly> - повне ім'я dll. Сюди потрапляє інформація про складання "Токена". Коли ви це зробите, коли ви робите пізнє зв'язування з відображенням, введіть інформацію про маркер у рядок ідентифікатора асамблеї (тобто "Assembly = MyAssembly.dll, ток-ключ відкритого ключа = <керівництво токена>)
Гай Старбак

2
Дякую за цю відповідь. Я отримував цю помилку під час посилання на розділ конфігурації у своєму App.ini. Я нещодавно підписав асамблею, тому PublicKeyToken = null довелося оновити новим (правильним) маркером.
Ліам

5

Міна була дуже схожою на посаду Натана Бедфорда, але з невеликим поворотом. Мій проект теж посилався на змінений DLL двома способами. 1) Безпосередньо та 2) Побічно шляхом посилання на компонент (бібліотеку класів), який сам посилався на змінений DLL. Тепер мій проект Visual studio для компонента (2) посилається на правильну версію зміненого DLL. Однак номер версії самого компенсатора НЕ змінювався. В результаті встановлення нової версії проекту не вдалося замінити цей компонент на клієнтській машині.

Кінцевий результат: Пряма посилання (1) та Непряма посилання (2) вказували на різні версії зміненого dll на клієнтській машині. На моїй машині розробки це працювало чудово.

Дозвіл: Видалити додаток; Видалити всі DLLS з папки додатків; Повторно встановіть. Простий як у моєму випадку.


4

Я дозволю комусь скористатися моєю глузливою стрижні. У мене є деякі залежності від абсолютно окремої програми (назвемо це App1). DLL з цього App1 втягується в мою нову програму (App2). Кожен раз, коли я роблю оновлення в APP1, мені доведеться створювати нові DLL і копіювати їх у App2. Добре. . . Я втомився копіювати та вставляти між двома різними версіями App1, тому я просто додав префікс 'NEW_' до DLL.

Добре. . . Я здогадуюсь, що процес збирання сканує папку / bin, і коли вона відповідає щось невірно, вона змінює те саме повідомлення про помилку, як зазначено вище. Я видалив свої "new_" версії, і він створив просто денді.


4

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

Нічого, що я виправив помилку, тому поспіхом я видалив каталог BIN взагалі. Перебудував мій вихідний код, і він працював з цього моменту.


4

Я хотів би лише додати, що я створював базовий проект ASP.NET MVC 4 і додав DotNetOpenAuth.AspNet через NuGet. Це призвело до такої ж помилки, коли я посилався на невідповідний файл DLL для Microsoft.Web.WebPages.OAuth.

Щоб виправити це, я зробив Update-Packageі очистив розчин для повного відновлення.

Це працювало для мене і це наче ледачий спосіб, але час - гроші :-P


1
Аналогічна відповідь і для мене. Update-Package -reinstallперевстановлює всі пакети NuGet в одній версії.
Джесс

1
Це чудово; дякую за публікацію Я спробував усі ці інші чудові пропозиції, але це було рішення, яке зробило трюк. Подякуйте людям людям, які все ще бажають розмістити альтернативне рішення, навіть коли їх доступно 80
Hambone

4

Я отримав цю помилку під час створення сервісу зборки Team Foundation Server. Виявилося, у мене було кілька проектів у моєму рішенні, використовуючи різні версії однієї бібліотеки, додані з NuGet. Я видалив усі старі версії з NuGet і додав нову як орієнтир для всіх.

Team Foundation Server розміщує всі файли DLL в одному каталозі, і одночасно може бути лише один файл DLL певного імені.


Ще один спосіб - натиснути кнопку "Керувати пакетами NuGet для рішення ..." та оновити як ваш тестовий проект, так і проект під тестами до тієї ж (новітньої) версії.
lixonn

4

Мій app.config містить

<bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.11.0"/>

для npgsql. Якось на машині користувача мій app.exe.config зник безвісти. Я не впевнений, чи це був нерозумний користувач, глюк інсталятора чи не вийшов антивірус. Заміна файлу вирішила проблему.


3

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

Причиною стала політика видавців . Коли я видалив версії бібліотеки з GAC, я забув також видалити збірки політики видавця, тому замість використання локально розгорнутої збірки завантажувач збірки знайшов політику видавця в GAC, яка наказала йому шукати нову версію.


3

Для мене конфігурація покриття коду у файлі "Local.testtesttings" викликала "проблему". Я забув оновити файли, на які там було посилання.


3

Просто видалення вмісту папки для сміття вашого проекту та відновлення рішення вирішили мою проблему.


1
Ну що ти знаєш, ти просто допомогла мені пережити мою біду, справді дякую
Ронні Махлангу

2

очистити і відновити рішення, можливо, не замінить усі DLL з вихідного каталогу.

Що я запропоную, спробуйте перейменувати папку з "bin" на "oldbin" або "obj" на "oldobj"

а потім спробуйте створити силует знову.

incase, якщо ви використовуєте будь-які сторонні DLL ті, які вам потрібно буде скопіювати в новостворену папку "bin" або "obj" після успішної збірки.

сподіваюся, що це спрацює для вас.


1

Видалення старої збірки з розташування папки вручну, а потім додавання посилання на нові збірки може допомогти.


1

У мене така ж помилка ... У моєму випадку вона була вирішена так:

  • Спочатку, коли додаток було встановлено, тоді люди тут використовували Microsoft Enterprise Library 4.1.
  • На попередньому тижні моя машина була відформатована, і після цього сьогодні, коли я створив цю програму, тоді вона дала мені помилку, що збірка Enterprise Library відсутня.
  • Потім я встановив Microsoft Enterprise Library 5.0, яку я отримав у Google як перший запис пошуку.
  • Тоді, коли я створив програму, тоді вона дала мені вищезгадану помилку, тобто визначення маніфесту розташованої збірки не відповідає посиланням на збірку.
  • Після великої пошукової роботи та аналізу я виявив, що програма посилалася на 4.1.0.0, а DLL у папці bin має версію 5.0.0.0
  • Тоді, що я зробив, я встановив Microsoft Enterprise Library 4.1.
  • Видалено попередню посилання (5.0) та додано посилання 4.0.
  • Вбудований додаток і вуаля ... це спрацювало.

1

Ось мій метод виправлення цього питання.

  1. З повідомлення про виняток отримайте назву бібліотеки "проблема" та "очікуваний" номер версії.

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

  1. Знайдіть усі копії цього .dll у своєму рішенні, клацніть правою кнопкою миші на них і перевірте, яка версія .dll це.

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

Гаразд, тому в цьому прикладі мій .dll, безумовно, 2.0.5022.0 (тому номер версії винятку неправильний).

  1. Шукайте номер версії, який відображався у повідомленні «Виняток» у всіх .csproj- файлах у вашому рішенні. Замініть цей номер версії фактичним номером від dll.

Отже, у цьому прикладі я замінив би це ...

<Reference Include="DocumentFormat.OpenXml, Version=2.5.5631.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />

... з цим...

<Reference Include="DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />

Робота виконана!


що робити, якщо у моїх файлах csproj не вказана версія?
Джон Деметріу

1

У моєму випадку проблема була між кріслом та клавіатурою :-)

Could not load file or assembly 'DotNetOpenAuth.Core, Version=4.0.0.0,
Culture=neutral, PublicKeyToken=2780ccd10d57b246' or one of its dependencies.
The located assembly's manifest definition does not match the assembly reference.
(Exception from HRESULT: 0x80131040)

Дві або більше різних збірок хотіли використовувати іншу версію бібліотеки DotNetOpenAuth, і це не буде проблемою. Крім того, на моєму локальному комп’ютері NuGet автоматично оновлював web.config:

<dependentAssembly>
    <assemblyIdentity name="DotNetOpenAuth.AspNet" publicKeyToken="2780ccd10d57b246" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.3.0.0" newVersion="4.3.0.0" />
    </dependentAssembly>
    <dependentAssembly>
        <assemblyIdentity name="DotNetOpenAuth.Core" publicKeyToken="2780ccd10d57b246" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.3.0.0" newVersion="4.3.0.0" />
</dependentAssembly>

Тоді я зрозумів, що забув скопіювати / розгорнути новий web.config на виробничий сервер. Тож якщо у вас є ручний спосіб розгортання web.config, перевірте, чи оновлено. Якщо у вас є зовсім інший web.config для виробничого сервера, вам потрібно об'єднати ці розділи залежної збірки синхронізовано після використання NuGet.


1

Якщо ви коли-небудь отримуєте помилку на кшталт " Дефініт маніфесту розташованої збірки не відповідає посиланню на збірку ", і якщо ви оновили на вкладці Project> Manage NuGet Packages and Update в VS , перше, що можна зробити, - спробувати встановити іншу версію пакет після перевірки версій на сторінці галереї NuGet та запуску наступної команди з Console Package Manager:

PM> Install-Package YourPackageName -Version YourVersionNumber 
//Example
PM> Install-Package Microsoft.Extensions.FileProviders.Physical -Version 2.1.0

Хоча відповідь не пов'язана безпосередньо з відповідним пакетом, і його задали у зворотній бік, він є загальним, все-таки актуальним і сподіваюся, що він комусь допоможе.


1

Жодне рішення не працювало для мене. Я спробував очистити проектне рішення, видалити бін, оновити пакет, оновити пакет і так далі ... Через дві години я завантажив за замовчуванням App.config з проекту з збірками, і там я змінив неправильну довідкову версію з:

<dependentAssembly>
    <assemblyIdentity name="Microsoft.IdentityModel.Logging" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.5.0.0" newVersion="5.5.0.0" />
</dependentAssembly>

до:

<dependentAssembly>
    <assemblyIdentity name="Microsoft.IdentityModel.Logging" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-3.14.0.0" newVersion="5.5.0.0" />
</dependentAssembly>

Після цього я очистив проект, знову створив його і він спрацював. Без попередження немає проблем.


0

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

Це компілюється, але воно замінює посилання, що посилається, на поточну збірку проектів - таким чином спричиняючи помилку.

Щоб виправити це, я змінив назву проекту та властивості складання, доступні за допомогою клацання правою кнопкою миші на проект та вибору "Властивості".

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