在Visual Studio 2015中访问资源图像 - 特别是位置路径
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Visual Studio 2015中访问资源图像 - 特别是位置路径相关的知识,希望对你有一定的参考价值。
我正在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属性有什么意义?我只是觉得我在某处丢失了一些东西。
好吧,我上面的方法遇到的问题是它有点静态。好吧,我终于想出了如何使用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)。我将构建操作保留为“以防万一”的资源。我对构建操作类型的建议持开放态度。
以上是关于在Visual Studio 2015中访问资源图像 - 特别是位置路径的主要内容,如果未能解决你的问题,请参考以下文章
在 Visual Studio 2015 中阻止资源文件的语言翻译
求,微软visual studio 2015的下载资源。非常感谢。