【问题标题】:Visual Studio publish (deployment) package contains Mercurial (hg) files (Orchard)Visual Studio 发布(部署)包包含 Mercurial (hg) 文件 (Orchard)
【发布时间】:2012-08-13 17:24:02
【问题描述】:

我有一个 Web 项目的 C# 解决方案(实际上它是一个 Orchard CMS 站点,但这并不重要),它在 Mercurial 下进行版本控制(使用 Tortoise HG BTW),它有一些项目位于单独的存储库中(并且是解决方案存储库的子存储库)。 Hg 文件永远不会包含在解决方案中的任何位置,它们不会显示在 Visual Studio 中。

当我尝试使用在 Web 项目属性下选择的“仅运行应用程序所需的文件”选项发布解决方案(或构建部署包)时,构建的包包含 hg 文件(如整个 .hg 文件夹)的子存储库。

这几乎是无害的(除了发布一堆不必要的文件),但发布也可能完全失败,并显示以下消息:

将文件 SubRepoFolder.hg\store\data_libraries_parallel_extensions_extras_coordination_data_structures_async_coordination_async_reader_writer.cs.i 复制到 obj\Release\Package\PackageTmp\SubRepoFolder.hg\store\data_libraries_parallel_extensions_extras_coordination_data_structures_async_coordination_async 时出错指定的路径、文件名或两者都太长。完全限定的文件名必须少于 260 个字符,目录名必须少于 248 个字符。

我不知道下一步该做什么,如何防止 VS 构建它应该看不到的文件。任何帮助将不胜感激。

【问题讨论】:

  • 您是否为此提交拉取请求?
  • 我不打算进行这个小修改,但我打开了一个问题并包含了修复。

标签: visual-studio deployment mercurial publish orchardcms


【解决方案1】:

事实证明,这是一个 Orchard 解决方案是一个重要的事实!

Orchard.Web.csproj 中有这样一行:

<Target Name="CustomCollectFiles">
<ItemGroup>
  ...
  <_CustomFiles Include="Media\**\*;App_Data\**\*;Modules\**\*;Themes\**\*;Core\**\*" Exclude="**\obj\**;@(Orchard-Web-Bins -> '**\%(Filename)%(Extension)');**\*.csproj.user;**\*.hg*" />

它用于将文件从 Orchard 特定文件夹复制到构建包。请注意,它应该排除 Mercurial 文件和文件夹,但事实并非如此。我将这一行改为:

<_CustomFiles Include="Media\**\*;App_Data\**\*;Modules\**\*;Themes\**\*;Core\**\*" Exclude="**\obj\**;@(Orchard-Web-Bins -> '**\%(Filename)%(Extension)');**\*.csproj.user;**\.hg\**" />

注意 .hg 后的“*”。是的,这花了我大约三个小时,浏览了我能找到的每个构建配置选项。

现在这仅排除 .hg 文件夹,但不包括 .hg 文件(如 .hgignore 或 .htags),但我不在乎:与包含一堆文件的 .hg 文件夹相反,这些文件是无害的。

This blogpost 帮助了我。

【讨论】:

    猜你喜欢
    • 2013-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-06
    • 2018-03-14
    • 2015-03-09
    • 1970-01-01
    相关资源
    最近更新 更多