在Visual Studio 2015中访问资源图像 - 特别是位置路径

问题描述 投票:0回答:1

我正在Visual Studio 2015中使用Visual Studio Tools For Office(VSTO)创建一个Excel插件项目。我必须添加/包含公司徽标 - 一个.png文件到此插件。我将徽标图像文件添加到Visual Studio资源中。我尝试使用VS资源中的图像来包含在插件中 - 这不起作用

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

我收到一条错误消息,指出myLogo需要采用字符串格式 - 就像文件路径格式一样。所以我尝试了下面哪个确实有效 - 但是......这似乎有点笨拙。我必须包括使用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);

我还将CompanyLogo.png文件包含到我的addin项目的根文件夹中,并且每次编译项目时都将其设置为复制到输出目录。所以,这里的第二个例程工作,但我想我应该/想要使用项目资源部分中的文件。如何从Project.Resources检索Companylogo.png资源的文件路径?

如果这不可能 - 拥有/使用Visual Studio的Resources属性有什么意义?我只是觉得我在某处丢失了一些东西。

c# excel visual-studio-2015
1个回答
0
投票

好吧,我上面的方法遇到的问题是它有点静态。好吧,我终于想出了如何使用Resource属性来减少静态:

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);

现在我可以在执行程序集的任何地方保存png,而不是硬编码某个路径。

但我确实有另外一个问题是关于资源文件构建操作 - 有无选项,永远不会复制,永远复制,嵌入资源,资源,....我尝试了这些看起来没有做的每个选项任何差异(我每次都从目的地位置删除png)。我将构建操作保留为“以防万一”的资源。我对构建操作类型的建议持开放态度。

© www.soinside.com 2019 - 2024. All rights reserved.