2016-08-30 5 views
1

Ich versuche, einen vermittelten WinRT-Silent-PDF-Druckdienst für eine UWP-Anwendung mit this zu entwickeln.Angeforderter Windows-Laufzeittyp 'PrintService.PDFPrinting' ist nicht registriert

Ich habe alle Schritte zum Erstellen einer vermittelten WinRT-Komponente verfolgt. Aber wenn ich den Dienst auf dem UWP App aufrufen, erhalte ich die folgenden Fehler:

Requested Windows Runtime type 'PrintService.PDFPrinting' is not registered.

Meine Brokered Komponentenklasse:

public sealed class PDFPrinting 
{ 
    public Boolean PrintPDFs(string pdfFileName) 
    { 
     try 
     { 
      Process proc = new Process(); 
      proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
      proc.StartInfo.Verb = "print"; 

      //Define location of adobe reader/command line 
      //switches to launch adobe in "print" mode 
      proc.StartInfo.FileName = 
       @"C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe"; 
      proc.StartInfo.Arguments = String.Format(@"/p /h {0}", pdfFileName); 
      proc.StartInfo.UseShellExecute = false; 
      proc.StartInfo.CreateNoWindow = true; 

      proc.Start(); 
      proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
      if (proc.HasExited == false) 
      { 
       proc.WaitForExit(10000); 
      } 

      proc.EnableRaisingEvents = true; 

      proc.Close(); 
      return true; 
     } 
     catch 
     { 
      return false; 
     } 
    } 
} 

Wie ich es nennen:

var path = @"C:\Users\...\mydocument.pdf"; 
var service = new PrintService.PDFPrinting(); 
service.PrintPDFs(path); 

Mein extenssion :

<Extension Category="windows.activatableClass.inProcessServer"> 
<InProcessServer> 
    <Path>clrhost.dll</Path> 
    <ActivatableClass ActivatableClassId="PrintService.PDFPrinting" ThreadingModel="MTA"> 
    <ActivatableClassAttribute Name="DesktopApplicationPath" Type="string" Value="C:\Development\MyApp" /> 
    </ActivatableClass> 
</InProcessServer> 
</Extension> 
+0

Es wird versucht, Ihnen zu sagen, dass PrintService.PDFPrinting offenbar nicht Teil Ihres appx-Manifests ist. Stellen Sie sicher, dass das Extension-Element in Ihrer AppxManifest.xml-Datei angezeigt wird. –

+0

@HansPassant Ich habe es überprüft. Es ist dort in der AppxManifest.xml-Datei. – FragoDeFalne

+1

http://Stackoverflow.com/a/20637241/17034 –

Antwort

0

Ich fand die Lösung Mein Wertpfad in der Erweiterung UWP Package.appxmanifest war falsch.

I verwiesen:

<ActivatableClassAttribute Name="DesktopApplicationPath" Type="string" Value="C:\Development\MyApp" /> 

Statt:

<ActivatableClassAttribute Name="DesktopApplicationPath" Type="string" Value="C:\Development\MyApp\MyApp\Debug" /> 

das ist, wo alle zugehörigen Support-Dateien und der Proxy/Stub-DLL befinden. Details gefunden here

Verwandte Themen