2012-08-13 42 views
4

我有一个web项目一个C#解决方案(实际上它是一个果园CMS的网站,但是这并不重要),这是版本的Mercurial下控制(使用龟HG BTW),其中有一些项目位于不同的存储库(并且是解决方案存储库的子库)。 Hg文件从未包含在解决方案的任何位置,它们在Visual Studio中无处可见。的Visual Studio发布(部署)包中包含水银(Hg)的文件(果园)

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

这主要是无害的(除了发布了一堆不必要的文件),但也出版完全可以用下面的消息会失败:

错误复制文件SubRepoFolder.hg \店\ 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_reader_writer.cs.i失败。指定的路径,文件名或这两者太长。完全限定的文件名必须少于260个字符,且目录名称必须少于248个字符。

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

+0

您是否为此提交了拉取请求? – 2012-08-14 17:56:28

+0

我并没有打算进行这个小修改,但是我打开了一个问题并加入了修复程序。 – Piedone 2012-08-14 20:43:15

回答

2

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

有这一行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*" /> 

它被用来从果园特定文件夹的文件复制到构建软件包。请注意,它应该排除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帮了我。

相关问题