C#引用项目中的文件

时间:2018-11-01 16:38:59

标签: c#

在解决方案中,我有一个控制台应用程序(MyApp),该应用程序执行另一个项目(MyProject)中的方法。 在MyProject中,我有一个包含图像的文件夹。如何使用例如从文件夹引用图像Image.FromFile()?

诸如Directory.GetCurrentDirectory()之类的方法将返回MyApp而不是MyProject的路径 我缺少明显的东西吗?

3 个答案:

答案 0 :(得分:2)

您可以将图像文件标记为嵌入式资源。右键单击图像文件>属性,将 Build Action 设置为 Embedded Resource

MyProject,创建返回图像的公共方法,在这种情况下,path签名应为清单资源名称。

public Image FindImageByPath(string path) // eg: MyProject.ImageFolder.MyImage.png
{
     using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(path))
     return Image.FromStream(stream);
}

另一种方法是将图像存储到资源文件(.resx)。

答案 1 :(得分:1)

您可以直接直接引用该文件路径,即,如果我在项目文件夹之外有图片,我可以使用

string fileName = "picture1";
string fileExtension = ".png";
var image1 = Image.FromFile($@"C:\Users\Me\Desktop\Pictures\{fileName}{fileExtension}")

或者,“ .. \”在当前目录中向上移动一个文件夹,“ \\”指的是全局目录

除非您要转义文件路径中的每个“ \”,否则请记住使用字符串文字“ @”。 使用“ $”进行字符串插值 如果同时使用“ $”和“ @”,则必须按“ $ @”的顺序使用它们。

答案 2 :(得分:0)

如果文件包含在项目中,则另一个选项是转到“属性”选项卡,并将“构建操作”标记为“内容”,将“复制到输出目录”标记为“始终复制”或“如果更新则复制”。这样,文件将出现在相对于程序集的路径中。