如何使用自定义目标“PublishToFileSystem”从发布中排除 APP_DATA 目录

Posted

技术标签:

【中文标题】如何使用自定义目标“PublishToFileSystem”从发布中排除 APP_DATA 目录【英文标题】:How to exclude APP_DATA directory from publishing using custom target "PublishToFileSystem" 【发布时间】:2017-01-04 12:23:19 【问题描述】:

我正在使用自定义目标将我的网站发布到本地文件夹。

目标(找到here)看起来像:

<Target Name="PublishToFileSystem"
        DependsOnTargets="PipelinePreDeployCopyAllFilesToOneFolder">
    <Error Condition="'$(PublishDestination)'==''"
           Text="The PublishDestination property must be set to the intended publishing destination." />
    <MakeDir Condition="!Exists($(PublishDestination))"
             Directories="$(PublishDestination)" />

    <ItemGroup>
        <PublishFiles Include="$(_PackageTempDir)\**\*.*" />
    </ItemGroup>

    <Copy SourceFiles="@(PublishFiles)"
          DestinationFiles="@(PublishFiles->'$(PublishDestination)\%(RecursiveDir)%(Filename)%(Extension)')"
          SkipUnchangedFiles="True" />
</Target>

对应的msbuild命令如下:

msbuild projectfile.csproj /p:DeployOnBuild=true /p:VisualStudioVersion=14.0 /p:configuration=Release /p:PublishDestination=C:\inetpub\wwwroot\WebSite /T:PublishToFileSystem

到目前为止效果很好。但是,我想从发布中排除 APP_DATA 目录。

那么,有没有办法从发布中排除 APP_DATA 目录?也许通过将其从&lt;PublishFiles Include="$(_PackageTempDir)\**\*.*" /&gt; 定义的文件集中排除?

环境: 视觉工作室 2015 MSBuild 工具 2015

【问题讨论】:

【参考方案1】:

我发现最简单的方法是在发布配置文件中进行设置。

<ExcludeApp_Data>False</ExcludeApp_Data>

【讨论】:

【参考方案2】:

您可以从解决方案属性中执行此操作。只需右键单击解决方案并选择其属性。您将在此处获得“打包/发布”选项卡,您只需检查“从 App_Data 文件夹中排除文件”。您可以查看附加的屏幕截图。 希望对你有帮助。

【讨论】:

感谢您的回答。不幸的是,我正在使用 VS2015 (MSBuild ToolsVersion 14.0),该选项不再可用。关于this post,该选项已移至 pubxml 文件(这不是我的发布过程的一部分)。【参考方案3】:

可以在项目文件中设置选项(@Vipin Rathore 建议):

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <ExcludeFoldersFromDeployment>APP_DATA</ExcludeFoldersFromDeployment>
</PropertyGroup>

【讨论】:

以上是关于如何使用自定义目标“PublishToFileSystem”从发布中排除 APP_DATA 目录的主要内容,如果未能解决你的问题,请参考以下文章

如何将交叉验证目标输入管道中的自定义转换器

如何实现自定义控件的目标动作机制?

如何在 Cloudformation 中获取区域 AWS API 网关的自定义域的目标域名?

如何在自定义 Xcode 项目模板中创建或定义新目标

如何将自定义 WebPartPage 部署到特定目标站点 (Web)

如何以编程方式创建自定义导航栏?