Ссылка на сборку не соответствует найденному определению сборки - PullRequest
0 голосов
/ 17 марта 2012

При использовании средства просмотра журнала привязки сборки для проверки причины ошибки FileNotFoundException при запуске приложения c # я получил следующее в одном из файлов журнала ошибок:

LOG: Post-policy reference: msvcm90, Version=9.0.30729.4974, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
    LOG: Did not find assembly in DEVOVERRIDE path C:\Documents and Settings\All Users\Application Data\Red Gate\.NET Reflector\DevPath
    LOG: GAC Lookup was unsuccessful.
    LOG: Attempting download of new URL file:///F:/Stuff/Muaz/Programming/C#/Spatial and Temporal Research/Spatial and Temporal Research/bin/Debug/msvcm90.DLL.
    LOG: Assembly download was successful. Attempting setup of file: F:\Stuff\Muaz\Programming\C#\Spatial and Temporal Research\Spatial and Temporal Research\bin\Debug\msvcm90.dll
    LOG: Entering run-from-source setup phase.
    LOG: Assembly Name is: msvcm90, Version=9.0.30729.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
    WRN: Comparing the assembly name resulted in the mismatch: Revision Number
    ERR: The assembly reference did not match the assembly definition found.
    ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.

Я пытался использовать привязкупрямо в файле app.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
  <runtime>
        <assemblyBinding>
            <dependentAssembly>
                <assemblyIdentity name="msvcm90"
                                  publicKeyToken="b03f5f7f11d50a3a" />
                <bindingRedirect oldVersion="9.0.30729.4974"
                                 newVersion="9.0.30729.1"/>
            </dependentAssembly>        
        </assemblyBinding>
    </runtime>
</configuration>

, но возникает та же ошибка.Я пытался найти DLL-файл msvcm90, но не смог найти версию 9.0.30729.4974 (возможно, потому что он старый).Любые другие способы решить эту проблему?Благодарю.

1 Ответ

1 голос
/ 17 марта 2012

У вас есть зависимость от управляемой библиотеки DLL поддержки времени выполнения C, поставляемой с VS2008. Версия, которую вы указали, очень старая и не принадлежит к каталогу, в который вы ее поместили, ее необходимо развернуть в параллельном кэше Windows (c: \ windows \ winsxs). Сначала удалите файл, вам может повезти.

Лучше всего обратиться к владельцу продукта или библиотеки DLL, которая использует эту библиотеку поддержки, для правильной процедуры установки. Следующим лучшим вариантом является установка библиотек поддержки VC ++, вы можете скачать установщик здесь . Я не знаю, является ли это верной версией, было много исправлений безопасности, так как это было выпущено. Запустите Центр обновления Windows после его установки.

...