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

时间:2017-01-04 12:23:20

标签: asp.net web build msbuild

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

目标(找到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目录排除在发布之外?可能是从<PublishFiles Include="$(_PackageTempDir)\**\*.*" />定义的文件集中将其排除?

环境: Visual Studio 2015 MSBuild Tools 2015

3 个答案:

答案 0 :(得分:2)

您可以从解决方案属性中执行此操作。只需右键单击解决方案并选择其属性即可。您将获得Package / Publish选项卡,您只需选中“从App_Data文件夹中排除文件”。您可以查看附加的屏幕截图。 希望这可以帮到你。enter image description here

答案 1 :(得分:1)

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

stream data: http response 1
inner observable subscription: http response 1
stream data: http response 1

enter image description here

答案 2 :(得分:0)

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

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