2012-10-23 95 views
5

我在Visual Studio 2012中有一个MVC 4项目。其中有Logs文件夹,其中只包含四个空的子文件夹。这个结构是我使用的一个库所需要的。我包括这些文件夹项目是这样的:如何强制MSBuild复制项目中的空文件夹?

<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> 

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

+1

您可以在每个文件夹中放置一个虚拟空文件。也许不是很“纯”,但它应该工作,并且要快速实施。 –

+0

我想过这个,但我希望有一些更好的和干净的解决方案。 – Episodex

+0

现在我知道我问了错误的问题。尽管下面的答案适用于构建,但它们并不适合我,因为我使用的是WebDeploy,并且文件夹不会复制到包中。唯一的方法(也由MS推荐)是将@Damien_The_Unbeliever写道的虚拟文件。 – Episodex

回答

4

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

我不能为VS2012明确回答,但这里是你如何在VS2010做到这一点:

  • 该项目,并选择属性
  • 显示生成事件选项卡上单击鼠标右键
  • 把你的在生成后事件命令中复制命令

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

在VS2010中,修改项目文件看起来是这样的:


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

我正在使用常规VS项目,而不是MSBuild脚本。我应该编辑项目文件来添加这个?你能提供一个在项目文件中做这个例子吗?我是新来建立脚本。 – Episodex

3

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

按照布伦达所说,不介意项目文件。 请看附加的图像... build events

不是100%肯定它是这个,你正在寻找,但...这表明前和后生成事件

问候 Uffe ,团队XSockets

+0

谢谢!这应该工作,我会在星期一检查。你为什么认为我使用旧版本?我使用nuGet将XSockets 2安装到我的MVC 4应用程序中。也许我做错了什么? – Episodex

+0

哦,那么一切都很好!我的坏:) 认为你有一些配置的东西(我们曾经在以前的版本)。 如果您有任何问题,只需ping我/我们,我们将尽我们所能帮助您! – Uffe

+0

很可能我很快就会联系你一些问题,当我把他们组织起来并重新思考的时候:)。感谢XSockets的出色工作!至于问题,我添加了评论为什么这些解决方案不适合我,但他们对我问的问题是正确的。 – Episodex

相关问题