2017-12-20 4 views
0

Ich erstelle ein Excel-Addin-Projekt mit Visual Studio-Tools für Office (VSTO) in Visual Studio 2015. Ich muss hinzufügen/das Firmenlogo - ein PNG Datei zu diesem Add-In. Ich habe die Logo-Bilddatei zu Visual Studio Resources hinzugefügt. Ich habe versucht, die nach dem Bild in den VS-Ressourcen in der Addin enthält - die nichtZugriff auf Resouce-Bild in Visual Studio 2015 - speziell Pfad

var myLogo = Properties.Resources.CompanyLogo; 
myWorkSheet.Shapes.AddPicture(myLogo, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoTrue, 10, 20, 250, 40); 

ich eine Fehlermeldung erhalten hätten arbeiten, die im String-Format mylogo erforderlich sein - wie ein Dateipfad Format. Also habe ich folgendes versucht, was funktioniert hat - aber ..... das scheint nur etwas klugig zu sein. Ich habe umfassen die Verwendung von System.IO, ....

var outPutDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase); 
string myLogo = outPutDirectory.Substring(6, outPutDirectory.Length - 6) + @"\CompanyLogo.png";  

myWorkSheet.Shapes.AddPicture(myLogo, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoTrue, 10, 20, 250, 40); 

Ich habe auch CompanyLogo.png Datei in den Stammordner meines AddIn-Projekt und ich stellte es in das Ausgabeverzeichnis ich das Kompilieren jedes Mal kopieren Projekt. Also, die 2. Routine hier DOES funktionieren, aber ich denke, ich sollte/würde gerne die Datei im Bereich Projektressourcen finden. Wie kann ich einen Dateipfad für meine Companylogo.png-Ressource von Project.Resources abrufen?

Wenn dies nicht möglich ist - was ist der Punkt der Verwendung/Resources-Eigenschaft von Visual Studio? Ich denke nur, dass ich irgendwo etwas vermisse.

Antwort

0

OK, das Problem, das ich mit der obigen Methode hatte, war, dass es irgendwie statisch war. Nun, ich endlich herausgefunden, wie die Ressource-Eigenschaft verwenden, um es weniger statisch:

Image img = Properties.Resources.CompanyLogo; 
var outPutDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 
img.Save(outPutDirectory + @"\CompanyLogo.png", ImageFormat.Png); 
myWorkSheet.Shapes.AddPicture(outPutDirectory + @"\CompanyLogo.png", Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoTrue, 0, 0, 260, 50); 

Jetzt kann ich die png speichern, wo die Montage ausgeführt wird stattdessen einige Weg von hartzucodieren.

Aber ich habe eine andere Frage, die auf der Ressource Datei Build Aktion ist - es gibt die keine Option, nie kopieren, immer kopieren, eingebettete Ressource, Ressource, .... Ich versuchte jede dieser Optionen, die schien keinen Unterschied zu machen (und ich löschte das Png zuerst vom Zielort jedes Mal). Ich habe die Build-Aktion als Ressource für "nur für den Fall" verlassen. Ich bin offen für Vorschläge zu den Build-Aktionstypen.