gpt4 book ai didi

asp.net - C# : The type 'Microsoft.Reporting.WebForms.ReportViewer' exists in both ReportingServicesWebUserInterface. dll 和 Microsoft.ReportViewer.WebForms.dll

转载 作者:行者123 更新时间:2023-12-04 02:03:06 27 4
gpt4 key购买 nike

在搜索了很多类似的帖子、解决方法之后,我决定自己发帖。

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'

更新:

大多数类似的帖子都有一个问题,即他们的 2 个冲突的 DLL 的版本为 8.0.0.0 和 9.0.0.0,或左右。或者它们驻留在 TEMPORARY 文件夹中。我不认为我的问题可以用这样的帖子来解决。

在我们的 ReportServer 上有一个 Report.aspx,它呈现一个报告。我想用我自己的文件替换这个文件,以修改页面布局,如下所示:
<%@ 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>

这需要对 MS.ReportViewer.WebForms.DLL 的引用

我的 Project.csproj 文件有这个:
<Reference Include="Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />

我无法卸载 C:\WINDOWS 中的任何 DLL,因为它说其他应用程序需要它。
WINDOWS\assembly

我也尝试修改 web.config,添加一些依赖组件,但不确定什么会有用(它对上面提到的版本差异很有用)。

此外,我在 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>

谢谢您的意见。
我期待着收到您的建议。

最佳答案

满意的解决方案!

在 aspx 中插入 ReportViewer 对象时,会自动添加 DLL 引用(并指向 GAC WebForms)。我需要这个引用(无法成功手动引用 GAC DLL),然后我删除了 aspx 中的 ReportViewer。此外,我添加了对冲突 DLL ReportingServicesWebUserInterface.DLL 的引用。这将问题(来自 post 的错误输出)移至 VS,而不是仅在 SSRS 服务器上。

添加新的 ReportViewer() 时,我会在 VS 中收到错误。

解决方法如下:给非必需的DLL一个别名(不实际在代码中使用它)。这将告诉编译器在使用 WebForms 时不使用此 DLL。看图

DLL references + alias

报表.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Report.aspx.cs" Inherits="MyWebApplication._Default" %>

<!DOCTYPE>

<html>
<head runat="server">
<title></title>
</head>
<body>
<div>
<div style="background-color:Red;width:100px;height:100px;">Hoi</div>
</div>
<form id="formID" runat="server">
test
</form>
<div>haha</div>
</body>
</html>

报表.aspx.cs
public partial class _Default : System.Web.UI.Page
{
ReportViewer ReportViewerRoot;

protected void Page_Load(object sender, EventArgs e)
{
AddRV();
}

public void AddRV()
{
ReportViewerRoot = new ReportViewer()

formID.Controls.Add(ReportViewerRoot);

SetReportViewer();
SetServerReport();
}

public void SetReportViewer()
{
ReportViewerRoot.ID = "ReportViewerRoot";
ReportViewerRoot.ProcessingMode = ProcessingMode.Remote;
}

private void SetServerReport()
{
ServerReport serverReport = ReportViewerRoot.ServerReport;

// Set the report server URL and report path
serverReport.ReportServerUrl = new Uri("http://localhost/reportserver");
serverReport.ReportPath = Request.QueryString["ItemPath"];
serverReport.Refresh();
}
}

引用来源: Extern alias walkthrough

关于asp.net - C# : The type 'Microsoft.Reporting.WebForms.ReportViewer' exists in both ReportingServicesWebUserInterface. dll 和 Microsoft.ReportViewer.WebForms.dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11228197/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com