通常,我需要发布保存目录树的Web项目,即使目录为空,例如用于保存上载文件的目录。 如果我使用VS2010发布命令发布我的应用程序,则不会在Web服务器上的远程文件系统上创建空目录。将空目录发布到VS2010 Web项目中的Web应用程序
有没有办法强制VS在目标目录上创建某些文件夹,尽管是空的? 谢谢!
通常,我需要发布保存目录树的Web项目,即使目录为空,例如用于保存上载文件的目录。 如果我使用VS2010发布命令发布我的应用程序,则不会在Web服务器上的远程文件系统上创建空目录。将空目录发布到VS2010 Web项目中的Web应用程序
有没有办法强制VS在目标目录上创建某些文件夹,尽管是空的? 谢谢!
不,这是不可能的恐怕我们有同样的问题。如果您希望预编译工具生成这些空文件夹,则需要在每个空目录中创建一个placeholder.txt文件。如果没有,你可以创建一个命令行应用程序,它会在你的后期构建事件中创建文件夹(但只有当你使用的是web应用程序项目而不是web站点项目时)。
希望这会有所帮助。
有一个错误报告给微软,他们说他们不会修复它。 http://connect.microsoft.com/VisualStudio/feedback/details/546356/publish-deploy-does-not-deploy-empty-folders
太糟糕了。因为它曾经在Visual Studio 2008中工作。
请注意,没有必要实际部署虚拟文件。它只需要在构建环境中作为项目的一部分存在。
看起来像这个答案的说明是错误的。将生成操作设置为无将停止在IIS服务器上创建文件夹。 – GoClimbColorado 2013-02-26 17:49:42
我知道这个问题提到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
持有,将部署包的内容之后被调用对象的名字已经准备。这是向包中添加其他文件或文件夹的最佳时机。
代码和文本从混合
How to execute a PowerShell script only before a web deploy Publish task in VS 2012?
内部的空余文件夹添加一个Default.aspx文件。您可以将其保留为空,然后在预编译版本中创建文件夹。
对我来说这一次的工作:
编辑您发布的Visual Studio生成,如Leniel Macaferi提到,再加入此pubxml文件: 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>
谢谢你 - 这样一个令人沮丧的错误.. – Adam 2012-07-17 15:34:04
很沮丧... – Baxter 2012-12-10 18:20:07
这个工作对我来说...很奇怪的问题..还是谢谢:) – 2016-05-24 06:26:47