Моя проблема была решена с помощью следующих действий:
Я оставил на dll ссылки на мой проект, но я удалил их из папки bin. Таким образом, dll перестала быть заново сгенерированной в папке Temporary ASP.NET Files, что привело к конфликту:
CS0433: The type 'Microsoft.Reporting.WebForms.ReportViewer' exists in both
'c:\\WINDOWS\assembly\GAC_MSIL\Microsoft.ReportViewer.WebForms\9.0.0.0__b03f5f7f11d50a3a\Microsoft.ReportViewer.WebForms.dll' and 'C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\project\4ec9147f\d072b522\assembly\dl3\662a86a1\009c93d3_afeccc01\Microsoft.ReportViewer.WebForms.DLL'
Средство просмотра отчетов продолжало работать не так, как ожидалось (GAC имел только версии 8 и 9 dll). Затем на сервере была установлена программа просмотра отчетов 10.0.0.0, и на этот раз появилась новая ошибка:
CS0433: The type 'Microsoft.Reporting.WebForms.ReportViewer' exists in both
'c:\\WINDOWS\assembly\GAC_MSIL\Microsoft.ReportViewer.WebForms\9.0.0.0__b03f5f7f11d50a3a\Microsoft.ReportViewer.WebForms.dll' and 'c:\\WINDOWS\assembly\GAC_MSIL\Microsoft.ReportViewer.WebForms\10.0.0.0__b03f5f7f11d50a3a\Microsoft.ReportViewer.WebForms.dll'
Мне показалось странным, что этот конфликт произошел между различными версиями dll, и на этот раз было решено добавить следующий тег в файл web.config:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" appliesTo="v2.0.50727">
<dependentAssembly>
<assemblyIdentity name="Microsoft.ReportViewer.WebForms" publicKeyToken="b03f5f7f11d50a3a"/>
<bindingRedirect oldVersion="9.0.0.0" newVersion="10.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
Готово. Это работало без каких-либо конфликтов, и было возможно экспортировать отчеты.
Моя проблема была решена, но у меня все еще есть одно сомнение, и я надеюсь, что кто-нибудь поможет мне с этим:
Почему на сервере возник конфликт между двумя DLL из GAC_MSIL в разных версиях? Разве сервер не должен искать только ту версию, на которую я ссылался в своем проекте и которая указана в файле Web.config? (10.0.0.0)
Имеет ли он какое-либо отношение к файлу machine.config?