如何强制MSBuild复制项目中的空文件夹?

时间:2012-10-23 07:48:37

标签: visual-studio msbuild

我在Visual Studio 2012中有一个MVC 4项目。其中有Logs个文件夹,其中只包含四个空子文件夹。我使用的一个库需要这种结构。我将这些文件夹包含在这样的项目中:

<ItemGroup>
    <Folder Include="App_Data\" />
    <Folder Include="XSockets\XSocketServerPlugins\Log\XConnectionInterceptor\" />
    <Folder Include="XSockets\XSocketServerPlugins\Log\XErrorInterceptor\" />
    <Folder Include="XSockets\XSocketServerPlugins\Log\XHandshakeInterceptor\" />
    <Folder Include="XSockets\XSocketServerPlugins\Log\XMessageInterceptor\" />
</ItemGroup>

但这还不够,并且所有这些文件夹(包括Visual Studio创建项目中的App_Data)都不会复制到包中。我可以以某种方式强制MSBuild复制它们,即使它们是空的吗?

2 个答案:

答案 0 :(得分:4)

添加PostBuild步骤以复制文件夹。

我不能专门回答VS2012,但这是你在VS2010中的表现:

  • 右键单击项目,然后选择“属性”
  • 显示“构建事件”选项卡
  • 将复制命令放在构建后事件命令

如果单击编辑按钮,弹出对话框将显示一个宏按钮,列出可用于避免使用显式路径等的所有可用VS变量。

在VS2010中,它将项目文件修改为如下所示:


  <PropertyGroup>
    <PostBuildEvent>copy /Y "$(TargetDir)\*.*" "$(ProjectDir)\..\..\..\net40"</PostBuildEvent>
  </PropertyGroup>

答案 1 :(得分:3)

不要编辑项目文件。 我可以看到你在XSockets上使用旧版本,对吗?

按照布伦达所说,不要介意项目文件。 看看附上的图片...... build events

不是100%确定这是您正在寻找的,但是...它显示了构建前和构建后的事件

此致 Uffe,Team XSockets