【问题标题】:CopyAllFilesToSingleFolderForPackageDependsOn and Web DeployCopyAllFilesToSingleFolderForPackageDependsOn 和 Web 部署
【发布时间】:2016-01-25 19:35:29
【问题描述】:

我正在使用 Visual Studio 2015 的 Web 部署功能将我的 Type Script SPA 项目部署到我的登台服务器。

我希望部署过程将一些部署特定文件从我的项目的 /Deployment 文件夹复制(并重命名)到项目的其他特定位置。

一个这样的例子是:

[project_root]/Deployment/index.remote.debug.html ---> [project_root]/index.html

我设法使用我的发布配置文件 (.pubxml) 中的以下部分来实现这一点:

<Target Name="index_html">
  <ItemGroup>
    <_CustomFiles Include="Deployment/index.remote.debug.html" />
    <FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
      <DestinationRelativePath>index.html</DestinationRelativePath>
    </FilesForPackagingFromProject>
  </ItemGroup>
</Target>
<Target Name="extractor_config">
  <ItemGroup>
    <_CustomFiles Include="Deployment/extractor.config.remote.debug.js" />
    <FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
      <DestinationRelativePath>extractor.config.js</DestinationRelativePath>
    </FilesForPackagingFromProject>
  </ItemGroup>
</Target>

<PropertyGroup>
  <CopyAllFilesToSingleFolderForPackageDependsOn>
    index_html;
    $(CopyAllFilesToSingleFolderForPackageDependsOn);
  </CopyAllFilesToSingleFolderForPackageDependsOn>
  <CopyAllFilesToSingleFolderForPackageDependsOn>
    extractor_config;
    $(CopyAllFilesToSingleFolderForPackageDependsOn);
  </CopyAllFilesToSingleFolderForPackageDependsOn>

</PropertyGroup>

但这仅在使用“文件系统”选项发布到文件系统时才有效。 使用“Web 部署”选项发布到我的登台服务器时,我看不到任何效果。 应用程序已正确部署,但未复制/重命名相应文件。

Visual Studio 输出中也没有与此类 Web 部署相关的错误消息。

如果我以非管理员或管理员身份部署没有区别。

有谁知道问题出在哪里?

对于 MSBuild,我完全是外行,这是我的第一次接触。我只是在其他人的在线经验的帮助下才将这些放在一起。

【问题讨论】:

  • 这是我用来设置我的.pubxml的文章:baconapplications.com/custom-publish-with-visual-studio-2013
  • 我向两个目标都添加了 Message 元素,以查看目标是否被执行。显然,该消息出现在本地部署上,而不是 Web 部署上。
  • 只是为了您的娱乐 - 我的挫败感甚至让我匆忙创建了一个名为“部署后步骤”的基于服务器的 Windows 服务,它可以检测新部署并执行所有必要的附加步骤。我只是在问,这不是说明 MSBuilds 的可用性和可理解性的重要内容吗?一个能够在 30 分钟内创建基于服务的解决方案的人在整个周末都无法弄清楚 MSBuild 的方式吗?部署后只是基于服务器的文件复制。没有火箭科学。
  • 有点无耻的插件,但是任何一个答案都有帮助吗?

标签: deployment msbuild visual-studio-2015


【解决方案1】:

您需要一个名称稍有不同的元素。你有:

  <CopyAllFilesToSingleFolderForPackageDependsOn>
    index_html;
    $(CopyAllFilesToSingleFolderForPackageDependsOn);
  </CopyAllFilesToSingleFolderForPackageDependsOn>
  <CopyAllFilesToSingleFolderForPackageDependsOn>
    extractor_config;
    $(CopyAllFilesToSingleFolderForPackageDependsOn);
  </CopyAllFilesToSingleFolderForPackageDependsOn>

尝试使用几乎相同的部分,但使用此标签:

  <CopyAllFilesToSingleFolderForMsdeployDependsOn>

注意它是 ForMsdeploy 而不是 ForPackage

【讨论】:

    【解决方案2】:

    除了 Rhyous 的出色回答外,请注意 MS docs 表示您应该同时拥有 CopyAllFilesToSingleFolderForPackageDependsOnCopyAllFilesToSingleFolderForMsdeployDependsOn,例如

    <PropertyGroup>
        <CopyAllFilesToSingleFolderForPackageDependsOn>
          CustomCollectFiles;
          $(CopyAllFilesToSingleFolderForPackageDependsOn);
        </CopyAllFilesToSingleFolderForPackageDependsOn>
    
        <CopyAllFilesToSingleFolderForMsdeployDependsOn>
          CustomCollectFiles;
          $(CopyAllFilesToSingleFolderForMsdeployDependsOn);
        </CopyAllFilesToSingleFolderForMsdeployDependsOn>
    </PropertyGroup>
    

    我已经通过编辑项目文件来完成这项工作,但引用的文档在发布配置文件中进行了此编辑,我认为这样更有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-08
      • 2022-01-06
      • 1970-01-01
      • 2016-12-06
      • 2018-11-24
      • 2012-07-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多