私はservar障害でアクティブレポートの結果の相互運用機能アセンブリを生成します。regsvr32 を使用して、arpro2.dll
をアクティブレポートのdllを登録: Main.cs.netからActive Reports 2.0 comコンポーネントを呼び出す方法は?
using System.Diagnostics;
using DDActiveReports2;
namespace TestActiveReports
{
internal class Program
{
private static void Main()
{
var r = new ActiveReportClass();
r.LoadLayout(@"C:\temp\RPTCUM20F.rpx");
var s = r.Sections;
Debug.Assert(s.Count() > 0);
}
}
}
.csproj:
<COMReference Include="DDActiveReports2">
<Guid>{A7973091-BC64-4F16-84D4-A4BE059B4927}</Guid>
<VersionMajor>2</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>tlbimp</WrapperTool>
<Isolated>False</Isolated>
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference>
プロジェクトがありますx86に構築するように設定されているので、bitnessは問題ではないと思います。
型「System.Runtime.InteropServices.COMException」の未処理の例外はTestActiveReports.exe
で発生しました追加情報:サーバーが例外をスローしました。 (HRESULTからの例外:0x80010105(RPC_E_SERVERFAULT))DebugDiagは、Win32アクセス違反の例外がしかし、.NETでこのCOMコンポーネントを参照し、その後、COMコンポーネントにそれをコンパイルし、VB6でこのスタブラッパーを書い
を投げされて明らかに
作品:
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
Persistable = 0 'NotPersistable
DataBindingBehavior = 0 'vbNone
DataSourceBehavior = 0 'vbNone
MTSTransactionMode = 0 'NotAnMTSObject
END
Attribute VB_Name = "VbActiveReport"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = True
Private ar As activeReport
Option Explicit
'CONSTRUCTOR
Private Sub Class_Initialize()
Set ar = New activeReport
End Sub
'DECONSTRUCTOR
Private Sub Class_Terminate()
Set ar = Nothing
End Sub
'PROPERTIES
Public Property Get Sections() As Sections
Set Sections = ar.Sections
End Property
'METHODS
Public Sub LoadLayout(path As String)
ar.LoadLayout path
End Sub
すべての関数とタイプのVB6ラッパーを書くことはどちらも汚いと感じます。また、家庭用醸造発電機で半日を過ごした後も、私が最初に思ったほど些細なことはしません。
なぜ.NET => COMはVB6 =>アクティブなレポートからコンパイルされますが、.NET =>アクティブなレポートは失敗しますか?
編集: ここでこのイベントログエントリである
Faulting application name: TestActiveReports.vshost.exe, version:12.0.30723.0, time stamp: 0x53cf4fe6
Faulting module name: arpro2.dll, version: 2.5.0.1322, time stamp: 0x4d252d15
Exception code: 0xc0000005
Fault offset: 0x0002b2a0
Faulting process id: 0x2368
Faulting application start time: 0x01d1b9b4eadc0f51
Faulting application path: C:\Users\myuser\Documents\Visual Studio 2013\Projects\TestActiveReports\TestActiveReports\bin\Debug\TestActiveReports.vshost.exe
Faulting module path: C:\temp\Active reports\arpro2.dll
Report Id: 2980b2a1-25a8-11e6-82c6-c4d987b41689
あまり詳細:(
RPC_E_SERVERFAULTを効率的にデバッグすることはできません。これは、COMサーバープロセスであり、何か厄介なものがありました。アクセス違反は、彼らが来るほど厄介で不釣り合いです。 Windowsアプリケーションログで何も通知されない場合は、ベンダーからこの問題のトラブルシューティングに役立つ必要があります。この問題を再現する小さなレプロプロジェクトを準備しておいてください。 –