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

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

有帮助吗?

解决方案

不,这是不可能的,恐怕我们遇到了同样的问题。如果您希望使用预编译工具生成这些空文件夹,则需要在每个空目录中创建一个占位符。txt文件。如果您无法创建一个命令行应用程序,该应用程序将在您的帖子构建事件中创建文件夹(但前提是您使用Web Application Project而不是网站项目)。

希望这可以帮助。

其他提示

我知道这个问题提到 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>

属性 AfterAddIisSettingAndFileContentsToSourceManifest 保留在准备部署包的内容后将调用的目标名称。这是在包装中添加其他文件或文件夹的理想时机。


代码和文本混合来:

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

Web部署:自定义部署软件包

有一份关于Microsoft的错误报告,他们说他们不会修复它。http://connect.microsoft.com/visualstudio/feedback/details/546356/publish-deploy-does-not-not-deploy-empty-folders

太糟糕了。因为它曾经在Visual Studio 2008中工作。

请注意,没有必要实际部署虚拟文件。它只需要作为构建环境中项目的一部分而存在。

这个对我有用:

编辑视觉工作室生成的PubXML文件,如Leniel Macaferi所述,然后添加以下内容:Visual Studio已经生成了像

<publishUrl>f:\publish_web</publishUrl>

在里面

<PropertyGroup>    

部分,所以我已经使用过这样的:添加到部分:

 <PipelineDependsOn>
      CustomBeforePublish;
      $(PipelineDependsOn);
    </PipelineDependsOn>  

还添加了:

<Target Name="CustomBeforePublish">
    <Message Text="CustomBeforePublish task:"/>
    <MakeDir Directories="$(publishUrl)\MyFolder\MyFolder2"/>
  </Target>

在空文件夹中添加default.aspx文件。您可以将其留为空,然后将在预编译版本中创建文件夹。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top