通常我需要发布一个Web项目,即使目录为空也需要保留目录结构,例如用于保存上传文件的目录。 如果使用VS2010发布命令发布应用程序,则空目录不会在远程文件系统或Web服务器上创建。
有没有办法强制VS在目标目录中创建某些空文件夹? 谢谢!
通常我需要发布一个Web项目,即使目录为空也需要保留目录结构,例如用于保存上传文件的目录。 如果使用VS2010发布命令发布应用程序,则空目录不会在远程文件系统或Web服务器上创建。
有没有办法强制VS在目标目录中创建某些空文件夹? 谢谢!
Visual Studio 2010
,但我因为同样的问题而来到这里...Visual Studio 2012
,并找到了一种好的/优雅的方法来解决这个烦人的情况。我认为这也适用于 VS 2010
,比添加空文件夹中的虚拟文件更好。VS 2012
创建一个发布配置文件时,它会在 Properties\PublishProfiles
文件夹(My Project\PublishProfiles
对于 VB)中生成一个 MyPublishProfile.pubxml
文件。这些是 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
保存了在准备部署包内容后将被调用的目标名称。这是添加其他文件或文件夹到包中的最佳时间。
源自以下混合了代码和文本的内容:
这个方法对我有用:
像Leniel Macaferi提到的那样,编辑Visual Studio生成的发布pubxml文件,然后添加以下内容: Visual Studio已经生成了一个属性,如下:
<publishUrl>f:\publish_web</publishUrl>
in the
<PropertyGroup>
我使用了 section,就像这样:
添加到 section 中: <PipelineDependsOn>
CustomBeforePublish;
$(PipelineDependsOn);
</PipelineDependsOn>
<Target Name="CustomBeforePublish">
<Message Text="CustomBeforePublish task:"/>
<MakeDir Directories="$(publishUrl)\MyFolder\MyFolder2"/>
</Target>
<PipelineDependsOn>
添加到与<publishUrl>
相同的<PropertyGroup>
中,并在该<PropertyGroup>
之后添加<Target>
。 - Keith