代码之家  ›  专栏  ›  技术社区  ›  Piedone

Visual Studio发布(部署)包包含Mercurial(hg)文件(Orchard)

  •  4
  • Piedone  · 技术社区  · 13 年前

    我有一个用于web项目的C#解决方案(实际上是Orchard CMS网站,但这并不重要),该解决方案由Mercurial(使用Tortoise HG BTW)进行版本控制,Mercurial有一些项目位于单独的存储库中(并且是解决方案存储库的子存储库)。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.htmg\store\data_librariess_parallel_extensions_extras_cooordination_data_ststructures_async-coordination_sync_reader_writer.cs.i失败。指定的路径、文件名或两者都太长。完全限定的文件名必须少于260个字符,目录名必须少于248个字符。

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

    1 回复  |  直到 13 年前
        1
  •  2
  •   Piedone    13 年前

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

    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文件(如.hgnore或.htags),但我不在乎:与包含一堆文件的.hg文件夹相反,这些文件是无害的。

    This blogpost 帮助了我。

    推荐文章