Ich habe eine Funktion, die eine Privatezurückgibt:.NET Private - wie Dateisperren freizugeben, wenn Sie fertig
Public Shared Function GetCustomFonts() As PrivateFontCollection
Dim result = New PrivateFontCollection
Dim customFontFiles = {"Garamond.TTF", "Garamond-Bold.TTF", "Garamond-Italic.TTF", "EurostileExtended-Roman-DTC.TTF"}
For Each fontFile In customFontFiles
result.AddFontFile(Hosting.HostingEnvironment.MapPath("/Includes/" & fontFile))
Next
Return result
End Function
ich dann die Funktion wie folgt verwenden:
Using customFonts = Common.GetCustomFonts()
' Do some stuff here
End Using
Ich würde erwarten, dass die Dateien werden zwar veröffentlicht, sind aber weiterhin gesperrt: Ich erhalte den folgenden Fehler: 'Die Aktion kann nicht abgeschlossen werden, da die Datei im System geöffnet ist. Schließen Sie die Datei und versuchen Sie es erneut.
Das Herunterfahren der Website in IIS hilft nicht; Wir müssen den App-Pool recyceln, damit er veröffentlicht werden kann.
Kann jemand empfehlen, PrivateFontCollection so zu verwenden, dass die Dateien zwischen den Anwendungen freigegeben werden?
Meine einzige Idee bisher ist, die Schriftart in den Speicher zu laden und stattdessen AddMemoryFont zu verwenden. Auf diese Weise kann ich garantieren, dass PrivateFontCollection niemals die Dateien berührt. – extremeandy
Für eine mögliche Antwort siehe http://StackOverflow.com/Questions/26671026/How-To-Delete-the-file-of-a-privatefontcollection-addfontfile – Horcrux7
Hinzugefügt Connect Bug https://connect.microsoft.com/ VisualStudio/Feedback/Details/1379843 – Peter