C# 如何在mvc解决方案目录中创建文件夹,以便将其包含在项目中?

C# 如何在mvc解决方案目录中创建文件夹,以便将其包含在项目中?,c#,asp.net-mvc,C#,Asp.net Mvc,我是mvc和c的新手,无法解决以下问题: 我正在尝试在解决方案文件夹中创建一个名为“Items”的文件夹。 我尝试使用CreateDirectory方法: Directory.CreateDirectory("~/Images"); 但它对我不起作用-文件夹未创建 部分有效的解决方案是通过以下方式创建文件夹: Directory.CreateDirectory(Server.MapPath("~/Images")); “项目”文件夹已创建,但未包含在解决方案中: 如何在解决方案目录中创

我是mvc和c的新手,无法解决以下问题:

我正在尝试在解决方案文件夹中创建一个名为“Items”的文件夹。 我尝试使用CreateDirectory方法:

Directory.CreateDirectory("~/Images");
但它对我不起作用-文件夹未创建

部分有效的解决方案是通过以下方式创建文件夹:

Directory.CreateDirectory(Server.MapPath("~/Images"));
  • “项目”文件夹已创建,但未包含在解决方案中:

如何在解决方案目录中创建文件夹,使其包含在项目中


(我需要通过代码而不是手工完成)

在web服务器上部署的web应用程序没有任何Visual Studio解决方案或项目的概念。因此,
Directory.CreateDirectory(Server.MapPath(“~/Images”))
是在运行时在web应用程序中创建文件夹的正确方法,但我们不能谈论将其包含到解决方案中,因为这在预编译的web应用程序中几乎没有意义。如果您在本地开发计算机上创建目录,则始终可以手动将文件夹包括到相应的
.csproj
文件中,但在运行时这不会产生任何影响。

您需要了解
解决方案
csproj
文件的用途

一般来说,它们被设计并用于Visual Studio的开发,一旦项目被编译,所有这些文件都将被忽略并从部署包中排除

Directory.CreateDirectory(Server.MapPath("~/Images"));
如果在运行时部署包中还不存在目录,上面的代码只是创建目录,因此除非在本地运行项目,否则在解决方案中不会看到该目录(无论是调试/发布模式,这里都无所谓)。但是,所有内容都将在托管环境(例如:IIS)中正常运行

以下是
solution
csproj
的简要说明,供您参考

  • 解决方案
    (.sln)文件:包含用于管理一个或多个单个项目的信息,包含生成环境(对于每个项目)、启动模式(在一次运行中启动多个项目时非常有用)、项目依赖项等。请注意,VS还从用于定义用户自定义首选项的
    suo
    文件(解决方案用户选项)中读取(您不应该在版本控制中包括.suo文件,因为它是自定义设置)

  • csproj
    file:定义项目的结构、名称空间、静态文件夹、嵌入式资源、引用、包等

最后,如果手动创建文件夹,VS将自动将该文件夹包括到
部署包
csproj
,但取决于文件类型,您可能需要更改文件属性中的
生成操作
复制到输出目录


希望能有所帮助。

我之所以想创建一个文件夹(如果不存在的话),是为了在尝试将图像存储到其中之前确保它退出

在阅读了这里的帖子和一些谷歌搜索之后,我得出结论,处理图像上传的正确方法是

  • 手动创建文件夹“Images”以确保其存在
  • 然后将上传的img存储在现有文件夹中:

  • 出于兴趣,您为什么要这样做?您的解决方案文件只是其中包含的文件的结构化容器。在运行时创建的任何文件夹都不知道您的解决方案,并且不能成为解决方案的一部分。Thx用于快速响应。我需要一个文件夹来存储上传的图像。你能提供一些好方法的提示吗?指定文件夹的方法,在那里存储用户上传的图像。thxLike@RichardEverett问道,为什么不直接使用
    wwwroot
    ,它有一个图像文件夹,就像你原来的问题一样,如果你想用代码创建文件夹,我建议你这样做,并用
    目录验证文件夹是否存在。存在(路径)
    string path =Server.MapPath("~/Images/"+ UploadedImageName);
    file.SaveAs(path);