it-swarm-eu.dev

HRESULT: 0x80131040: Definice manifestu umístěného shromáždění neodpovídá odkazu sestavy

Definice manifestu umístěného v sestavě neodpovídá odkazu sestavy

dostat to, když běží nunit přes ncover. Nějaký nápad?

47
chethan

Toto je nesoulad mezi sestavami: DLL odkazované ze sestavy nemá očekávaný podpis metody.

Vyčistěte řešení, vše znovu vytvořte a zkuste to znovu. 

Také buďte opatrní, pokud je to odkaz na něco, co je v GAC; mohlo by to být něco, co někde ukazuje na nesprávnou verzi. Ujistěte se, že (prostřednictvím vlastností každé reference) je vybrána správná verze nebo že je nastavena hodnota false.

44
Jeremy McGee

Nedávno jsem měl tento problém a běžel 'depend.exe' na dll v otázce. Ukázalo se mi, že dll byl kompilován v x86, zatímco některé závislosti byly kompilovány v x64.

Pokud máte stále problémy, doporučuji použít depend.exe.

9
Kyle

V mém případě projektu služeb odpočinku wcf jsem musel přidat webovou stránku runtime do web.config, kde byla požadovaná dll:

  <runtime>
    <assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="DotNetOpenAuth.Core" publicKeyToken="2780ccd10d57b246" />
        <bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" />
      </dependentAssembly>
.
.
.
  <runtime>
6
fguigui

Obvykle k tomu dochází, když verze jedné z testovacích prostředí neodpovídá vývojovému prostředí. 

Vyčistěte a vytvořte si své řešení a vezměte všechny své knihovny DLL do prostředí, ve kterém k chybě dochází, a to by mělo být opraveno

V mém případě jsem tuto zprávu dostal při ladění:

"Error while calling service <ServiceName> Could not load file or Assembly 'RestSharp, 
Version=105.2.3.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. 
The located Assembly's manifest definition does not match the Assembly reference.
(Exception from HRESULT: 0x80131040)"

Způsobit

V mém projektu jsem měl 2 interní komponenty pomocí RestSharp, ale obě komponenty mají jinou verzi RestSharp (jedna s verzí 105.2.3.0 a druhá s verzí 106.2.1.0).

Řešení

Buď upgradujte jednu ze součástí na novější nebo nižší. V mém případě to bylo bezpečnější pro mě downgrade z 106.2.1.0 na 105.2.3.0 a než aktualizovat komponentu v NuGet správci balíčků. Takže obě komponenty mají stejnou verzi. 

Přestavět a fungovalo to bez problémů.

Při přístupu k souborům projektu z různých počítačů přes sdílenou složku jsem narazil na podobné problémy. V mém případě clean + reabuild nepomohlo. Měl odstranit složky bin a objekty z výstupního adresáře.

3
Håkan Löfqvist

Moje problémy byly vyřešeny odstraněním celé runtime části

<runtime>
        <assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
3
kyorilys

V mé konkrétní situaci jsem to dostal v důsledku CreateObject provedeného ve VBScript. Příčinou v mém případě byla verze shromáždění, která sídlila v GAC, která byla starší než ta, kterou jsem sestavil. (Snažím se vyřešit dřívější problém, nainstaloval jsem shromáždění v GAC).

Pokud tedy pracujete s viditelnými třídami COM, pak před registrací nového shromáždění pomocí programu RegASM se ujistěte, že jste odebrali starší verze svého shromáždění z GAC.

2

V mém případě se to stalo kvůli WebGrease. Aktualizoval jsem ji na nejnovější verzi (pomocí NuGet), ale to bylo v rozporu se závislostmi. Ručně jsem přidal níže uvedený kód do web.config a fungoval jako kouzlo.

<dependentAssembly>
    <assemblyIdentity name="WebGrease" culture="neutral" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930" />
</dependentAssembly>

Mějte prosím na paměti, že moje řešení bude fungovat pouze v případě, že se chyba týká WebGrease. Kód chyby zůstane stejný. Také je třeba změnit verzi v oldVersion a newVersion.

1
sandiejat

Prostě smazaná složka bin a projekt obnovuje vše a teď to funguje.

1
j.j.a.c.k.

Do tohoto problému jsem narazil v projektu web api.

Projekt Api používal nulový balíček knihovny s verzí 3. A jedna z odkazovaných sestav říkala, že X používá starší verzi stejného balíčku nuget s verzí 2.

Pokaždé, když je sestaveno odkazované sestavení nebo je přestavěn jiný projekt odkazující na X, sestavy projektu api se aktualizují na nižší verzi. A dostal chybu v tomto shromáždění.

