Ich erhalte die folgende Ausnahme, wenn eine andere Baugruppe aus einer Cominterop -Baugruppe verwendet wird: < /p>
System.io.FilenotFoundException: Datei oder Montage kann keine Datei oder Montage laden 'WPF.Tools.csharp (...)'. Das System kann die angegebene Datei nicht finden. Es wird angezeigt, damit die Baugruppe vorhanden, gefunden und geladen ist. .NET 8 WPF -Klassenbibliotheksprojekt (C#): < /p>
Code: Select all
net8.0-windows10.0.19041.0
x86
true
AnyCPU;x86
enable
true
enable
Es enthält eine Schnittstelle und eine Klasse:
isimplehost.cs:
Code: Select all
using System.Runtime.InteropServices;
namespace Wpf.ComInterop
{
[ComVisible(true)]
[Guid("C2AFE629-B749-41E2-9F9E-98DF063A1D13")]
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
public interface ISimpleHost
{
void ShowWindow();
}
}
SimpleCominteropClass.cs:
Code: Select all
using System.Runtime.InteropServices;
using System.Windows;
namespace Wpf.ComInterop
{
[ComVisible(true)]
[Guid("C3634287-1BFA-410A-BEE7-634F080E9682")]
[ClassInterface(ClassInterfaceType.None)]
public class SimpleComInteropClass : ISimpleHost
{
public SimpleComInteropClass()
{
}
public void ShowWindow()
{
try
{
var window = new SimpleWindow();
window.ShowDialog();
}
catch (Exception ex)
{
MessageBox.Show(String.Format("Error showing window: {1}{0}{0}{2}", Environment.NewLine, ex.Message, ex.InnerException), "Error");
}
}
}
}
SimpleWindow.xaml:
Code: Select all
< /code>
Zweite Assemblierung: wpf.tools.csharp < /h2>
Die zweite Baugruppe, die von der wichtigsten verwendet werden soll, ist auch ein C# WPF -Klassenbibliotheksprojekt: < /p>
net8.0-windows10.0.19041.0
AnyCPU;x86
enable
true
enable
< /code>
Es hat eine einzelne Benutzersteuerung: < /p>
< /code>
bauen < /h2>
Diese Baugruppe baut ohne Fehler auf. Ich habe einen wpf.cominterop.tlb
mit DSCOM32 generiert und registriert und die wpf.cominterop.comhost.dll regsvr32 . SimpleCominteropOPCASS :
Code: Select all
_simpleObject = new SimpleComInteropClass();
_simpleObject.ShowWindow();
< /code>
Dies funktioniert wie erwartet. Ich habe ein äquivalentes Projekt in VB6 erstellt. Die WPF_COMINTEROP
-Artage ist in der Liste der VB6 -IDE -Referenzen verfügbar, sodass sie dem Projekt als Referenz hinzugefügt wurde. Mit dem Standardform1 habe ich mit diesem Ereignishandler einen Befehl1 für die Schaltfläche "Klick Ereignis:
" hinzugefügt:
Code: Select all
Private Sub Command1_Click()
Dim objWpf As New SimpleComInteropClass
objWpf.ShowWindow
End Sub
Wenn ich auf die Taste klicke, erhalte ich die oben genannte Ausnahme:
Ich erhalte die folgende Ausnahme, wenn eine andere Baugruppe aus einer Cominterop -Baugruppe verwendet wird: < /p>
System.io.FilenotFoundException: Datei oder Montage kann keine Datei oder Montage laden 'WPF.Tools.csharp (...)'. Das System kann die angegebene Datei nicht finden. Es wird angezeigt, damit die Baugruppe vorhanden, gefunden und geladen ist. .NET 8 WPF -Klassenbibliotheksprojekt (C#): < /p>
[code]
net8.0-windows10.0.19041.0
x86
true
AnyCPU;x86
enable
true
enable
[/code]
Es enthält eine Schnittstelle und eine Klasse:
[b] isimplehost.cs[/b]:
[code]using System.Runtime.InteropServices;
namespace Wpf.ComInterop
{
[ComVisible(true)]
[Guid("C2AFE629-B749-41E2-9F9E-98DF063A1D13")]
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
public interface ISimpleHost
{
void ShowWindow();
}
}
[/code]
[b]SimpleCominteropClass.cs[/b]:
[code]using System.Runtime.InteropServices;
using System.Windows;
namespace Wpf.ComInterop
{
[ComVisible(true)]
[Guid("C3634287-1BFA-410A-BEE7-634F080E9682")]
[ClassInterface(ClassInterfaceType.None)]
public class SimpleComInteropClass : ISimpleHost
{
public SimpleComInteropClass()
{
}
public void ShowWindow()
{
try
{
var window = new SimpleWindow();
window.ShowDialog();
}
catch (Exception ex)
{
MessageBox.Show(String.Format("Error showing window: {1}{0}{0}{2}", Environment.NewLine, ex.Message, ex.InnerException), "Error");
}
}
}
}
[/code]
[b]SimpleWindow.xaml[/b]:
[code]
< /code>
Zweite Assemblierung: wpf.tools.csharp < /h2>
Die zweite Baugruppe, die von der wichtigsten verwendet werden soll, ist auch ein C# WPF -Klassenbibliotheksprojekt: < /p>
net8.0-windows10.0.19041.0
AnyCPU;x86
enable
true
enable
< /code>
Es hat eine einzelne Benutzersteuerung: < /p>
< /code>
bauen < /h2>
Diese Baugruppe baut ohne Fehler auf. Ich habe einen wpf.cominterop.tlb [/code] mit DSCOM32 generiert und registriert und die wpf.cominterop.comhost.dll regsvr32 . SimpleCominteropOPCASS :
[code]_simpleObject = new SimpleComInteropClass();
_simpleObject.ShowWindow();
< /code>
Dies funktioniert wie erwartet. Ich habe ein äquivalentes Projekt in VB6 erstellt. Die WPF_COMINTEROP [/code] -Artage ist in der Liste der VB6 -IDE -Referenzen verfügbar, sodass sie dem Projekt als Referenz hinzugefügt wurde. Mit dem Standardform1 habe ich mit diesem Ereignishandler einen Befehl1 für die Schaltfläche "Klick Ereignis:
" hinzugefügt:
[code]Private Sub Command1_Click()
Dim objWpf As New SimpleComInteropClass
objWpf.ShowWindow
End Sub
[/code]
Wenn ich auf die Taste klicke, erhalte ich die oben genannte Ausnahme: