C#: Der Typ 'Microsoft.Die Berichterstattung.WebForms.ReportViewer' existiert in beiden ReportingServicesWebUserInterface.dll und Microsoft.ReportViewer.WebForms.dll
Haben gesucht eine ganze Menge von similair Beiträge, workarounds, habe ich beschlossen, meine eigene post.
Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.
Compiler Error Message: CS0433:
The type
'Microsoft.Reporting.WebForms.ReportViewer'
exists in both
'c:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\reportmanager\Bin\ReportingServicesWebUserInterface.dll'
and
'c:\WINDOWS\assembly\GAC_MSIL\Microsoft.ReportViewer.WebForms\9.0.0.0__b03f5f7f11d50a3a\Microsoft.ReportViewer.WebForms.dll'
Update:
Meisten similair Beiträge haben als problem, dass Ihre 2 Konflikt-DLLs eine version 8.0.0.0 und 9.0.0.0, oder so. Oder befinden Sie sich im TEMPORÄREN Ordner. Ich denke nicht, dass mein problem gelöst werden kann similairly mit solchen posts.
Auf unserer ReportServer gibt es einen Bericht.aspx rendert einen Bericht. Ich möchte diese Datei ersetzen mit eigenen ein, ändern Sie die Seite layout, in etwa so:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Report.aspx.cs" Inherits="WebApplication._Default" %>
<%@ Register
Assembly="Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
Namespace="Microsoft.Reporting.WebForms"
TagPrefix="rsweb" %>
<!DOCTYPE>
<html>
<head runat="server"></head>
<body>
<div>
<form id="reportform" runat="server">
<div>
<rsweb:ReportViewer
ID='ReportViewerRoot'
runat='server'
ProcessingMode='Remote'
Height='100%'
Width='100%'
AsyncRendering='False'
SizeToReportContent='True'
/>
</div>
</form>
</div>
</body>
</html>
Dies erfordert einen Verweis auf MS.ReportViewer.WebForms.DLL
Mein Projekt.csproj-Datei ist diese:
<Reference Include="Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
War ich nicht in der Lage, deinstallieren Sie alle DLLs in C:\WINDOWS,, weil es sagte, war es erforderlich, für andere Anwendungen.
Habe ich auch schon versucht zu ändern web.config, indem einige dependentAssemnly, aber nicht sicher, was nützlich wäre (Es war nützlich für die version, die oben genannten Unterschiede).
Weiter habe ich diese Zeilen im web.config:
<compilation defaultLanguage="c#" debug="false" tempDirectory="C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\RSTempFiles\">
<assemblies>
<clear />
<add assembly="ReportingServicesWebServer" />
</assemblies>
</compilation>
Vielen Dank für Ihre Eingabe.
Ich freue mich über Ihre Anregungen.
Es ist mir unklar, wie Sie kamen zu diesem problem und welche Lösungen Sie versucht haben, nicht funktioniert hat? Eine chance können Sie näher auf einige Schritte, mit denen wir reproduzieren diese situation?
Das update hilft, aber ich bin mir noch nicht ganz sicher, was Ihre situation ist. Vielleicht ein BindingRedirect umleiten Anrufe für version 8 auf version 9 wird Ihnen helfen?
Hey Jeroen, vielen Dank für Ihre Antwort. Welche zusätzlichen Informationen würden Sie gerne erhalten? Dein Vorschlag ist etwas, das habe ich schon versucht. Der deal ist, dass es nicht über die verschiedenen Versionen - aber verschiedene DLLs mit dem gleichen namespace und Klasse. Die 'Bin\ReportingServicesWebUserInterface.dll' scheint auch zu enthalten, Webforms.ReportViewer.
InformationsquelleAutor EricG | 2012-06-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zufriedenstellenden Lösung!
Beim einfügen ein ReportViewer-Objekt in der aspx -, die DLL-Verweis wird automatisch Hinzugefügt (und verweist auf die GAC WebForms). Ich brauche diese Referenz (Konnte nicht erfolgreich manuell die Referenzierung GAC-DLLs), dann Entferne ich den ReportViewer in der aspx. Auch, füge ich den Verweis auf die widersprüchliche DLL ReportingServicesWebUserInterface.DLL. Dadurch verschiebt sich das problem (error-Ausgang von post) VS, statt nur auf dem SSRS-Server.
Beim hinzufügen eines neuen ReportViewer() bekomme ich die Fehlermeldung in VS.
Die Lösung ist wie folgt: geben Sie die nicht-benötigten DLL einen alias (ohne tatsächlich im code). Dies teilt dem compiler mit, dass diese DLL nicht verwendet werden bei der Verwendung von WebForms. Siehe Bild
Bericht.aspx
Bericht.aspx.cs
Quellverweis: Extern alias walkthrough
InformationsquelleAutor EricG
Ich mein problem beheben
Entfernen Einer Assembly aus meinem Web.Config
In Meinem Fall Version 10 und 11 zusammen kommt.
Ich Entferne folgenden code aus, indem Sie Config
InformationsquelleAutor Dilranjan Singh
Nicht in diese Antwort, aber in der nächsten Antwort habe ich die befriedigende Lösung!! 🙂
Diese sehr Lösung funktioniert auch, aber ist nicht gut für die Entwicklung-Zyklus/Lesbarkeit/Wartbarkeit.
Meinen Bericht.aspx-Datei enthält nichts, aber diese Zeile:
Meinen Bericht.aspx.cs code enthalten, wie zum Beispiel:
Meine ReportManager/Web.config enthält zusätzliche tags:
P. s.:
In keiner Weise bin ich in der Lage zu kombinieren, html-code im Bericht.aspx mit einem reportviewer (weder aspx oder cs).
Noch kann ich hinzufügen, das ReportViewer-dynamisch in der aspx-mithilfe
<% AddRV(); %>
P. s.s.
Die Web -.config half mir lösen diese Fehler:
InformationsquelleAutor EricG
Gehen
HKEY_CLASSES_ROOT\Installer\Assemblies\Global
suchen für die Montage und löschen Sie die komplette Zeile durch rechten Mausklick auf, und wählen Sie löschen.
InformationsquelleAutor Shakti Raturi
Auch ein Grund, warum dies auftreten kann ist, wenn Sie geschachtelte Anwendungen. dh. App2 innerhalb von App1.
App1 web.config vielleicht mess mit App2. Stellen Sie sicher, dass Sie nicht auf verschiedene Versionen der gleichen Assembly.
InformationsquelleAutor Jason Geiger
Enthält im web.config einen tag dependentAssembly zu zwingen, die spezifischen version:
InformationsquelleAutor Rigel Aguilar