Rebuild funguje, ale v mém případě jsem chtěl dlouhodobé řešení.

Udělal jsem sestavy odkaz stejnou verzi nuget balíčku.

Jen další případ. Měla jsem tuto chybu z Managed Debugging Assistant při první deserializaci souboru XML do objektů ve VS2010/.NET 4. DLL obsahující třídy pro objekty je generováno v události po sestavení (obvyklé věci ve stylu Microsoft) . Pracovalo se velmi dobře na několika projektech ve stejném řešení, objevil se problém, když v jednom z dalších projektů. Chybový text:

Byla zjištěna vazba BailFailure Zpráva: Sestava s zobrazeným názvem MyProjectName.XmlSerializers 'se nepodařilo načíst v kontextu vazby Aplikace' LoadFrom 'AppDomain s ID 1. Příčinou selhání bylo: System.IO.FileLoadException: Nelze načíst soubor nebo sestavu MyProjectName.XmlSerializers, verze = 1.0.0.0, Culture = neutral, PublicKeyToken = null 'nebo jeden z jeho závislostí. Definice manifestu Shromáždění neodpovídá odkazu shromáždění. (Výjimka z HRESULT: 0x80131040)

Vzhledem k tomu, že některé odpovědi zde naznačují nesoulad platformy, všiml jsem si, že 3 projekty a řešení měly zvolenou konfiguraci „smíšených platforem“ a 3 projekty byly sestaveny pro platformu x86 namísto AnyCPU. Nemám žádný kód specifický pro platformu (i když některé knihovny dodávané s dodavateli spoléhají na několik knihoven x86). Nahradil jsem všechny výskyty x86 do AnyCPU tímto:

for a in $( egrep '(x86|AnyCPU)' */*.csproj *.sln -l  ) ; do echo $a ; sed -i 's/x86/AnyCPU/' $a ; done

Pak by se projekt postavil, ale všechny možnosti spuštění nebo ladění kódu by byly zašedlé. Restartování VS by nepomohlo. 

Vrátil jsem se s git odkazy na x86-knihovny, jen v případě, ale udržel AnyCPU pro všechny kód I kompilovat.

Následující F5 nebo Start Debugging Button je Greyed Out pro aplikaci Winform? I jsem vyložil a znovu naložil startovní projekt (byl to také ten první, kde se poprvé objevil problém).

Poté se vše vrátilo na místo: program funguje bez počáteční chyby.

Viz http://www.catb.org/jargon/html/R/rain-dance.html , http://www.catb.org/jargon/html/V/voodoo-programming.html nebo http://www.catb.org/jargon/html/I/incantation.html a odkazy tam.

0

To se mi stalo, když jsem aktualizoval web.config bez aktualizace všech odkazovaných dll.

Použitím správného filtru diff (pozor na výchozí filtr adresáře Meld, který ignoruje binární soubory) byl zjištěn rozdíl, soubory byly zkopírovány a vše fungovalo dobře.

0
andrej

Měl jsem problém, kde by nebylo najít Paypal shromáždění a bylo to proto, že jsem jmenoval své řešení Paypal. Jsem si jistý, že to nebude odpověď pro nikoho, ale myslel jsem, že bych to stejně sdílel: C # ASP.NET MVC Paypal nenalezl shromáždění

0
davelowe85

Tuto chybu jsem dostal při práci v Designeru. Byl jsem rozvíjet ve VS 2012, ale "modernizován" na 2017 v posledních několika dnech. Řešení bylo zavřít a znovu otevřít VS. 

Může to souviset s chybou, kterou jsem viděl jinde , kde Referenční manažer nefunguje? V této situaci se při pokusu o přidání odkazu v aplikaci Solution Explorer zobrazí následující chybová zpráva:

"Chyba HRESULT E_FAIL byla vrácena z volání komponenty COM ."

Moje řešení bylo zavřít řešení, znovu otevřít ve VS2012, přidat odkaz, zavřít 2012 a znovu otevřít 2017. Směšné, že 2017 by měl být propuštěn s takovou zjevnou chybu.

0
markysdad

Vymazám soubor settings.lic z projektu a začnu pracovat!

0
Marko

Stačí zkontrolovat webový konfigurační soubor a tento kód odstranit: -

<dependentAssembly>
    <assemblyIdentity name="itextsharp" publicKeyToken="8354ae6d2174ddca" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.5.13.0" newVersion="5.5.13.0" />
  </dependentAssembly>
0
Hardeep Singh