如何获取内部文件夹的路径?

费尔南多·派瓦(Fernando Paiva)

我在WinForms C#中有一个项目,我创建了一个内部文件夹reports来添加RDLC报告,在我开发时,它的工作正常,问题是当我创建Setup要使用的安装应用程序时,InstallShield Limited Edition因为在安装应用程序后,我尝试执行报告,引发异常但不显示其异常。

开发我认为它的工作原理是因为在其中创建了可执行文件,Debug\bin并且我使用了路径,@..\..\reports\MyReport.rdlc但是在创建Setup并安装应用程序后,此文件夹reports不存在。

我该如何解决?

要打开报告,请执行。

reportViewer.LocalReport.ReportPath = @"..\..\reports\RelContasPagar.rdlc";

例外

See the end of this message for details on invoking 
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
Microsoft.Reporting.WinForms.LocalProcessingException: Ocorreu um erro durante o processamento de relatórios local. ---> System.ApplicationException: A definição do relatório 'RelFluxoCaixa' não foi especificada ---> System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Program Files (x86)\reports\RelFluxoCaixa.rdlc'.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
   at Microsoft.ReportingServices.StandalonePreviewStore.GetReportDefinition(PreviewItemContext itemContext)
   --- End of inner exception stack trace ---
   at Microsoft.ReportingServices.StandalonePreviewStore.GetReportDefinition(PreviewItemContext itemContext)
   at Microsoft.Reporting.LocalService.GetCompiledReport(PreviewItemContext itemContext, Boolean rebuild, ControlSnapshot& snapshot)
   at Microsoft.Reporting.LocalService.CompileReport()
   at Microsoft.Reporting.LocalService.Microsoft.Reporting.ILocalProcessingHost.CompileReport()
   at Microsoft.Reporting.WinForms.LocalReport.EnsureExecutionSession()
   --- End of inner exception stack trace ---
   at Microsoft.Reporting.WinForms.LocalReport.EnsureExecutionSession()
   at Microsoft.Reporting.WinForms.LocalReport.SetParameters(IEnumerable`1 parameters)
   at ControleDeVendas.reports.ViewReport.geraRelFluxoCaixa()
   at ControleDeVendas.reports.ViewReport.executeTipoRelatorio()
   at ControleDeVendas.reports.ViewReport.ViewReport_Load(Object sender, EventArgs e)
   at System.Windows.Forms.Form.OnLoad(EventArgs e)
   at System.Windows.Forms.Form.OnCreateControl()
   at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
   at System.Windows.Forms.Control.CreateControl()
   at System.Windows.Forms.Control.WmShowWindow(Message& m)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
   at System.Windows.Forms.ContainerControl.WndProc(Message& m)
   at System.Windows.Forms.Form.WmShowWindow(Message& m)
   at System.Windows.Forms.Form.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
ControleDeVendas
    Assembly Version: 1.0.0.0
    Win32 Version: 1.0.0.0
    CodeBase: file:///C:/Program%20Files%20(x86)/Iguana%20Sistemas/Controle%20de%20Vendas/ControleDeVendas.exe
----------------------------------------
System.Windows.Forms
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
NHibernate
    Assembly Version: 4.0.0.4000
    Win32 Version: 4.0.4.4000
    CodeBase: file:///C:/Program%20Files%20(x86)/Iguana%20Sistemas/Controle%20de%20Vendas/NHibernate.DLL
----------------------------------------
System.Data
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll
----------------------------------------
System.Core
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
FluentNHibernate
    Assembly Version: 2.0.3.0
    Win32 Version: 2.0.3.0
    CodeBase: file:///C:/Program%20Files%20(x86)/Iguana%20Sistemas/Controle%20de%20Vendas/FluentNHibernate.DLL
----------------------------------------
System.Configuration
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
Microsoft.GeneratedCode
    Assembly Version: 1.0.0.0
    Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Xml.Linq
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml.Linq/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.Linq.dll
----------------------------------------
MySql.Data
    Assembly Version: 6.9.8.0
    Win32 Version: 6.9.8.0
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/MySql.Data/v4.0_6.9.8.0__c5687fc88969c44d/MySql.Data.dll
----------------------------------------
System.Transactions
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.Transactions/v4.0_4.0.0.0__b77a5c561934e089/System.Transactions.dll
----------------------------------------
System.EnterpriseServices
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.EnterpriseServices/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.EnterpriseServices.dll
----------------------------------------
System.Management
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Management/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Management.dll
----------------------------------------
System.Numerics
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll
----------------------------------------
Microsoft.ReportViewer.WinForms
    Assembly Version: 11.0.0.0
    Win32 Version: 11.0.3366.16 ((SQL11_SP1_RS_Dev12-RTM).130829-0516 )
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.ReportViewer.WinForms/11.0.0.0__89845dcd8080cc91/Microsoft.ReportViewer.WinForms.dll
----------------------------------------
Microsoft.ReportViewer.WinForms.resources
    Assembly Version: 11.0.0.0
    Win32 Version: 11.0.3366.16 ((SQL11_SP1_RS_Dev12-RTM).130829-0516 )
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.ReportViewer.WinForms.resources/11.0.0.0_pt_89845dcd8080cc91/Microsoft.ReportViewer.WinForms.resources.dll
----------------------------------------
Microsoft.ReportViewer.Common
    Assembly Version: 11.0.0.0
    Win32 Version: 11.0.3366.16 ((SQL11_SP1_RS_Dev12-RTM).130829-0516 )
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.ReportViewer.Common/11.0.0.0__89845dcd8080cc91/Microsoft.ReportViewer.Common.dll
----------------------------------------
Microsoft.ReportViewer.Common.resources
    Assembly Version: 11.0.0.0
    Win32 Version: 11.0.3366.16 ((SQL11_SP1_RS_Dev12-RTM).130829-0516 )
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.ReportViewer.Common.resources/11.0.0.0_pt_89845dcd8080cc91/Microsoft.ReportViewer.Common.resources.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.

内部资料夹

在此处输入图片说明

雷扎·阿盖伊

解决方案取决于项目Build Action中这些rdlc文件属性

  • 构建动作嵌入式资源

    如果Build ActionEmbedded Resource,则无需使用文件路径。这些报告已嵌入到您的可执行文件中,您可以通过以下方式使用它们:

    reportViewer1.LocalReport.ReportEmbeddedResource = "Sample.Reports.Report1.rdlc";
    

    将报表添加到项目时,这是默认行为。Visual Studio将生成操作设置为嵌入式资源。

  • 构建操作内容复制到输出目录始终复制

    如果Build ActionIDContentCopy To Output DirectoryCopy Always那么你的文件将被你的项目在其下必须在解决相同的文件夹名称的bin文件夹下找到。因此,您可以通过以下方式找到它们:

    var path = System.IO.Path.Combine(Application.StartupPath, "Reports", "Report1.rdlc");
    reportViewer1.LocalReport.ReportPath = path;
    

笔记

  • 在中的第一个选项中Sample.Reports.Report1.rdlcSample是名称空间,Reports是文件夹名称和Report1.rdlc报告名称。
  • 如果使用了第二个选项,请确保安装程序制作工具将这些文件复制到文件\Reports下的输出目录中

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章