如何在Visual Studio 2010中的生成中创建一个空文件夹?

时间:2012-11-02 11:36:15

标签: visual-studio-2010

我有一个VS2010项目需要在 bin \ debug 目录中创建 dataIn dataOut 目录,以允许进行一些测试运行

创建 dataIn 目录很简单 - 只需将包含内容的文件夹添加到项目中,并将其包含的每个文件的“复制到输出目录”属性设置为“始终复制”(或编辑项目文件以使用通配符来捕获所有文件,如SO上的其他答案所示 - 该目录将由VS自动创建,以便可以将文件复制到其中。

我的问题:如何确保在需要时自动创建 dataOut 目录?

没有文件可供使用,因此ItemGroup中没有此目录。如果我手动将目录条目添加到项目文件中,则会收到错误:

"<path>\dataOut" is actually a directory.  The "Copy" task does not support copying directories.

(编辑:从目录名称中删除下划线,以便斜体可以工作!)

4 个答案:

答案 0 :(得分:12)

在预构建步骤中尝试此操作:

if not exist "$(TargetDir)dataOut" mkdir "$(TargetDir)dataOut"

如果$(TargetDir)中有空格,引号很重要,但无论稳健性如何,我都会使用它们。

答案 1 :(得分:4)

到目前为止我管理的一种方法是将虚拟文本文件添加到文件夹并将其“复制到输出目录”属性设置为“始终复制”这一相当明显的步骤。我还添加了一个后构建步骤来删除后面的虚拟文件,留下现在空的目录(虽然对于这个特定的项目,这真的只是因为我的烦躁 - 如果不是没有影响有)。

我仍然想知道是否有更好的选择,但是......

答案 2 :(得分:0)

预建步骤中的某些mkdirs怎么样?

答案 3 :(得分:0)

刚刚分享了这个困境,我觉得最简单的处理方法就是以编程方式简单地创建目录。

if(!Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + "yourDirectoryName"))
{
    Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + "yourDirectoryName");
}

我不确定您使用的应用程序类型,但winform应用程序可以在其Main方法中执行此操作,并且Web应用程序可以在多个位置执行此操作。