C# Visual Studio 2012不会加载使用通配符包含的项目中的文件
我使用通配符在我的C# Visual Studio 2012不会加载使用通配符包含的项目中的文件,c#,visual-studio-2012,csproj,C#,Visual Studio 2012,Csproj,我使用通配符在我的.csproj文件中包含了一些文件(手动编辑.csproj文件),如下所示: <ItemGroup> <Compile Include="Class1.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="..\..\**\Foo???Class.cs" /> </ItemGroup> 它工作得完
.csproj
文件中包含了一些文件(手动编辑.csproj
文件),如下所示:
<ItemGroup>
<Compile Include="Class1.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="..\..\**\Foo???Class.cs" />
</ItemGroup>
它工作得完美无缺。但是,当我在另一个目录中创建整个代码树的副本时,它突然停止了工作。当我打开原始目录时,它会工作,但当我在另一个目录中打开副本时,VS会显示:
无法将文件“..…**\Foo???Class.cs”添加到项目中。
指定的路径包含无效字符,是绝对路径,
或是项目目录之外的路径
为什么会这样?如何解决此问题?看起来Visual Studio对文件夹名称的长度有限制
新目录(我在其中放置了复制的代码)名称有42个字符长。当我将其名称减少到20个字符时,通配符就神奇地工作了,就像在原始代码树中一样。看起来Visual Studio对文件夹名称的长度有限制
新目录(我在其中放置了复制的代码)名称有42个字符长。当我将其名称缩减为20个字符时,通配符神奇地工作了,就像在原始代码树中一样。在您的另一个项目中工作过吗?带问号的文件?您是否尝试过从文件中删除问号?我甚至不知道你是如何用这个名字命名文件的,Windows不允许你用问号命名文件。@tnw这是有效的语法,是的。请参阅,
/***/
表示“任何目录,递归”;/*/
表示“任何目录”;*
和?
也有其正常含义(文件名通配符)。而且,/
和``显然可以互换使用。@Doug您复制了项目树的哪一部分?你在哪里复制的?据我们所知,`..\`试图向下导航到驱动器的根目录和它下面的一个级别。哦,有趣的是——我知道通配符*
,但在这个上下文中不是?
。我为那些愚蠢的问题道歉。感谢您带我去学校学习:这些都是为msbuild记录的数据软件。不一定与IDE认为合理的匹配。在尝试此操作时,我没有看到明显的失败模式,最好将此发布到connect.microsoft.com,它在您的其他项目中起作用?带问号的文件?您是否尝试过从文件中删除问号?我甚至不知道你是如何用这个名字命名文件的,Windows不允许你用问号命名文件。@tnw这是有效的语法,是的。请参阅,/***/
表示“任何目录,递归”;/*/
表示“任何目录”;*
和?
也有其正常含义(文件名通配符)。而且,/
和``显然可以互换使用。@Doug您复制了项目树的哪一部分?你在哪里复制的?据我们所知,`..\`试图向下导航到驱动器的根目录和它下面的一个级别。哦,有趣的是——我知道通配符*
,但在这个上下文中不是?
。我为那些愚蠢的问题道歉。感谢您带我去学校学习:这些都是为msbuild记录的数据软件。不一定与IDE认为合理的匹配。尝试此操作时,我看不到明显的失败模式,最好将此发布到connect.microsoft.com