将空目录发布到VS2010 Web项目中的Web应用程序

pom*_*arc 39 directory publish webproject visual-studio-2010

通常我需要发布一个保留目录树的Web项目,即使目录是空的,例如,用于保存上载文件的目录.如果我使用VS2010发布命令发布我的应用程序,则不会在Web服务器上的远程文件系统上创建空目录.

有没有办法强制VS在目标目录上创建某些文件夹,尽管是空的?谢谢!

Exi*_*tos 40

不,这是不可能的,我担心我们遇到了同样的问题.如果希望预编译工具生成这些空文件夹,则需要在每个空目录中创建一个placeholder.txt文件.如果失败,您可以创建一个命令行应用程序,该应用程序将在您的后期构建事件中创建文件夹(但仅当您使用的是Web应用程序项目而不是Web站点项目时).

希望这可以帮助.


Len*_*rri 8

我知道这个问题提到Visual Studio 2010但是我到这里寻找同样的问题......

我正在使用Visual Studio 2012并找到一种很好/优雅的方法来克服这种烦人的情况.我认为它也可以工作,VS 2010并且比在空文件夹中添加虚拟空文件更好.

使用VS 2012它创建发布配置文件时,将MyPublishProfile.pubxml在该Properties\PublishProfiles文件夹中生成一个文件(My Project\PublishProfiles对于VB).这些是MSBuild文件,可以编辑它们以自定义发布过程.在我们的例子中,我们可以在发布实际发生之前将目标注入发布过程,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <AfterAddIisSettingAndFileContentsToSourceManifest>CreateEmptyFolders
    </AfterAddIisSettingAndFileContentsToSourceManifest>
  </PropertyGroup>
  <Target Name="CreateEmptyFolders">
    <Message Text="Adding empty folder to hold Files" />
    <MakeDir Directories="$(_MSDeployDirPath_FullPath)\Files\MyEmptyFolder"/>
  </Target>
</Project>
Run Code Online (Sandbox Code Playgroud)

该属性AfterAddIisSettingAndFileContentsToSourceManifest包含在准备部署包的内容之后将调用的目标的名称.这是将更多文件或文件夹添加到包中的最佳时机.


代码和文字混合来自:

如何在VS 2012中的Web部署发布任务之前执行PowerShell脚本?

Web部署:自定义部署包