visual-studio – Visual Studio发布(部署)包中包含Mercurial(hg)文件(Orchard)

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

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

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

Error Copying file SubRepoFolder.hg\store\data_libraries_parallel_extensions_extras_coordination_data_structures_async_coordination_async_reader_writer.cs.i to obj\Release\Package\PackageTmp\SubRepoFolder.hg\store\data_libraries_parallel_extensions_extras_coordination_data_structures_async_coordination_async_reader_writer.cs.i failed. The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.

我不知道下一步该怎么做,如何阻止VS构建它认为看不到的文件.任何帮助将不胜感激.

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

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帮助了我.

点赞